deepagents-cli 0.0.45__tar.gz → 0.0.47__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_cli-0.0.45 → deepagents_cli-0.0.47}/CHANGELOG.md +17 -0
- deepagents_cli-0.0.47/DEV.md +92 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/PKG-INFO +4 -4
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/README.md +2 -2
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/_debug.py +3 -3
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/_env_vars.py +38 -1
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/_version.py +1 -1
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/app.py +324 -23
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/config.py +10 -6
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/main.py +45 -15
- deepagents_cli-0.0.47/deepagents_cli/mcp_auth.py +704 -0
- deepagents_cli-0.0.47/deepagents_cli/mcp_commands.py +202 -0
- deepagents_cli-0.0.47/deepagents_cli/mcp_providers/__init__.py +23 -0
- deepagents_cli-0.0.47/deepagents_cli/mcp_providers/_registry.py +39 -0
- deepagents_cli-0.0.47/deepagents_cli/mcp_providers/base.py +99 -0
- deepagents_cli-0.0.47/deepagents_cli/mcp_providers/github.py +91 -0
- deepagents_cli-0.0.47/deepagents_cli/mcp_providers/slack.py +130 -0
- deepagents_cli-0.0.47/deepagents_cli/mcp_tools.py +1521 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/model_config.py +28 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/server.py +20 -3
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/server_graph.py +25 -2
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/server_manager.py +64 -1
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/theme.py +69 -58
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/ui.py +35 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/mcp_viewer.py +159 -89
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/theme_selector.py +3 -3
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/welcome.py +59 -33
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/pyproject.toml +8 -2
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/scripts/install.sh +1 -1
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_agent_friendly.py +8 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_app.py +66 -12
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_args.py +74 -1
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_chat_input.py +13 -2
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_env_vars.py +45 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_local_context.py +3 -1
- deepagents_cli-0.0.47/tests/unit_tests/test_mcp_auth.py +957 -0
- deepagents_cli-0.0.47/tests/unit_tests/test_mcp_commands.py +332 -0
- deepagents_cli-0.0.47/tests/unit_tests/test_mcp_tools.py +2264 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_mcp_viewer.py +14 -6
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_model_switch.py +137 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_server_graph.py +13 -6
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_server_manager.py +60 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_theme.py +22 -20
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_welcome.py +0 -15
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/uv.lock +5 -5
- deepagents_cli-0.0.45/DEV.md +0 -52
- deepagents_cli-0.0.45/deepagents_cli/mcp_tools.py +0 -712
- deepagents_cli-0.0.45/tests/unit_tests/test_mcp_tools.py +0 -1804
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/.gitignore +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/Makefile +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/THREAT_MODEL.md +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/__init__.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/__main__.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/_ask_user_types.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/_cli_context.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/_git.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/_server_config.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/_session_stats.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/_testing_models.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/_textual_patches.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/agent.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/app.tcss +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/ask_user.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/built_in_skills/__init__.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/built_in_skills/remember/SKILL.md +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/built_in_skills/skill-creator/SKILL.md +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/clipboard.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/command_registry.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/configurable_model.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/default_agent_prompt.md +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/__init__.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/bundler.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/commands.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/config.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/frontend_dist/assets/anonymous-B9UzAXQd.js +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/frontend_dist/assets/clerk-5xHgyQyG.js +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/frontend_dist/assets/highlighted-body-OFNGDK62-rX-7qT8o.js +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/frontend_dist/assets/index-DM3gptpu.js +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/frontend_dist/assets/index-Ddy7F6KI.css +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/frontend_dist/assets/supabase-S6NACDgm.js +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/frontend_dist/index.html +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/frontend_dist/logo-dark.svg +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/frontend_dist/logo-light.svg +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/deploy/templates.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/editor.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/extras_info.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/file_ops.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/formatting.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/hooks.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/input.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/integrations/__init__.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/integrations/sandbox_factory.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/integrations/sandbox_provider.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/local_context.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/mcp_trust.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/media_utils.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/non_interactive.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/notifications.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/offload.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/output.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/project_utils.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/py.typed +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/remote_client.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/sessions.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/skills/__init__.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/skills/commands.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/skills/invocation.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/skills/load.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/subagents.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/system_prompt.md +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/terminal_capabilities.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/textual_adapter.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/token_state.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/tool_display.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/tools.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/unicode_security.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/update_check.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/__init__.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/_links.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/agent_selector.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/approval.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/ask_user.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/autocomplete.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/chat_input.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/diff.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/history.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/loading.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/message_store.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/messages.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/model_selector.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/notification_center.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/notification_detail.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/notification_settings.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/status.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/thread_selector.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/tool_renderers.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/tool_widgets.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/deepagents_cli/widgets/update_available.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/deploy-content-writer/.env.example +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/deploy-content-writer/skills/blog-post/SKILL.md +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/deploy-content-writer/skills/social-media/SKILL.md +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/deploy-content-writer/user/context.md +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/deploy-content-writer/user/preferences.md +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/skills/arxiv-search/SKILL.md +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/skills/arxiv-search/arxiv_search.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/skills/langgraph-docs/SKILL.md +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/skills/skill-creator/SKILL.md +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/examples/skills/web-research/SKILL.md +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/.nvmrc +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/index.html +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/package-lock.json +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/package.json +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/postcss.config.js +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/public/logo-dark.svg +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/public/logo-light.svg +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/App.tsx +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/ThemeProvider.tsx +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/auth/anonymous.tsx +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/auth/clerk.tsx +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/auth/loader.tsx +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/auth/supabase.tsx +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/auth/types.ts +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/AppHeader.tsx +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/FilePanels.tsx +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/MessageList.tsx +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/SubagentActivity.tsx +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/ThreadPicker.tsx +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/TodosPanel.tsx +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/ToolCallCard.tsx +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/toolcalls/FileToolCard.tsx +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/toolcalls/SearchCard.tsx +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/toolcalls/ThinkCard.tsx +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/toolcalls/TodosCard.tsx +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/components/toolcalls/index.ts +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/constants.ts +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/index.css +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/main.tsx +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/runtimeConfig.ts +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/types.ts +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/src/vite-env.d.ts +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/tsconfig.json +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/frontend/vite.config.ts +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/images/cli.png +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/scripts/check_imports.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/scripts/debug_server.sh +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/README.md +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/integration_tests/__init__.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/integration_tests/benchmarks/__init__.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/integration_tests/conftest.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/integration_tests/test_acp_mode.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/integration_tests/test_compact_resume.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/integration_tests/test_sandbox_factory.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/integration_tests/test_sandbox_operations.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/__init__.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/conftest.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/deploy/__init__.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/deploy/test_bundler.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/deploy/test_commands.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/deploy/test_config.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/deploy/test_frontend_bundle.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/deploy/test_frontend_config.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/skills/__init__.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/skills/test_commands.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/skills/test_load.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/skills/test_skills_json.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_agent.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_agent_selector.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_approval.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_ask_user.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_ask_user_middleware.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_autocomplete.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_charset.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_command_registry.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_compact_tool.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_config.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_configurable_model.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_debug.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_editor.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_end_to_end.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_exception_handling.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_extras_info.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_file_ops.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_formatting.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_git.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_history.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_hooks.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_imports.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_input_parsing.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_links.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_loading.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_main.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_main_acp_mode.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_main_args.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_mcp_trust.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_media_utils.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_message_store.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_messages.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_model_config.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_model_selector.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_non_interactive.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_notification_center.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_notification_detail.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_notifications.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_offload.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_offload_dict_messages.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_output.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_reload.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_remote_client.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_sandbox_factory.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_server.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_server_config.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_server_helpers.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_session_stats.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_sessions.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_shell_allow_list.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_skill_invocation.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_status.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_subagents.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_terminal_capabilities.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_textual_adapter.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_textual_patches.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_thread_selector.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_token_tracker.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_tool_display.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_ui.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_unicode_security.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_update_available.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_update_check.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/test_version.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/tools/__init__.py +0 -0
- {deepagents_cli-0.0.45 → deepagents_cli-0.0.47}/tests/unit_tests/tools/test_fetch_url.py +0 -0
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.0.47](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.46...deepagents-cli==0.0.47) (2026-05-01)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* Auto-discover Textual built-in themes ([#3068](https://github.com/langchain-ai/deepagents/issues/3068)) ([27894e3](https://github.com/langchain-ai/deepagents/commit/27894e336f20f270fb4bb685bf979f24b9bea0bc))
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* Recover from failed server startup via `/model` ([#3056](https://github.com/langchain-ai/deepagents/issues/3056)) ([6ee375e](https://github.com/langchain-ai/deepagents/commit/6ee375e979b672cd1d172669f0e5a7a665431d7c))
|
|
12
|
+
|
|
13
|
+
## [0.0.46](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.45...deepagents-cli==0.0.46) (2026-04-30)
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* Rework MCP integration and add OAuth login ([#2906](https://github.com/langchain-ai/deepagents/issues/2906)) ([6b7b0be](https://github.com/langchain-ai/deepagents/commit/6b7b0bef95db673fed23fc92803abaaa398b0a6d))
|
|
18
|
+
* `allowedTools` and `disabledTools` filters in MCP config ([#2835](https://github.com/langchain-ai/deepagents/issues/2835)) ([eafd691](https://github.com/langchain-ai/deepagents/commit/eafd6912db637ab59085a0b05d6e36d6cdd10e1a))
|
|
19
|
+
|
|
3
20
|
## [0.0.45](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.0.44...deepagents-cli==0.0.45) (2026-04-30)
|
|
4
21
|
|
|
5
22
|
### Bug Fixes
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# CLI Development Guide
|
|
2
|
+
|
|
3
|
+
## Live CSS development with Textual devtools
|
|
4
|
+
|
|
5
|
+
Textual's devtools console enables CSS hot-reload and live `self.log()` output during development.
|
|
6
|
+
|
|
7
|
+
### Prerequisites
|
|
8
|
+
|
|
9
|
+
Sync the `test` dependency group (includes `textual-dev`):
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
cd libs/cli && uv sync --group test
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Create the dev wrapper script (one-time):
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
cat > /tmp/dev_deepagents.py << 'PYEOF'
|
|
19
|
+
"""Dev wrapper to run Deep Agents CLI with textual devtools."""
|
|
20
|
+
import sys
|
|
21
|
+
sys.argv = ["deepagents"] + sys.argv[1:]
|
|
22
|
+
|
|
23
|
+
from deepagents_cli.main import cli_main
|
|
24
|
+
cli_main()
|
|
25
|
+
PYEOF
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Running
|
|
29
|
+
|
|
30
|
+
**Terminal 1** — devtools console:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
cd libs/cli && uv run --group test textual console
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**Terminal 2** — CLI with live reload:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
cd libs/cli && uv run --group test textual run --dev /tmp/dev_deepagents.py
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Edit any `.tcss` file and save — changes appear immediately. Any `self.log()` calls in widget code show in the console.
|
|
43
|
+
|
|
44
|
+
### Console options
|
|
45
|
+
|
|
46
|
+
- `textual console -v` — verbose mode, shows all events (key presses, mouse, etc.)
|
|
47
|
+
- `textual console -x EVENT` — exclude noisy event groups
|
|
48
|
+
- `textual console --port 7342` — custom port (pass matching `--port` to `textual run`)
|
|
49
|
+
|
|
50
|
+
### Why the wrapper script?
|
|
51
|
+
|
|
52
|
+
`textual run --dev` handles the devtools connection, but it needs to run inside the project's virtualenv to import `deepagents_cli`. The wrapper script bridges the gap — `uv run --group test textual run --dev` ensures both `textual-dev` (from the `test` group) and `deepagents_cli` are available in the same environment.
|
|
53
|
+
|
|
54
|
+
## Debugging
|
|
55
|
+
|
|
56
|
+
The CLI runs a `langgraph dev` subprocess for every interactive session. When the subprocess crashes during startup, the TUI shows a one-line failure banner; the actual exception lives in the subprocess's stdout/stderr, which is captured to a temp file.
|
|
57
|
+
|
|
58
|
+
### Environment variables
|
|
59
|
+
|
|
60
|
+
| Variable | Effect |
|
|
61
|
+
| --- | --- |
|
|
62
|
+
| `DEEPAGENTS_CLI_DEBUG=1` | Preserves the server subprocess log on shutdown and prints its path to stderr. Without this, the log is deleted when the process stops. Also enables the CLI-process file handler below. Accepts `1`/`true`/`yes`/`on` (case-insensitive) as enabled; `0`/`false`/`no`/`off`/empty/unset as disabled. |
|
|
63
|
+
| `DEEPAGENTS_CLI_DEBUG_FILE=<path>` | Overrides the default path (`/tmp/deepagents_debug.log`) for the CLI-process file handler, which attaches at `DEBUG` level to `textual_adapter` and `remote_client`. **Only takes effect when `DEEPAGENTS_CLI_DEBUG` is truthy.** Useful for diagnosing streaming/client-side issues; does **not** capture the server subprocess. |
|
|
64
|
+
|
|
65
|
+
`DEEPAGENTS_CLI_DEBUG` is what you want for startup crashes (graph init, MCP config, sandbox): the preserved subprocess log contains the real traceback. The optional `DEEPAGENTS_CLI_DEBUG_FILE` override is for post-startup client-side debugging.
|
|
66
|
+
|
|
67
|
+
### Finding the server subprocess log
|
|
68
|
+
|
|
69
|
+
On macOS, `tempfile` resolves to `$TMPDIR` (a path under `/var/folders/.../T/`). Each `ServerProcess` writes its combined stdout+stderr to a file matching `deepagents_server_log_*.txt`:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# Newest first
|
|
73
|
+
ls -lt ${TMPDIR:-/tmp}/deepagents_server_log_*.txt | head -5
|
|
74
|
+
|
|
75
|
+
# Tail the latest while reproducing the crash
|
|
76
|
+
tail -F "$(ls -t ${TMPDIR:-/tmp}/deepagents_server_log_*.txt | head -1)"
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
The interesting line is `Failed to initialize server graph: <exc>` followed by a traceback — everything above that is uvicorn/lifespan unwinding.
|
|
80
|
+
|
|
81
|
+
### Triage flow for a startup crash
|
|
82
|
+
|
|
83
|
+
1. **Rerun with `DEEPAGENTS_CLI_DEBUG=1`.** The log is preserved and a "Server log preserved at: ..." line is printed to stderr. Textual's fullscreen mode can hide that line, but the file itself is still on disk.
|
|
84
|
+
2. **Locate the log** via the `ls` command above. Open it in your editor.
|
|
85
|
+
3. **Search for `Failed to initialize server graph`.** The stack trace beneath names the concrete failure point (MCP config validation, sandbox init, model resolution, subagent load, etc.).
|
|
86
|
+
4. **Pre-flight validators run in the CLI process** for the common failure modes (e.g., `--mcp-config` is validated in `start_server_and_get_agent` before the subprocess spawns). When the banner shows `MCPConfigError: <path>: <reason>`, the subprocess never started — fix the file and retry.
|
|
87
|
+
|
|
88
|
+
### Common startup failure patterns
|
|
89
|
+
|
|
90
|
+
- **`MCPConfigError: Invalid MCP config at <path>: ...`** — malformed `--mcp-config`. The pre-flight wraps the underlying `ValueError`/`TypeError` with the offending path. See `_preflight_validate_mcp_config` in `server_manager.py`.
|
|
91
|
+
- **`Server 'X' missing required 'command' field`** (from a discovered project `.mcp.json`, not `--mcp-config`) — an stdio server config without `command`. For remote servers, just use `{"url": "..."}`; transport is inferred as `http` when no `type`/`transport` is present.
|
|
92
|
+
- **Uncaught exception inside a bare `sys.exit(1)`** — usually means the surrounding `make_graph()` raised. Look one traceback up in the subprocess log for the real cause.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deepagents-cli
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.47
|
|
4
4
|
Summary: Terminal interface for Deep Agents - interactive AI agent with file operations, shell access, and sub-agent capabilities.
|
|
5
5
|
Project-URL: Homepage, https://docs.langchain.com/oss/python/deepagents/overview
|
|
6
6
|
Project-URL: Documentation, https://reference.langchain.com/python/deepagents/
|
|
@@ -51,7 +51,7 @@ Requires-Dist: rich<15.0.0,>=14.0.0
|
|
|
51
51
|
Requires-Dist: tavily-python<1.0.0,>=0.7.21
|
|
52
52
|
Requires-Dist: textual-autocomplete<5.0.0,>=3.0.0
|
|
53
53
|
Requires-Dist: textual-speedups<1.0.0,>=0.2.1
|
|
54
|
-
Requires-Dist: textual<9.0.0,>=8.
|
|
54
|
+
Requires-Dist: textual<9.0.0,>=8.2.5
|
|
55
55
|
Requires-Dist: tomli-w<2.0.0,>=1.0.0
|
|
56
56
|
Requires-Dist: uuid-utils<1.0.0,>=0.10.0
|
|
57
57
|
Provides-Extra: agentcore
|
|
@@ -141,13 +141,13 @@ Description-Content-Type: text/markdown
|
|
|
141
141
|
## Quick Install
|
|
142
142
|
|
|
143
143
|
```bash
|
|
144
|
-
curl -LsSf https://
|
|
144
|
+
curl -LsSf https://langch.in/gh-da-cli | bash
|
|
145
145
|
```
|
|
146
146
|
|
|
147
147
|
```bash
|
|
148
148
|
# With model provider extras
|
|
149
149
|
# OpenAI, Anthropic, and Gemini are included by default
|
|
150
|
-
DEEPAGENTS_EXTRAS="nvidia,ollama" curl -LsSf https://
|
|
150
|
+
DEEPAGENTS_EXTRAS="nvidia,ollama" curl -LsSf https://langch.in/gh-da-cli | bash
|
|
151
151
|
```
|
|
152
152
|
|
|
153
153
|
Or install directly with `uv`:
|
|
@@ -12,13 +12,13 @@
|
|
|
12
12
|
## Quick Install
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
curl -LsSf https://
|
|
15
|
+
curl -LsSf https://langch.in/gh-da-cli | bash
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
19
|
# With model provider extras
|
|
20
20
|
# OpenAI, Anthropic, and Gemini are included by default
|
|
21
|
-
DEEPAGENTS_EXTRAS="nvidia,ollama" curl -LsSf https://
|
|
21
|
+
DEEPAGENTS_EXTRAS="nvidia,ollama" curl -LsSf https://langch.in/gh-da-cli | bash
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
Or install directly with `uv`:
|
|
@@ -12,7 +12,7 @@ import logging
|
|
|
12
12
|
import os
|
|
13
13
|
from pathlib import Path
|
|
14
14
|
|
|
15
|
-
from deepagents_cli._env_vars import DEBUG, DEBUG_FILE
|
|
15
|
+
from deepagents_cli._env_vars import DEBUG, DEBUG_FILE, is_env_truthy
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
def configure_debug_logging(target: logging.Logger) -> None:
|
|
@@ -22,12 +22,12 @@ def configure_debug_logging(target: logging.Logger) -> None:
|
|
|
22
22
|
with `DEEPAGENTS_CLI_DEBUG_FILE`. The handler appends so that multiple
|
|
23
23
|
modules share the same log file across a session.
|
|
24
24
|
|
|
25
|
-
Does nothing when `DEEPAGENTS_CLI_DEBUG` is not
|
|
25
|
+
Does nothing when `DEEPAGENTS_CLI_DEBUG` is not truthy (see `is_env_truthy`).
|
|
26
26
|
|
|
27
27
|
Args:
|
|
28
28
|
target: Logger to configure.
|
|
29
29
|
"""
|
|
30
|
-
if not
|
|
30
|
+
if not is_env_truthy(DEBUG):
|
|
31
31
|
return
|
|
32
32
|
|
|
33
33
|
debug_path = Path(
|
|
@@ -23,6 +23,8 @@ ever renamed, only the value here changes.
|
|
|
23
23
|
|
|
24
24
|
from __future__ import annotations
|
|
25
25
|
|
|
26
|
+
import os
|
|
27
|
+
|
|
26
28
|
# ---------------------------------------------------------------------------
|
|
27
29
|
# Constants — import these instead of bare string literals.
|
|
28
30
|
# Keep alphabetically sorted by constant name.
|
|
@@ -32,7 +34,10 @@ AUTO_UPDATE = "DEEPAGENTS_CLI_AUTO_UPDATE"
|
|
|
32
34
|
"""Enable automatic CLI updates ('1', 'true', or 'yes')."""
|
|
33
35
|
|
|
34
36
|
DEBUG = "DEEPAGENTS_CLI_DEBUG"
|
|
35
|
-
"""Enable verbose debug logging
|
|
37
|
+
"""Enable verbose debug logging and preserve the server subprocess log.
|
|
38
|
+
|
|
39
|
+
Parsed by `is_env_truthy`: accepts `1`, `true`, `yes`, `on` (case-insensitive)
|
|
40
|
+
as enabled, and `0`, `false`, `no`, `off`, empty string, or unset as disabled."""
|
|
36
41
|
|
|
37
42
|
DEBUG_FILE = "DEEPAGENTS_CLI_DEBUG_FILE"
|
|
38
43
|
"""Path for the debug log file (default: `/tmp/deepagents_debug.log`)."""
|
|
@@ -69,3 +74,35 @@ SHELL_ALLOW_LIST = "DEEPAGENTS_CLI_SHELL_ALLOW_LIST"
|
|
|
69
74
|
|
|
70
75
|
USER_ID = "DEEPAGENTS_CLI_USER_ID"
|
|
71
76
|
"""Attach a user identifier to LangSmith trace metadata."""
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
_TRUTHY_VALUES = frozenset({"1", "true", "yes", "on"})
|
|
80
|
+
_FALSY_VALUES = frozenset({"0", "false", "no", "off", ""})
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def is_env_truthy(name: str, *, default: bool = False) -> bool:
|
|
84
|
+
"""Return whether env var *name* is set to a recognizably truthy value.
|
|
85
|
+
|
|
86
|
+
Unlike `bool(os.environ.get(name))`, this does not treat `"0"` or
|
|
87
|
+
`"false"` as enabled. Use this for on/off flags where the user would
|
|
88
|
+
reasonably expect `VAR=0` to mean "disabled".
|
|
89
|
+
|
|
90
|
+
Args:
|
|
91
|
+
name: Environment variable name (typically a `DEEPAGENTS_CLI_*`
|
|
92
|
+
constant from this module).
|
|
93
|
+
default: Value returned when the variable is unset OR set to a
|
|
94
|
+
value that is neither recognizably truthy nor falsy.
|
|
95
|
+
|
|
96
|
+
Returns:
|
|
97
|
+
`True` for `1`/`true`/`yes`/`on` (case-insensitive), `False` for
|
|
98
|
+
`0`/`false`/`no`/`off`/empty string, or `default` otherwise.
|
|
99
|
+
"""
|
|
100
|
+
raw = os.environ.get(name)
|
|
101
|
+
if raw is None:
|
|
102
|
+
return default
|
|
103
|
+
lowered = raw.strip().lower()
|
|
104
|
+
if lowered in _TRUTHY_VALUES:
|
|
105
|
+
return True
|
|
106
|
+
if lowered in _FALSY_VALUES:
|
|
107
|
+
return False
|
|
108
|
+
return default
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Version information and lightweight constants for `deepagents-cli`."""
|
|
2
2
|
|
|
3
|
-
__version__ = "0.0.
|
|
3
|
+
__version__ = "0.0.47" # x-release-please-version
|
|
4
4
|
|
|
5
5
|
DOCS_URL = "https://docs.langchain.com/oss/python/deepagents/cli"
|
|
6
6
|
"""URL for `deepagents-cli` documentation."""
|