deepagents-code 0.1.58__tar.gz → 0.1.60__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.58 → deepagents_code-0.1.60}/CHANGELOG.md +43 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/COMMANDS.md +1 -1
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/PKG-INFO +7 -7
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/THREAT_MODEL.md +28 -4
- deepagents_code-0.1.60/deepagents_code/_ask_user_types.py +696 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/_build_info.py +1 -1
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/_env_vars.py +25 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/_session_stats.py +90 -6
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/_textual_patches.py +110 -3
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/_tool_stream.py +297 -137
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/_version.py +1 -1
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/agent.py +28 -14
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/app.py +583 -600
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/approval_mode.py +9 -7
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/ask_user.py +143 -135
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/auto_mode.py +35 -14
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/client/commands/config.py +313 -29
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/client/non_interactive.py +7 -1
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/cold_cache.py +19 -6
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/command_registry.py +1 -1
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/config.py +384 -106
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/config_manifest.py +719 -366
- deepagents_code-0.1.60/deepagents_code/configuration/__init__.py +42 -0
- deepagents_code-0.1.60/deepagents_code/configuration/paths.py +161 -0
- deepagents_code-0.1.60/deepagents_code/configuration/providers.py +523 -0
- deepagents_code-0.1.60/deepagents_code/configuration/resolver.py +593 -0
- deepagents_code-0.1.60/deepagents_code/configuration/service.py +736 -0
- deepagents_code-0.1.60/deepagents_code/configuration/types.py +87 -0
- deepagents_code-0.1.60/deepagents_code/configuration/writer.py +147 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/doctor.py +38 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/integrations/sandbox_config.py +76 -25
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/main.py +276 -5
- deepagents_code-0.1.60/deepagents_code/mcp_disabled.py +510 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/mcp_tools.py +11 -1
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/model_config.py +923 -190
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/server_graph.py +5 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/sessions.py +4 -2
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/terminal_escape.py +11 -2
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/theme.py +40 -16
- deepagents_code-0.1.60/deepagents_code/tui/key_hints.py +31 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/modals/cold_cache.py +2 -1
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/modals/plugin_manager/__init__.py +6 -4
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/modals/plugin_manager/plugin_manager.tcss +1 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/textual_adapter.py +4 -1
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/agent_selector.py +11 -7
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/approval.py +1 -1
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/ask_user.py +37 -33
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/auth.py +156 -30
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/auto_mode_notice.py +13 -12
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/chat_input.py +138 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/debug_console.py +70 -5
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/effort_selector.py +3 -1
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/launch_init.py +2 -1
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/mcp_viewer.py +4 -1
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/message_store.py +2 -2
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/messages.py +184 -13
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/model_selector.py +10 -7
- deepagents_code-0.1.60/deepagents_code/tui/widgets/notification_center.py +1044 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/notification_detail.py +4 -2
- deepagents_code-0.1.60/deepagents_code/tui/widgets/notification_settings.py +15 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/status.py +62 -27
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/theme_selector.py +6 -5
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/update_available.py +4 -2
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/yolo_mode_notice.py +2 -2
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/update_check.py +190 -113
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/pyproject.toml +6 -6
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/conftest.py +49 -1
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test__tool_stream.py +244 -10
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_agent.py +21 -1
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_app.py +881 -210
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_ask_user_middleware.py +483 -78
- deepagents_code-0.1.60/tests/unit_tests/test_ask_user_types.py +473 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_auto_mode.py +217 -2
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_charset.py +3 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_cold_cache.py +16 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_config.py +71 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_config_manifest.py +412 -5
- deepagents_code-0.1.60/tests/unit_tests/test_configuration.py +3177 -0
- deepagents_code-0.1.60/tests/unit_tests/test_configuration_resolution.py +499 -0
- deepagents_code-0.1.60/tests/unit_tests/test_configuration_resolver.py +215 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_debug_console.py +52 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_end_to_end.py +144 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_main.py +163 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_mcp_disabled.py +48 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_model_config.py +197 -11
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_non_interactive.py +137 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_reload.py +246 -5
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_sandbox_config.py +23 -2
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_server_graph.py +9 -7
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_session_stats.py +244 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_terminal_escape.py +10 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_textual_patches.py +109 -1
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_theme.py +12 -1
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_threads_resume.py +1 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_update_check.py +86 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/modals/plugin_manager/test_structure.py +2 -0
- deepagents_code-0.1.60/tests/unit_tests/tui/test_key_hints.py +33 -0
- deepagents_code-0.1.60/tests/unit_tests/tui/test_modal_footer_layout.py +200 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/test_textual_adapter.py +22 -12
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_agent_selector.py +1 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_approval.py +2 -2
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_ask_user.py +143 -46
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_auth_widgets.py +298 -99
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_chat_input.py +227 -1
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_mcp_viewer.py +1 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_messages.py +150 -4
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_model_selector.py +14 -9
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_notification_center.py +224 -6
- deepagents_code-0.1.60/tests/unit_tests/tui/widgets/test_notification_settings.py +313 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_status.py +83 -39
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_thread_selector.py +21 -0
- deepagents_code-0.1.60/tests/unit_tests/tui/widgets/test_yolo_mode_notice.py +8 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/uv.lock +17 -17
- deepagents_code-0.1.58/deepagents_code/_ask_user_types.py +0 -356
- deepagents_code-0.1.58/deepagents_code/mcp_disabled.py +0 -212
- deepagents_code-0.1.58/deepagents_code/tui/widgets/notification_center.py +0 -456
- deepagents_code-0.1.58/deepagents_code/tui/widgets/notification_settings.py +0 -179
- deepagents_code-0.1.58/tests/unit_tests/test_ask_user_types.py +0 -118
- deepagents_code-0.1.58/tests/unit_tests/tui/widgets/test_notification_settings.py +0 -145
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/.gitignore +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/AGENTS.md +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/ARCHITECTURE.md +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/DEVELOPMENT.md +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/HOOKS.md +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/LICENSE +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/Makefile +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/PRICING.md +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/README.md +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/__main__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/_cli_context.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/_constants.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/_debug.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/_debug_buffer.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/_dep_floor_check.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/_fake_models.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/_git.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/_glm_5p2_profile.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/_invocation.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/_markdown.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/_paths.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/_repository_bounds.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/_server_config.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/_startup_error.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/_testing_models.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/_tracing.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/acp.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/app.tcss +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/auth_display.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/auth_store.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/built_in_skills/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/built_in_skills/deepagents-thread-inspector/SKILL.md +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/built_in_skills/deepagents-thread-inspector/scripts/inspect_sessions.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/bundled_prices.README.md +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/bundled_prices.json +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/client/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/client/commands/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/client/commands/auth.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/client/commands/extras.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/client/commands/mcp.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/client/commands/tools.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/client/launch/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/client/launch/server.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/client/launch/server_manager.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/client/remote_client.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/clipboard.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/configurable_model.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/cost_tracking.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/default_agent_prompt.md +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/diff_utils.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/editor.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/event_bus.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/extras_info.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/file_ops.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/formatting.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/goal_rubric.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/goal_state_notice.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/goal_tools.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/capabilities.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/client.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/client_lifecycle.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/context.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/engine.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/env.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/envelope.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/interrupt.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/legacy.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/loading.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/manager.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/migration.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/models/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/models/adapters.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/models/config.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/models/domain.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/models/transport.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/models/wire.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/permissions.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/presenter.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/projection.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/reducer.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/runner.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/runtime.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/server_middleware.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/snapshot.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/tools.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/transcript.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/trust.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/hooks/validate_terminal_sequence.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/input.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/integrations/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/integrations/openai_codex.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/integrations/sandbox_factory.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/integrations/sandbox_provider.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/integrations/sandbox_registry.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/iterm_cursor_guide.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/json_types.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/local_context.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/managed_tools.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/mcp_auth.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/mcp_config.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/mcp_login_service.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/mcp_oauth_ui.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/mcp_providers/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/mcp_providers/_registry.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/mcp_providers/base.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/mcp_providers/github.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/mcp_providers/slack.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/media_utils.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/memory_guard.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/notifications.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/offload.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/offload_middleware.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/onboarding.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/output.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/paste_collapse.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/plugins/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/plugins/_json.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/plugins/adapters/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/plugins/adapters/hooks.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/plugins/adapters/mcp.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/plugins/adapters/skills.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/plugins/adapters/skills_middleware.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/plugins/commands_cli.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/plugins/discovery.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/plugins/manifest.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/plugins/marketplace.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/plugins/models.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/plugins/store.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/plugins/substitution.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/project_utils.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/py.typed +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/reasoning_effort.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/reliable_rubric.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/resume_state.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/skills/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/skills/commands.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/skills/invocation.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/skills/load.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/skills/merge.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/skills/trust.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/state_migration.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/subagents.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/system_prompt.md +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/terminal_capabilities.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tool_catalog.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tool_display.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tools.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/modals/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/modals/plugin_manager/content.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/modals/plugin_manager/models.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/modals/plugin_manager/state.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/modals/plugin_manager/tabs.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/modals/resume_compact.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/screens/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/_copy_spans.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/_inline_prompt.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/_js_eval_display.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/_links.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/_paste_textarea.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/autocomplete.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/codex_auth.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/context_usage.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/cwd_switch.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/diff.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/goal_review.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/goal_status.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/history.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/install_confirm.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/loading.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/mcp_login.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/mcp_reconnect.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/restart_prompt.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/skill_trust.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/startup_tip.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/subagent_panel.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/thread_agent_switch.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/thread_selector.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/tool_renderers.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/tool_widgets.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/update_confirm.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/update_progress.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/tui/widgets/welcome.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/ui.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/deepagents_code/unicode_security.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/examples/skills/arxiv-search/SKILL.md +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/examples/skills/arxiv-search/arxiv_search.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/examples/skills/langgraph-docs/SKILL.md +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/examples/skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/examples/skills/web-research/SKILL.md +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/hatch_build.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/images/tui.png +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/scripts/check_imports.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/scripts/debug_server.sh +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/scripts/generate_commands_catalog.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/scripts/install.sh +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/README.md +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/integration_tests/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/integration_tests/benchmarks/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/integration_tests/benchmarks/test_local_context_benchmarks.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/integration_tests/conftest.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/integration_tests/test_acp_mode.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/integration_tests/test_auto_approve_remote.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/integration_tests/test_compact_resume.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/integration_tests/test_goal_criteria_remote.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/integration_tests/test_offload_server_side.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/integration_tests/test_sandbox_factory.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/integration_tests/test_sandbox_operations.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/client/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/client/commands/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/client/commands/test_auth.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/client/commands/test_extras.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/client/commands/test_mcp.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/client/commands/test_tools.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/data/coding_agent_v1_validator.json +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/hooks/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/hooks/models/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/hooks/models/test_models.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/hooks/test_client_lifecycle.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/hooks/test_configuration.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/hooks/test_engine.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/hooks/test_execution.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/hooks/test_manager.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/hooks/test_presenter.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/hooks/test_server_lifecycle.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/hooks/test_transcript.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/hooks/test_trust.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/plugins/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/plugins/test_marketplace.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/plugins/test_plugin_hooks.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/plugins/test_plugins_p0.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/plugins/test_store.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/skills/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/skills/test_commands.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/skills/test_load.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/skills/test_merge.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/skills/test_skill_trust.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/skills/test_skills_json.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/skills/test_thread_inspector.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/smoke_tests/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/smoke_tests/conftest.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/smoke_tests/snapshots/system_prompt_interactive_local.md +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/smoke_tests/test_system_prompt.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_acp.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_agent_friendly.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_approval_mode.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_args.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_auth_display.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_auth_store.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_auth_web_search_restart.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_clipboard.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_coding_agent_metadata.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_command_registry.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_compact_tool.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_config_recursion_limit.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_configurable_model.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_cost_tracking.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_cursor_blink.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_cursor_style.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_debug.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_debug_buffer.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_dep_floor_check.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_diff_utils.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_doctor.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_editor.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_env_vars.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_event_bus.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_exception_handling.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_extras_info.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_file_ops.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_formatting.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_git.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_glm_5p2_profile.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_goal_criteria_client.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_goal_rubric.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_goal_state_notice.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_goal_state_persistence.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_goal_tools.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_hatch_build.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_hooks.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_imports.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_input_parsing.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_install_command.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_install_script.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_invocation.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_json_types.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_local_context.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_main_acp_mode.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_main_args.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_managed_tools.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_mcp_auth.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_mcp_config.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_mcp_login_service.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_mcp_oauth_ui.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_mcp_tools.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_media_utils.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_memory_guard.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_model_switch.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_notifications.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_offload.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_onboarding.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_openai_codex_integration.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_output.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_paths.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_reasoning_effort.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_reliable_rubric.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_remote_client.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_repository_bounds.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_resume_state.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_rubric_cli.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_sandbox_factory.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_sandbox_provider.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_sandbox_registry.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_server.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_server_config.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_server_helpers.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_server_manager.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_sessions.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_shell_allow_list.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_skill_invocation.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_startup_blocking.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_startup_fast_paths.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_state_migration.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_subagents.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_terminal_capabilities.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_terminal_progress_preference.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_tool_catalog.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_tool_display.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_tracing.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_tracing_replicas.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_transcript_virtualization.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_ui.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_unicode_security.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/test_version.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tools/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tools/test_current_thread.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tools/test_fetch_url.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tools/test_tool_arg_schemas.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/modals/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/modals/plugin_manager/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/modals/test_cold_cache.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/test_subagent_stream.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/__init__.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_auto_mode_notice.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_autocomplete.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_copy_spans.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_cwd_switch.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_diff.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_goal_review.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_history.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_inline_prompt.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_install_confirm.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_launch_init.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_links.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_loading.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_mcp_login_modal.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_mcp_reconnect.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_message_store.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_notification_detail.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_restart_prompt.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_skill_trust_screen.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_startup_tip.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_subagent_panel.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_thread_agent_switch.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_tool_renderers.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_update_available.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_update_confirm.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_update_progress.py +0 -0
- {deepagents_code-0.1.58 → deepagents_code-0.1.60}/tests/unit_tests/tui/widgets/test_welcome.py +0 -0
|
@@ -2,6 +2,49 @@
|
|
|
2
2
|
|
|
3
3
|
# Deep Agents Code Changelog
|
|
4
4
|
|
|
5
|
+
## [0.1.60](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.59...deepagents-code==0.1.60) (2026-08-23)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
- Added `editable` trace metadata ([#5737](https://github.com/langchain-ai/deepagents/issues/5737)) ([23b83ad](https://github.com/langchain-ai/deepagents/commit/23b83ad50f63d241d0069a3dc426d43b211adf2e)).
|
|
10
|
+
- Added shell command highlighting in the chat input ([#5675](https://github.com/langchain-ai/deepagents/issues/5675)) ([d711bc6](https://github.com/langchain-ai/deepagents/commit/d711bc61300090181dc89e3e116e8b343fb65425)).
|
|
11
|
+
- Made project `.env` loading configurable ([#5726](https://github.com/langchain-ai/deepagents/issues/5726)) ([995cad6](https://github.com/langchain-ai/deepagents/commit/995cad67519af294851282133f8c40f643807c88)).
|
|
12
|
+
- Unified notification center and settings ([#5698](https://github.com/langchain-ai/deepagents/issues/5698)) ([9767f42](https://github.com/langchain-ai/deepagents/commit/9767f420c622a31a7511c4601739534ddc6062a7)).
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
- Blocked dotenv git config injection keys ([#5723](https://github.com/langchain-ai/deepagents/issues/5723)) ([328f916](https://github.com/langchain-ai/deepagents/commit/328f9160e0f95a459be8ad57f76e7178b24a3ef8)).
|
|
17
|
+
- Persisted Auto approval mode between sessions and simplified Auto fallback copy ([#5665](https://github.com/langchain-ai/deepagents/issues/5665)) ([3ac059e](https://github.com/langchain-ai/deepagents/commit/3ac059e1574963fe216692642aa1b1a4044daaa9)), ([#5670](https://github.com/langchain-ai/deepagents/issues/5670)) ([42afcde](https://github.com/langchain-ai/deepagents/commit/42afcded97029070f393232778c84aaf3b69fb1c)).
|
|
18
|
+
- Fixed recognition of in-flight trace messages ([#5738](https://github.com/langchain-ai/deepagents/issues/5738)) ([f1d1f63](https://github.com/langchain-ai/deepagents/commit/f1d1f632812a85646d25ac2f3d2d7f39b65a0b49)).
|
|
19
|
+
- Increased the warm limit to 800 ([#5728](https://github.com/langchain-ai/deepagents/issues/5728)) ([f954cde](https://github.com/langchain-ai/deepagents/commit/f954cde37f1171adc2ec3f1516a0393bded47e82)).
|
|
20
|
+
- Improved text selection by supporting `Shift` + `click` to extend selections ([#5732](https://github.com/langchain-ai/deepagents/issues/5732)) ([e05931b](https://github.com/langchain-ai/deepagents/commit/e05931b3016ed3d1500df0c5b77402f457ee5686)).
|
|
21
|
+
- Polished notification settings by removing expand flicker and the trailing disclosure glyph ([#5734](https://github.com/langchain-ai/deepagents/issues/5734)) ([5397812](https://github.com/langchain-ai/deepagents/commit/5397812ad5f217cd84f871f121cf9ea8f3d63f4f)).
|
|
22
|
+
- Improved authentication footers with contextual actions ([#5690](https://github.com/langchain-ai/deepagents/issues/5690)) ([074a501](https://github.com/langchain-ai/deepagents/commit/074a5019e1f3edfd589614774958400d051e5fe1)).
|
|
23
|
+
- Standardized modal navigation hints ([#5699](https://github.com/langchain-ai/deepagents/issues/5699)) ([85c6833](https://github.com/langchain-ai/deepagents/commit/85c6833734a547e968221c1199a769d7aac69430)).
|
|
24
|
+
- Aligned wrapped debug snapshot values ([#5727](https://github.com/langchain-ai/deepagents/issues/5727)) ([1f74959](https://github.com/langchain-ai/deepagents/commit/1f7495949232fe2e3e3328b6ff9054c202002f95)).
|
|
25
|
+
|
|
26
|
+
## [0.1.59](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.58...deepagents-code==0.1.59) (2026-08-20)
|
|
27
|
+
|
|
28
|
+
### Features
|
|
29
|
+
|
|
30
|
+
- Added support for `managed_config.toml` configuration ([#5604](https://github.com/langchain-ai/deepagents/issues/5604))
|
|
31
|
+
- Multi-select `ask_user` answers are now encoded as JSON arrays ([#5660](https://github.com/langchain-ai/deepagents/issues/5660))
|
|
32
|
+
- Made teardown usage stats configurable ([#5696](https://github.com/langchain-ai/deepagents/issues/5696))
|
|
33
|
+
- Footer pickers now open on click ([#5674](https://github.com/langchain-ai/deepagents/issues/5674))
|
|
34
|
+
- Replaced Gemini 3.6 Flash with Gemini 3.7 Flash ([#5681](https://github.com/langchain-ai/deepagents/issues/5681))
|
|
35
|
+
|
|
36
|
+
### Bug fixes
|
|
37
|
+
|
|
38
|
+
- Made tool argument validation errors recoverable ([#5659](https://github.com/langchain-ai/deepagents/issues/5659))
|
|
39
|
+
- Improved streaming performance for tool-call arguments to run in linear time ([#5712](https://github.com/langchain-ai/deepagents/issues/5712))
|
|
40
|
+
- Fixed durable-mask config resolution with ranked resolver behavior ([#5672](https://github.com/langchain-ai/deepagents/issues/5672))
|
|
41
|
+
- Skipped background sync in Apple Terminal ([#5666](https://github.com/langchain-ai/deepagents/issues/5666))
|
|
42
|
+
- Hid thread IDs when tracing is disabled ([#5692](https://github.com/langchain-ai/deepagents/issues/5692))
|
|
43
|
+
- Kept installed providers visible in `/auth` ([#5689](https://github.com/langchain-ai/deepagents/issues/5689))
|
|
44
|
+
- Preloaded the auth UI before notification handoff ([#5697](https://github.com/langchain-ai/deepagents/issues/5697))
|
|
45
|
+
- Updated and clarified UI copy across Auto mode, YOLO hints, classifier notices, `/tokens`, line-number toggles, review failures, onboarding Tavily cancellation, and OpenAI subscription login labels ([#5685](https://github.com/langchain-ai/deepagents/issues/5685), [#5694](https://github.com/langchain-ai/deepagents/issues/5694), [#5684](https://github.com/langchain-ai/deepagents/issues/5684), [#5687](https://github.com/langchain-ai/deepagents/issues/5687), [#5680](https://github.com/langchain-ai/deepagents/issues/5680), [#5688](https://github.com/langchain-ai/deepagents/issues/5688), [#5686](https://github.com/langchain-ai/deepagents/issues/5686), [#5691](https://github.com/langchain-ai/deepagents/issues/5691), [#5693](https://github.com/langchain-ai/deepagents/issues/5693))
|
|
46
|
+
- Removed the `Muse Spark 1.1` recommendation ([#5683](https://github.com/langchain-ai/deepagents/issues/5683))
|
|
47
|
+
|
|
5
48
|
## [0.1.58](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.57...deepagents-code==0.1.58) (2026-08-19)
|
|
6
49
|
|
|
7
50
|
### Breaking Changes
|
|
@@ -33,7 +33,7 @@ aliases, descriptions, visibility, or hidden-command metadata.
|
|
|
33
33
|
| `/manual` | | Switch to Manual approval mode |
|
|
34
34
|
| `/mcp` | | Manage MCP servers and authentication |
|
|
35
35
|
| `/model` | | Switch models or edit model settings |
|
|
36
|
-
| `/notifications` | |
|
|
36
|
+
| `/notifications` | | Review notifications and configure warning settings |
|
|
37
37
|
| `/offload` | `/compact` | Summarize and offload older messages to free context |
|
|
38
38
|
| `/plugins` | | Manage plugins |
|
|
39
39
|
| `/quit` | `/q` | Exit app |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: deepagents-code
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.60
|
|
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
|
|
@@ -30,16 +30,16 @@ Requires-Python: <4.0,>=3.12
|
|
|
30
30
|
Requires-Dist: aiosqlite<1.0.0,>=0.22.1
|
|
31
31
|
Requires-Dist: anyio<5.0.0,>=4.14.2
|
|
32
32
|
Requires-Dist: deepagents-acp<1.0.0,>=0.0.10
|
|
33
|
-
Requires-Dist: deepagents==0.7.
|
|
33
|
+
Requires-Dist: deepagents==0.7.8
|
|
34
34
|
Requires-Dist: filelock<3.30,>=3.29.7
|
|
35
|
-
Requires-Dist: genai-prices<0.2.0,>=0.1.
|
|
35
|
+
Requires-Dist: genai-prices<0.2.0,>=0.1.4
|
|
36
36
|
Requires-Dist: httpx<1.0.0,>=0.28.1
|
|
37
|
-
Requires-Dist: langchain-anthropic<2.0.0,>=1.6.
|
|
37
|
+
Requires-Dist: langchain-anthropic<2.0.0,>=1.6.1
|
|
38
38
|
Requires-Dist: langchain-google-genai<5.0.0,>=4.3.4
|
|
39
39
|
Requires-Dist: langchain-mcp-adapters<1.0.0,>=0.3.2
|
|
40
40
|
Requires-Dist: langchain-openai<2.0.0,>=1.6.0
|
|
41
41
|
Requires-Dist: langchain-quickjs<0.4.0,>=0.3.4
|
|
42
|
-
Requires-Dist: langchain<2.0.0,>=1.3.
|
|
42
|
+
Requires-Dist: langchain<2.0.0,>=1.3.16
|
|
43
43
|
Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.1.1
|
|
44
44
|
Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.31
|
|
45
45
|
Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.32.6
|
|
@@ -66,7 +66,7 @@ Provides-Extra: agentcore
|
|
|
66
66
|
Requires-Dist: langchain-agentcore-codeinterpreter<1.0.0,>=0.0.5; extra == 'agentcore'
|
|
67
67
|
Provides-Extra: all-providers
|
|
68
68
|
Requires-Dist: aiohttp<3.15.0,>=3.14.3; extra == 'all-providers'
|
|
69
|
-
Requires-Dist: langchain-anthropic<2.0.0,>=1.6.
|
|
69
|
+
Requires-Dist: langchain-anthropic<2.0.0,>=1.6.1; extra == 'all-providers'
|
|
70
70
|
Requires-Dist: langchain-aws<2.0.0,>=1.7.2; extra == 'all-providers'
|
|
71
71
|
Requires-Dist: langchain-baseten<1.0.0,>=0.2.3; extra == 'all-providers'
|
|
72
72
|
Requires-Dist: langchain-cohere<1.0.0,>=0.6.0; extra == 'all-providers'
|
|
@@ -94,7 +94,7 @@ Requires-Dist: langchain-modal>=0.0.5; extra == 'all-sandboxes'
|
|
|
94
94
|
Requires-Dist: langchain-runloop>=0.0.6; extra == 'all-sandboxes'
|
|
95
95
|
Requires-Dist: langchain-vercel-sandbox>=0.0.1; extra == 'all-sandboxes'
|
|
96
96
|
Provides-Extra: anthropic
|
|
97
|
-
Requires-Dist: langchain-anthropic<2.0.0,>=1.6.
|
|
97
|
+
Requires-Dist: langchain-anthropic<2.0.0,>=1.6.1; extra == 'anthropic'
|
|
98
98
|
Provides-Extra: baseten
|
|
99
99
|
Requires-Dist: langchain-baseten<1.0.0,>=0.2.3; extra == 'baseten'
|
|
100
100
|
Provides-Extra: bedrock
|
|
@@ -50,6 +50,7 @@
|
|
|
50
50
|
6. The LangGraph dev server subprocess binds to `127.0.0.1` by default (`client/launch/server.py:_DEFAULT_HOST`) and is ephemeral — started and stopped per CLI session.
|
|
51
51
|
7. `DA_SERVER_*` environment variables are readable only by the CLI process and its child server subprocess (OS process isolation assumption).
|
|
52
52
|
8. Users who set `class_path` in `config.toml` accept the same trust model as `pyproject.toml` build scripts — they control their own machine.
|
|
53
|
+
9. Administrators deploy and protect the fixed `managed_config.toml` path with operating-system controls; the CLI does not validate its owner or mode and never writes it.
|
|
53
54
|
|
|
54
55
|
---
|
|
55
56
|
|
|
@@ -129,7 +130,7 @@
|
|
|
129
130
|
| C6 | Hook Runtime | Fires subprocess commands on agent lifecycle events | framework-controlled | No³ | `hooks.runtime.HooksRuntime`, `hooks.runner.run_command_handler` |
|
|
130
131
|
| C7 | Sandbox Integration | Creates/destroys remote sandboxes (Daytona, LangSmith, Modal, Runloop, AgentCore) | framework-controlled | No⁴ | `integrations.sandbox_factory.create_sandbox` |
|
|
131
132
|
| C8 | Session Persistence | SQLite checkpoint store for LangGraph thread state | framework-controlled | Yes | `sessions.get_db_path`, `sessions.generate_thread_id` |
|
|
132
|
-
| C9 | Configuration System | TOML
|
|
133
|
+
| C9 | Configuration System | Managed/user TOML, env vars, `AGENTS.md` system prompts, model config | administrator/user-controlled | N/A | `configuration`, `config.settings`, `model_config.ModelConfig`, fixed managed path, `~/.deepagents/config.toml` |
|
|
133
134
|
| C10 | Unicode/URL Safety | Detects hidden Unicode, checks URL domain spoofing for approval UI warnings | framework-controlled | Yes | `unicode_security.detect_dangerous_unicode`, `unicode_security.check_url_safety` |
|
|
134
135
|
| C11 | LangGraph Dev Server | Subprocess running `langgraph dev` with `LANGGRAPH_AUTH_TYPE=noop`; managed by `ServerProcess` | framework-controlled | Yes⁵ | `client.launch.server.ServerProcess.start`, `client.launch.server.generate_langgraph_json`, `client.launch.server_manager.start_server_and_get_agent` |
|
|
135
136
|
| C12 | Remote Agent Client | HTTP+SSE client wrapping `RemoteGraph`; connects to C11 on localhost | framework-controlled | Yes⁵ | `client.remote_client.RemoteAgent.astream`, `client.remote_client.RemoteAgent.aget_state` |
|
|
@@ -207,6 +208,7 @@
|
|
|
207
208
|
| TB9 | LocalContextMiddleware → Host Env | Bash detect script output (git info, project files, Makefile) injected into system prompt | Script is framework-generated static code; 30s timeout; exit-code check | Content of Makefile, pyproject.toml, git branch names, directory listing |
|
|
208
209
|
| TB10 | RemoteAgent → LangGraph Dev Server | CLI communicates with agent via HTTP+SSE on localhost | Server bound to `127.0.0.1` (`client/launch/server.py:_DEFAULT_HOST`); ephemeral per session | No authentication (`LANGGRAPH_AUTH_TYPE=noop`); any localhost process can reach the API |
|
|
209
210
|
| TB11 | Config File → Code Execution | `class_path` in `config.toml` triggers `importlib.import_module()`; project/global `.env` values are loaded into the process environment and can reach Bash startup hooks | Format validation (`module:ClassName`); `issubclass(BaseChatModel)` check; dotenv loading denies shell startup / environment-hijack keys (`BASH_ENV`, `ENV`) | Module-level side effects execute during import; user controls config file; project files in the working directory influence execution |
|
|
211
|
+
| TB12 | Managed Config → Runtime | A fixed administrator-deployed TOML file overrides CLI, environment, and user preferences | Fixed non-redirectable path; the CLI never writes the file; fail-closed startup for every command except diagnostics; typed resolution; diagnostics remain available | Filesystem ownership/mode and privileged deployment are outside the CLI; a host administrator can weaken or strengthen policy |
|
|
210
212
|
|
|
211
213
|
### Boundary Details
|
|
212
214
|
|
|
@@ -258,9 +260,29 @@
|
|
|
258
260
|
- **Inside**: `config._create_model_from_class` validates `class_path` format (`module:ClassName`), imports the module via `importlib.import_module()`, and checks `issubclass(cls, BaseChatModel)` before instantiation.
|
|
259
261
|
- **Outside**: Module-level code in the imported module executes unconditionally during `import_module()`. The `issubclass` check only runs after import. Any side effects (file I/O, network calls, subprocess spawning) in the module's top-level scope execute before the type check.
|
|
260
262
|
- **Crossing mechanism**: `importlib.import_module(module_path)` in `config._create_model_from_class`.
|
|
261
|
-
- **Inside (dotenv)**: `config._load_dotenv` loads project and global `.env` values with `override=False` and drops shell startup / environment-hijack keys (`BASH_ENV`, `ENV`, and related) so a project `.env` cannot register a script that Bash would source at startup. The preview path (`_preview_dotenv_environ`) applies the same denylist so a dry-run config change cannot report a value a real reload would reject.
|
|
263
|
+
- **Inside (dotenv)**: `config._load_dotenv` loads project and global `.env` values with `override=False` and drops shell startup / environment-hijack keys (`BASH_ENV`, `ENV`, and related) so a project `.env` cannot register a script that Bash would source at startup. The denylist is best-effort: it enumerates environment variables known to reach a code-execution consumer (a shell's startup hook, the dynamic linker, an interpreter's startup path) and cannot claim completeness — any tool `dcode` spawns that honors an environment-driven execution hook not yet in the list remains a live vector until the key is added. The preview path (`_preview_dotenv_environ`) applies the same denylist so a dry-run config change cannot report a value a real reload would reject.
|
|
262
264
|
- **Outside (dotenv)**: All other `.env` keys are applied to the process environment, and any project file in the working directory (`.env`, `Makefile`, build scripts) can still influence execution. See T12.
|
|
263
265
|
|
|
266
|
+
#### TB12: Managed Config → Runtime
|
|
267
|
+
|
|
268
|
+
- **Inside**: The resolver reads one fixed OS path. The writer rejects that path, so the managed source is read-only by guard and not only by convention. Valid managed values take the highest precedence. The rules are:
|
|
269
|
+
- Tables deep-merge. Deny lists union. An explicit managed allow or trust list replaces lower-precedence grants.
|
|
270
|
+
- A managed scalar replaces a colliding user table at any depth, so a user cannot defeat policy by changing the shape of a key. This holds on the top-level merge and inside a structured table: both apply the manifest validator, so the effective value and the audited provenance agree.
|
|
271
|
+
- A wrong-typed managed scalar is skipped, and the lower-precedence value stays in effect.
|
|
272
|
+
- Inside a structured table (`[models.providers]`, `[themes]`, `[async_subagents]`, `[sandboxes.providers]`, `[ui.terminal_themes]`, `[threads.columns]`) the dedicated typed reader validates instead. A wrong-typed managed leaf there can displace a valid user leaf, after which the reader falls back to the built-in default.
|
|
273
|
+
- An enforced key whose managed value cannot be applied stops every command except the diagnostics listed below. It also blocks `/reload`. Skipping it would leave the user's CLI flag or environment variable in force. The enforced keys are `startup.mode`, `startup.yolo_switcher`, `shell.allow_list`, `skills.extra_allowed_dirs`, `interpreter.enable_interpreter`, `interpreter.ptc`, `interpreter.ptc_acknowledge_unsafe`, `models.auto_classifier`, `runtime.recursion_limit`, `sandboxes.default`, and `tracing.langsmith_redact`.
|
|
274
|
+
- Three conditions make an enforced key unapplicable: a wrong-typed value, a `runtime.recursion_limit` outside its bounds, and a key made unreachable by a scalar ancestor (`startup = "manual"` in place of `[startup]` and `mode`). A managed `[sandboxes].default` that names an unavailable backend stops a sandboxed launch.
|
|
275
|
+
- A scalar at a known section is rejected for the same reason, so it cannot replace the user's whole section. `[effort]` is included, although it has no manifest option.
|
|
276
|
+
- Any other rejected managed value is ignored, and `dcode doctor` and `dcode config` name it. An ignored key is never silent.
|
|
277
|
+
- A missing file is accepted and applies no policy.
|
|
278
|
+
- A present unreadable, undecodable, or syntactically corrupt file blocks every command except `--help`, `--version`, `help`, `config`, `doctor`, and `auth path`. It also blocks `/reload`.
|
|
279
|
+
- On Windows, a ProgramData directory that cannot be read from the registry blocks the same commands. The path would be a guess, and an empty read at a guessed path does not prove that no policy is deployed. Reporting it as a missing file made every managed setting silently inert on a host whose ProgramData is relocated.
|
|
280
|
+
- A failed `/reload` keeps the last snapshot that parsed cleanly, so policy is never dropped mid-session.
|
|
281
|
+
- An unusable user `config.toml` drops only the user layer, so managed policy still applies.
|
|
282
|
+
- A deny list that cannot be read is treated as denying everything, never as empty. This covers a managed `[mcp].disabled_servers` that is neither an array of names nor a comma-separated string, and a `[mcp]` section that is not a table. A managed `[mcp].enabled_project_server_approvals` that is not an array is treated the same way: the key is present, so policy means to narrow access, and reading its presence as absence would keep both the user's approvals and the `DEEPAGENTS_CODE_DANGEROUSLY_ENABLE_PROJECT_MCP_SERVERS` bypass in force.
|
|
283
|
+
- **Outside**: Ownership, permission-mode validation, privileged installation, and `sudo` policy are deployment responsibilities. Anyone who can replace the administrator-managed file can control model, sandbox, interpreter, MCP trust, and other supported runtime settings. On macOS, note that stock `/Library/Application Support` is group-writable by `admin`, so any admin-group member can create the file and grant themselves policy. Deployments that rely on this boundary must tighten ownership and mode on the `dcode` directory.
|
|
284
|
+
- **Crossing mechanism**: Synchronous local file read through `configuration.TomlFileProvider`, followed by typed resolution and CLI/server startup gates.
|
|
285
|
+
|
|
264
286
|
---
|
|
265
287
|
|
|
266
288
|
## Data Flows
|
|
@@ -292,6 +314,7 @@
|
|
|
292
314
|
| DF23 | C9 Config | C17 Model Config | `class_path` string from `config.toml` | — | TB11 | TOML parse → importlib |
|
|
293
315
|
| DF24 | C5 MCP Config | MCP Subprocess | `env` dict from `.mcp.json` forwarded to stdio subprocess | DC1 | TB4 | subprocess environment |
|
|
294
316
|
| DF25 | C3 Agent | C7 Sandbox | Conversation messages for offload | DC5 | TB6 | `backend.awrite()` |
|
|
317
|
+
| DF26 | Administrator | C9 Config | Managed TOML policy | DC1 | TB12 | Fixed local file read |
|
|
295
318
|
|
|
296
319
|
### Flow Details
|
|
297
320
|
|
|
@@ -430,7 +453,7 @@
|
|
|
430
453
|
#### T12: Project `.env` Injects Shell Interpreter Startup Hooks
|
|
431
454
|
|
|
432
455
|
- **Flow**: DF10 (project `.env` → process environment) → bash subprocess startup (DF19)
|
|
433
|
-
- **Description**: `config._load_dotenv` discovers the nearest project `.env` by walking up from the working directory and applies its values to the process environment (`override=False`, so shell-exported values still win). Bash treats several environment variables as startup hooks — `BASH_ENV` and `ENV` name a file that is sourced when a non-interactive shell starts. Because Deep Agents Code runs its own local-context detection through Bash at startup (`local_context.build_detect_script`) and spawns shells for the `execute` tool, a project `.env` that sets one of these keys could run attacker-controlled scripts inside the `dcode` process *before* any model-requested tool call or HITL approval prompt. The broader trust boundary is that running `dcode` in a project directory lets that project influence the process environment.
|
|
456
|
+
- **Description**: `config._load_dotenv` discovers the nearest project `.env` by walking up from the working directory and applies its values to the process environment (`override=False`, so shell-exported values still win). Bash treats several environment variables as startup hooks — `BASH_ENV` and `ENV` name a file that is sourced when a non-interactive shell starts. Because Deep Agents Code runs its own local-context detection through Bash at startup (`local_context.build_detect_script`) and spawns shells for the `execute` tool, a project `.env` that sets one of these keys could run attacker-controlled scripts inside the `dcode` process *before* any model-requested tool call or HITL approval prompt. The broader trust boundary is that running `dcode` in a project directory lets that project influence the process environment. The mitigation is a key denylist (`config._DOTENV_DENIED_ENV_KEYS`) covering known execution-hook consumers (shell startup, dynamic linker, interpreter startup/paths, askpass hijack); it is a best-effort enumeration, not a closed set, so an execution hook consumed by some other spawned tool remains viable until its keys are added to the list.
|
|
434
457
|
- **Preconditions**: (1) User launches `dcode` in a directory containing an attacker-controlled `.env` (for example, a freshly cloned untrusted repository); (2) the `.env` sets a shell startup-hook key that is not already exported in the user's shell (dotenv uses `override=False`).
|
|
435
458
|
|
|
436
459
|
#### T13: First-Token Shell Allow-List Bypass via Interpreters/Wrappers
|
|
@@ -455,7 +478,7 @@
|
|
|
455
478
|
| LLM output | DF6, DF7 | T1, T2, T3, T4, T13, T14| HITL gate; shell allow-list; Unicode/URL warnings on tool args; Auto classifier review | Project | LLM-generated tool args not scanned for injection beyond Unicode/URL; shell allow-list matches only the command's first token, so allow-listed interpreters/wrappers bypass it (T13); Auto classifier review quality follows the user-selected classifier model, and the classifier reads untrusted tool arguments, prior output, and model-authored `ask_user` question text (T14) |
|
|
456
479
|
| Tool/function results | DF9, DF11 | T1 | Unicode warning on URL args; `markdownify` HTML conversion | Shared | Tool *results* pass to context without prompt-injection scan |
|
|
457
480
|
| URL-fetched content | DF8, DF9 | T1 | `check_url_safety` on URL arg; HTML→markdown conversion | Shared | Markup-embedded instructions survive markdownify; no LLM-layer guardrail |
|
|
458
|
-
| Configuration | DF10, DF12, DF15, DF23| T9, T10, T12, T14 | Dotenv shell-env precedence; TOML schema; MCP schema + allow/deny lists; JSON structure check; `class_path` format check;
|
|
481
|
+
| Configuration | DF10, DF12, DF15, DF23| T9, T10, T12, T14 | Dotenv shell-env precedence; TOML schema; MCP schema + allow/deny lists; JSON structure check; `class_path` format check; dotenv denylist for execution-hook env keys and project-`.env` trust vars | User | Dotenv denylist is best-effort — execution-hook env keys consumed by tools not yet enumerated still reach subprocesses; `class_path` executes module code before type check; MCP env dict unfiltered; Auto classifier strength is a user choice with no floor enforced (T14) |
|
|
459
482
|
| Session restore | DF14 | T5 | OS file permissions; SQLite | Project | Unencrypted at rest |
|
|
460
483
|
| Server IPC (env vars) | DF18 | T6 | `ServerConfig` serialization; parent env passed to child | Project | Provider API keys flow to server subprocess; system prompt in env |
|
|
461
484
|
| Host environment | DF19, DF20 | T7 | Static script; exit code check; 30s timeout | Shared | Makefile content injected into system prompt without sanitization |
|
|
@@ -522,3 +545,4 @@ Threats that appear valid in isolation but fall outside project responsibility b
|
|
|
522
545
|
| 2026-08-03 | manual update | Added T14 (a weaker Auto classifier model weakens action review) under TB2, covering the selectable classifier (`--auto-classifier-model`, `DEEPAGENTS_CODE_AUTO_CLASSIFIER_MODEL`, `[models].auto_classifier`, `/auto model`), its restriction to trusted config surfaces via `config._PROJECT_DOTENV_DENIED_ENV_KEYS`, and its fail-closed construction behavior (deny, then latch to human approval; never fall back to the main model). Extended the "LLM output" and "Configuration" input-coverage rows with T14 |
|
|
523
546
|
| 2026-08-04 | manual update | Extended T14 for the configurable Auto classifier review deadline (`DEEPAGENTS_CODE_AUTO_CLASSIFIER_TIMEOUT`, `[models].auto_classifier_timeout`): bounded by `config_manifest.resolve_auto_classifier_timeout` between a floor and ceiling so the deadline cannot be removed, denied from a project `.env` via `config._PROJECT_DOTENV_DENIED_ENV_KEYS`, and fail-closed on expiry |
|
|
524
547
|
| 2026-08-17 | manual update | Extended T14 for `ask_user` question text as a classifier injection source: the receipt attests display and answer, not content, so a question claiming prior or blanket authorization is untrusted content; recorded the `_CLASSIFIER_POLICY` clauses that keep a paired question to an action/target description matched against canonical arguments. Narrowed the T14 "deterministic allow/deny" guard wording, which overstated the deny side: deterministic denies do not cover the Deny categories, and an affirmative classifier allow is not re-checked downstream |
|
|
548
|
+
| 2026-08-21 | manual update | Clarified that the dotenv execution-hook denylist (`config._DOTENV_DENIED_ENV_KEYS`) is a best-effort enumeration of known code-execution consumers, not a closed set: TB11's inside-detail and T12's description now state this explicitly, and the Configuration input-coverage gap was reworded from the stale "project `.env` can set shell startup-hook vars" (denylisted since #4288) to the actual residual — execution-hook keys consumed by not-yet-enumerated tools still reach subprocesses |
|