deepagents-code 0.1.60__tar.gz → 0.1.61__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.60 → deepagents_code-0.1.61}/ARCHITECTURE.md +12 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/CHANGELOG.md +21 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/COMMANDS.md +2 -1
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/PKG-INFO +133 -11
- deepagents_code-0.1.61/README.md +194 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/THREAT_MODEL.md +124 -22
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/_build_info.py +1 -1
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/_cli_context.py +0 -9
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/_env_vars.py +12 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/_session_stats.py +1 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/_testing_models.py +57 -1
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/_version.py +1 -1
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/agent.py +83 -7
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/app.py +1183 -1014
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/app.tcss +1 -1
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/auto_mode.py +356 -169
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/client/commands/config.py +50 -28
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/client/launch/server.py +27 -1
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/client/remote_client.py +248 -4
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/clipboard.py +2 -2
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/cold_cache.py +15 -12
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/command_registry.py +6 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/config.py +363 -163
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/config_manifest.py +382 -293
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/configurable_model.py +26 -7
- deepagents_code-0.1.61/deepagents_code/configuration/provider.py +42 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/configuration/providers.py +326 -11
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/configuration/resolver.py +482 -1
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/configuration/service.py +116 -23
- deepagents_code-0.1.61/deepagents_code/configuration/theme_resolution.py +112 -0
- deepagents_code-0.1.61/deepagents_code/configuration/types.py +160 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/configuration/writer.py +57 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/cost_tracking.py +153 -15
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/doctor.py +56 -10
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/goal_rubric.py +231 -8
- deepagents_code-0.1.61/deepagents_code/goal_state_limits.py +342 -0
- deepagents_code-0.1.61/deepagents_code/goal_state_notice.py +846 -0
- deepagents_code-0.1.61/deepagents_code/goal_tools.py +548 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/server_middleware.py +124 -3
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/integrations/sandbox_config.py +20 -15
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/main.py +174 -63
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/model_config.py +545 -31
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/offload.py +114 -0
- deepagents_code-0.1.61/deepagents_code/offload_api.py +932 -0
- deepagents_code-0.1.61/deepagents_code/offload_middleware.py +1292 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/plugins/discovery.py +6 -4
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/resume_state.py +13 -15
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/server_graph.py +125 -47
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/theme.py +17 -9
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tool_catalog.py +4 -0
- deepagents_code-0.1.61/deepagents_code/tui/modals/prompt_clipboard.py +336 -0
- deepagents_code-0.1.61/deepagents_code/tui/modals/prompt_clipboard.tcss +131 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/textual_adapter.py +260 -3
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/_links.py +5 -7
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/_paste_textarea.py +5 -7
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/auth.py +7 -9
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/chat_input.py +445 -22
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/goal_review.py +31 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/history.py +108 -10
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/message_store.py +4 -3
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/messages.py +93 -16
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/model_selector.py +84 -6
- deepagents_code-0.1.61/deepagents_code/tui/widgets/prompt_search.py +690 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/startup_tip.py +1 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/ui.py +8 -2
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/update_check.py +7 -7
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/pyproject.toml +7 -7
- deepagents_code-0.1.61/tests/integration_tests/test_offload_server_side.py +644 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/conftest.py +40 -1
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/hooks/test_server_lifecycle.py +101 -1
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_agent.py +212 -2
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_app.py +1831 -60
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_auto_mode.py +643 -1
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_cold_cache.py +11 -6
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_command_registry.py +5 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_compact_tool.py +265 -342
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_config.py +379 -18
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_config_manifest.py +624 -232
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_configurable_model.py +61 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_configuration.py +344 -27
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_configuration_resolution.py +28 -8
- deepagents_code-0.1.61/tests/unit_tests/test_configuration_resolver.py +1252 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_cost_tracking.py +84 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_goal_criteria_client.py +48 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_goal_rubric.py +343 -1
- deepagents_code-0.1.61/tests/unit_tests/test_goal_state_limits.py +288 -0
- deepagents_code-0.1.61/tests/unit_tests/test_goal_state_notice.py +707 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_goal_state_persistence.py +108 -0
- deepagents_code-0.1.61/tests/unit_tests/test_goal_tools.py +1144 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_main.py +110 -13
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_main_args.py +161 -42
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_model_config.py +750 -5
- deepagents_code-0.1.61/tests/unit_tests/test_offload.py +1768 -0
- deepagents_code-0.1.61/tests/unit_tests/test_offload_api.py +1703 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_reload.py +378 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_remote_client.py +405 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_resume_state.py +7 -4
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_rubric_cli.py +11 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_sandbox_config.py +19 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_server_graph.py +45 -5
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_server_manager.py +32 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_sessions.py +18 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_tool_catalog.py +45 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tools/test_tool_arg_schemas.py +0 -2
- deepagents_code-0.1.61/tests/unit_tests/tui/modals/test_prompt_clipboard.py +624 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/test_textual_adapter.py +717 -1
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_auth_widgets.py +15 -20
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_chat_input.py +1325 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_goal_review.py +56 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_history.py +212 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_links.py +11 -10
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_message_store.py +61 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_messages.py +299 -13
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_model_selector.py +160 -0
- deepagents_code-0.1.61/tests/unit_tests/tui/widgets/test_prompt_search.py +125 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_startup_tip.py +3 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_thread_selector.py +30 -30
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/uv.lock +123 -124
- deepagents_code-0.1.60/README.md +0 -72
- deepagents_code-0.1.60/deepagents_code/configuration/types.py +0 -87
- deepagents_code-0.1.60/deepagents_code/goal_state_notice.py +0 -442
- deepagents_code-0.1.60/deepagents_code/goal_tools.py +0 -534
- deepagents_code-0.1.60/deepagents_code/offload_middleware.py +0 -820
- deepagents_code-0.1.60/tests/integration_tests/test_offload_server_side.py +0 -259
- deepagents_code-0.1.60/tests/unit_tests/test_configuration_resolver.py +0 -215
- deepagents_code-0.1.60/tests/unit_tests/test_goal_state_notice.py +0 -312
- deepagents_code-0.1.60/tests/unit_tests/test_goal_tools.py +0 -687
- deepagents_code-0.1.60/tests/unit_tests/test_offload.py +0 -3315
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/.gitignore +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/AGENTS.md +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/DEVELOPMENT.md +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/HOOKS.md +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/LICENSE +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/Makefile +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/PRICING.md +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/__main__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/_ask_user_types.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/_constants.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/_debug.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/_debug_buffer.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/_dep_floor_check.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/_fake_models.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/_git.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/_glm_5p2_profile.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/_invocation.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/_markdown.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/_paths.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/_repository_bounds.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/_server_config.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/_startup_error.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/_textual_patches.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/_tool_stream.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/_tracing.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/acp.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/approval_mode.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/ask_user.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/auth_display.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/auth_store.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/built_in_skills/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/built_in_skills/deepagents-thread-inspector/SKILL.md +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/built_in_skills/deepagents-thread-inspector/scripts/inspect_sessions.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/bundled_prices.README.md +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/bundled_prices.json +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/client/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/client/commands/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/client/commands/auth.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/client/commands/extras.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/client/commands/mcp.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/client/commands/tools.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/client/launch/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/client/launch/server_manager.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/client/non_interactive.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/configuration/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/configuration/paths.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/default_agent_prompt.md +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/diff_utils.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/editor.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/event_bus.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/extras_info.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/file_ops.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/formatting.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/capabilities.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/client.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/client_lifecycle.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/context.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/engine.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/env.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/envelope.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/interrupt.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/legacy.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/loading.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/manager.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/migration.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/models/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/models/adapters.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/models/config.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/models/domain.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/models/transport.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/models/wire.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/permissions.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/presenter.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/projection.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/reducer.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/runner.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/runtime.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/snapshot.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/tools.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/transcript.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/trust.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/hooks/validate_terminal_sequence.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/input.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/integrations/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/integrations/openai_codex.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/integrations/sandbox_factory.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/integrations/sandbox_provider.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/integrations/sandbox_registry.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/iterm_cursor_guide.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/json_types.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/local_context.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/managed_tools.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/mcp_auth.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/mcp_config.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/mcp_disabled.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/mcp_login_service.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/mcp_oauth_ui.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/mcp_providers/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/mcp_providers/_registry.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/mcp_providers/base.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/mcp_providers/github.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/mcp_providers/slack.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/mcp_tools.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/media_utils.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/memory_guard.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/notifications.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/onboarding.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/output.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/paste_collapse.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/plugins/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/plugins/_json.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/plugins/adapters/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/plugins/adapters/hooks.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/plugins/adapters/mcp.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/plugins/adapters/skills.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/plugins/adapters/skills_middleware.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/plugins/commands_cli.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/plugins/manifest.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/plugins/marketplace.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/plugins/models.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/plugins/store.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/plugins/substitution.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/project_utils.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/py.typed +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/reasoning_effort.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/reliable_rubric.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/sessions.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/skills/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/skills/commands.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/skills/invocation.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/skills/load.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/skills/merge.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/skills/trust.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/state_migration.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/subagents.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/system_prompt.md +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/terminal_capabilities.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/terminal_escape.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tool_display.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tools.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/key_hints.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/modals/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/modals/cold_cache.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/modals/plugin_manager/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/modals/plugin_manager/content.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/modals/plugin_manager/models.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/modals/plugin_manager/plugin_manager.tcss +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/modals/plugin_manager/state.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/modals/plugin_manager/tabs.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/modals/resume_compact.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/screens/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/_copy_spans.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/_inline_prompt.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/_js_eval_display.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/agent_selector.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/approval.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/ask_user.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/auto_mode_notice.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/autocomplete.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/codex_auth.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/context_usage.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/cwd_switch.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/debug_console.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/diff.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/effort_selector.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/goal_status.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/install_confirm.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/launch_init.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/loading.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/mcp_login.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/mcp_reconnect.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/mcp_viewer.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/notification_center.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/notification_detail.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/notification_settings.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/restart_prompt.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/skill_trust.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/status.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/subagent_panel.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/theme_selector.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/thread_agent_switch.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/thread_selector.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/tool_renderers.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/tool_widgets.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/update_available.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/update_confirm.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/update_progress.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/welcome.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/tui/widgets/yolo_mode_notice.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/deepagents_code/unicode_security.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/examples/skills/arxiv-search/SKILL.md +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/examples/skills/arxiv-search/arxiv_search.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/examples/skills/langgraph-docs/SKILL.md +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/examples/skills/skill-creator/SKILL.md +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/examples/skills/web-research/SKILL.md +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/hatch_build.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/images/tui.png +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/scripts/check_imports.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/scripts/debug_server.sh +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/scripts/generate_commands_catalog.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/scripts/install.sh +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/README.md +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/integration_tests/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/integration_tests/benchmarks/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/integration_tests/benchmarks/test_local_context_benchmarks.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/integration_tests/conftest.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/integration_tests/test_acp_mode.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/integration_tests/test_auto_approve_remote.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/integration_tests/test_compact_resume.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/integration_tests/test_goal_criteria_remote.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/integration_tests/test_sandbox_factory.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/integration_tests/test_sandbox_operations.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/client/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/client/commands/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/client/commands/test_auth.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/client/commands/test_extras.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/client/commands/test_mcp.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/client/commands/test_tools.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/data/coding_agent_v1_validator.json +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/hooks/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/hooks/models/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/hooks/models/test_models.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/hooks/test_client_lifecycle.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/hooks/test_configuration.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/hooks/test_engine.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/hooks/test_execution.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/hooks/test_manager.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/hooks/test_presenter.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/hooks/test_transcript.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/hooks/test_trust.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/plugins/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/plugins/test_marketplace.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/plugins/test_plugin_hooks.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/plugins/test_plugins_p0.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/plugins/test_store.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/skills/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/skills/test_commands.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/skills/test_load.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/skills/test_merge.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/skills/test_skill_trust.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/skills/test_skills_json.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/skills/test_thread_inspector.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/smoke_tests/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/smoke_tests/conftest.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/smoke_tests/snapshots/system_prompt_interactive_local.md +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/smoke_tests/test_system_prompt.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test__tool_stream.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_acp.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_agent_friendly.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_approval_mode.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_args.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_ask_user_middleware.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_ask_user_types.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_auth_display.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_auth_store.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_auth_web_search_restart.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_charset.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_clipboard.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_coding_agent_metadata.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_config_recursion_limit.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_cursor_blink.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_cursor_style.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_debug.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_debug_buffer.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_debug_console.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_dep_floor_check.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_diff_utils.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_doctor.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_editor.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_end_to_end.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_env_vars.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_event_bus.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_exception_handling.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_extras_info.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_file_ops.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_formatting.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_git.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_glm_5p2_profile.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_hatch_build.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_hooks.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_imports.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_input_parsing.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_install_command.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_install_script.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_invocation.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_json_types.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_local_context.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_main_acp_mode.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_managed_tools.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_mcp_auth.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_mcp_config.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_mcp_disabled.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_mcp_login_service.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_mcp_oauth_ui.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_mcp_tools.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_media_utils.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_memory_guard.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_model_switch.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_non_interactive.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_notifications.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_onboarding.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_openai_codex_integration.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_output.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_paths.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_reasoning_effort.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_reliable_rubric.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_repository_bounds.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_sandbox_factory.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_sandbox_provider.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_sandbox_registry.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_server.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_server_config.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_server_helpers.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_session_stats.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_shell_allow_list.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_skill_invocation.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_startup_blocking.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_startup_fast_paths.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_state_migration.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_subagents.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_terminal_capabilities.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_terminal_escape.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_terminal_progress_preference.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_textual_patches.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_theme.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_threads_resume.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_tool_display.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_tracing.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_tracing_replicas.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_transcript_virtualization.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_ui.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_unicode_security.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_update_check.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/test_version.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tools/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tools/test_current_thread.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tools/test_fetch_url.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/modals/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/modals/plugin_manager/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/modals/plugin_manager/test_structure.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/modals/test_cold_cache.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/test_key_hints.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/test_modal_footer_layout.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/test_subagent_stream.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/__init__.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_agent_selector.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_approval.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_ask_user.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_auto_mode_notice.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_autocomplete.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_copy_spans.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_cwd_switch.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_diff.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_inline_prompt.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_install_confirm.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_launch_init.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_loading.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_mcp_login_modal.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_mcp_reconnect.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_mcp_viewer.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_notification_center.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_notification_detail.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_notification_settings.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_restart_prompt.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_skill_trust_screen.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_status.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_subagent_panel.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_thread_agent_switch.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_tool_renderers.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_update_available.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_update_confirm.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_update_progress.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_welcome.py +0 -0
- {deepagents_code-0.1.60 → deepagents_code-0.1.61}/tests/unit_tests/tui/widgets/test_yolo_mode_notice.py +0 -0
|
@@ -41,6 +41,18 @@ Headless mode uses the same agent runtime as the interactive UI, but swaps the t
|
|
|
41
41
|
|
|
42
42
|
Configuration is layered across user, project, session, and runtime scopes. That lets teams share project defaults while individual users keep their own credentials, preferences, skills, and local settings.
|
|
43
43
|
|
|
44
|
+
Configuration files are read into a single process-wide generation, built on the first read and reused after that. Readers that resolve through the shared resolver all observe that one generation. They cannot disagree about a setting.
|
|
45
|
+
|
|
46
|
+
An edit to `config.toml` while the app runs has no effect on those readers until the generation advances. This happens in two places: an in-app write to the default config path, which refreshes the generation itself, and `/reload`. Each source keeps its last usable snapshot, so a file that fails to parse leaves that tier unchanged instead of erasing it.
|
|
47
|
+
|
|
48
|
+
The app does not watch files for edits. A partly applied configuration is a worse failure than a stale one.
|
|
49
|
+
|
|
50
|
+
Some readers sit outside the shared generation. Callers that take their own snapshot inspect one file generation instead of process state, and report it next to its health: `get_config_sources`, the `dcode config` command, and the `dcode doctor` command, which reads the managed file against an empty user tier. A few readers parse a file on each call, because the shared generation cannot serve them: `resolve_read_project_dotenv` runs before the project `.env` is layered into the environment, `resolve_startup_mode_with_source` needs the raw user table, and `update_check` reports the value next to the file health it just read. The reload preview also reads the user file fresh, because a dry run must show the edit under review.
|
|
51
|
+
|
|
52
|
+
The environment tier is always live. `EnvProvider` reads `os.environ` at resolution time, because the process changes it during dotenv bootstrap and on each cwd switch.
|
|
53
|
+
|
|
54
|
+
These exceptions are per caller, not per setting. A caller decides to snapshot a file itself. No option is intended to be live for one reader and cached for another, which would make the effective configuration unpredictable per option.
|
|
55
|
+
|
|
44
56
|
The main extension points are:
|
|
45
57
|
|
|
46
58
|
- **Skills and subagents** for reusable agent workflows
|
|
@@ -2,6 +2,27 @@
|
|
|
2
2
|
|
|
3
3
|
# Deep Agents Code Changelog
|
|
4
4
|
|
|
5
|
+
## [0.1.61](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.60...deepagents-code==0.1.61) (2026-08-24)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
- Added `google_anthropic_vertex` provider support for Claude on Vertex AI ([#5760](https://github.com/langchain-ai/deepagents/issues/5760)).
|
|
10
|
+
- Enforced configured model allowlists ([#5649](https://github.com/langchain-ai/deepagents/issues/5649)).
|
|
11
|
+
- Injected goal and rubric context directly, replacing `get_goal` and `get_rubric` ([#5041](https://github.com/langchain-ai/deepagents/issues/5041)).
|
|
12
|
+
- Made `/offload` server-owned ([#5261](https://github.com/langchain-ai/deepagents/issues/5261)).
|
|
13
|
+
- Added prompt clipboard support ([#5733](https://github.com/langchain-ai/deepagents/issues/5733)).
|
|
14
|
+
- Show Auto approval review progress ([#5729](https://github.com/langchain-ai/deepagents/issues/5729)).
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
- Kept long thread resumes responsive ([#5772](https://github.com/langchain-ai/deepagents/issues/5772)).
|
|
19
|
+
- Render first streamed text immediately ([#5761](https://github.com/langchain-ai/deepagents/issues/5761)).
|
|
20
|
+
- Show the incognito shell command widget ([#5768](https://github.com/langchain-ai/deepagents/issues/5768)).
|
|
21
|
+
- Only highlight actionable tool rows ([#5769](https://github.com/langchain-ai/deepagents/issues/5769)).
|
|
22
|
+
- Warn and ignore `--auto-approve` and `--yolo` in headless mode ([#5750](https://github.com/langchain-ai/deepagents/issues/5750)).
|
|
23
|
+
- Sweep expired history archives at startup ([#5751](https://github.com/langchain-ai/deepagents/issues/5751)).
|
|
24
|
+
- Clarified auth environment setup ([#5767](https://github.com/langchain-ai/deepagents/issues/5767)).
|
|
25
|
+
|
|
5
26
|
## [0.1.60](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.59...deepagents-code==0.1.60) (2026-08-23)
|
|
6
27
|
|
|
7
28
|
### Features
|
|
@@ -8,7 +8,7 @@ Regenerate this file with `make commands-catalog` after changing command names,
|
|
|
8
8
|
aliases, descriptions, visibility, or hidden-command metadata.
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
## Public (
|
|
11
|
+
## Public (41)
|
|
12
12
|
|
|
13
13
|
| Command | Aliases | Description |
|
|
14
14
|
| --- | --- | --- |
|
|
@@ -36,6 +36,7 @@ aliases, descriptions, visibility, or hidden-command metadata.
|
|
|
36
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
|
+
| `/prompts` | | Search and reuse a previous prompt |
|
|
39
40
|
| `/quit` | `/q` | Exit app |
|
|
40
41
|
| `/reload` | | Reload environment and config |
|
|
41
42
|
| `/remember` | | Save useful context to memory or skills |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: deepagents-code
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.61
|
|
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
|
|
@@ -35,14 +35,14 @@ Requires-Dist: filelock<3.30,>=3.29.7
|
|
|
35
35
|
Requires-Dist: genai-prices<0.2.0,>=0.1.4
|
|
36
36
|
Requires-Dist: httpx<1.0.0,>=0.28.1
|
|
37
37
|
Requires-Dist: langchain-anthropic<2.0.0,>=1.6.1
|
|
38
|
-
Requires-Dist: langchain-google-genai<5.0.0,>=4.3.
|
|
38
|
+
Requires-Dist: langchain-google-genai<5.0.0,>=4.3.5
|
|
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
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
|
-
Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.
|
|
45
|
+
Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.33.0
|
|
46
46
|
Requires-Dist: langgraph-sdk<1.0.0,>=0.4.3
|
|
47
47
|
Requires-Dist: langsmith[sandbox]>=0.11.1
|
|
48
48
|
Requires-Dist: markdownify<2.0.0,>=1.2.3
|
|
@@ -67,12 +67,12 @@ Requires-Dist: langchain-agentcore-codeinterpreter<1.0.0,>=0.0.5; extra == 'agen
|
|
|
67
67
|
Provides-Extra: all-providers
|
|
68
68
|
Requires-Dist: aiohttp<3.15.0,>=3.14.3; extra == 'all-providers'
|
|
69
69
|
Requires-Dist: langchain-anthropic<2.0.0,>=1.6.1; extra == 'all-providers'
|
|
70
|
-
Requires-Dist: langchain-aws<2.0.0,>=1.7.
|
|
70
|
+
Requires-Dist: langchain-aws<2.0.0,>=1.7.3; 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'
|
|
73
73
|
Requires-Dist: langchain-deepseek<2.0.0,>=1.1.0; extra == 'all-providers'
|
|
74
|
-
Requires-Dist: langchain-fireworks<2.0.0,>=1.
|
|
75
|
-
Requires-Dist: langchain-google-genai<5.0.0,>=4.3.
|
|
74
|
+
Requires-Dist: langchain-fireworks<2.0.0,>=1.6.0; extra == 'all-providers'
|
|
75
|
+
Requires-Dist: langchain-google-genai<5.0.0,>=4.3.5; extra == 'all-providers'
|
|
76
76
|
Requires-Dist: langchain-google-vertexai<4.0.0,>=3.2.4; extra == 'all-providers'
|
|
77
77
|
Requires-Dist: langchain-groq<2.0.0,>=1.1.3; extra == 'all-providers'
|
|
78
78
|
Requires-Dist: langchain-huggingface<2.0.0,>=1.2.2; extra == 'all-providers'
|
|
@@ -84,7 +84,7 @@ Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.4.3; extra == 'all-provid
|
|
|
84
84
|
Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'all-providers'
|
|
85
85
|
Requires-Dist: langchain-openai<2.0.0,>=1.6.0; extra == 'all-providers'
|
|
86
86
|
Requires-Dist: langchain-openrouter<2.0.0,>=0.2.8; extra == 'all-providers'
|
|
87
|
-
Requires-Dist: langchain-perplexity<2.0.0,>=1.4.
|
|
87
|
+
Requires-Dist: langchain-perplexity<2.0.0,>=1.4.1; extra == 'all-providers'
|
|
88
88
|
Requires-Dist: langchain-together<2.0.0,>=0.4.0; extra == 'all-providers'
|
|
89
89
|
Requires-Dist: langchain-xai<2.0.0,>=1.3.0; extra == 'all-providers'
|
|
90
90
|
Provides-Extra: all-sandboxes
|
|
@@ -98,7 +98,7 @@ 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
|
|
101
|
-
Requires-Dist: langchain-aws<2.0.0,>=1.7.
|
|
101
|
+
Requires-Dist: langchain-aws<2.0.0,>=1.7.3; extra == 'bedrock'
|
|
102
102
|
Provides-Extra: cohere
|
|
103
103
|
Requires-Dist: langchain-cohere<1.0.0,>=0.6.0; extra == 'cohere'
|
|
104
104
|
Provides-Extra: daytona
|
|
@@ -106,9 +106,9 @@ Requires-Dist: langchain-daytona>=0.0.7; extra == 'daytona'
|
|
|
106
106
|
Provides-Extra: deepseek
|
|
107
107
|
Requires-Dist: langchain-deepseek<2.0.0,>=1.1.0; extra == 'deepseek'
|
|
108
108
|
Provides-Extra: fireworks
|
|
109
|
-
Requires-Dist: langchain-fireworks<2.0.0,>=1.
|
|
109
|
+
Requires-Dist: langchain-fireworks<2.0.0,>=1.6.0; extra == 'fireworks'
|
|
110
110
|
Provides-Extra: google-genai
|
|
111
|
-
Requires-Dist: langchain-google-genai<5.0.0,>=4.3.
|
|
111
|
+
Requires-Dist: langchain-google-genai<5.0.0,>=4.3.5; extra == 'google-genai'
|
|
112
112
|
Provides-Extra: groq
|
|
113
113
|
Requires-Dist: langchain-groq<2.0.0,>=1.1.3; extra == 'groq'
|
|
114
114
|
Provides-Extra: huggingface
|
|
@@ -136,7 +136,7 @@ Requires-Dist: langchain-openai<2.0.0,>=1.6.0; extra == 'openai'
|
|
|
136
136
|
Provides-Extra: openrouter
|
|
137
137
|
Requires-Dist: langchain-openrouter<2.0.0,>=0.2.8; extra == 'openrouter'
|
|
138
138
|
Provides-Extra: perplexity
|
|
139
|
-
Requires-Dist: langchain-perplexity<2.0.0,>=1.4.
|
|
139
|
+
Requires-Dist: langchain-perplexity<2.0.0,>=1.4.1; extra == 'perplexity'
|
|
140
140
|
Provides-Extra: quickjs
|
|
141
141
|
Provides-Extra: runloop
|
|
142
142
|
Requires-Dist: langchain-runloop>=0.0.6; extra == 'runloop'
|
|
@@ -200,6 +200,128 @@ By default, `dcode` trusts the directory you run it in. Human-in-the-loop approv
|
|
|
200
200
|
|
|
201
201
|
Do not run `dcode` in a directory you do not trust without a sandbox backend. For untrusted repositories, use a [remote sandbox](https://docs.langchain.com/oss/python/deepagents/code/remote-sandboxes) so execution is isolated from your machine. Running `dcode` in a directory lets that directory's files shape execution. See [`THREAT_MODEL.md`](https://github.com/langchain-ai/deepagents/blob/main/libs/code/THREAT_MODEL.md) for details.
|
|
202
202
|
|
|
203
|
+
## Managed configuration
|
|
204
|
+
|
|
205
|
+
Administrators can enforce any supported `config.toml` setting with a read-only
|
|
206
|
+
`managed_config.toml` using the same TOML schema:
|
|
207
|
+
|
|
208
|
+
- macOS: `/Library/Application Support/dcode/managed_config.toml`
|
|
209
|
+
- Windows: the `ProgramData` directory reported by the registry, usually
|
|
210
|
+
`C:\ProgramData\dcode\managed_config.toml`. The `%ProgramData%` environment
|
|
211
|
+
variable is ignored, because any user can change it.
|
|
212
|
+
- Linux and other supported POSIX systems: `/etc/dcode/managed_config.toml`
|
|
213
|
+
|
|
214
|
+
Managed values override two lower layers: the `DEEPAGENTS_CODE_` and
|
|
215
|
+
compatibility environment variables, and `~/.deepagents/config.toml`.
|
|
216
|
+
|
|
217
|
+
For an agent launch, managed values also override these CLI flags: the model,
|
|
218
|
+
the auto-classifier model, the interpreter toggle, the programmatic tool-calling
|
|
219
|
+
list, the recursion limit, the shell allow list, and the startup mode. A managed
|
|
220
|
+
`[sandboxes].default` names the backend of a launch that is already sandboxed;
|
|
221
|
+
it does not sandbox a launch that asked for no sandbox. A managed startup mode
|
|
222
|
+
only revokes `--auto-approve` and `--yolo`; the mode itself reaches the runtime
|
|
223
|
+
through the merged configuration, so a headless launch still works. Subcommand
|
|
224
|
+
display flags such as `dcode threads --relative` are not overridden.
|
|
225
|
+
|
|
226
|
+
Tables merge recursively. Deny lists are unioned. An explicitly managed allow or
|
|
227
|
+
trust list replaces lower-precedence grants. An empty managed list removes every
|
|
228
|
+
lower-precedence grant.
|
|
229
|
+
|
|
230
|
+
A managed value whose type contradicts the manifest is ignored, and the
|
|
231
|
+
lower-precedence value stays in effect. Two exceptions:
|
|
232
|
+
|
|
233
|
+
- The enforced keys (`startup.mode`, `startup.yolo_switcher`,
|
|
234
|
+
`shell.allow_list`, `skills.extra_allowed_dirs`,
|
|
235
|
+
`interpreter.enable_interpreter`, `interpreter.ptc`,
|
|
236
|
+
`interpreter.ptc_acknowledge_unsafe`, `models.allowed`,
|
|
237
|
+
`models.auto_classifier`, `runtime.recursion_limit`, `sandboxes.default`,
|
|
238
|
+
`tracing.langsmith_redact`)
|
|
239
|
+
stop every command except `config`, `doctor`, `auth path`, and the help
|
|
240
|
+
screens. If one is ignored, the user's flag or environment variable stays in
|
|
241
|
+
force. This grants the escalation, or it removes the boundary that the policy
|
|
242
|
+
declared. Three
|
|
243
|
+
cases stop the launch and block `/reload`: a value the manifest rejects, a
|
|
244
|
+
`runtime.recursion_limit` outside its bounds, and a key shadowed by a scalar
|
|
245
|
+
ancestor (`startup = "manual"` in place of `[startup]` and `mode`). A managed
|
|
246
|
+
`[sandboxes].default` that names an unavailable backend stops a sandboxed
|
|
247
|
+
launch; a launch that asked for no sandbox is unaffected. A scalar at any
|
|
248
|
+
known configuration section (for example, `threads = "bad"` instead of
|
|
249
|
+
`[threads]`) also stops launch and reload rather than replacing the user's
|
|
250
|
+
whole section.
|
|
251
|
+
- Inside structured tables (`[models.providers]`, `[themes]`,
|
|
252
|
+
`[async_subagents]`, `[sandboxes.providers]`) the dedicated typed reader
|
|
253
|
+
validates instead, so a wrong-typed managed leaf can displace a valid user
|
|
254
|
+
leaf. The reader then falls back to the built-in default. A managed scalar
|
|
255
|
+
still replaces a colliding user table there, the same as on the top-level
|
|
256
|
+
merge.
|
|
257
|
+
|
|
258
|
+
`[shell].allow_list` is read from `~/.deepagents/config.toml` and from
|
|
259
|
+
`DEEPAGENTS_CODE_SHELL_ALLOW_LIST`, so a managed file can enforce it. A user can
|
|
260
|
+
also grant themselves shell auto-approval from their own config file. An empty
|
|
261
|
+
managed list removes every lower-precedence grant.
|
|
262
|
+
|
|
263
|
+
`[models].allowed` narrows dcode to exact `provider:model` specifications:
|
|
264
|
+
|
|
265
|
+
```toml
|
|
266
|
+
[models]
|
|
267
|
+
allowed = ["acme:production", "acme:production-fast"]
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
The rules:
|
|
271
|
+
|
|
272
|
+
- A missing key preserves unrestricted model selection.
|
|
273
|
+
- An empty list blocks all local model use.
|
|
274
|
+
- A list that dcode cannot parse also blocks all local model use. A typo must not
|
|
275
|
+
silently remove the restriction the user asked for. Fix or remove the key.
|
|
276
|
+
- Matching is exact and splits only the first colon, so model identifiers may
|
|
277
|
+
contain additional colons. Matching is also case-sensitive.
|
|
278
|
+
- Entries must be fully qualified. A bare model name that you type at a prompt
|
|
279
|
+
is first resolved to `provider:model`, the same as at construction, so
|
|
280
|
+
`gpt-5.6-terra` matches an `openai:gpt-5.6-terra` entry. A bare name whose
|
|
281
|
+
provider dcode cannot infer never matches.
|
|
282
|
+
- Write a Bedrock model as `bedrock:<id>`. A bare Bedrock ID is rejected,
|
|
283
|
+
because its version colon would make it a specification that nothing matches.
|
|
284
|
+
- The list filters model discovery and the selector. Construction-time checks
|
|
285
|
+
are authoritative for CLI flags, runtime switches, Auto classifiers, rubric
|
|
286
|
+
graders, and explicit local subagent models.
|
|
287
|
+
- A managed list replaces a user list. Managed default, recent, and
|
|
288
|
+
Auto-classifier models must also appear in it.
|
|
289
|
+
- `[models.providers.<name>].models` registers models additively. It does not
|
|
290
|
+
grant permission, so a custom model may need both registration and an
|
|
291
|
+
allowlist entry.
|
|
292
|
+
|
|
293
|
+
`dcode` never writes the managed file. Users can still save a preference. The
|
|
294
|
+
theme, terminal-mapping, UI-toggle, and MCP-server screens, and the
|
|
295
|
+
`--auto-update` flag, report when a managed value keeps a saved preference from
|
|
296
|
+
taking effect. The model-default, recent-model, and Auto-classifier writers
|
|
297
|
+
refuse a value outside the effective allowlist, and report the policy as the
|
|
298
|
+
reason. Other save paths do not check the allowlist.
|
|
299
|
+
|
|
300
|
+
A missing managed file applies no policy. If one exists but is unreadable, not
|
|
301
|
+
UTF-8, or invalid TOML, every command fails closed except the ones needed to
|
|
302
|
+
diagnose it: `--help`, `--version`, `help`, `config`, `doctor`, and
|
|
303
|
+
`auth path`. A managed file that becomes unusable later also blocks `/reload`:
|
|
304
|
+
the session keeps the policy that was in force, and the reload reports that it
|
|
305
|
+
kept it. Use `dcode config path` and `dcode doctor` to inspect its
|
|
306
|
+
fixed path and parse health; `dcode config` also warns when the file exists but
|
|
307
|
+
could not be parsed, or parses and declares a value that cannot be enforced.
|
|
308
|
+
|
|
309
|
+
A deny list that cannot be read denies everything rather than nothing. This
|
|
310
|
+
covers a managed `[mcp].disabled_servers` that is neither an array of names nor
|
|
311
|
+
a comma-separated string, and a `[mcp]` section that is not a table. A managed
|
|
312
|
+
`[mcp].enabled_project_server_approvals` that is not an array is treated the
|
|
313
|
+
same way: the key is present, so policy means to narrow access, and reading its
|
|
314
|
+
presence as absence would leave both the user's approvals and the
|
|
315
|
+
`DEEPAGENTS_CODE_DANGEROUSLY_ENABLE_PROJECT_MCP_SERVERS` bypass in force.
|
|
316
|
+
|
|
317
|
+
A corrupt `~/.deepagents/config.toml` does not disable managed policy: the user
|
|
318
|
+
file is ignored and managed values still apply.
|
|
319
|
+
|
|
320
|
+
Deployment tooling must create and protect this file with administrator or root
|
|
321
|
+
permissions. `dcode` does not validate the file owner or mode. `dcode` provides
|
|
322
|
+
no privileged writer. Deployment and `sudo` policy are the administrator's
|
|
323
|
+
responsibility.
|
|
324
|
+
|
|
203
325
|
## 📖 Resources
|
|
204
326
|
|
|
205
327
|
- **[Documentation](https://docs.langchain.com/deepagents-code)**
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
# 🧠🤖 Deep Agents Code
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/deepagents-code/#history)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
[](https://pypistats.org/packages/deepagents-code)
|
|
6
|
+
[](https://x.com/langchain_oss)
|
|
7
|
+
|
|
8
|
+
<p align="center">
|
|
9
|
+
<img src="https://raw.githubusercontent.com/langchain-ai/deepagents/main/libs/code/images/tui.png" alt="Deep Agents Code" width="600"/>
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
## Quick Install
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
curl -LsSf https://langch.in/dcode | bash
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# With model provider extras
|
|
20
|
+
# OpenAI, Anthropic, and Gemini are included by default
|
|
21
|
+
DEEPAGENTS_CODE_EXTRAS="nvidia,ollama" curl -LsSf https://langch.in/dcode | bash
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Run:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
dcode
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## 🤔 What is this?
|
|
31
|
+
|
|
32
|
+
The fastest way to start using Deep Agents. `deepagents-code` is a pre-built coding agent in your terminal — similar to Claude Code or Cursor — powered by any LLM that supports tool calling. One install command and you're up and running, no code required.
|
|
33
|
+
|
|
34
|
+
**What `deepagents-code` adds on top of the SDK:**
|
|
35
|
+
|
|
36
|
+
- **Interactive TUI** — rich terminal interface with streaming responses
|
|
37
|
+
- **Conversation resume** — pick up where you left off across sessions
|
|
38
|
+
- **Web search** — ground responses in live information
|
|
39
|
+
- **Remote sandboxes** — run code in isolated environments (LangSmith, AgentCore, Daytona, Modal, Runloop, & more)
|
|
40
|
+
- **Persistent memory** — agent remembers context across conversations
|
|
41
|
+
- **Custom skills** — extend the agent with your own slash commands
|
|
42
|
+
- **Headless mode** — run non-interactively for scripting and CI
|
|
43
|
+
- **Human-in-the-loop** — approve or reject tool calls before execution
|
|
44
|
+
|
|
45
|
+
## 🔒 Security model
|
|
46
|
+
|
|
47
|
+
By default, `dcode` trusts the directory you run it in. Human-in-the-loop approval gates model-requested tool calls, but project artifacts are read before any approval prompt.
|
|
48
|
+
|
|
49
|
+
Do not run `dcode` in a directory you do not trust without a sandbox backend. For untrusted repositories, use a [remote sandbox](https://docs.langchain.com/oss/python/deepagents/code/remote-sandboxes) so execution is isolated from your machine. Running `dcode` in a directory lets that directory's files shape execution. See [`THREAT_MODEL.md`](https://github.com/langchain-ai/deepagents/blob/main/libs/code/THREAT_MODEL.md) for details.
|
|
50
|
+
|
|
51
|
+
## Managed configuration
|
|
52
|
+
|
|
53
|
+
Administrators can enforce any supported `config.toml` setting with a read-only
|
|
54
|
+
`managed_config.toml` using the same TOML schema:
|
|
55
|
+
|
|
56
|
+
- macOS: `/Library/Application Support/dcode/managed_config.toml`
|
|
57
|
+
- Windows: the `ProgramData` directory reported by the registry, usually
|
|
58
|
+
`C:\ProgramData\dcode\managed_config.toml`. The `%ProgramData%` environment
|
|
59
|
+
variable is ignored, because any user can change it.
|
|
60
|
+
- Linux and other supported POSIX systems: `/etc/dcode/managed_config.toml`
|
|
61
|
+
|
|
62
|
+
Managed values override two lower layers: the `DEEPAGENTS_CODE_` and
|
|
63
|
+
compatibility environment variables, and `~/.deepagents/config.toml`.
|
|
64
|
+
|
|
65
|
+
For an agent launch, managed values also override these CLI flags: the model,
|
|
66
|
+
the auto-classifier model, the interpreter toggle, the programmatic tool-calling
|
|
67
|
+
list, the recursion limit, the shell allow list, and the startup mode. A managed
|
|
68
|
+
`[sandboxes].default` names the backend of a launch that is already sandboxed;
|
|
69
|
+
it does not sandbox a launch that asked for no sandbox. A managed startup mode
|
|
70
|
+
only revokes `--auto-approve` and `--yolo`; the mode itself reaches the runtime
|
|
71
|
+
through the merged configuration, so a headless launch still works. Subcommand
|
|
72
|
+
display flags such as `dcode threads --relative` are not overridden.
|
|
73
|
+
|
|
74
|
+
Tables merge recursively. Deny lists are unioned. An explicitly managed allow or
|
|
75
|
+
trust list replaces lower-precedence grants. An empty managed list removes every
|
|
76
|
+
lower-precedence grant.
|
|
77
|
+
|
|
78
|
+
A managed value whose type contradicts the manifest is ignored, and the
|
|
79
|
+
lower-precedence value stays in effect. Two exceptions:
|
|
80
|
+
|
|
81
|
+
- The enforced keys (`startup.mode`, `startup.yolo_switcher`,
|
|
82
|
+
`shell.allow_list`, `skills.extra_allowed_dirs`,
|
|
83
|
+
`interpreter.enable_interpreter`, `interpreter.ptc`,
|
|
84
|
+
`interpreter.ptc_acknowledge_unsafe`, `models.allowed`,
|
|
85
|
+
`models.auto_classifier`, `runtime.recursion_limit`, `sandboxes.default`,
|
|
86
|
+
`tracing.langsmith_redact`)
|
|
87
|
+
stop every command except `config`, `doctor`, `auth path`, and the help
|
|
88
|
+
screens. If one is ignored, the user's flag or environment variable stays in
|
|
89
|
+
force. This grants the escalation, or it removes the boundary that the policy
|
|
90
|
+
declared. Three
|
|
91
|
+
cases stop the launch and block `/reload`: a value the manifest rejects, a
|
|
92
|
+
`runtime.recursion_limit` outside its bounds, and a key shadowed by a scalar
|
|
93
|
+
ancestor (`startup = "manual"` in place of `[startup]` and `mode`). A managed
|
|
94
|
+
`[sandboxes].default` that names an unavailable backend stops a sandboxed
|
|
95
|
+
launch; a launch that asked for no sandbox is unaffected. A scalar at any
|
|
96
|
+
known configuration section (for example, `threads = "bad"` instead of
|
|
97
|
+
`[threads]`) also stops launch and reload rather than replacing the user's
|
|
98
|
+
whole section.
|
|
99
|
+
- Inside structured tables (`[models.providers]`, `[themes]`,
|
|
100
|
+
`[async_subagents]`, `[sandboxes.providers]`) the dedicated typed reader
|
|
101
|
+
validates instead, so a wrong-typed managed leaf can displace a valid user
|
|
102
|
+
leaf. The reader then falls back to the built-in default. A managed scalar
|
|
103
|
+
still replaces a colliding user table there, the same as on the top-level
|
|
104
|
+
merge.
|
|
105
|
+
|
|
106
|
+
`[shell].allow_list` is read from `~/.deepagents/config.toml` and from
|
|
107
|
+
`DEEPAGENTS_CODE_SHELL_ALLOW_LIST`, so a managed file can enforce it. A user can
|
|
108
|
+
also grant themselves shell auto-approval from their own config file. An empty
|
|
109
|
+
managed list removes every lower-precedence grant.
|
|
110
|
+
|
|
111
|
+
`[models].allowed` narrows dcode to exact `provider:model` specifications:
|
|
112
|
+
|
|
113
|
+
```toml
|
|
114
|
+
[models]
|
|
115
|
+
allowed = ["acme:production", "acme:production-fast"]
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
The rules:
|
|
119
|
+
|
|
120
|
+
- A missing key preserves unrestricted model selection.
|
|
121
|
+
- An empty list blocks all local model use.
|
|
122
|
+
- A list that dcode cannot parse also blocks all local model use. A typo must not
|
|
123
|
+
silently remove the restriction the user asked for. Fix or remove the key.
|
|
124
|
+
- Matching is exact and splits only the first colon, so model identifiers may
|
|
125
|
+
contain additional colons. Matching is also case-sensitive.
|
|
126
|
+
- Entries must be fully qualified. A bare model name that you type at a prompt
|
|
127
|
+
is first resolved to `provider:model`, the same as at construction, so
|
|
128
|
+
`gpt-5.6-terra` matches an `openai:gpt-5.6-terra` entry. A bare name whose
|
|
129
|
+
provider dcode cannot infer never matches.
|
|
130
|
+
- Write a Bedrock model as `bedrock:<id>`. A bare Bedrock ID is rejected,
|
|
131
|
+
because its version colon would make it a specification that nothing matches.
|
|
132
|
+
- The list filters model discovery and the selector. Construction-time checks
|
|
133
|
+
are authoritative for CLI flags, runtime switches, Auto classifiers, rubric
|
|
134
|
+
graders, and explicit local subagent models.
|
|
135
|
+
- A managed list replaces a user list. Managed default, recent, and
|
|
136
|
+
Auto-classifier models must also appear in it.
|
|
137
|
+
- `[models.providers.<name>].models` registers models additively. It does not
|
|
138
|
+
grant permission, so a custom model may need both registration and an
|
|
139
|
+
allowlist entry.
|
|
140
|
+
|
|
141
|
+
`dcode` never writes the managed file. Users can still save a preference. The
|
|
142
|
+
theme, terminal-mapping, UI-toggle, and MCP-server screens, and the
|
|
143
|
+
`--auto-update` flag, report when a managed value keeps a saved preference from
|
|
144
|
+
taking effect. The model-default, recent-model, and Auto-classifier writers
|
|
145
|
+
refuse a value outside the effective allowlist, and report the policy as the
|
|
146
|
+
reason. Other save paths do not check the allowlist.
|
|
147
|
+
|
|
148
|
+
A missing managed file applies no policy. If one exists but is unreadable, not
|
|
149
|
+
UTF-8, or invalid TOML, every command fails closed except the ones needed to
|
|
150
|
+
diagnose it: `--help`, `--version`, `help`, `config`, `doctor`, and
|
|
151
|
+
`auth path`. A managed file that becomes unusable later also blocks `/reload`:
|
|
152
|
+
the session keeps the policy that was in force, and the reload reports that it
|
|
153
|
+
kept it. Use `dcode config path` and `dcode doctor` to inspect its
|
|
154
|
+
fixed path and parse health; `dcode config` also warns when the file exists but
|
|
155
|
+
could not be parsed, or parses and declares a value that cannot be enforced.
|
|
156
|
+
|
|
157
|
+
A deny list that cannot be read denies everything rather than nothing. This
|
|
158
|
+
covers a managed `[mcp].disabled_servers` that is neither an array of names nor
|
|
159
|
+
a comma-separated string, and a `[mcp]` section that is not a table. A managed
|
|
160
|
+
`[mcp].enabled_project_server_approvals` that is not an array is treated the
|
|
161
|
+
same way: the key is present, so policy means to narrow access, and reading its
|
|
162
|
+
presence as absence would leave both the user's approvals and the
|
|
163
|
+
`DEEPAGENTS_CODE_DANGEROUSLY_ENABLE_PROJECT_MCP_SERVERS` bypass in force.
|
|
164
|
+
|
|
165
|
+
A corrupt `~/.deepagents/config.toml` does not disable managed policy: the user
|
|
166
|
+
file is ignored and managed values still apply.
|
|
167
|
+
|
|
168
|
+
Deployment tooling must create and protect this file with administrator or root
|
|
169
|
+
permissions. `dcode` does not validate the file owner or mode. `dcode` provides
|
|
170
|
+
no privileged writer. Deployment and `sudo` policy are the administrator's
|
|
171
|
+
responsibility.
|
|
172
|
+
|
|
173
|
+
## 📖 Resources
|
|
174
|
+
|
|
175
|
+
- **[Documentation](https://docs.langchain.com/deepagents-code)**
|
|
176
|
+
- **[Changelog](https://github.com/langchain-ai/deepagents/blob/main/libs/code/CHANGELOG.md)**
|
|
177
|
+
- **[Source code](https://github.com/langchain-ai/deepagents/tree/main/libs/code)**
|
|
178
|
+
- **[Deep Agents SDK](https://github.com/langchain-ai/deepagents)** — underlying agent harness
|
|
179
|
+
- [LangChain Academy](https://academy.langchain.com/) — Comprehensive, free courses on LangChain libraries and products, made by the LangChain team.
|
|
180
|
+
- [Code of Conduct](https://github.com/langchain-ai/langchain/?tab=coc-ov-file) — community guidelines and standards
|
|
181
|
+
|
|
182
|
+
## 📕 Releases & Versioning
|
|
183
|
+
|
|
184
|
+
See our [Releases](https://docs.langchain.com/oss/python/release-policy) and [Versioning](https://docs.langchain.com/oss/python/versioning) policies.
|
|
185
|
+
|
|
186
|
+
## 💁 Contributing
|
|
187
|
+
|
|
188
|
+
As an open-source project in a rapidly developing field, we are extremely open to contributions, whether it be in the form of a new feature, improved infrastructure, or better documentation.
|
|
189
|
+
|
|
190
|
+
For detailed information on how to contribute, see the [Contributing Guide](https://docs.langchain.com/oss/python/contributing/overview).
|
|
191
|
+
|
|
192
|
+
## 🤝 Acknowledgements
|
|
193
|
+
|
|
194
|
+
This project was primarily inspired by Claude Code, and initially was largely an attempt to see what made Claude Code general purpose, and make it even more so.
|