drydock-cli 2.5.4__tar.gz → 2.5.5__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.5.4 → drydock_cli-2.5.5}/PKG-INFO +1 -1
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/agent_loop.py +14 -0
- drydock_cli-2.5.5/drydock/core/session_checker.py +160 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/search_replace.py +20 -3
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/pyproject.toml +1 -1
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/.github/CODEOWNERS +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/.github/DISCUSSION_TEMPLATE/ideas.yml +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/.github/workflows/build-and-upload.yml +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/.github/workflows/ci.yml +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/.github/workflows/issue-labeler.yml +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/.github/workflows/release.yml +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/.gitignore +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/.pre-commit-config.yaml +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/.python-version +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/.typos.toml +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/.vscode/extensions.json +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/.vscode/launch.json +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/.vscode/settings.json +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/AGENTS.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/CHANGELOG.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/CLAUDE.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/CONTRIBUTING.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/Drydock_rebrand.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/LICENSE +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/NOTICE +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/PRD.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/README.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/action.yml +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/distribution/zed/LICENSE +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/distribution/zed/extension.toml +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/distribution/zed/icons/mistral_vibe.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/docs/README.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/docs/acp-setup.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/docs/proxy-setup.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/acp/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/acp/acp_agent_loop.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/acp/acp_logger.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/acp/entrypoint.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/acp/tools/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/acp/tools/base.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/acp/tools/builtins/bash.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/acp/tools/builtins/read_file.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/acp/tools/builtins/search_replace.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/acp/tools/builtins/todo.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/acp/tools/builtins/write_file.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/acp/tools/session_update.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/acp/utils.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/autocompletion/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/autocompletion/base.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/autocompletion/path_completion.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/autocompletion/slash_command.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/cli.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/clipboard.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/commands.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/entrypoint.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/history_manager.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/plan_offer/adapters/http_whoami_gateway.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/plan_offer/decide_plan_offer.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/plan_offer/ports/whoami_gateway.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/terminal_setup.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/ansi_markdown.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/app.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/app.tcss +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/external_editor.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/handlers/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/handlers/event_handler.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/notifications/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/notifications/adapters/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/notifications/adapters/textual_notification_adapter.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/notifications/ports/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/notifications/ports/notification_port.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/approval_app.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/banner/banner.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/banner/petit_chat.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/braille_renderer.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/chat_input/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/chat_input/body.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/chat_input/completion_manager.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/chat_input/completion_popup.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/chat_input/container.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/chat_input/text_area.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/compact.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/config_app.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/context_progress.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/load_more.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/loading.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/messages.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/no_markup_static.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/path_display.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/proxy_setup_app.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/question_app.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/session_picker.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/spinner.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/status_message.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/teleport_message.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/tool_widgets.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/tools.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/vscode_compat.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/windowing/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/windowing/history.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/windowing/history_windowing.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/windowing/state.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/update_notifier/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/update_notifier/adapters/filesystem_update_cache_repository.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/update_notifier/adapters/github_update_gateway.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/update_notifier/adapters/pypi_update_gateway.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/update_notifier/ports/update_cache_repository.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/update_notifier/ports/update_gateway.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/update_notifier/update.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/cli/update_notifier/whats_new.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/agents/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/agents/manager.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/agents/models.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/auth/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/auth/crypto.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/auth/github.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/autocompletion/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/autocompletion/completers.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/autocompletion/file_indexer/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/autocompletion/file_indexer/ignore_rules.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/autocompletion/file_indexer/indexer.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/autocompletion/file_indexer/store.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/autocompletion/file_indexer/watcher.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/autocompletion/fuzzy.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/autocompletion/path_prompt.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/autocompletion/path_prompt_adapter.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/build_orchestrator.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/config/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/config/_settings.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/config/harness_files/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/config/harness_files/_harness_manager.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/config/harness_files/_paths.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/consultant.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/drydock_states.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/hooks.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/llm/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/llm/backend/anthropic.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/llm/backend/base.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/llm/backend/factory.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/llm/backend/generic.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/llm/backend/mistral.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/llm/backend/reasoning_adapter.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/llm/backend/vertex.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/llm/exceptions.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/llm/format.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/llm/message_utils.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/llm/types.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/logger.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/middleware.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/output_formatters.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/paths/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/paths/_local_config_walk.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/paths/_vibe_home.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/paths/conventions.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/plan_session.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/plugins.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/programmatic.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/prompts/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/prompts/builder.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/prompts/cli.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/prompts/compact.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/prompts/dangerous_directory.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/prompts/diagnostic.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/prompts/explore.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/prompts/gemma4.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/prompts/planner.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/prompts/project_context.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/prompts/tests.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/proxy_setup.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/session/agent_memory.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/session/checkpoints.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/session/session_loader.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/session/session_logger.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/session/session_migration.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/session/state_file.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/skills/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/skills/manager.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/skills/models.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/skills/parser.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/slug.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/system_prompt.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/telemetry/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/telemetry/send.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/teleport/errors.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/teleport/git.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/teleport/nuage.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/teleport/teleport.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/teleport/types.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/base.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/ask_user_question.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/bash.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/cron.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/exit_plan_mode.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/glob_tool.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/grep.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/invoke_skill.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/lsp.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/mcp_resources.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/notebook_edit.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/powershell.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/prompts/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/prompts/ask_user_question.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/prompts/bash.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/prompts/cron.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/prompts/glob.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/prompts/grep.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/prompts/invoke_skill.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/prompts/lsp.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/prompts/mcp_resources.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/prompts/notebook_edit.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/prompts/powershell.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/prompts/read_file.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/prompts/search_replace.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/prompts/swe_bench.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/prompts/task.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/prompts/task_manager.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/prompts/todo.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/prompts/tool_search.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/prompts/webfetch.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/prompts/websearch.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/prompts/worktree.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/prompts/write_file.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/read_file.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/task.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/task_manager.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/todo.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/tool_search.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/webfetch.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/websearch.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/worktree.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/builtins/write_file.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/injection_guard.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/manager.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/mcp/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/mcp/registry.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/mcp/tools.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/mcp_sampling.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/ui.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/tools/utils.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/trusted_folders.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/types.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/core/utils.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/setup/onboarding/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/setup/onboarding/base.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/setup/onboarding/onboarding.tcss +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/setup/onboarding/screens/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/setup/onboarding/screens/api_key.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/setup/onboarding/screens/welcome.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/setup/trusted_folders/trust_folder_dialog.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/setup/trusted_folders/trust_folder_dialog.tcss +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/api-design/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/batch/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/commit-code/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/context-summary/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/create-presentation/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/deep-research/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/deploy/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/diff-review/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/doc-gen/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/explain-code/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/explore-code/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/fix-issue/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/git-ops/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/init-project/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/investigate/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/loop/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/migrate/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/perf-analyze/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/plan-impl/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/pr-review/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/refactor/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/regex-help/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/review/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/security-review/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/ship/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/simplify/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/skills/test-verify/SKILL.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock/whats_new.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock-acp.spec +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/drydock_terms.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/flake.lock +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/flake.nix +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/log_analyzer/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/log_analyzer/__main__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/log_analyzer/analyzer.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/log_analyzer/cli.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/scripts/README.md +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/scripts/auto_test_loop.sh +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/scripts/backup.sh +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/scripts/bump_version.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/scripts/deploy_to_github.sh +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/scripts/discover_cli_tools.sh +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/scripts/install.sh +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/scripts/monitor_swebench.sh +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/scripts/monitor_test_battery.sh +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/scripts/notify_release.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/scripts/overnight_agents_test.sh +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/scripts/prepare_release.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/scripts/publish_to_pypi.sh +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/scripts/test_bank.sh +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/scripts/test_full.sh +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/scripts/test_smoke.sh +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/scripts/test_tui_path.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/scripts/tui_test.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/acp/conftest.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/acp/test_acp.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/acp/test_agent_thought.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/acp/test_bash.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/acp/test_compact_session_updates.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/acp/test_content.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/acp/test_initialize.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/acp/test_list_sessions.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/acp/test_load_session.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/acp/test_multi_session.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/acp/test_new_session.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/acp/test_proxy_setup_acp.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/acp/test_read_file.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/acp/test_search_replace.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/acp/test_set_config_option.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/acp/test_set_mode.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/acp/test_set_model.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/acp/test_tool_call_session_update.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/acp/test_utils.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/acp/test_write_file.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/autocompletion/test_file_indexer.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/autocompletion/test_fuzzy.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/autocompletion/test_path_completer_fuzzy.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/autocompletion/test_path_completer_recursive.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/autocompletion/test_path_completion_controller.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/autocompletion/test_path_prompt_transformer.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/autocompletion/test_slash_command_controller.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/autocompletion/test_ui_chat_autocompletion.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/backend/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/backend/data/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/backend/data/fireworks.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/backend/data/mistral.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/backend/test_anthropic_adapter.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/backend/test_backend.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/backend/test_reasoning_adapter.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/backend/test_vertex_anthropic_adapter.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/cli/plan_offer/adapters/fake_whoami_gateway.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/cli/plan_offer/test_decide_plan_offer.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/cli/plan_offer/test_http_whoami_gateway.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/cli/test_bell_notifications.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/cli/test_braille_renderer.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/cli/test_clipboard.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/cli/test_commands.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/cli/test_copy_shortcuts.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/cli/test_external_editor.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/cli/test_no_markup_static.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/cli/test_question_app.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/cli/test_spinner.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/cli/test_switching_mode.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/cli/test_ui_clipboard_notifications.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/cli/test_ui_session_incremental_renderer.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/cli/test_ui_session_resume.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/cli/test_ui_skill_dispatch.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/cli/textual_ui/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/cli/textual_ui/test_session_picker.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/conftest.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/core/test_agents.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/core/test_auth_crypto.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/core/test_auth_github.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/core/test_config_load_dotenv.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/core/test_config_paths.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/core/test_config_resolution.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/core/test_file_logging.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/core/test_plan_session.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/core/test_proxy_setup.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/core/test_slug.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/core/test_telemetry_send.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/core/test_teleport_git.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/core/test_teleport_nuage.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/core/test_teleport_service.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/core/test_trusted_folders.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/core/test_utils.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/e2e/common.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/e2e/conftest.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/e2e/mock_server.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/e2e/test_cli_tui_onboarding.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/e2e/test_cli_tui_streaming.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/e2e/test_cli_tui_tool_approval.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/mock/__init__.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/mock/mock_backend_factory.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/mock/mock_entrypoint.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/mock/utils.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/onboarding/test_run_onboarding.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/onboarding/test_ui_onboarding.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/session/test_session_loader.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/session/test_session_logger.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/session/test_session_migration.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/skills/conftest.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/skills/test_manager.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/skills/test_models.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/skills/test_parser.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_collapsed.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_expanded.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_basic_conversation/test_snapshot_shows_basic_conversation.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/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.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_empty_assistant_before_reasoning/test_snapshot_empty_assistant_removed_when_reasoning_starts.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_accept_edits_mode.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_auto_approve_mode.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_plan_mode.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_wraps_to_default.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_default_mode.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_pending.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_resolved.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_cancel_discards_changes.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_edit_existing_values.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_empty.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_with_values.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_error.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_new_values.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_answer_first_advance.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_first_answered_checkmark.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_initial.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_left_wraps.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_right.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_tab_to_second.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_initial.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_mixed_selection.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_navigate_to_submit.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_other_with_text.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_first.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_multiple.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_untoggle.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_initial.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_down.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_other.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_third_option.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_up_wraps.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_other_typing.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_buffered_reasoning_yields_before_content.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_interleaved_reasoning.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content_expanded.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_release_update_notification/test_snapshot_shows_release_update_notification.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_session_resume/test_snapshot_shows_resumed_session_messages.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_partial.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_updated.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_cancel_selected.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_multiple_commits.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_single_commit.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_complete.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_required.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_checking_git.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_complete.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_error.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_pushing.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_sending_token.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_starting_workflow.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_no_plan_message.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_switch_message.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_upgrade_message.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_whats_new_message.svg +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/base_snapshot_test_app.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/conftest.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/snap_compare.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/test_ui_snapshot_ask_user_question.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/test_ui_snapshot_basic_conversation.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/test_ui_snapshot_code_block_horizontal_scrolling.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/test_ui_snapshot_empty_assistant_before_reasoning.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/test_ui_snapshot_modes.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/test_ui_snapshot_parallel_tool_calls.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/test_ui_snapshot_proxy_setup.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/test_ui_snapshot_question_app.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/test_ui_snapshot_reasoning_content.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/test_ui_snapshot_release_update_notification.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/test_ui_snapshot_session_resume.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/test_ui_snapshot_streaming_tool_call.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/test_ui_snapshot_teleport.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/snapshots/test_ui_snapshot_whats_new.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/stubs/fake_backend.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/stubs/fake_client.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/stubs/fake_tool.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_agent_auto_compact.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_agent_backend.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_agent_observer_streaming.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_agent_stats.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_agent_tasks.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_agent_tool_call.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_agents.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_bank_build.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_bank_debug.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_bank_multiagent.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_bank_prd.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_bank_prd_extended.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_bank_tools.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_bank_update.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_build_projects.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_cli_programmatic_preload.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_current_bugs.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_drydock_regression.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_drydock_tasks.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_full_regression.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_history_manager.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_integration.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_loop_detection.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_message_id.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_message_merging.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_middleware.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_multi_agent.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_real_failures.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_real_issues.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_real_workflow.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_reasoning_content.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_smoke.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_system_prompt.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_tagged_text.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_ui_external_editor.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_ui_input_history.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_user_issues.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/test_workloads.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/testbank_helpers.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/tools/test_ask_user_question.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/tools/test_bash.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/tools/test_exit_plan_mode.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/tools/test_grep.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/tools/test_invoke_context.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/tools/test_manager_get_tool_config.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/tools/test_mcp.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/tools/test_mcp_sampling.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/tools/test_task.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/tools/test_ui_bash_execution.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/tools/test_webfetch.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/tools/test_websearch.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/update_notifier/adapters/fake_update_cache_repository.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/update_notifier/adapters/fake_update_gateway.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/update_notifier/test_do_update.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/update_notifier/test_filesystem_update_cache_repository.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/update_notifier/test_github_update_gateway.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/update_notifier/test_pypi_update_gateway.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/update_notifier/test_ui_update_notification.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/update_notifier/test_update_use_case.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/tests/update_notifier/test_whats_new.py +0 -0
- {drydock_cli-2.5.4 → drydock_cli-2.5.5}/uv.lock +0 -0
|
@@ -949,6 +949,20 @@ class AgentLoop:
|
|
|
949
949
|
finally:
|
|
950
950
|
await self._save_messages()
|
|
951
951
|
|
|
952
|
+
# Post-session quality check
|
|
953
|
+
try:
|
|
954
|
+
from drydock.core.session_checker import check_session, format_issues
|
|
955
|
+
issues = check_session(
|
|
956
|
+
list(self.messages),
|
|
957
|
+
has_made_edit=has_made_edit,
|
|
958
|
+
)
|
|
959
|
+
if issues:
|
|
960
|
+
report = format_issues(issues)
|
|
961
|
+
if report:
|
|
962
|
+
yield AssistantEvent(content=report)
|
|
963
|
+
except Exception:
|
|
964
|
+
pass # Non-critical — don't crash on checker errors
|
|
965
|
+
|
|
952
966
|
async def _perform_llm_turn(self) -> AsyncGenerator[BaseEvent, None]:
|
|
953
967
|
if self.enable_streaming:
|
|
954
968
|
async for event in self._stream_assistant_events():
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"""Post-session quality checker for DryDock TUI.
|
|
2
|
+
|
|
3
|
+
After each agent session, scans the conversation for common issues
|
|
4
|
+
and reports them to the user. This catches problems that the model
|
|
5
|
+
doesn't self-detect.
|
|
6
|
+
"""
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
import json
|
|
10
|
+
import re
|
|
11
|
+
from collections import Counter
|
|
12
|
+
from typing import TYPE_CHECKING
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from drydock.core.types import LLMMessage, Role
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class SessionIssue:
|
|
19
|
+
def __init__(self, severity: str, category: str, message: str):
|
|
20
|
+
self.severity = severity # "error", "warning", "info"
|
|
21
|
+
self.category = category
|
|
22
|
+
self.message = message
|
|
23
|
+
|
|
24
|
+
def __str__(self):
|
|
25
|
+
icons = {"error": "✗", "warning": "⚠", "info": "ℹ"}
|
|
26
|
+
return f"{icons.get(self.severity, '?')} [{self.category}] {self.message}"
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def check_session(messages: list, has_made_edit: bool = False) -> list[SessionIssue]:
|
|
30
|
+
"""Check a completed session for quality issues.
|
|
31
|
+
|
|
32
|
+
Returns a list of issues found. Empty list = clean session.
|
|
33
|
+
"""
|
|
34
|
+
issues = []
|
|
35
|
+
|
|
36
|
+
if not messages:
|
|
37
|
+
return issues
|
|
38
|
+
|
|
39
|
+
# 1. Unknown tool errors
|
|
40
|
+
unknown_tools = []
|
|
41
|
+
for msg in messages:
|
|
42
|
+
content = str(getattr(msg, 'content', '') or '')
|
|
43
|
+
if "Unknown tool" in content:
|
|
44
|
+
match = re.search(r"Unknown tool '(\w+)'", content)
|
|
45
|
+
if match:
|
|
46
|
+
unknown_tools.append(match.group(1))
|
|
47
|
+
if unknown_tools:
|
|
48
|
+
tools = ', '.join(set(unknown_tools))
|
|
49
|
+
issues.append(SessionIssue(
|
|
50
|
+
"warning", "tool_error",
|
|
51
|
+
f"Model tried to call unavailable tools: {tools}"
|
|
52
|
+
))
|
|
53
|
+
|
|
54
|
+
# 2. search_replace errors
|
|
55
|
+
sr_errors = 0
|
|
56
|
+
for msg in messages:
|
|
57
|
+
content = str(getattr(msg, 'content', '') or '')
|
|
58
|
+
if "search_replace" in content and ("error" in content.lower() or "not found" in content.lower()):
|
|
59
|
+
sr_errors += 1
|
|
60
|
+
if sr_errors > 2:
|
|
61
|
+
issues.append(SessionIssue(
|
|
62
|
+
"warning", "edit_failures",
|
|
63
|
+
f"search_replace failed {sr_errors} times — model may not have applied intended edits"
|
|
64
|
+
))
|
|
65
|
+
|
|
66
|
+
# 3. Same file written too many times
|
|
67
|
+
write_paths = []
|
|
68
|
+
for msg in messages:
|
|
69
|
+
if hasattr(msg, 'tool_calls') and msg.tool_calls:
|
|
70
|
+
for tc in (msg.tool_calls or []):
|
|
71
|
+
if hasattr(tc, 'function') and tc.function:
|
|
72
|
+
if tc.function.name == "write_file":
|
|
73
|
+
try:
|
|
74
|
+
args = json.loads(tc.function.arguments or "{}")
|
|
75
|
+
path = args.get("path", "")
|
|
76
|
+
if path:
|
|
77
|
+
write_paths.append(path)
|
|
78
|
+
except (json.JSONDecodeError, AttributeError):
|
|
79
|
+
pass
|
|
80
|
+
if write_paths:
|
|
81
|
+
counts = Counter(write_paths)
|
|
82
|
+
for path, count in counts.most_common(3):
|
|
83
|
+
if count > 3:
|
|
84
|
+
issues.append(SessionIssue(
|
|
85
|
+
"warning", "write_loop",
|
|
86
|
+
f"'{path}' was written {count} times — possible loop"
|
|
87
|
+
))
|
|
88
|
+
|
|
89
|
+
# 4. Text repetition in model responses
|
|
90
|
+
for msg in messages:
|
|
91
|
+
content = str(getattr(msg, 'content', '') or '')
|
|
92
|
+
if len(content) > 300:
|
|
93
|
+
sentences = [s.strip() for s in content.split('.') if len(s.strip()) > 30]
|
|
94
|
+
if sentences:
|
|
95
|
+
counts = Counter(sentences)
|
|
96
|
+
most, count = counts.most_common(1)[0]
|
|
97
|
+
if count >= 3:
|
|
98
|
+
issues.append(SessionIssue(
|
|
99
|
+
"warning", "text_loop",
|
|
100
|
+
f"Model repeated the same sentence {count} times"
|
|
101
|
+
))
|
|
102
|
+
break # Only report once
|
|
103
|
+
|
|
104
|
+
# 5. "Please let me know" / asking for confirmation
|
|
105
|
+
ask_count = 0
|
|
106
|
+
for msg in messages:
|
|
107
|
+
content = str(getattr(msg, 'content', '') or '').lower()
|
|
108
|
+
if any(phrase in content for phrase in [
|
|
109
|
+
"please let me know", "shall i", "would you like",
|
|
110
|
+
"ready to begin", "please provide", "let me know if",
|
|
111
|
+
]):
|
|
112
|
+
ask_count += 1
|
|
113
|
+
if ask_count > 1:
|
|
114
|
+
issues.append(SessionIssue(
|
|
115
|
+
"info", "confirmation_asking",
|
|
116
|
+
f"Model asked for confirmation {ask_count} times instead of acting"
|
|
117
|
+
))
|
|
118
|
+
|
|
119
|
+
# 6. API errors
|
|
120
|
+
api_errors = 0
|
|
121
|
+
for msg in messages:
|
|
122
|
+
content = str(getattr(msg, 'content', '') or '')
|
|
123
|
+
if "API error" in content or "400 Bad Request" in content:
|
|
124
|
+
api_errors += 1
|
|
125
|
+
if api_errors > 0:
|
|
126
|
+
issues.append(SessionIssue(
|
|
127
|
+
"error", "api_errors",
|
|
128
|
+
f"{api_errors} API errors occurred during the session"
|
|
129
|
+
))
|
|
130
|
+
|
|
131
|
+
# 7. No edits made despite having a task
|
|
132
|
+
if not has_made_edit and len(messages) > 5:
|
|
133
|
+
has_user_task = any(
|
|
134
|
+
hasattr(msg, 'role') and str(getattr(msg, 'role', '')) == 'user'
|
|
135
|
+
and len(str(getattr(msg, 'content', '') or '')) > 20
|
|
136
|
+
for msg in messages
|
|
137
|
+
)
|
|
138
|
+
if has_user_task:
|
|
139
|
+
issues.append(SessionIssue(
|
|
140
|
+
"warning", "no_edits",
|
|
141
|
+
"Session ended without making any file changes"
|
|
142
|
+
))
|
|
143
|
+
|
|
144
|
+
return issues
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def format_issues(issues: list[SessionIssue]) -> str:
|
|
148
|
+
"""Format issues for display in the TUI."""
|
|
149
|
+
if not issues:
|
|
150
|
+
return ""
|
|
151
|
+
|
|
152
|
+
errors = [i for i in issues if i.severity == "error"]
|
|
153
|
+
warnings = [i for i in issues if i.severity == "warning"]
|
|
154
|
+
infos = [i for i in issues if i.severity == "info"]
|
|
155
|
+
|
|
156
|
+
lines = ["", "Session Quality Check:"]
|
|
157
|
+
for issue in errors + warnings + infos:
|
|
158
|
+
lines.append(f" {issue}")
|
|
159
|
+
|
|
160
|
+
return "\n".join(lines)
|
|
@@ -53,8 +53,11 @@ class BlockApplyResult(NamedTuple):
|
|
|
53
53
|
|
|
54
54
|
|
|
55
55
|
class SearchReplaceArgs(BaseModel):
|
|
56
|
-
file_path: str
|
|
57
|
-
content: str
|
|
56
|
+
file_path: str = Field(default="", description="Path to the file to edit")
|
|
57
|
+
content: str = Field(default="", description="SEARCH/REPLACE blocks or JSON with old_string/new_string")
|
|
58
|
+
# Gemma 4 sometimes sends these directly instead of in content
|
|
59
|
+
old_string: str | None = Field(default=None, description="Text to find (alternative to content blocks)")
|
|
60
|
+
new_string: str | None = Field(default=None, description="Replacement text (alternative to content blocks)")
|
|
58
61
|
|
|
59
62
|
|
|
60
63
|
class SearchReplaceResult(BaseModel):
|
|
@@ -178,8 +181,22 @@ class SearchReplace(
|
|
|
178
181
|
file_path_str = args.file_path.strip()
|
|
179
182
|
content = args.content.strip()
|
|
180
183
|
|
|
184
|
+
# Handle direct old_string/new_string args (Gemma 4 sometimes sends these)
|
|
185
|
+
if not content and args.old_string is not None and args.new_string is not None:
|
|
186
|
+
content = f"<<<<<<< SEARCH\n{args.old_string}\n=======\n{args.new_string}\n>>>>>>> REPLACE"
|
|
187
|
+
|
|
188
|
+
# Try to extract file_path from content if missing
|
|
189
|
+
if not file_path_str and content:
|
|
190
|
+
# Look for file path in the content (common when model puts everything in content)
|
|
191
|
+
import re
|
|
192
|
+
path_match = re.search(r'(?:file[_\s]?path|path|file)[\s:="\']+([^\s"\']+\.py)', content[:200], re.IGNORECASE)
|
|
193
|
+
if path_match:
|
|
194
|
+
file_path_str = path_match.group(1)
|
|
195
|
+
|
|
181
196
|
if not file_path_str:
|
|
182
|
-
raise ToolError(
|
|
197
|
+
raise ToolError(
|
|
198
|
+
"File path is required. Use: search_replace(file_path='path/to/file.py', content='...')"
|
|
199
|
+
)
|
|
183
200
|
|
|
184
201
|
if len(content) > self.config.max_content_size:
|
|
185
202
|
raise ToolError(
|
|
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.5.4 → drydock_cli-2.5.5}/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.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/notifications/adapters/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{drydock_cli-2.5.4 → drydock_cli-2.5.5}/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.5.4 → drydock_cli-2.5.5}/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.5.4 → drydock_cli-2.5.5}/drydock/cli/textual_ui/widgets/chat_input/container.py
RENAMED
|
File without changes
|
{drydock_cli-2.5.4 → drydock_cli-2.5.5}/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.5.4 → drydock_cli-2.5.5}/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.5.4 → drydock_cli-2.5.5}/drydock/cli/update_notifier/adapters/pypi_update_gateway.py
RENAMED
|
File without changes
|
{drydock_cli-2.5.4 → drydock_cli-2.5.5}/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.5.4 → drydock_cli-2.5.5}/drydock/core/autocompletion/file_indexer/__init__.py
RENAMED
|
File without changes
|
{drydock_cli-2.5.4 → drydock_cli-2.5.5}/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.5.4 → drydock_cli-2.5.5}/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
|