deepagents-code 0.1.88__tar.gz → 0.2.0__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.
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/CHANGELOG.md +10 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/DEVELOPMENT.md +2 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/PKG-INFO +29 -31
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_ask_user_types.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_build_info.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_dep_floor_check.py +3 -3
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_git.py +12 -6
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_repository_bounds.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_session_stats.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_tool_stream.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_version.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/app.py +20 -20
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/approval_mode.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/auto_mode.py +4 -4
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/btw.py +2 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/btw_api.py +2 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/built_in_skills/deepagents-thread-inspector/scripts/inspect_sessions.py +3 -11
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/launch/server.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/launch/server_manager.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/non_interactive.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/remote_client.py +3 -3
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/config.py +7 -7
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/config_manifest.py +11 -7
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/configurable_model.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/configuration/paths.py +4 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/configuration/providers.py +3 -3
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/configuration/resolver.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/cost_tracking.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/doctor.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/event_bus.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/extensions/discovery.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/extensions/loader.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/extensions/runtime.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/extras_info.py +12 -12
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/file_ops.py +3 -3
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/formatting.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/goal_rubric.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/migration.py +2 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/runner.py +2 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/transcript.py +2 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/trust.py +3 -3
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/input.py +7 -5
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/integrations/sandbox_factory.py +2 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/iterm_cursor_guide.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/main.py +49 -61
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/managed_tools.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_auth.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_tools.py +2 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/media_utils.py +3 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/memory_guard.py +4 -4
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/model_api.py +3 -3
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/model_config.py +23 -23
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/model_retry.py +2 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/offload.py +5 -5
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/offload_middleware.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/adapters/mcp.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/adapters/skills.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/adapters/skills_middleware.py +2 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/manifest.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/marketplace.py +4 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/sessions.py +4 -4
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/skills/commands.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/skills/load.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/skills/trust.py +4 -4
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/terminal_escape.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/terminal_title.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/theme.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tool_catalog.py +2 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tool_display.py +6 -4
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/key_hints.py +4 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/plugin_manager/content.py +7 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/plugin_manager/models.py +3 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/plugin_manager/state.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/textual_adapter.py +2 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/_links.py +2 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/autocomplete.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/debug_console.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/history.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/messages.py +5 -5
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/model_selector.py +2 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/startup_tip.py +1 -6
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/status.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/subagent_panel.py +6 -6
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/thread_selector.py +3 -3
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/tool_widgets.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/welcome.py +2 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/update_check.py +17 -17
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/examples/extensions/memory_store.py +4 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/pyproject.toml +33 -34
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/scripts/install.sh +4 -4
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/conftest.py +6 -3
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/test_sandbox_factory.py +6 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/test_sandbox_operations.py +6 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/conftest.py +5 -5
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/plugins/test_marketplace.py +19 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/skills/test_commands.py +6 -3
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/skills/test_load.py +4 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/skills/test_pinned_skills.py +3 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/skills/test_skills_json.py +4 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/skills/test_thread_inspector.py +4 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/smoke_tests/test_system_prompt.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_acp.py +2 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_agent.py +6 -5
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_agent_friendly.py +4 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_args.py +4 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_cache_expiry.py +7 -6
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_config.py +5 -3
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_configuration_resolver.py +4 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_doctor.py +4 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_end_to_end.py +12 -11
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_extension_config_manifest.py +6 -3
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_extension_discovery.py +4 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_extension_display.py +4 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_extension_host_runtime.py +4 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_extension_hosting.py +4 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_extension_runtime.py +4 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_extras_info.py +4 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_file_ops.py +2 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_fork_goal_notice.py +6 -5
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_git.py +38 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_goal_tools.py +2 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_hatch_build.py +6 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_main.py +18 -17
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_mcp_disabled.py +5 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_model_catalog.py +5 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_model_config.py +7 -4
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_model_metadata.py +5 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_model_switch.py +7 -4
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_non_interactive.py +2 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_paths.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_reasoning_effort.py +5 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_reliable_rubric.py +5 -3
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_reload.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_remote_client.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_sessions.py +8 -8
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_subagents.py +6 -3
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_text_encoding.py +4 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_tool_display.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_update_check.py +1 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/modals/plugin_manager/test_inspection.py +4 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/modals/plugin_manager/test_structure.py +4 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/test_textual_adapter.py +8 -8
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_links.py +2 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_mcp_viewer.py +5 -1
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_model_selector.py +5 -3
- deepagents_code-0.2.0/tests/unit_tests/tui/widgets/test_startup_tip.py +29 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_thread_selector.py +6 -3
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_tool_renderers.py +6 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_welcome.py +5 -2
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/uv.lock +99 -1606
- deepagents_code-0.1.88/tests/unit_tests/tui/widgets/test_startup_tip.py +0 -55
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/.gitignore +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/AGENTS.md +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/ARCHITECTURE.md +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/COMMANDS.md +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/EXTENSIONS.md +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/HOOKS.md +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/LICENSE +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/Makefile +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/PRICING.md +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/README.md +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/THREAT_MODEL.md +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/__main__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_async.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_cli_context.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_constants.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_content_blocks.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_debug.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_debug_buffer.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_env_vars.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_fake_models.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_glm_5p2_profile.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_home_error.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_invocation.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_js_cost.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_markdown.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_paths.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_reserved_names.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_server_config.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_startup_error.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_terminal_stderr.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_testing_models.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_textual_patches.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_tool_free.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/_tracing.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/acp.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/agent.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/app.tcss +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/ask_user.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/auth_display.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/auth_store.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/btw_cost.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/built_in_skills/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/built_in_skills/deepagents-plugin-discovery/SKILL.md +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/built_in_skills/deepagents-thread-inspector/SKILL.md +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/bundled_prices.README.md +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/bundled_prices.json +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/commands/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/commands/auth.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/commands/config.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/commands/extras.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/commands/mcp.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/commands/tools.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/headless_resume.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/launch/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/launch/_server_bootstrap.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/session_cost.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/clipboard.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/cold_cache.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/command_registry.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/configuration/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/configuration/interpreter.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/configuration/provider.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/configuration/service.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/configuration/theme_resolution.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/configuration/types.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/configuration/writer.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/context_doctor.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/default_agent_prompt.md +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/diff_utils.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/editor.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/extensions/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/extensions/api.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/extensions/hosting.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/extensions/registry.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/extensions/settings.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/extensions/trust.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/goal_state_limits.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/goal_state_notice.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/goal_tools.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/capabilities.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/client.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/client_lifecycle.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/context.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/engine.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/env.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/envelope.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/interrupt.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/legacy.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/loading.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/manager.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/models/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/models/adapters.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/models/config.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/models/domain.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/models/transport.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/models/wire.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/permissions.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/presenter.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/projection.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/reducer.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/runtime.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/server_middleware.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/snapshot.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/tools.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/hooks/validate_terminal_sequence.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/integrations/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/integrations/openai_codex.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/integrations/sandbox_config.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/integrations/sandbox_provider.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/integrations/sandbox_registry.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/json_types.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/local_context.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_config.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_disabled.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_login_service.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_middleware.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_oauth_ui.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_providers/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_providers/_registry.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_providers/base.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_providers/github.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_providers/slack.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/mcp_proxy.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/model_catalog.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/model_metadata.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/notifications.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/offload_api.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/onboarding.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/output.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/paste_collapse.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/_json.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/adapters/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/adapters/hooks.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/commands_cli.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/discovery.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/models.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/store.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/plugins/substitution.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/project_utils.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/py.typed +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/reasoning_effort.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/reliable_rubric.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/resume_policy.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/resume_state.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/server_graph.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/skills/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/skills/invocation.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/skills/load_errors.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/skills/merge.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/state_migration.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/subagents.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/system_prompt.md +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/terminal_capabilities.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/thread_ownership.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/thread_titles.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tools.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/_cost_breakdown.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/btw.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/btw.tcss +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/cold_cache.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/cost_breakdown.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/mcp_servers.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/mcp_servers.tcss +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/model_switch.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/plugin_manager/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/plugin_manager/plugin_manager.tcss +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/plugin_manager/tabs.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/prompt_clipboard.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/prompt_clipboard.tcss +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/resume_blocked.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/resume_compact.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/session_cost.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/session_cost.tcss +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/thread_name.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/modals/thread_name.tcss +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/screens/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/_condense_path.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/_copy_spans.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/_inline_prompt.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/_js_eval_display.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/_paste_textarea.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/agent_selector.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/approval.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/ask_user.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/auth.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/auto_mode_notice.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/chat_input.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/codex_auth.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/context_usage.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/cwd_switch.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/diff.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/effort_selector.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/goal_review.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/goal_status.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/install_confirm.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/launch_init.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/loading.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/mcp_login.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/mcp_reconnect.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/mcp_viewer.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/message_store.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/notification_center.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/notification_detail.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/notification_settings.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/prompt_search.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/restart_prompt.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/skill_trust.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/theme_selector.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/thread_agent_switch.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/tool_renderers.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/update_available.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/update_confirm.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/update_progress.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/tui/widgets/yolo_mode_notice.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/ui.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/unicode_security.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/workspace.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/workspace_diagnostics.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/examples/skills/arxiv-search/SKILL.md +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/examples/skills/arxiv-search/arxiv_search.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/examples/skills/langgraph-docs/SKILL.md +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/examples/skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/examples/skills/web-research/SKILL.md +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/hatch_build.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/images/debug-console-cost-breakdown.png +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/images/model-stream-retry.png +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/images/tui.png +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/scripts/check_imports.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/scripts/check_process_cwd.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/scripts/debug_server.sh +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/scripts/generate_commands_catalog.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/README.md +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/benchmarks/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/benchmarks/test_local_context_benchmarks.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/benchmarks/test_thread_loading_benchmarks.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/test_acp_mode.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/test_auto_approve_remote.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/test_compact_resume.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/test_headless_resume.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/test_offload_server_side.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/test_pending_work_recovery.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/integration_tests/test_server_owner_lifetime.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/client/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/client/commands/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/client/commands/test_auth.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/client/commands/test_extras.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/client/commands/test_mcp.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/client/commands/test_tools.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/data/coding_agent_v1_validator.json +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/models/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/models/test_models.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/test_client_lifecycle.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/test_configuration.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/test_engine.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/test_execution.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/test_manager.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/test_presenter.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/test_server_lifecycle.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/test_transcript.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/hooks/test_trust.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/plugins/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/plugins/test_plugin_hooks.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/plugins/test_plugins_p0.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/skills/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/skills/test_merge.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/skills/test_skill_trust.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/smoke_tests/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/smoke_tests/conftest.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/smoke_tests/snapshots/system_prompt_headless_local.md +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/smoke_tests/snapshots/system_prompt_interactive_local.md +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test__tool_stream.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_agent_mcp_timeout.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_app.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_app_thread_ownership.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_approval_mode.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_ask_user_middleware.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_ask_user_types.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_auth_display.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_auth_store.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_auth_web_search_restart.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_auto_mode.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_btw.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_btw_api.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_charset.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_cli_provider.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_clipboard.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_coding_agent_metadata.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_cold_cache.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_command_registry.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_compact_tool.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_config_manifest.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_configurable_model.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_configuration.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_configuration_resolution.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_context_doctor.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_cost_breakdown.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_cost_tracking.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_cursor_style.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_debug.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_debug_buffer.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_debug_console.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_dep_floor_check.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_diff_utils.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_editor.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_env_vars.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_event_bus.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_exception_handling.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_extension_api.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_extension_cli_trust.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_extra_skills_dirs.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_formatting.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_glm_5p2_profile.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_goal_criteria_client.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_goal_rubric.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_goal_state_limits.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_goal_state_notice.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_goal_state_persistence.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_groq_tool_limit.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_headless_resume.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_hooks.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_idle_compaction.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_imports.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_input_parsing.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_install_command.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_install_script.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_interpreter_workspace_policy.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_invocation.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_js_cost_sync.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_js_cost_tracking.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_json_types.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_local_context.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_main_acp_mode.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_main_args.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_managed_tools.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_mcp_auth.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_mcp_config.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_mcp_lifecycle.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_mcp_login_service.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_mcp_middleware.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_mcp_oauth_ui.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_mcp_proxy.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_mcp_schema.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_mcp_tools.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_media_utils.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_memory_guard.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_model_retry.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_notifications.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_offload.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_offload_api.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_onboarding.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_openai_codex_integration.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_output.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_process_cwd_check.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_python_migration_bridge.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_repository_bounds.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_resume_compaction_recovery.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_resume_state.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_resume_workspace_errors.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_rubric_cli.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_sandbox_config.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_sandbox_factory.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_sandbox_provider.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_sandbox_registry.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_server.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_server_config.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_server_graph.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_server_helpers.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_server_manager.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_server_pipe.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_server_tracing.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_session_stats.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_shell_allow_list.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_skill_invocation.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_startup_fast_paths.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_state_migration.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_terminal_capabilities.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_terminal_escape.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_terminal_progress_preference.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_terminal_stderr.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_terminal_title.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_textual_patches.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_theme.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_thread_naming_app.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_thread_ownership.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_thread_ownership_transitions.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_thread_titles.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_threads_resume.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_tool_catalog.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_tracing.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_tracing_replicas.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_transcript_virtualization.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_ui.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_unicode_security.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_uninstall_command.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_version.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_workspace.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/test_workspace_diagnostics.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tools/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tools/test_current_thread.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tools/test_fetch_url.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tools/test_tool_arg_schemas.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tools/test_web_search.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/modals/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/modals/plugin_manager/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/modals/test_cold_cache.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/modals/test_model_switch.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/modals/test_prompt_clipboard.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/modals/test_resume_blocked.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/modals/test_session_cost.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/test_key_hints.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/test_modal_footer_layout.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/test_subagent_stream.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/__init__.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_agent_selector.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_approval.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_ask_user.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_auth_widgets.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_auto_mode_notice.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_autocomplete.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_chat_input.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_condense_path.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_copy_spans.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_cwd_switch.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_diff.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_goal_review.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_history.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_inline_prompt.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_install_confirm.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_launch_init.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_loading.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_mcp_login_modal.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_mcp_reconnect.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_message_store.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_messages.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_notification_center.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_notification_detail.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_notification_settings.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_prompt_search.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_restart_prompt.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_skill_trust_screen.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_status.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_subagent_panel.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_thread_agent_switch.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_update_available.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_update_confirm.py +0 -0
- {deepagents_code-0.1.88 → deepagents_code-0.2.0}/tests/unit_tests/tui/widgets/test_update_progress.py +0 -0
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
# Deep Agents Code Changelog
|
|
4
4
|
|
|
5
|
+
## [0.2.0](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.88...deepagents-code==0.2.0) (2026-10-22)
|
|
6
|
+
|
|
7
|
+
### ⚠ BREAKING CHANGES
|
|
8
|
+
|
|
9
|
+
- `deepagents-code` now requires Python 3.14 (`>=3.14,<3.15`). If you have auto-upgrade enabled, this should be handled for you automatically. Otherwise, re-run the dcode installer or recreate your environment with Python 3.14.
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
- Decode Git output as UTF-8.
|
|
14
|
+
|
|
5
15
|
## [0.1.88](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.87...deepagents-code==0.1.88) (2026-10-22)
|
|
6
16
|
|
|
7
17
|
### Bug Fixes
|
|
@@ -219,7 +219,7 @@ That lets you compare released behavior against local, and fall back to a known-
|
|
|
219
219
|
|
|
220
220
|
```bash
|
|
221
221
|
# 1. Create an isolated venv for the dev binary
|
|
222
|
-
uv venv ~/.local/share/dcode-dev --python 3.
|
|
222
|
+
uv venv ~/.local/share/dcode-dev --python 3.14
|
|
223
223
|
|
|
224
224
|
# 2. Install your checkout into it, editable
|
|
225
225
|
uv pip install --python ~/.local/share/dcode-dev/bin/python -e <repo>/libs/code
|
|
@@ -228,7 +228,7 @@ uv pip install --python ~/.local/share/dcode-dev/bin/python -e <repo>/libs/code
|
|
|
228
228
|
ln -sf ~/.local/share/dcode-dev/bin/dcode ~/.local/bin/dcode-dev
|
|
229
229
|
```
|
|
230
230
|
|
|
231
|
-
The `--python 3.
|
|
231
|
+
The `--python 3.14` is illustrative — any interpreter satisfying the package's `requires-python` (currently `>=3.14,<3.15`) works; omit the flag to let `uv` pick.
|
|
232
232
|
|
|
233
233
|
> **Why `uv venv` + `uv pip install -e` rather than `uv sync` or `uv tool install --editable`?** This builds an isolated venv *outside* the workspace's locked environment, so the dev binary can be re-resolved on demand without disturbing the released tool or the repo's `uv.lock`. (`uv pip` and `uv venv` are first-class `uv` subcommands here, not bare `pip`.)
|
|
234
234
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: deepagents-code
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Terminal coding agent built on the Deep Agents SDK - works with any model, with persistent memory, customizable skills, subagents, and approval controls.
|
|
5
5
|
Project-URL: Homepage, https://www.langchain.com/dcode
|
|
6
6
|
Project-URL: Documentation, https://docs.langchain.com/oss/deepagents/code/overview
|
|
@@ -20,52 +20,50 @@ Classifier: Environment :: Console
|
|
|
20
20
|
Classifier: Intended Audience :: Developers
|
|
21
21
|
Classifier: License :: OSI Approved :: MIT License
|
|
22
22
|
Classifier: Programming Language :: Python :: 3
|
|
23
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
24
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
25
23
|
Classifier: Programming Language :: Python :: 3.14
|
|
26
24
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
27
25
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
28
26
|
Classifier: Topic :: Terminals
|
|
29
|
-
Requires-Python: <
|
|
30
|
-
Requires-Dist: aiosqlite
|
|
31
|
-
Requires-Dist: anyio
|
|
27
|
+
Requires-Python: <3.15,>=3.14
|
|
28
|
+
Requires-Dist: aiosqlite>=0.22.1
|
|
29
|
+
Requires-Dist: anyio>=4.14.2
|
|
32
30
|
Requires-Dist: deepagents-acp<1.0.0,>=0.0.10
|
|
33
31
|
Requires-Dist: deepagents==0.7.30
|
|
34
|
-
Requires-Dist: fastmcp
|
|
32
|
+
Requires-Dist: fastmcp>=4.0.0b4
|
|
35
33
|
Requires-Dist: filelock<3.30,>=3.29.7
|
|
36
34
|
Requires-Dist: genai-prices<0.2.0,>=0.1.13
|
|
37
|
-
Requires-Dist: httpx
|
|
35
|
+
Requires-Dist: httpx>=0.28.1
|
|
38
36
|
Requires-Dist: langchain-anthropic<2.0.0,>=1.7.6
|
|
39
37
|
Requires-Dist: langchain-google-genai<5.0.0,>=4.4.2
|
|
40
38
|
Requires-Dist: langchain-openai<2.0.0,>=1.7.2
|
|
41
39
|
Requires-Dist: langchain-quickjs<0.4.0,>=0.3.4
|
|
42
|
-
Requires-Dist: langchain<2.0.0,>=1.4.
|
|
40
|
+
Requires-Dist: langchain<2.0.0,>=1.4.7
|
|
43
41
|
Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.1.2
|
|
44
42
|
Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.37
|
|
45
|
-
Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.36.
|
|
43
|
+
Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.36.4
|
|
46
44
|
Requires-Dist: langgraph-sdk<1.0.0,>=0.4.8
|
|
47
|
-
Requires-Dist: langsmith[sandbox]>=0.14.
|
|
48
|
-
Requires-Dist: markdownify
|
|
49
|
-
Requires-Dist: mcp
|
|
45
|
+
Requires-Dist: langsmith[sandbox]>=0.14.12
|
|
46
|
+
Requires-Dist: markdownify>=1.2.3
|
|
47
|
+
Requires-Dist: mcp>=2.0.0
|
|
50
48
|
Requires-Dist: packaging>=26.2
|
|
51
|
-
Requires-Dist: pillow
|
|
52
|
-
Requires-Dist: prompt-toolkit
|
|
53
|
-
Requires-Dist: pydantic<
|
|
54
|
-
Requires-Dist: pyperclip
|
|
55
|
-
Requires-Dist: python-dotenv
|
|
49
|
+
Requires-Dist: pillow>=13.0.0
|
|
50
|
+
Requires-Dist: prompt-toolkit>=3.0.53
|
|
51
|
+
Requires-Dist: pydantic<3.0.0,>=2.13.0
|
|
52
|
+
Requires-Dist: pyperclip>=1.11.0
|
|
53
|
+
Requires-Dist: python-dotenv>=1.2.2
|
|
56
54
|
Requires-Dist: pyyaml>=6.0.3
|
|
57
|
-
Requires-Dist: requests
|
|
58
|
-
Requires-Dist: rich
|
|
59
|
-
Requires-Dist: tavily-python
|
|
60
|
-
Requires-Dist: textual-autocomplete
|
|
61
|
-
Requires-Dist: textual-speedups
|
|
55
|
+
Requires-Dist: requests>=2.34.2
|
|
56
|
+
Requires-Dist: rich>=15.0.0
|
|
57
|
+
Requires-Dist: tavily-python>=0.7.26
|
|
58
|
+
Requires-Dist: textual-autocomplete>=4.0.6
|
|
59
|
+
Requires-Dist: textual-speedups>=0.2.1
|
|
62
60
|
Requires-Dist: textual<9.0.0,>=8.2.8
|
|
63
|
-
Requires-Dist: tomli-w
|
|
64
|
-
Requires-Dist: uuid-utils
|
|
61
|
+
Requires-Dist: tomli-w>=1.2.0
|
|
62
|
+
Requires-Dist: uuid-utils>=0.17.0
|
|
65
63
|
Provides-Extra: agentcore
|
|
66
64
|
Requires-Dist: langchain-agentcore-codeinterpreter<1.0.0,>=0.0.5; extra == 'agentcore'
|
|
67
65
|
Provides-Extra: all-providers
|
|
68
|
-
Requires-Dist: aiohttp
|
|
66
|
+
Requires-Dist: aiohttp>=3.14.3; extra == 'all-providers'
|
|
69
67
|
Requires-Dist: langchain-anthropic<2.0.0,>=1.7.6; extra == 'all-providers'
|
|
70
68
|
Requires-Dist: langchain-aws<2.0.0,>=1.9.0; extra == 'all-providers'
|
|
71
69
|
Requires-Dist: langchain-baseten<1.0.0,>=0.2.5; extra == 'all-providers'
|
|
@@ -84,7 +82,7 @@ Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.5.0; extra == 'all-provid
|
|
|
84
82
|
Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'all-providers'
|
|
85
83
|
Requires-Dist: langchain-openai<2.0.0,>=1.7.2; extra == 'all-providers'
|
|
86
84
|
Requires-Dist: langchain-openrouter<2.0.0,>=0.2.9; extra == 'all-providers'
|
|
87
|
-
Requires-Dist: langchain-perplexity<2.0.0,>=1.4.
|
|
85
|
+
Requires-Dist: langchain-perplexity<2.0.0,>=1.4.2; extra == 'all-providers'
|
|
88
86
|
Requires-Dist: langchain-together<2.0.0,>=0.4.0; extra == 'all-providers'
|
|
89
87
|
Requires-Dist: langchain-xai<2.0.0,>=1.3.0; extra == 'all-providers'
|
|
90
88
|
Provides-Extra: all-sandboxes
|
|
@@ -119,8 +117,8 @@ Requires-Dist: langchain-ibm<2.0.0,>=1.1.2; extra == 'ibm'
|
|
|
119
117
|
Provides-Extra: litellm
|
|
120
118
|
Requires-Dist: langchain-litellm<2.0.0,>=0.11.1; extra == 'litellm'
|
|
121
119
|
Provides-Extra: media
|
|
122
|
-
Requires-Dist: av
|
|
123
|
-
Requires-Dist: pillow
|
|
120
|
+
Requires-Dist: av>=18.0.0; extra == 'media'
|
|
121
|
+
Requires-Dist: pillow>=13.0.0; extra == 'media'
|
|
124
122
|
Provides-Extra: meta
|
|
125
123
|
Requires-Dist: langchain-meta<2.0.0,>=0.5.0; extra == 'meta'
|
|
126
124
|
Provides-Extra: mistralai
|
|
@@ -128,7 +126,7 @@ Requires-Dist: langchain-mistralai<2.0.0,>=1.1.6; extra == 'mistralai'
|
|
|
128
126
|
Provides-Extra: modal
|
|
129
127
|
Requires-Dist: langchain-modal>=0.0.5; extra == 'modal'
|
|
130
128
|
Provides-Extra: nvidia
|
|
131
|
-
Requires-Dist: aiohttp
|
|
129
|
+
Requires-Dist: aiohttp>=3.14.3; extra == 'nvidia'
|
|
132
130
|
Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.5.0; extra == 'nvidia'
|
|
133
131
|
Provides-Extra: ollama
|
|
134
132
|
Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'ollama'
|
|
@@ -139,7 +137,7 @@ Requires-Dist: langchain-openrouter<2.0.0,>=0.2.9; extra == 'openrouter'
|
|
|
139
137
|
Provides-Extra: openshell
|
|
140
138
|
Requires-Dist: langchain-nvidia-openshell>=0.1.1; extra == 'openshell'
|
|
141
139
|
Provides-Extra: perplexity
|
|
142
|
-
Requires-Dist: langchain-perplexity<2.0.0,>=1.4.
|
|
140
|
+
Requires-Dist: langchain-perplexity<2.0.0,>=1.4.2; extra == 'perplexity'
|
|
143
141
|
Provides-Extra: quickjs
|
|
144
142
|
Provides-Extra: runloop
|
|
145
143
|
Requires-Dist: langchain-runloop>=0.0.6; extra == 'runloop'
|
|
@@ -109,7 +109,7 @@ def decode_multi_select_answer(raw: str) -> list[str] | None:
|
|
|
109
109
|
"""
|
|
110
110
|
try:
|
|
111
111
|
decoded = json.loads(raw)
|
|
112
|
-
except
|
|
112
|
+
except json.JSONDecodeError, RecursionError:
|
|
113
113
|
return None
|
|
114
114
|
if not isinstance(decoded, list) or not all(
|
|
115
115
|
isinstance(value, str) for value in decoded
|
|
@@ -96,7 +96,7 @@ def _load_cli_requirements() -> list[str] | None:
|
|
|
96
96
|
try:
|
|
97
97
|
data = tomllib.loads(pyproject.read_text(encoding="utf-8"))
|
|
98
98
|
entries = data["project"]["dependencies"]
|
|
99
|
-
except
|
|
99
|
+
except OSError, KeyError, TypeError, tomllib.TOMLDecodeError:
|
|
100
100
|
logger.debug(
|
|
101
101
|
"Could not read dependency floors from the source checkout",
|
|
102
102
|
exc_info=True,
|
|
@@ -330,7 +330,7 @@ def _workspace_editable_paths() -> list[Path]:
|
|
|
330
330
|
try:
|
|
331
331
|
data = tomllib.loads(pyproject.read_text(encoding="utf-8"))
|
|
332
332
|
sources = data["tool"]["uv"]["sources"]
|
|
333
|
-
except
|
|
333
|
+
except OSError, KeyError, TypeError, tomllib.TOMLDecodeError:
|
|
334
334
|
logger.debug(
|
|
335
335
|
"Could not read workspace sources from the source checkout",
|
|
336
336
|
exc_info=True,
|
|
@@ -565,7 +565,7 @@ def _read_dismissed_fingerprints(path: Path) -> dict[str, str]:
|
|
|
565
565
|
"""
|
|
566
566
|
try:
|
|
567
567
|
data = json.loads(path.read_text(encoding="utf-8"))
|
|
568
|
-
except
|
|
568
|
+
except OSError, ValueError:
|
|
569
569
|
return {}
|
|
570
570
|
if not isinstance(data, dict):
|
|
571
571
|
return {}
|
|
@@ -173,7 +173,7 @@ def _read_single_git_metadata_line(path: Path) -> str | None:
|
|
|
173
173
|
return None
|
|
174
174
|
try:
|
|
175
175
|
raw = path.read_text(encoding="utf-8")
|
|
176
|
-
except
|
|
176
|
+
except OSError, UnicodeError:
|
|
177
177
|
logger.debug("Failed to read Git metadata from %s", path, exc_info=True)
|
|
178
178
|
return None
|
|
179
179
|
|
|
@@ -204,7 +204,7 @@ def _resolve_git_metadata_path(path: Path, *, relative_to: Path) -> Path | None:
|
|
|
204
204
|
candidate = relative_to / candidate
|
|
205
205
|
try:
|
|
206
206
|
return candidate.resolve(strict=True)
|
|
207
|
-
except
|
|
207
|
+
except OSError, RuntimeError, ValueError:
|
|
208
208
|
logger.debug("Failed to resolve Git metadata path from %s", path, exc_info=True)
|
|
209
209
|
return None
|
|
210
210
|
|
|
@@ -227,7 +227,7 @@ def _normalize_git_metadata_path(path: Path, *, relative_to: Path) -> Path | Non
|
|
|
227
227
|
candidate = relative_to / candidate
|
|
228
228
|
try:
|
|
229
229
|
return Path(os.path.abspath(candidate)) # noqa: PTH100 # do not follow links
|
|
230
|
-
except
|
|
230
|
+
except OSError, RuntimeError, ValueError:
|
|
231
231
|
logger.debug(
|
|
232
232
|
"Failed to normalize Git metadata path from %s", path, exc_info=True
|
|
233
233
|
)
|
|
@@ -254,7 +254,7 @@ def _parse_trusted_git_dir_pointer(git_entry: Path) -> Path | None:
|
|
|
254
254
|
candidate = git_entry.parent / candidate
|
|
255
255
|
try:
|
|
256
256
|
git_dir = candidate.resolve(strict=True)
|
|
257
|
-
except
|
|
257
|
+
except OSError, RuntimeError, ValueError:
|
|
258
258
|
logger.debug(
|
|
259
259
|
"Failed to resolve trusted gitdir pointer %s", git_entry, exc_info=True
|
|
260
260
|
)
|
|
@@ -328,7 +328,7 @@ def find_git_common_dir(path: str | Path) -> Path | None:
|
|
|
328
328
|
backlink = _normalize_git_metadata_path(git_dir / "gitdir", relative_to=git_dir)
|
|
329
329
|
if backlink is None or backlink != git_entry:
|
|
330
330
|
return None
|
|
331
|
-
except
|
|
331
|
+
except OSError, RuntimeError, ValueError:
|
|
332
332
|
logger.debug(
|
|
333
333
|
"Failed to validate Git common directory for %s", path, exc_info=True
|
|
334
334
|
)
|
|
@@ -377,7 +377,7 @@ def _submodule_git_dir(root: Path, parent_config_dir: Path) -> Path | None:
|
|
|
377
377
|
if not candidate.is_absolute():
|
|
378
378
|
candidate = git_dir / candidate
|
|
379
379
|
return git_dir if candidate.resolve(strict=True) == root else None
|
|
380
|
-
except
|
|
380
|
+
except OSError, RuntimeError, ValueError:
|
|
381
381
|
logger.debug("Failed to validate submodule Git metadata")
|
|
382
382
|
return None
|
|
383
383
|
|
|
@@ -451,6 +451,9 @@ def read_git_branch_via_subprocess(path: str | Path) -> str:
|
|
|
451
451
|
["git", "rev-parse", "--abbrev-ref", "HEAD"], # noqa: S607
|
|
452
452
|
capture_output=True,
|
|
453
453
|
text=True,
|
|
454
|
+
# Branch names are UTF-8, not in the Windows ANSI code page.
|
|
455
|
+
encoding="utf-8",
|
|
456
|
+
errors="replace",
|
|
454
457
|
timeout=2,
|
|
455
458
|
check=False,
|
|
456
459
|
cwd=path,
|
|
@@ -653,6 +656,9 @@ def read_git_remote_url_via_subprocess(path: str | Path) -> str:
|
|
|
653
656
|
["git", "config", "--get", "remote.origin.url"], # noqa: S607
|
|
654
657
|
capture_output=True,
|
|
655
658
|
text=True,
|
|
659
|
+
# Local-path remotes are UTF-8, not in the Windows ANSI code page.
|
|
660
|
+
encoding="utf-8",
|
|
661
|
+
errors="replace",
|
|
656
662
|
timeout=2,
|
|
657
663
|
check=False,
|
|
658
664
|
cwd=path,
|
|
@@ -432,7 +432,7 @@ class RepositoryBounds:
|
|
|
432
432
|
body, separator, notes = content.partition("\n\n")
|
|
433
433
|
try:
|
|
434
434
|
paths = ast.literal_eval(body)
|
|
435
|
-
except
|
|
435
|
+
except SyntaxError, ValueError:
|
|
436
436
|
return content
|
|
437
437
|
if not isinstance(paths, list) or not all(
|
|
438
438
|
isinstance(path, str) for path in paths
|
|
@@ -1311,7 +1311,7 @@ def record_model_usage_event(
|
|
|
1311
1311
|
"model_provider": provider,
|
|
1312
1312
|
},
|
|
1313
1313
|
)
|
|
1314
|
-
except
|
|
1314
|
+
except TypeError, ValueError:
|
|
1315
1315
|
logger.debug("Rejected malformed nested model usage", exc_info=True)
|
|
1316
1316
|
return None
|
|
1317
1317
|
return record_message_usage(
|
|
@@ -711,7 +711,7 @@ class ToolCallBuffer:
|
|
|
711
711
|
joined = self._materialize_args()
|
|
712
712
|
try:
|
|
713
713
|
parsed = json.loads(joined)
|
|
714
|
-
except
|
|
714
|
+
except json.JSONDecodeError, RecursionError:
|
|
715
715
|
# `RecursionError` is caught alongside the decode error because
|
|
716
716
|
# pathologically nested model output can make `json.loads` exceed
|
|
717
717
|
# the interpreter recursion limit, and that is one malformed call to
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Keep the `x-release-please-version` annotation — release-please uses it to
|
|
4
4
|
# bump `__version__` in sync with `pyproject.toml` on every release PR.
|
|
5
|
-
__version__ = "0.
|
|
5
|
+
__version__ = "0.2.0" # x-release-please-version
|
|
6
6
|
|
|
7
7
|
DOCS_URL = "https://docs.langchain.com/oss/python/deepagents/code"
|
|
8
8
|
"""URL for `deepagents-code` documentation."""
|
|
@@ -514,7 +514,7 @@ def _coerce_session_cost_usd(value: object) -> float:
|
|
|
514
514
|
return 0.0
|
|
515
515
|
try:
|
|
516
516
|
cost_usd = float(value)
|
|
517
|
-
except
|
|
517
|
+
except OverflowError, ValueError:
|
|
518
518
|
logger.warning("Discarding a persisted session cost that is out of range.")
|
|
519
519
|
return 0.0
|
|
520
520
|
if not math.isfinite(cost_usd) or cost_usd < 0:
|
|
@@ -558,7 +558,7 @@ def _coerce_provisional_cost_delta_usd(value: object) -> float | None:
|
|
|
558
558
|
return None
|
|
559
559
|
try:
|
|
560
560
|
delta_usd = float(value)
|
|
561
|
-
except
|
|
561
|
+
except OverflowError, ValueError:
|
|
562
562
|
logger.warning("Discarding a provisional cost delta that is out of range.")
|
|
563
563
|
return None
|
|
564
564
|
if not math.isfinite(delta_usd):
|
|
@@ -5642,7 +5642,7 @@ class DeepAgentsApp(App):
|
|
|
5642
5642
|
root = await asyncio.to_thread(project_root_for, Path(self._cwd))
|
|
5643
5643
|
config_path = project_hooks_path(root)
|
|
5644
5644
|
has_project_hooks = await asyncio.to_thread(config_path.is_file)
|
|
5645
|
-
except
|
|
5645
|
+
except OSError, ValueError:
|
|
5646
5646
|
logger.warning(
|
|
5647
5647
|
"Could not inspect project hooks after cwd switch",
|
|
5648
5648
|
exc_info=True,
|
|
@@ -6687,7 +6687,7 @@ class DeepAgentsApp(App):
|
|
|
6687
6687
|
|
|
6688
6688
|
try:
|
|
6689
6689
|
messages = self.query_one("#messages", Container)
|
|
6690
|
-
except
|
|
6690
|
+
except NoMatches, ScreenStackError:
|
|
6691
6691
|
return
|
|
6692
6692
|
if not messages.is_attached:
|
|
6693
6693
|
return
|
|
@@ -8881,7 +8881,7 @@ class DeepAgentsApp(App):
|
|
|
8881
8881
|
# composes its own rack, and modals must not retune the main one.
|
|
8882
8882
|
screen = chrome.screen
|
|
8883
8883
|
rack = screen.get_child_by_id("textual-toastrack")
|
|
8884
|
-
except
|
|
8884
|
+
except NoMatches, NoScreen:
|
|
8885
8885
|
return
|
|
8886
8886
|
region = chrome.region
|
|
8887
8887
|
if not region:
|
|
@@ -10857,7 +10857,7 @@ class DeepAgentsApp(App):
|
|
|
10857
10857
|
"""
|
|
10858
10858
|
try:
|
|
10859
10859
|
messages = self.query_one("#messages", Container)
|
|
10860
|
-
except
|
|
10860
|
+
except NoMatches, ScreenStackError:
|
|
10861
10861
|
logger.debug(
|
|
10862
10862
|
"Messages container unavailable; skipping transient status %r",
|
|
10863
10863
|
content,
|
|
@@ -11505,7 +11505,7 @@ class DeepAgentsApp(App):
|
|
|
11505
11505
|
"""
|
|
11506
11506
|
try:
|
|
11507
11507
|
await widget.remove()
|
|
11508
|
-
except
|
|
11508
|
+
except AttributeError, RuntimeError:
|
|
11509
11509
|
logger.debug(
|
|
11510
11510
|
"Failed to remove %s widget during %s",
|
|
11511
11511
|
prompt_name,
|
|
@@ -14058,7 +14058,7 @@ class DeepAgentsApp(App):
|
|
|
14058
14058
|
proc.kill()
|
|
14059
14059
|
with suppress(ProcessLookupError, OSError):
|
|
14060
14060
|
await proc.wait()
|
|
14061
|
-
except
|
|
14061
|
+
except ProcessLookupError, OSError:
|
|
14062
14062
|
pass
|
|
14063
14063
|
|
|
14064
14064
|
async def _open_url_command(self, command: str, cmd: str) -> None:
|
|
@@ -18284,7 +18284,7 @@ class DeepAgentsApp(App):
|
|
|
18284
18284
|
|
|
18285
18285
|
clear_caches()
|
|
18286
18286
|
self._sync_status_model()
|
|
18287
|
-
except
|
|
18287
|
+
except OSError, ValueError:
|
|
18288
18288
|
logger.exception("Failed to reload configuration")
|
|
18289
18289
|
await self._mount_message(
|
|
18290
18290
|
AppMessage(
|
|
@@ -21023,7 +21023,7 @@ class DeepAgentsApp(App):
|
|
|
21023
21023
|
try:
|
|
21024
21024
|
resumable = await thread_exists(previous_thread_id)
|
|
21025
21025
|
owner = await get_thread_agent(previous_thread_id) if resumable else None
|
|
21026
|
-
except
|
|
21026
|
+
except sqlite3.Error, OSError:
|
|
21027
21027
|
# Keep store failures visible because they are not routine suppression.
|
|
21028
21028
|
logger.info(
|
|
21029
21029
|
"Could not check whether previous thread %s is resumable",
|
|
@@ -22503,18 +22503,18 @@ class DeepAgentsApp(App):
|
|
|
22503
22503
|
if self._pending_approval_widget:
|
|
22504
22504
|
try:
|
|
22505
22505
|
self._pending_approval_widget.action_select_reject()
|
|
22506
|
-
except
|
|
22506
|
+
except AttributeError, RuntimeError:
|
|
22507
22507
|
logger.exception("force-clear: failed to reject pending approval")
|
|
22508
22508
|
if self._pending_ask_user_widget:
|
|
22509
22509
|
try:
|
|
22510
22510
|
self._pending_ask_user_widget.action_cancel()
|
|
22511
|
-
except
|
|
22511
|
+
except AttributeError, RuntimeError:
|
|
22512
22512
|
logger.exception("force-clear: failed to cancel pending ask-user")
|
|
22513
22513
|
self._cancel_goal_proposal_worker()
|
|
22514
22514
|
if self._pending_goal_review_widget:
|
|
22515
22515
|
try:
|
|
22516
22516
|
self._pending_goal_review_widget.action_cancel()
|
|
22517
|
-
except
|
|
22517
|
+
except AttributeError, RuntimeError:
|
|
22518
22518
|
logger.exception("force-clear: failed to cancel pending goal review")
|
|
22519
22519
|
if self._shell_running and self._shell_worker:
|
|
22520
22520
|
self._shell_worker.cancel()
|
|
@@ -23514,14 +23514,14 @@ class DeepAgentsApp(App):
|
|
|
23514
23514
|
asyncio.shield(worker.wait()),
|
|
23515
23515
|
timeout=_GRACEFUL_EXIT_WAIT_SECONDS,
|
|
23516
23516
|
)
|
|
23517
|
-
except
|
|
23517
|
+
except asyncio.CancelledError, WorkerCancelled:
|
|
23518
23518
|
# Expected: exit() cancelled the worker above, so
|
|
23519
23519
|
# its cancellation handler ran to completion.
|
|
23520
23520
|
logger.debug(
|
|
23521
23521
|
"Agent worker cancelled cleanly before app exit",
|
|
23522
23522
|
exc_info=True,
|
|
23523
23523
|
)
|
|
23524
|
-
except
|
|
23524
|
+
except TimeoutError, WorkerFailed:
|
|
23525
23525
|
# The worker did not finish within the window, so
|
|
23526
23526
|
# the in-flight run's server-side trace may be
|
|
23527
23527
|
# incomplete. Surface above debug so the loss isn't
|
|
@@ -26063,7 +26063,7 @@ class DeepAgentsApp(App):
|
|
|
26063
26063
|
if self._pending_ask_user_widget is not None:
|
|
26064
26064
|
try:
|
|
26065
26065
|
self._pending_ask_user_widget.action_cancel()
|
|
26066
|
-
except
|
|
26066
|
+
except AttributeError, RuntimeError:
|
|
26067
26067
|
logger.debug(
|
|
26068
26068
|
"Failed to cancel pending ask-user during agent swap",
|
|
26069
26069
|
exc_info=True,
|
|
@@ -27933,7 +27933,7 @@ class DeepAgentsApp(App):
|
|
|
27933
27933
|
"""
|
|
27934
27934
|
try:
|
|
27935
27935
|
banner = self.query_one("#welcome-banner", WelcomeBanner)
|
|
27936
|
-
except
|
|
27936
|
+
except NoMatches, ScreenStackError:
|
|
27937
27937
|
logger.debug("Welcome banner not mounted during MCP count refresh")
|
|
27938
27938
|
return
|
|
27939
27939
|
banner.set_connected(
|
|
@@ -30195,7 +30195,7 @@ class DeepAgentsApp(App):
|
|
|
30195
30195
|
|
|
30196
30196
|
msg = f"No previous threads for '{active_agent}' to resume."
|
|
30197
30197
|
await self._mount_message(AppMessage(msg))
|
|
30198
|
-
except
|
|
30198
|
+
except sqlite3.Error, OSError:
|
|
30199
30199
|
# Expected thread-store failures: log for a debug session and tell
|
|
30200
30200
|
# the user to retry. Mirrors the launch-time resolver's handling.
|
|
30201
30201
|
logger.warning(
|
|
@@ -31037,7 +31037,7 @@ class DeepAgentsApp(App):
|
|
|
31037
31037
|
credentials.preview_reload_from_environment,
|
|
31038
31038
|
start_path=cwd,
|
|
31039
31039
|
)
|
|
31040
|
-
except
|
|
31040
|
+
except OSError, ValueError:
|
|
31041
31041
|
# Environmental failures (unreadable dotenv, malformed values) are
|
|
31042
31042
|
# expected and non-fatal for a best-effort preview. Programming
|
|
31043
31043
|
# errors (KeyError/TypeError/ImportError) are left to propagate so a
|
|
@@ -32257,7 +32257,7 @@ class DeepAgentsApp(App):
|
|
|
32257
32257
|
self._retry_status_widget = None
|
|
32258
32258
|
try:
|
|
32259
32259
|
messages = self.query_one("#messages", Container)
|
|
32260
|
-
except
|
|
32260
|
+
except NoMatches, ScreenStackError:
|
|
32261
32261
|
messages = None
|
|
32262
32262
|
if messages is not None and messages.is_attached:
|
|
32263
32263
|
new_widget = AppMessage(
|
|
@@ -408,7 +408,7 @@ def _load_approval_state(path: Path) -> dict[str, object]:
|
|
|
408
408
|
data = json.loads(path.read_text(encoding="utf-8"))
|
|
409
409
|
except FileNotFoundError:
|
|
410
410
|
return {}
|
|
411
|
-
except
|
|
411
|
+
except OSError, UnicodeDecodeError, json.JSONDecodeError:
|
|
412
412
|
logger.warning(
|
|
413
413
|
"Ignoring unreadable or corrupt approval state at %s; callers fail "
|
|
414
414
|
"closed and the file will be overwritten on the next save",
|
|
@@ -548,7 +548,7 @@ def _validate_temp_artifact(value: object) -> AutoTempArtifact | None:
|
|
|
548
548
|
return None
|
|
549
549
|
try:
|
|
550
550
|
file_path = Path(cast("str", raw_file_path))
|
|
551
|
-
except
|
|
551
|
+
except OSError, TypeError, ValueError:
|
|
552
552
|
return None
|
|
553
553
|
if not file_path.is_absolute() or not file_path.name.startswith(
|
|
554
554
|
_TEMP_ARTIFACT_PREFIX
|
|
@@ -794,7 +794,7 @@ def _known_credential_values(
|
|
|
794
794
|
and len(value) >= _MIN_SECRET_LENGTH
|
|
795
795
|
):
|
|
796
796
|
values.add(value)
|
|
797
|
-
except
|
|
797
|
+
except OSError, RuntimeError, TypeError, ValueError:
|
|
798
798
|
logger.debug("Could not load stored credential values for Auto redaction")
|
|
799
799
|
return tuple(sorted(values, key=len, reverse=True))
|
|
800
800
|
|
|
@@ -2033,7 +2033,7 @@ def _resolve_path(root: Path, raw: object) -> Path | None:
|
|
|
2033
2033
|
if not candidate.is_absolute():
|
|
2034
2034
|
candidate = root / candidate
|
|
2035
2035
|
return candidate.resolve(strict=False)
|
|
2036
|
-
except
|
|
2036
|
+
except OSError, RuntimeError, ValueError:
|
|
2037
2037
|
return None
|
|
2038
2038
|
|
|
2039
2039
|
|
|
@@ -2662,7 +2662,7 @@ class AutoModeHITLMiddleware(HumanInTheLoopMiddleware[AutoModeState, Any, Any]):
|
|
|
2662
2662
|
if not targets_managed_artifact:
|
|
2663
2663
|
try:
|
|
2664
2664
|
candidate_stat = candidate.stat()
|
|
2665
|
-
except
|
|
2665
|
+
except OSError, ValueError:
|
|
2666
2666
|
pass
|
|
2667
2667
|
else:
|
|
2668
2668
|
targets_managed_artifact = any(
|
|
@@ -186,7 +186,7 @@ async def _open_text_stream(
|
|
|
186
186
|
messages: list[BaseMessage],
|
|
187
187
|
config: RunnableConfig,
|
|
188
188
|
settings: Mapping[str, Any],
|
|
189
|
-
) -> tuple[AsyncGenerator[AIMessageChunk
|
|
189
|
+
) -> tuple[AsyncGenerator[AIMessageChunk], str]:
|
|
190
190
|
"""Open one attempt through its first visible fragment, closing failures.
|
|
191
191
|
|
|
192
192
|
Returns:
|
|
@@ -194,7 +194,7 @@ async def _open_text_stream(
|
|
|
194
194
|
"""
|
|
195
195
|
# BaseChatModel.astream is an async generator, annotated as an iterator.
|
|
196
196
|
stream = cast(
|
|
197
|
-
"AsyncGenerator[AIMessageChunk
|
|
197
|
+
"AsyncGenerator[AIMessageChunk]",
|
|
198
198
|
model.astream(messages, config=config, **settings),
|
|
199
199
|
)
|
|
200
200
|
try:
|
|
@@ -133,7 +133,7 @@ class _BtwStreamingResponse(Response):
|
|
|
133
133
|
await emit("error", {"detail": "Side question timed out. Try again."})
|
|
134
134
|
except ClientDisconnect:
|
|
135
135
|
raise # A closed transport cannot receive an error event.
|
|
136
|
-
except
|
|
136
|
+
except Exception, SystemExit:
|
|
137
137
|
logger.exception("Side question failed")
|
|
138
138
|
await emit(
|
|
139
139
|
"error",
|
|
@@ -230,7 +230,7 @@ async def btw(request: Request) -> Response:
|
|
|
230
230
|
return JSONResponse(
|
|
231
231
|
{"detail": "Side question timed out. Try again."}, status_code=504
|
|
232
232
|
)
|
|
233
|
-
except
|
|
233
|
+
except Exception, SystemExit:
|
|
234
234
|
logger.exception("Side question failed")
|
|
235
235
|
return JSONResponse(
|
|
236
236
|
{"detail": "Side question failed on the server; see the server log."},
|
|
@@ -11,7 +11,6 @@ import shutil
|
|
|
11
11
|
import sqlite3
|
|
12
12
|
import subprocess # noqa: S404 # Used only to probe resolved dcode Python launchers.
|
|
13
13
|
import sys
|
|
14
|
-
import warnings
|
|
15
14
|
from pathlib import Path
|
|
16
15
|
from typing import TYPE_CHECKING, cast
|
|
17
16
|
|
|
@@ -34,7 +33,7 @@ def _has_runtime() -> bool:
|
|
|
34
33
|
try:
|
|
35
34
|
for module, symbol in _RUNTIME_IMPORTS:
|
|
36
35
|
getattr(importlib.import_module(module), symbol)
|
|
37
|
-
except
|
|
36
|
+
except AttributeError, ImportError:
|
|
38
37
|
return False
|
|
39
38
|
return True
|
|
40
39
|
|
|
@@ -57,7 +56,7 @@ def _ensure_runtime() -> None:
|
|
|
57
56
|
launcher = Path(executable).resolve()
|
|
58
57
|
try:
|
|
59
58
|
first_line = launcher.read_text(encoding="utf-8").splitlines()[0]
|
|
60
|
-
except
|
|
59
|
+
except OSError, UnicodeDecodeError, IndexError:
|
|
61
60
|
first_line = ""
|
|
62
61
|
if first_line.startswith("#!"):
|
|
63
62
|
candidates.append(Path(first_line[2:].strip()))
|
|
@@ -84,7 +83,7 @@ def _ensure_runtime() -> None:
|
|
|
84
83
|
check=False,
|
|
85
84
|
timeout=10,
|
|
86
85
|
)
|
|
87
|
-
except
|
|
86
|
+
except subprocess.TimeoutExpired, OSError:
|
|
88
87
|
# A hung or non-executable candidate must not abort the search;
|
|
89
88
|
# skip it and fall through to the next one (or the clear error below).
|
|
90
89
|
continue
|
|
@@ -636,13 +635,6 @@ def main() -> None:
|
|
|
636
635
|
raise SystemExit(msg)
|
|
637
636
|
|
|
638
637
|
_ensure_runtime()
|
|
639
|
-
warnings.filterwarnings(
|
|
640
|
-
"ignore",
|
|
641
|
-
message=(
|
|
642
|
-
"Core Pydantic V1 functionality isn't compatible with Python 3.14 "
|
|
643
|
-
"or greater.*"
|
|
644
|
-
),
|
|
645
|
-
)
|
|
646
638
|
collected_warnings: list[str] = []
|
|
647
639
|
result: dict[str, object]
|
|
648
640
|
conn = _connect_read_only(args.db)
|
|
@@ -856,7 +856,7 @@ class ServerProcess:
|
|
|
856
856
|
# unreachable, so this is defensive. `read_text(errors="replace")`
|
|
857
857
|
# cannot raise `ValueError` for decoding, so the catch stays narrow
|
|
858
858
|
# in practice.
|
|
859
|
-
except
|
|
859
|
+
except OSError, ValueError:
|
|
860
860
|
logger.warning(
|
|
861
861
|
"Failed to read server log file %s",
|
|
862
862
|
self._log_file.name,
|
{deepagents_code-0.1.88 → deepagents_code-0.2.0}/deepagents_code/client/launch/server_manager.py
RENAMED
|
@@ -176,7 +176,7 @@ def _write_pyproject(work_dir: Path) -> None:
|
|
|
176
176
|
content = f"""[project]
|
|
177
177
|
name = "deepagents-server-runtime"
|
|
178
178
|
version = "0.0.1"
|
|
179
|
-
requires-python = ">=3.
|
|
179
|
+
requires-python = ">=3.14,<3.15"
|
|
180
180
|
dependencies = [
|
|
181
181
|
"{_runtime_package_dependency()}",
|
|
182
182
|
]
|
|
@@ -215,7 +215,7 @@ def _make_stdio_encoding_safe() -> None:
|
|
|
215
215
|
continue
|
|
216
216
|
try:
|
|
217
217
|
reconfigure(errors="replace")
|
|
218
|
-
except
|
|
218
|
+
except ValueError, OSError, TypeError:
|
|
219
219
|
# Closed, detached, or otherwise non-reconfigurable stream (a
|
|
220
220
|
# duck-typed `reconfigure` with a different signature raises
|
|
221
221
|
# `TypeError`) — leave it as-is. This is a best-effort hardening
|