drydock-cli 2.2.8__tar.gz → 2.2.9__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.2.8 → drydock_cli-2.2.9}/PKG-INFO +1 -1
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/agent_loop.py +84 -4
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/pyproject.toml +1 -1
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/.github/CODEOWNERS +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/.github/DISCUSSION_TEMPLATE/ideas.yml +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/.github/workflows/build-and-upload.yml +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/.github/workflows/ci.yml +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/.github/workflows/issue-labeler.yml +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/.github/workflows/release.yml +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/.gitignore +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/.pre-commit-config.yaml +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/.python-version +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/.typos.toml +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/.vscode/extensions.json +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/.vscode/launch.json +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/.vscode/settings.json +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/AGENTS.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/CHANGELOG.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/CLAUDE.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/CONTRIBUTING.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/Drydock_rebrand.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/LICENSE +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/NOTICE +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/PRD.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/README.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/action.yml +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/distribution/zed/LICENSE +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/distribution/zed/extension.toml +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/distribution/zed/icons/mistral_vibe.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/docs/README.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/docs/acp-setup.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/docs/proxy-setup.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/acp/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/acp/acp_agent_loop.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/acp/acp_logger.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/acp/entrypoint.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/acp/tools/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/acp/tools/base.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/acp/tools/builtins/bash.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/acp/tools/builtins/read_file.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/acp/tools/builtins/search_replace.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/acp/tools/builtins/todo.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/acp/tools/builtins/write_file.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/acp/tools/session_update.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/acp/utils.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/autocompletion/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/autocompletion/base.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/autocompletion/path_completion.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/autocompletion/slash_command.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/cli.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/clipboard.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/commands.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/entrypoint.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/history_manager.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/plan_offer/adapters/http_whoami_gateway.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/plan_offer/decide_plan_offer.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/plan_offer/ports/whoami_gateway.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/terminal_setup.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/ansi_markdown.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/app.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/app.tcss +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/external_editor.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/handlers/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/handlers/event_handler.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/notifications/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/notifications/adapters/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/notifications/adapters/textual_notification_adapter.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/notifications/ports/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/notifications/ports/notification_port.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/approval_app.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/banner/banner.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/banner/petit_chat.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/braille_renderer.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/chat_input/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/chat_input/body.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/chat_input/completion_manager.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/chat_input/completion_popup.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/chat_input/container.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/chat_input/text_area.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/compact.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/config_app.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/context_progress.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/load_more.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/loading.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/messages.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/no_markup_static.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/path_display.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/proxy_setup_app.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/question_app.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/session_picker.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/spinner.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/status_message.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/teleport_message.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/tool_widgets.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/tools.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/vscode_compat.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/windowing/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/windowing/history.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/windowing/history_windowing.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/windowing/state.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/update_notifier/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/update_notifier/adapters/filesystem_update_cache_repository.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/update_notifier/adapters/github_update_gateway.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/update_notifier/adapters/pypi_update_gateway.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/update_notifier/ports/update_cache_repository.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/update_notifier/ports/update_gateway.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/update_notifier/update.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/update_notifier/whats_new.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/agents/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/agents/manager.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/agents/models.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/auth/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/auth/crypto.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/auth/github.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/autocompletion/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/autocompletion/completers.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/autocompletion/file_indexer/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/autocompletion/file_indexer/ignore_rules.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/autocompletion/file_indexer/indexer.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/autocompletion/file_indexer/store.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/autocompletion/file_indexer/watcher.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/autocompletion/fuzzy.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/autocompletion/path_prompt.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/autocompletion/path_prompt_adapter.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/build_orchestrator.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/config/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/config/_settings.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/config/harness_files/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/config/harness_files/_harness_manager.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/config/harness_files/_paths.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/consultant.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/drydock_states.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/hooks.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/llm/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/llm/backend/anthropic.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/llm/backend/base.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/llm/backend/factory.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/llm/backend/generic.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/llm/backend/mistral.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/llm/backend/reasoning_adapter.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/llm/backend/vertex.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/llm/exceptions.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/llm/format.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/llm/message_utils.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/llm/types.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/logger.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/middleware.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/output_formatters.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/paths/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/paths/_local_config_walk.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/paths/_vibe_home.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/paths/conventions.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/plan_session.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/plugins.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/programmatic.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/prompts/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/prompts/builder.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/prompts/cli.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/prompts/compact.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/prompts/dangerous_directory.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/prompts/diagnostic.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/prompts/explore.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/prompts/planner.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/prompts/project_context.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/prompts/tests.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/proxy_setup.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/session/agent_memory.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/session/checkpoints.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/session/session_loader.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/session/session_logger.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/session/session_migration.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/session/state_file.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/skills/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/skills/manager.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/skills/models.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/skills/parser.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/slug.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/system_prompt.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/telemetry/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/telemetry/send.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/teleport/errors.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/teleport/git.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/teleport/nuage.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/teleport/teleport.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/teleport/types.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/base.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/ask_user_question.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/bash.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/cron.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/exit_plan_mode.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/glob_tool.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/grep.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/invoke_skill.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/lsp.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/mcp_resources.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/notebook_edit.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/powershell.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/prompts/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/prompts/ask_user_question.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/prompts/bash.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/prompts/cron.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/prompts/glob.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/prompts/grep.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/prompts/invoke_skill.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/prompts/lsp.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/prompts/mcp_resources.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/prompts/notebook_edit.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/prompts/powershell.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/prompts/read_file.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/prompts/search_replace.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/prompts/swe_bench.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/prompts/task.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/prompts/task_manager.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/prompts/todo.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/prompts/tool_search.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/prompts/webfetch.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/prompts/websearch.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/prompts/worktree.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/prompts/write_file.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/read_file.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/search_replace.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/task.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/task_manager.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/todo.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/tool_search.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/webfetch.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/websearch.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/worktree.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/builtins/write_file.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/injection_guard.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/manager.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/mcp/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/mcp/registry.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/mcp/tools.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/mcp_sampling.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/ui.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/tools/utils.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/trusted_folders.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/types.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/utils.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/setup/onboarding/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/setup/onboarding/base.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/setup/onboarding/onboarding.tcss +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/setup/onboarding/screens/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/setup/onboarding/screens/api_key.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/setup/onboarding/screens/welcome.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/setup/trusted_folders/trust_folder_dialog.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/setup/trusted_folders/trust_folder_dialog.tcss +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/skills/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/skills/batch/SKILL.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/skills/create-presentation/SKILL.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/skills/deep-research/SKILL.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/skills/investigate/SKILL.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/skills/review/SKILL.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/skills/ship/SKILL.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/skills/simplify/SKILL.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/whats_new.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock-acp.spec +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock_terms.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/flake.lock +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/flake.nix +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/scripts/README.md +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/scripts/auto_test_loop.sh +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/scripts/backup.sh +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/scripts/bump_version.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/scripts/deploy_to_github.sh +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/scripts/install.sh +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/scripts/monitor_swebench.sh +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/scripts/monitor_test_battery.sh +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/scripts/notify_release.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/scripts/overnight_agents_test.sh +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/scripts/prepare_release.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/scripts/publish_to_pypi.sh +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/scripts/test_bank.sh +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/scripts/test_full.sh +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/scripts/test_smoke.sh +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/acp/conftest.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/acp/test_acp.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/acp/test_agent_thought.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/acp/test_bash.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/acp/test_compact_session_updates.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/acp/test_content.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/acp/test_initialize.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/acp/test_list_sessions.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/acp/test_load_session.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/acp/test_multi_session.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/acp/test_new_session.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/acp/test_proxy_setup_acp.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/acp/test_read_file.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/acp/test_search_replace.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/acp/test_set_config_option.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/acp/test_set_mode.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/acp/test_set_model.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/acp/test_tool_call_session_update.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/acp/test_utils.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/acp/test_write_file.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/autocompletion/test_file_indexer.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/autocompletion/test_fuzzy.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/autocompletion/test_path_completer_fuzzy.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/autocompletion/test_path_completer_recursive.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/autocompletion/test_path_completion_controller.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/autocompletion/test_path_prompt_transformer.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/autocompletion/test_slash_command_controller.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/autocompletion/test_ui_chat_autocompletion.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/backend/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/backend/data/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/backend/data/fireworks.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/backend/data/mistral.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/backend/test_anthropic_adapter.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/backend/test_backend.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/backend/test_reasoning_adapter.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/backend/test_vertex_anthropic_adapter.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/cli/plan_offer/adapters/fake_whoami_gateway.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/cli/plan_offer/test_decide_plan_offer.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/cli/plan_offer/test_http_whoami_gateway.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/cli/test_bell_notifications.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/cli/test_braille_renderer.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/cli/test_clipboard.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/cli/test_commands.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/cli/test_copy_shortcuts.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/cli/test_external_editor.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/cli/test_no_markup_static.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/cli/test_question_app.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/cli/test_spinner.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/cli/test_switching_mode.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/cli/test_ui_clipboard_notifications.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/cli/test_ui_session_incremental_renderer.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/cli/test_ui_session_resume.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/cli/test_ui_skill_dispatch.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/cli/textual_ui/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/cli/textual_ui/test_session_picker.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/conftest.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/core/test_agents.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/core/test_auth_crypto.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/core/test_auth_github.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/core/test_config_load_dotenv.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/core/test_config_paths.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/core/test_config_resolution.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/core/test_file_logging.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/core/test_plan_session.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/core/test_proxy_setup.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/core/test_slug.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/core/test_telemetry_send.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/core/test_teleport_git.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/core/test_teleport_nuage.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/core/test_teleport_service.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/core/test_trusted_folders.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/core/test_utils.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/e2e/common.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/e2e/conftest.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/e2e/mock_server.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/e2e/test_cli_tui_onboarding.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/e2e/test_cli_tui_streaming.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/e2e/test_cli_tui_tool_approval.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/mock/__init__.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/mock/mock_backend_factory.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/mock/mock_entrypoint.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/mock/utils.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/onboarding/test_run_onboarding.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/onboarding/test_ui_onboarding.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/session/test_session_loader.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/session/test_session_logger.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/session/test_session_migration.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/skills/conftest.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/skills/test_manager.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/skills/test_models.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/skills/test_parser.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_collapsed.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_expanded.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_basic_conversation/test_snapshot_shows_basic_conversation.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/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.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_empty_assistant_before_reasoning/test_snapshot_empty_assistant_removed_when_reasoning_starts.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_accept_edits_mode.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_auto_approve_mode.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_plan_mode.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_wraps_to_default.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_default_mode.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_pending.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_resolved.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_cancel_discards_changes.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_edit_existing_values.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_empty.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_with_values.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_error.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_new_values.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_answer_first_advance.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_first_answered_checkmark.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_initial.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_left_wraps.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_right.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_tab_to_second.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_initial.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_mixed_selection.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_navigate_to_submit.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_other_with_text.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_first.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_multiple.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_untoggle.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_initial.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_down.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_other.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_third_option.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_up_wraps.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_other_typing.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_buffered_reasoning_yields_before_content.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_interleaved_reasoning.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content_expanded.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_release_update_notification/test_snapshot_shows_release_update_notification.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_session_resume/test_snapshot_shows_resumed_session_messages.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_partial.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_updated.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_cancel_selected.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_multiple_commits.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_single_commit.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_complete.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_required.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_checking_git.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_complete.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_error.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_pushing.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_sending_token.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_starting_workflow.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_no_plan_message.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_switch_message.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_upgrade_message.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_whats_new_message.svg +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/base_snapshot_test_app.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/conftest.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/snap_compare.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/test_ui_snapshot_ask_user_question.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/test_ui_snapshot_basic_conversation.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/test_ui_snapshot_code_block_horizontal_scrolling.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/test_ui_snapshot_empty_assistant_before_reasoning.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/test_ui_snapshot_modes.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/test_ui_snapshot_parallel_tool_calls.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/test_ui_snapshot_proxy_setup.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/test_ui_snapshot_question_app.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/test_ui_snapshot_reasoning_content.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/test_ui_snapshot_release_update_notification.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/test_ui_snapshot_session_resume.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/test_ui_snapshot_streaming_tool_call.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/test_ui_snapshot_teleport.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/snapshots/test_ui_snapshot_whats_new.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/stubs/fake_backend.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/stubs/fake_client.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/stubs/fake_tool.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_agent_auto_compact.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_agent_backend.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_agent_observer_streaming.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_agent_stats.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_agent_tasks.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_agent_tool_call.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_agents.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_bank_build.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_bank_debug.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_bank_multiagent.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_bank_prd.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_bank_prd_extended.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_bank_tools.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_bank_update.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_build_projects.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_cli_programmatic_preload.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_current_bugs.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_drydock_regression.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_drydock_tasks.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_full_regression.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_history_manager.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_integration.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_loop_detection.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_message_id.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_message_merging.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_middleware.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_multi_agent.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_real_failures.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_real_issues.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_real_workflow.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_reasoning_content.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_smoke.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_system_prompt.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_tagged_text.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_ui_external_editor.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_ui_input_history.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_user_issues.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/test_workloads.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/testbank_helpers.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/tools/test_ask_user_question.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/tools/test_bash.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/tools/test_exit_plan_mode.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/tools/test_grep.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/tools/test_invoke_context.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/tools/test_manager_get_tool_config.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/tools/test_mcp.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/tools/test_mcp_sampling.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/tools/test_task.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/tools/test_ui_bash_execution.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/tools/test_webfetch.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/tools/test_websearch.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/update_notifier/adapters/fake_update_cache_repository.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/update_notifier/adapters/fake_update_gateway.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/update_notifier/test_do_update.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/update_notifier/test_filesystem_update_cache_repository.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/update_notifier/test_github_update_gateway.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/update_notifier/test_pypi_update_gateway.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/update_notifier/test_ui_update_notification.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/update_notifier/test_update_use_case.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/tests/update_notifier/test_whats_new.py +0 -0
- {drydock_cli-2.2.8 → drydock_cli-2.2.9}/uv.lock +0 -0
|
@@ -497,6 +497,8 @@ class AgentLoop:
|
|
|
497
497
|
files_explored: list[str] = [] # Track files read for context state
|
|
498
498
|
files_modified: list[str] = [] # Track files edited for blast radius
|
|
499
499
|
context_summary_injected = False
|
|
500
|
+
self._temp_override: float | None = None # Temperature bump on loop detection
|
|
501
|
+
self._failed_approaches: list[str] = [] # Persistent failed approach tracker
|
|
500
502
|
while not should_break_loop:
|
|
501
503
|
# Loop protection: prevent infinite tool-call loops
|
|
502
504
|
tool_turns += 1
|
|
@@ -868,11 +870,24 @@ class AgentLoop:
|
|
|
868
870
|
# Prune duplicate tool calls to give model fresh context
|
|
869
871
|
self._prune_repeated_tool_calls()
|
|
870
872
|
|
|
873
|
+
# Temperature bump: force model to explore different paths
|
|
874
|
+
self._temp_override = 0.5
|
|
875
|
+
|
|
876
|
+
# Track failed approach for accumulator
|
|
877
|
+
self._record_failed_approach()
|
|
878
|
+
|
|
871
879
|
# RETROSPECTION: Summarize recent actions and let the model
|
|
872
880
|
# decide its own next step — no hardcoded nudges
|
|
873
881
|
retro = self._build_retrospection()
|
|
874
882
|
if retro:
|
|
883
|
+
# Include failed approaches if any
|
|
884
|
+
if self._failed_approaches:
|
|
885
|
+
approaches = "\n".join(f" - {a}" for a in self._failed_approaches[-5:])
|
|
886
|
+
retro += f"\n\nApproaches already tried (don't repeat these):\n{approaches}"
|
|
875
887
|
self._inject_system_note(retro)
|
|
888
|
+
else:
|
|
889
|
+
# Loop broken — reset temperature to normal
|
|
890
|
+
self._temp_override = None
|
|
876
891
|
|
|
877
892
|
if user_cancelled:
|
|
878
893
|
return
|
|
@@ -1252,11 +1267,31 @@ class AgentLoop:
|
|
|
1252
1267
|
)
|
|
1253
1268
|
except (json.JSONDecodeError, AttributeError):
|
|
1254
1269
|
pass
|
|
1270
|
+
# AUTO-READ: Automatically read the target file so the model has
|
|
1271
|
+
# the actual content — don't just tell it to read, DO it for it
|
|
1272
|
+
auto_read_content = ""
|
|
1273
|
+
try:
|
|
1274
|
+
sr_args = json.loads(tool_call.raw_arguments or "{}")
|
|
1275
|
+
sr_path = sr_args.get("file_path", sr_args.get("path", ""))
|
|
1276
|
+
if sr_path and Path(sr_path).exists():
|
|
1277
|
+
with open(sr_path, "r", encoding="utf-8", errors="replace") as f:
|
|
1278
|
+
lines = f.readlines()
|
|
1279
|
+
# Show first 50 lines or the whole file if small
|
|
1280
|
+
preview_lines = lines[:50]
|
|
1281
|
+
numbered = [f"{i+1}\t{line.rstrip()}" for i, line in enumerate(preview_lines)]
|
|
1282
|
+
auto_read_content = (
|
|
1283
|
+
f"\n\nAUTO-READ of {sr_path} (first {len(preview_lines)} lines):\n"
|
|
1284
|
+
+ "\n".join(numbered)
|
|
1285
|
+
)
|
|
1286
|
+
if len(lines) > 50:
|
|
1287
|
+
auto_read_content += f"\n[... {len(lines) - 50} more lines]"
|
|
1288
|
+
except Exception:
|
|
1289
|
+
pass
|
|
1255
1290
|
error_msg += (
|
|
1256
1291
|
"\n\n[RECOVERY: Your search text didn't match the file contents. "
|
|
1257
|
-
"
|
|
1258
|
-
"then retry search_replace with the EXACT text from read_file output."
|
|
1292
|
+
"The actual file content is shown below — use EXACT text from it for your next edit."
|
|
1259
1293
|
f"{sr_file_hint}]"
|
|
1294
|
+
f"{auto_read_content}"
|
|
1260
1295
|
)
|
|
1261
1296
|
elif tool_call.tool_name == "search_replace" and "multiple" in str(exc).lower():
|
|
1262
1297
|
error_msg += (
|
|
@@ -1390,10 +1425,12 @@ class AgentLoop:
|
|
|
1390
1425
|
|
|
1391
1426
|
try:
|
|
1392
1427
|
start_time = time.perf_counter()
|
|
1428
|
+
# Use temperature override if set (loop detection bumps it)
|
|
1429
|
+
temp = getattr(self, '_temp_override', None) or active_model.temperature
|
|
1393
1430
|
result = await self.backend.complete(
|
|
1394
1431
|
model=active_model,
|
|
1395
1432
|
messages=self.messages,
|
|
1396
|
-
temperature=
|
|
1433
|
+
temperature=temp,
|
|
1397
1434
|
tools=available_tools,
|
|
1398
1435
|
tool_choice=tool_choice,
|
|
1399
1436
|
extra_headers=self._get_extra_headers(provider),
|
|
@@ -1438,10 +1475,12 @@ class AgentLoop:
|
|
|
1438
1475
|
start_time = time.perf_counter()
|
|
1439
1476
|
usage = LLMUsage()
|
|
1440
1477
|
chunk_agg = LLMChunk(message=LLMMessage(role=Role.assistant))
|
|
1478
|
+
# Use temperature override if set (loop detection bumps it)
|
|
1479
|
+
temp = getattr(self, '_temp_override', None) or active_model.temperature
|
|
1441
1480
|
async for chunk in self.backend.complete_streaming(
|
|
1442
1481
|
model=active_model,
|
|
1443
1482
|
messages=self.messages,
|
|
1444
|
-
temperature=
|
|
1483
|
+
temperature=temp,
|
|
1445
1484
|
tools=available_tools,
|
|
1446
1485
|
tool_choice=tool_choice,
|
|
1447
1486
|
extra_headers=self._get_extra_headers(provider),
|
|
@@ -1545,6 +1584,47 @@ class AgentLoop:
|
|
|
1545
1584
|
feedback=feedback,
|
|
1546
1585
|
)
|
|
1547
1586
|
|
|
1587
|
+
def _record_failed_approach(self) -> None:
|
|
1588
|
+
"""Record a one-line summary of the most recent failed approach.
|
|
1589
|
+
|
|
1590
|
+
Survives pruning and compaction so the model doesn't retry
|
|
1591
|
+
the same strategy after context cleanup.
|
|
1592
|
+
"""
|
|
1593
|
+
if not hasattr(self, '_failed_approaches'):
|
|
1594
|
+
self._failed_approaches = []
|
|
1595
|
+
|
|
1596
|
+
# Extract the last tool call and its result
|
|
1597
|
+
last_tool_name = ""
|
|
1598
|
+
last_tool_args = ""
|
|
1599
|
+
last_result = ""
|
|
1600
|
+
for msg in reversed(self.messages[-6:]):
|
|
1601
|
+
if msg.role == Role.tool and not last_result:
|
|
1602
|
+
result = str(msg.content or "")[:100]
|
|
1603
|
+
if "error" in result.lower() or "not found" in result.lower():
|
|
1604
|
+
last_result = result[:80]
|
|
1605
|
+
elif msg.role == Role.assistant and msg.tool_calls and not last_tool_name:
|
|
1606
|
+
for tc in msg.tool_calls:
|
|
1607
|
+
if tc.function:
|
|
1608
|
+
last_tool_name = tc.function.name or ""
|
|
1609
|
+
args = tc.function.arguments or ""
|
|
1610
|
+
# Extract file path if present
|
|
1611
|
+
try:
|
|
1612
|
+
parsed = json.loads(args)
|
|
1613
|
+
last_tool_args = parsed.get("file_path", parsed.get("path", parsed.get("command", "")))[:60]
|
|
1614
|
+
except (json.JSONDecodeError, TypeError, AttributeError):
|
|
1615
|
+
last_tool_args = args[:40]
|
|
1616
|
+
break
|
|
1617
|
+
|
|
1618
|
+
if last_tool_name:
|
|
1619
|
+
summary = f"{last_tool_name}({last_tool_args})"
|
|
1620
|
+
if last_result:
|
|
1621
|
+
summary += f" → {last_result}"
|
|
1622
|
+
# Don't add duplicates
|
|
1623
|
+
if not self._failed_approaches or self._failed_approaches[-1] != summary:
|
|
1624
|
+
self._failed_approaches.append(summary)
|
|
1625
|
+
# Keep only last 10
|
|
1626
|
+
self._failed_approaches = self._failed_approaches[-10:]
|
|
1627
|
+
|
|
1548
1628
|
def _build_retrospection(self) -> str | None:
|
|
1549
1629
|
"""Build a retrospection summary of recent tool calls.
|
|
1550
1630
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/plan_offer/adapters/http_whoami_gateway.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/notifications/adapters/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/notifications/ports/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/chat_input/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/chat_input/container.py
RENAMED
|
File without changes
|
{drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/widgets/chat_input/text_area.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/textual_ui/windowing/history_windowing.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/update_notifier/adapters/pypi_update_gateway.py
RENAMED
|
File without changes
|
{drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/cli/update_notifier/ports/update_cache_repository.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/autocompletion/file_indexer/__init__.py
RENAMED
|
File without changes
|
{drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/autocompletion/file_indexer/ignore_rules.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drydock_cli-2.2.8 → drydock_cli-2.2.9}/drydock/core/config/harness_files/_harness_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|