deepagents-cli 0.1.2__tar.gz → 0.2.1__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.1.2 → deepagents_cli-0.2.1}/CHANGELOG.md +21 -2
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/PKG-INFO +67 -28
- deepagents_cli-0.2.1/README.md +111 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/deepagents_cli/_version.py +1 -1
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/deepagents_cli/config.py +43 -0
- deepagents_cli-0.2.1/deepagents_cli/deploy/__init__.py +17 -0
- deepagents_cli-0.2.1/deepagents_cli/deploy/api_client.py +358 -0
- deepagents_cli-0.2.1/deepagents_cli/deploy/commands.py +1058 -0
- deepagents_cli-0.2.1/deepagents_cli/deploy/mcp_resolver.py +122 -0
- deepagents_cli-0.2.1/deepagents_cli/deploy/payload.py +156 -0
- deepagents_cli-0.2.1/deepagents_cli/deploy/project.py +566 -0
- deepagents_cli-0.2.1/deepagents_cli/deploy/state.py +111 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/deepagents_cli/main.py +20 -14
- deepagents_cli-0.2.1/examples/deploy-content-writer/.env.example +8 -0
- deepagents_cli-0.2.1/examples/deploy-content-writer/AGENTS.md +21 -0
- deepagents_cli-0.2.1/examples/deploy-content-writer/agent.json +8 -0
- deepagents_cli-0.2.1/examples/deploy-content-writer/tools.json +13 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/pyproject.toml +8 -33
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/__init__.py +0 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/.gitkeep +0 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/bare/AGENTS.md +3 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/bare/agent.json +4 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/bare/expected_payload.json +5 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/subagent_with_local_skills/AGENTS.md +1 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/subagent_with_local_skills/agent.json +1 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/subagent_with_local_skills/expected_payload.json +21 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/subagent_with_local_skills/subagents/researcher/AGENTS.md +1 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/subagent_with_local_skills/subagents/researcher/agent.json +1 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/subagent_with_local_skills/subagents/researcher/skills/note/SKILL.md +5 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/subagent_with_local_skills/subagents/researcher/tools.json +1 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/with_skills/AGENTS.md +1 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/with_skills/agent.json +1 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/with_skills/expected_payload.json +15 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/with_skills/skills/summarize/SKILL.md +8 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/with_skills/skills/summarize/examples.md +2 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/with_subagents/AGENTS.md +1 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/with_subagents/agent.json +1 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/with_subagents/expected_payload.json +16 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/with_subagents/subagents/researcher/AGENTS.md +1 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/with_subagents/subagents/researcher/agent.json +1 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/with_subagents/subagents/researcher/tools.json +1 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/with_tools/AGENTS.md +1 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/with_tools/agent.json +1 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/with_tools/expected_payload.json +17 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/fixtures/projects/with_tools/tools.json +13 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/test_agents_command.py +122 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/test_api_client.py +446 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/test_config.py +89 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/test_deploy_command.py +439 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/test_init_command.py +100 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/test_mcp_resolver.py +118 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/test_mcp_servers_command.py +731 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/test_payload.py +103 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/test_project.py +477 -0
- deepagents_cli-0.2.1/tests/unit_tests/deploy/test_state.py +84 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/uv.lock +24 -1968
- deepagents_cli-0.1.2/README.md +0 -57
- deepagents_cli-0.1.2/deepagents_cli/deploy/__init__.py +0 -27
- deepagents_cli-0.1.2/deepagents_cli/deploy/bundler.py +0 -583
- deepagents_cli-0.1.2/deepagents_cli/deploy/commands.py +0 -733
- deepagents_cli-0.1.2/deepagents_cli/deploy/config.py +0 -863
- deepagents_cli-0.1.2/deepagents_cli/deploy/context_hub.py +0 -341
- deepagents_cli-0.1.2/deepagents_cli/deploy/frontend_dist/assets/anonymous-B9UzAXQd.js +0 -1
- deepagents_cli-0.1.2/deepagents_cli/deploy/frontend_dist/assets/clerk-5xHgyQyG.js +0 -23
- deepagents_cli-0.1.2/deepagents_cli/deploy/frontend_dist/assets/highlighted-body-OFNGDK62-rX-7qT8o.js +0 -1
- deepagents_cli-0.1.2/deepagents_cli/deploy/frontend_dist/assets/index-DM3gptpu.js +0 -205
- deepagents_cli-0.1.2/deepagents_cli/deploy/frontend_dist/assets/index-Ddy7F6KI.css +0 -1
- deepagents_cli-0.1.2/deepagents_cli/deploy/frontend_dist/assets/supabase-S6NACDgm.js +0 -44
- deepagents_cli-0.1.2/deepagents_cli/deploy/frontend_dist/index.html +0 -16
- deepagents_cli-0.1.2/deepagents_cli/deploy/frontend_dist/logo-dark.svg +0 -12
- deepagents_cli-0.1.2/deepagents_cli/deploy/frontend_dist/logo-light.svg +0 -12
- deepagents_cli-0.1.2/deepagents_cli/deploy/templates.py +0 -1194
- deepagents_cli-0.1.2/examples/deploy-content-writer/.env.example +0 -2
- deepagents_cli-0.1.2/examples/deploy-content-writer/user/context.md +0 -15
- deepagents_cli-0.1.2/examples/deploy-content-writer/user/preferences.md +0 -11
- deepagents_cli-0.1.2/frontend/.nvmrc +0 -1
- deepagents_cli-0.1.2/frontend/index.html +0 -15
- deepagents_cli-0.1.2/frontend/package-lock.json +0 -6142
- deepagents_cli-0.1.2/frontend/package.json +0 -34
- deepagents_cli-0.1.2/frontend/postcss.config.js +0 -5
- deepagents_cli-0.1.2/frontend/public/logo-dark.svg +0 -12
- deepagents_cli-0.1.2/frontend/public/logo-light.svg +0 -12
- deepagents_cli-0.1.2/frontend/src/App.tsx +0 -342
- deepagents_cli-0.1.2/frontend/src/ThemeProvider.tsx +0 -66
- deepagents_cli-0.1.2/frontend/src/auth/anonymous.tsx +0 -45
- deepagents_cli-0.1.2/frontend/src/auth/clerk.tsx +0 -138
- deepagents_cli-0.1.2/frontend/src/auth/loader.tsx +0 -26
- deepagents_cli-0.1.2/frontend/src/auth/supabase.tsx +0 -236
- deepagents_cli-0.1.2/frontend/src/auth/types.ts +0 -22
- deepagents_cli-0.1.2/frontend/src/components/AppHeader.tsx +0 -70
- deepagents_cli-0.1.2/frontend/src/components/FilePanels.tsx +0 -148
- deepagents_cli-0.1.2/frontend/src/components/MessageList.tsx +0 -177
- deepagents_cli-0.1.2/frontend/src/components/SubagentActivity.tsx +0 -262
- deepagents_cli-0.1.2/frontend/src/components/ThreadPicker.tsx +0 -162
- deepagents_cli-0.1.2/frontend/src/components/TodosPanel.tsx +0 -54
- deepagents_cli-0.1.2/frontend/src/components/ToolCallCard.tsx +0 -136
- deepagents_cli-0.1.2/frontend/src/components/toolcalls/FileToolCard.tsx +0 -126
- deepagents_cli-0.1.2/frontend/src/components/toolcalls/SearchCard.tsx +0 -107
- deepagents_cli-0.1.2/frontend/src/components/toolcalls/ThinkCard.tsx +0 -60
- deepagents_cli-0.1.2/frontend/src/components/toolcalls/TodosCard.tsx +0 -63
- deepagents_cli-0.1.2/frontend/src/components/toolcalls/index.ts +0 -51
- deepagents_cli-0.1.2/frontend/src/constants.ts +0 -15
- deepagents_cli-0.1.2/frontend/src/index.css +0 -220
- deepagents_cli-0.1.2/frontend/src/main.tsx +0 -20
- deepagents_cli-0.1.2/frontend/src/runtimeConfig.ts +0 -75
- deepagents_cli-0.1.2/frontend/src/types.ts +0 -22
- deepagents_cli-0.1.2/frontend/src/vite-env.d.ts +0 -1
- deepagents_cli-0.1.2/frontend/tsconfig.json +0 -19
- deepagents_cli-0.1.2/frontend/vite.config.ts +0 -25
- deepagents_cli-0.1.2/tests/integration_tests/test_context_hub.py +0 -206
- deepagents_cli-0.1.2/tests/integration_tests/test_deploy_hub.py +0 -191
- deepagents_cli-0.1.2/tests/unit_tests/deploy/test_bundler.py +0 -842
- deepagents_cli-0.1.2/tests/unit_tests/deploy/test_commands.py +0 -227
- deepagents_cli-0.1.2/tests/unit_tests/deploy/test_config.py +0 -711
- deepagents_cli-0.1.2/tests/unit_tests/deploy/test_context_hub.py +0 -535
- deepagents_cli-0.1.2/tests/unit_tests/deploy/test_frontend_bundle.py +0 -433
- deepagents_cli-0.1.2/tests/unit_tests/deploy/test_frontend_config.py +0 -182
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/.gitignore +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/DEV.md +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/Makefile +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/THREAT_MODEL.md +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/deepagents_cli/__init__.py +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/deepagents_cli/__main__.py +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/deepagents_cli/model_config.py +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/deepagents_cli/py.typed +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/examples/deploy-content-writer/skills/blog-post/SKILL.md +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/examples/deploy-content-writer/skills/social-media/SKILL.md +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/examples/skills/arxiv-search/SKILL.md +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/examples/skills/arxiv-search/arxiv_search.py +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/examples/skills/langgraph-docs/SKILL.md +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/examples/skills/skill-creator/SKILL.md +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/examples/skills/web-research/SKILL.md +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/images/cli.png +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/scripts/check_imports.py +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/scripts/debug_server.sh +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/scripts/install.sh +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/tests/README.md +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/tests/integration_tests/__init__.py +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/tests/integration_tests/conftest.py +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/tests/unit_tests/__init__.py +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/tests/unit_tests/conftest.py +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/tests/unit_tests/deploy/__init__.py +0 -0
- {deepagents_cli-0.1.2 → deepagents_cli-0.2.1}/tests/unit_tests/test_version.py +0 -0
|
@@ -1,7 +1,26 @@
|
|
|
1
|
+
<!-- markdownlint-disable MD024 -->
|
|
2
|
+
|
|
1
3
|
# Deep Agents CLI Changelog
|
|
2
4
|
|
|
3
|
-
From 0.
|
|
4
|
-
|
|
5
|
+
From 0.2.0 onward, `deepagents-cli` exposes `init`, `deploy`, `agents`, and `mcp-servers` against the Managed Deep Agents `/v1/deepagents/*` API. The coding agent (interactive TUI & headless CLI) moved to [`deepagents-code`](https://github.com/langchain-ai/deepagents/blob/main/libs/code/CHANGELOG.md).
|
|
6
|
+
|
|
7
|
+
## [0.2.1](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.2.0...deepagents-cli==0.2.1) (2026-06-03)
|
|
8
|
+
|
|
9
|
+
* Version bumps
|
|
10
|
+
|
|
11
|
+
## [0.2.0](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.1.2...deepagents-cli==0.2.0) (2026-06-01)
|
|
12
|
+
|
|
13
|
+
### ⚠ BREAKING CHANGES
|
|
14
|
+
|
|
15
|
+
* `deepagents deploy` now targets the Managed Deep Agents API; `deepagents dev`, `deepagents.toml`, and the `--config`/`--dry-run` flags are removed. Run `deepagents init` to re-scaffold (`agent.json` + `tools.json`). See [PR](https://github.com/langchain-ai/deepagents/pull/3609) for the full migration guide.
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* Migrate `deepagents deploy` to use Managed Deep Agents API ([#3609](https://github.com/langchain-ai/deepagents/issues/3609)) ([72aef52](https://github.com/langchain-ai/deepagents/commit/72aef52542a3fd4a7eebcb3dba40e28adf1aa044))
|
|
20
|
+
|
|
21
|
+
### Bug Fixes
|
|
22
|
+
|
|
23
|
+
* Stable `HumanMessage` IDs across resumed threads ([#3591](https://github.com/langchain-ai/deepagents/issues/3591)) ([82c3194](https://github.com/langchain-ai/deepagents/commit/82c31947f9dc938ffc71e1cea96d162a39aec3a1))
|
|
5
24
|
|
|
6
25
|
## [0.1.2](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.1.1...deepagents-cli==0.1.2) (2026-05-21)
|
|
7
26
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deepagents-cli
|
|
3
|
-
Version: 0.1
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: Deployment tooling for Deep Agents - bundle, run, and ship agents to LangGraph Platform.
|
|
5
5
|
Project-URL: Homepage, https://docs.langchain.com/oss/python/deepagents/overview
|
|
6
6
|
Project-URL: Documentation, https://reference.langchain.com/python/deepagents/
|
|
@@ -24,28 +24,13 @@ Classifier: Programming Language :: Python :: 3.14
|
|
|
24
24
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
25
25
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
26
26
|
Requires-Python: <4.0,>=3.11
|
|
27
|
-
Requires-Dist: deepagents>=0.6.
|
|
27
|
+
Requires-Dist: deepagents>=0.6.8
|
|
28
28
|
Requires-Dist: httpx<1.0.0,>=0.28.1
|
|
29
|
-
Requires-Dist: langchain<2.0.0,>=1.3.
|
|
30
|
-
Requires-Dist: langgraph-
|
|
31
|
-
Requires-Dist: langgraph
|
|
32
|
-
Requires-Dist:
|
|
33
|
-
Requires-Dist: langgraph<2.0.0,>=1.2.0
|
|
34
|
-
Requires-Dist: langsmith>=0.8.0
|
|
29
|
+
Requires-Dist: langchain<2.0.0,>=1.3.4
|
|
30
|
+
Requires-Dist: langgraph-sdk<1.0.0,>=0.4.2
|
|
31
|
+
Requires-Dist: langgraph<2.0.0,>=1.2.4
|
|
32
|
+
Requires-Dist: langsmith>=0.8.9
|
|
35
33
|
Requires-Dist: python-dotenv<2.0.0,>=1.2.2
|
|
36
|
-
Provides-Extra: agentcore
|
|
37
|
-
Requires-Dist: langchain-agentcore-codeinterpreter>=0.0.2; extra == 'agentcore'
|
|
38
|
-
Provides-Extra: all-sandboxes
|
|
39
|
-
Requires-Dist: langchain-agentcore-codeinterpreter>=0.0.2; extra == 'all-sandboxes'
|
|
40
|
-
Requires-Dist: langchain-daytona>=0.0.5; extra == 'all-sandboxes'
|
|
41
|
-
Requires-Dist: langchain-modal>=0.0.3; extra == 'all-sandboxes'
|
|
42
|
-
Requires-Dist: langchain-runloop>=0.0.4; extra == 'all-sandboxes'
|
|
43
|
-
Provides-Extra: daytona
|
|
44
|
-
Requires-Dist: langchain-daytona>=0.0.5; extra == 'daytona'
|
|
45
|
-
Provides-Extra: modal
|
|
46
|
-
Requires-Dist: langchain-modal>=0.0.3; extra == 'modal'
|
|
47
|
-
Provides-Extra: runloop
|
|
48
|
-
Requires-Dist: langchain-runloop>=0.0.4; extra == 'runloop'
|
|
49
34
|
Description-Content-Type: text/markdown
|
|
50
35
|
|
|
51
36
|
# Deep Agents CLI — Deployment Tooling
|
|
@@ -56,7 +41,7 @@ Description-Content-Type: text/markdown
|
|
|
56
41
|
[](https://x.com/langchain_oss)
|
|
57
42
|
|
|
58
43
|
> [!IMPORTANT]
|
|
59
|
-
> **The interactive coding agent moved.** As of `deepagents-cli==0.1.0`, this package contains only the deployment subcommands (`init`, `dev`, `deploy`). The interactive REPL — previously launched via `deepagents` — now ships as [`deepagents-code`](https://docs.langchain.com/
|
|
44
|
+
> **The interactive coding agent moved.** As of `deepagents-cli==0.1.0`, this package contains only the deployment subcommands (`init`, `dev`, `deploy`). The interactive REPL — previously launched via `deepagents` — now ships as [`deepagents-code`](https://docs.langchain.com/deepagents-code) (`dcode`).
|
|
60
45
|
>
|
|
61
46
|
> ```bash
|
|
62
47
|
> curl -LsSf https://langch.in/dcode | bash
|
|
@@ -69,10 +54,13 @@ Description-Content-Type: text/markdown
|
|
|
69
54
|
uv tool install deepagents-cli
|
|
70
55
|
```
|
|
71
56
|
|
|
72
|
-
|
|
57
|
+
You'll need a LangSmith API key with access to the Managed Deep Agents private
|
|
58
|
+
preview ([waitlist](https://www.langchain.com/langsmith-managed-deep-agents-waitlist)).
|
|
59
|
+
Export it before running any command, or put it in a repo `.env` or
|
|
60
|
+
`~/.deepagents/.env`:
|
|
73
61
|
|
|
74
62
|
```bash
|
|
75
|
-
|
|
63
|
+
export LANGSMITH_API_KEY="..."
|
|
76
64
|
```
|
|
77
65
|
|
|
78
66
|
## Usage
|
|
@@ -81,13 +69,64 @@ uv tool install 'deepagents-cli[all-sandboxes]'
|
|
|
81
69
|
# Scaffold a new project folder
|
|
82
70
|
deepagents init my-agent
|
|
83
71
|
|
|
84
|
-
#
|
|
85
|
-
|
|
72
|
+
# Register any MCP servers you intend to use (one-time, per workspace)
|
|
73
|
+
deepagents mcp-servers add --url https://tools.langchain.com \
|
|
74
|
+
--header X-Api-Key=$LANGSMITH_API_KEY \
|
|
75
|
+
--name Fleet
|
|
86
76
|
|
|
87
|
-
#
|
|
88
|
-
|
|
77
|
+
# init scaffolds an empty tools.json. Add tools that reference a registered
|
|
78
|
+
# MCP server's URL (otherwise the agent has no tools), e.g. the Fleet server
|
|
79
|
+
# registered above:
|
|
80
|
+
# { "name": "read_url_content", "mcp_server_url": "https://tools.langchain.com",
|
|
81
|
+
# "mcp_server_name": "Fleet", "display_name": "read_url_content" }
|
|
82
|
+
|
|
83
|
+
# Upsert the project as a managed agent on /v1/deepagents/*
|
|
84
|
+
cd my-agent && deepagents deploy
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
`deepagents init` scaffolds an empty `tools.json`, an example skill under
|
|
88
|
+
`skills/`, and an example subagent under `subagents/`; edit or remove them to
|
|
89
|
+
suit your agent. `tools.json` starts empty because every tool must reference an
|
|
90
|
+
MCP server that is already registered in the workspace
|
|
91
|
+
(`deepagents mcp-servers add`) — so a freshly scaffolded project deploys
|
|
92
|
+
without first registering a server.
|
|
93
|
+
|
|
94
|
+
New agents default to the `default` backend — switch `agent.json`'s
|
|
95
|
+
`backend.type` to `thread_scoped_sandbox` (or `agent_scoped_sandbox`) to opt
|
|
96
|
+
into a managed sandbox. The CLI does not create or run sandboxes locally;
|
|
97
|
+
sandbox lifecycle is handled by the Managed Deep Agents platform.
|
|
98
|
+
|
|
99
|
+
### Project layout
|
|
100
|
+
|
|
101
|
+
```text
|
|
102
|
+
my-agent/
|
|
103
|
+
agent.json # name, description, backend, runtime.model, permissions
|
|
104
|
+
AGENTS.md # system prompt
|
|
105
|
+
tools.json # tools the agent can call (optional)
|
|
106
|
+
skills/<name>/SKILL.md # frontmatter-tagged skills (optional)
|
|
107
|
+
subagents/<name>/ # delegated subagent definitions (optional)
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Other commands
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
deepagents agents list # list workspace agents
|
|
114
|
+
deepagents agents get <agent_id> # show one agent
|
|
115
|
+
deepagents agents delete <agent_id> # delete an agent
|
|
116
|
+
|
|
117
|
+
deepagents mcp-servers list # list workspace MCP servers
|
|
118
|
+
deepagents mcp-servers add --url URL # register a server
|
|
119
|
+
deepagents mcp-servers get <id|name|url> # show one server
|
|
120
|
+
deepagents mcp-servers tools <id|name|url> # list a server's tools
|
|
121
|
+
deepagents mcp-servers update <id|name|url> # update server URL or headers
|
|
122
|
+
deepagents mcp-servers delete <id|name|url> # remove a server
|
|
123
|
+
deepagents mcp-servers connect <id|name|url> # start OAuth for a server
|
|
89
124
|
```
|
|
90
125
|
|
|
126
|
+
`get`, `update`, `delete`, and `connect` accept an MCP server's id, exact name,
|
|
127
|
+
or URL — a non-id value is resolved against `mcp-servers list` (URLs are matched
|
|
128
|
+
ignoring case and trailing slash).
|
|
129
|
+
|
|
91
130
|
## 📖 Resources
|
|
92
131
|
|
|
93
132
|
- **[CLI Documentation](https://docs.langchain.com/oss/python/deepagents/cli/overview)**
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# Deep Agents CLI — Deployment Tooling
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/deepagents-cli/#history)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
[](https://pypistats.org/packages/deepagents-cli)
|
|
6
|
+
[](https://x.com/langchain_oss)
|
|
7
|
+
|
|
8
|
+
> [!IMPORTANT]
|
|
9
|
+
> **The interactive coding agent moved.** As of `deepagents-cli==0.1.0`, this package contains only the deployment subcommands (`init`, `dev`, `deploy`). The interactive REPL — previously launched via `deepagents` — now ships as [`deepagents-code`](https://docs.langchain.com/deepagents-code) (`dcode`).
|
|
10
|
+
>
|
|
11
|
+
> ```bash
|
|
12
|
+
> curl -LsSf https://langch.in/dcode | bash
|
|
13
|
+
> dcode
|
|
14
|
+
> ```
|
|
15
|
+
|
|
16
|
+
## Install
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
uv tool install deepagents-cli
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
You'll need a LangSmith API key with access to the Managed Deep Agents private
|
|
23
|
+
preview ([waitlist](https://www.langchain.com/langsmith-managed-deep-agents-waitlist)).
|
|
24
|
+
Export it before running any command, or put it in a repo `.env` or
|
|
25
|
+
`~/.deepagents/.env`:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
export LANGSMITH_API_KEY="..."
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Usage
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Scaffold a new project folder
|
|
35
|
+
deepagents init my-agent
|
|
36
|
+
|
|
37
|
+
# Register any MCP servers you intend to use (one-time, per workspace)
|
|
38
|
+
deepagents mcp-servers add --url https://tools.langchain.com \
|
|
39
|
+
--header X-Api-Key=$LANGSMITH_API_KEY \
|
|
40
|
+
--name Fleet
|
|
41
|
+
|
|
42
|
+
# init scaffolds an empty tools.json. Add tools that reference a registered
|
|
43
|
+
# MCP server's URL (otherwise the agent has no tools), e.g. the Fleet server
|
|
44
|
+
# registered above:
|
|
45
|
+
# { "name": "read_url_content", "mcp_server_url": "https://tools.langchain.com",
|
|
46
|
+
# "mcp_server_name": "Fleet", "display_name": "read_url_content" }
|
|
47
|
+
|
|
48
|
+
# Upsert the project as a managed agent on /v1/deepagents/*
|
|
49
|
+
cd my-agent && deepagents deploy
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
`deepagents init` scaffolds an empty `tools.json`, an example skill under
|
|
53
|
+
`skills/`, and an example subagent under `subagents/`; edit or remove them to
|
|
54
|
+
suit your agent. `tools.json` starts empty because every tool must reference an
|
|
55
|
+
MCP server that is already registered in the workspace
|
|
56
|
+
(`deepagents mcp-servers add`) — so a freshly scaffolded project deploys
|
|
57
|
+
without first registering a server.
|
|
58
|
+
|
|
59
|
+
New agents default to the `default` backend — switch `agent.json`'s
|
|
60
|
+
`backend.type` to `thread_scoped_sandbox` (or `agent_scoped_sandbox`) to opt
|
|
61
|
+
into a managed sandbox. The CLI does not create or run sandboxes locally;
|
|
62
|
+
sandbox lifecycle is handled by the Managed Deep Agents platform.
|
|
63
|
+
|
|
64
|
+
### Project layout
|
|
65
|
+
|
|
66
|
+
```text
|
|
67
|
+
my-agent/
|
|
68
|
+
agent.json # name, description, backend, runtime.model, permissions
|
|
69
|
+
AGENTS.md # system prompt
|
|
70
|
+
tools.json # tools the agent can call (optional)
|
|
71
|
+
skills/<name>/SKILL.md # frontmatter-tagged skills (optional)
|
|
72
|
+
subagents/<name>/ # delegated subagent definitions (optional)
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Other commands
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
deepagents agents list # list workspace agents
|
|
79
|
+
deepagents agents get <agent_id> # show one agent
|
|
80
|
+
deepagents agents delete <agent_id> # delete an agent
|
|
81
|
+
|
|
82
|
+
deepagents mcp-servers list # list workspace MCP servers
|
|
83
|
+
deepagents mcp-servers add --url URL # register a server
|
|
84
|
+
deepagents mcp-servers get <id|name|url> # show one server
|
|
85
|
+
deepagents mcp-servers tools <id|name|url> # list a server's tools
|
|
86
|
+
deepagents mcp-servers update <id|name|url> # update server URL or headers
|
|
87
|
+
deepagents mcp-servers delete <id|name|url> # remove a server
|
|
88
|
+
deepagents mcp-servers connect <id|name|url> # start OAuth for a server
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
`get`, `update`, `delete`, and `connect` accept an MCP server's id, exact name,
|
|
92
|
+
or URL — a non-id value is resolved against `mcp-servers list` (URLs are matched
|
|
93
|
+
ignoring case and trailing slash).
|
|
94
|
+
|
|
95
|
+
## 📖 Resources
|
|
96
|
+
|
|
97
|
+
- **[CLI Documentation](https://docs.langchain.com/oss/python/deepagents/cli/overview)**
|
|
98
|
+
- **[Changelog](https://github.com/langchain-ai/deepagents/blob/main/libs/cli/CHANGELOG.md)**
|
|
99
|
+
- **[Source code](https://github.com/langchain-ai/deepagents/tree/main/libs/cli)**
|
|
100
|
+
- **[Deep Agents SDK](https://github.com/langchain-ai/deepagents)** — underlying agent harness
|
|
101
|
+
- **[Deep Agents Code](https://pypi.org/project/deepagents-code/)** — coding agent
|
|
102
|
+
|
|
103
|
+
## 📕 Releases & Versioning
|
|
104
|
+
|
|
105
|
+
See our [Releases](https://docs.langchain.com/oss/python/release-policy) and [Versioning](https://docs.langchain.com/oss/python/versioning) policies.
|
|
106
|
+
|
|
107
|
+
## 💁 Contributing
|
|
108
|
+
|
|
109
|
+
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.
|
|
110
|
+
|
|
111
|
+
For detailed information on how to contribute, see the [Contributing Guide](https://docs.langchain.com/oss/python/contributing/overview).
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Keep the `x-release-please-version` annotation — release-please uses it to
|
|
4
4
|
# bump `__version__` in sync with `pyproject.toml` on every release PR.
|
|
5
|
-
__version__ = "0.1
|
|
5
|
+
__version__ = "0.2.1" # x-release-please-version
|
|
6
6
|
|
|
7
7
|
DOCS_URL = "https://docs.langchain.com/oss/python/deepagents/cli"
|
|
8
8
|
"""URL for `deepagents-cli` documentation."""
|
|
@@ -3,10 +3,25 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import logging
|
|
6
|
+
import os
|
|
6
7
|
import sys
|
|
7
8
|
from pathlib import Path
|
|
8
9
|
|
|
9
10
|
logger = logging.getLogger(__name__)
|
|
11
|
+
_PROJECT_DOTENV_BLOCKED_ENV_KEYS = (
|
|
12
|
+
"LANGSMITH_ENDPOINT",
|
|
13
|
+
"LANGCHAIN_ENDPOINT",
|
|
14
|
+
"HTTP_PROXY",
|
|
15
|
+
"HTTPS_PROXY",
|
|
16
|
+
"ALL_PROXY",
|
|
17
|
+
"NO_PROXY",
|
|
18
|
+
"http_proxy",
|
|
19
|
+
"https_proxy",
|
|
20
|
+
"all_proxy",
|
|
21
|
+
"no_proxy",
|
|
22
|
+
"SSL_CERT_FILE",
|
|
23
|
+
"SSL_CERT_DIR",
|
|
24
|
+
)
|
|
10
25
|
|
|
11
26
|
|
|
12
27
|
def _stderr(msg: str) -> None:
|
|
@@ -40,6 +55,30 @@ def _find_dotenv_from_start_path(start_path: Path) -> Path | None:
|
|
|
40
55
|
return None
|
|
41
56
|
|
|
42
57
|
|
|
58
|
+
def _snapshot_blocked_project_env() -> dict[str, str | None]:
|
|
59
|
+
return {key: os.environ.get(key) for key in _PROJECT_DOTENV_BLOCKED_ENV_KEYS}
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def _restore_env(snapshot: dict[str, str | None]) -> None:
|
|
63
|
+
for key, value in snapshot.items():
|
|
64
|
+
if value is None:
|
|
65
|
+
os.environ.pop(key, None)
|
|
66
|
+
else:
|
|
67
|
+
os.environ[key] = value
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def _warn_if_project_blocked_env_changed(snapshot: dict[str, str | None]) -> None:
|
|
71
|
+
changed = [key for key, value in snapshot.items() if os.environ.get(key) != value]
|
|
72
|
+
if not changed:
|
|
73
|
+
return
|
|
74
|
+
keys = ", ".join(sorted(changed))
|
|
75
|
+
_stderr(
|
|
76
|
+
f"ignoring {keys} from project .env. Set endpoint overrides in your "
|
|
77
|
+
"shell environment or ~/.deepagents/.env; proxy/TLS settings are "
|
|
78
|
+
"ignored for managed API requests.",
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
|
|
43
82
|
try:
|
|
44
83
|
_GLOBAL_DOTENV_PATH = Path.home() / ".deepagents" / ".env"
|
|
45
84
|
except RuntimeError:
|
|
@@ -92,10 +131,12 @@ def _load_dotenv(*, start_path: Path) -> bool:
|
|
|
92
131
|
|
|
93
132
|
dotenv_path = _find_dotenv_from_start_path(start_path)
|
|
94
133
|
if dotenv_path is not None:
|
|
134
|
+
blocked_env = _snapshot_blocked_project_env()
|
|
95
135
|
try:
|
|
96
136
|
loaded = (
|
|
97
137
|
dotenv.load_dotenv(dotenv_path=dotenv_path, override=False) or loaded
|
|
98
138
|
)
|
|
139
|
+
_warn_if_project_blocked_env_changed(blocked_env)
|
|
99
140
|
except (OSError, ValueError) as exc:
|
|
100
141
|
_stderr(
|
|
101
142
|
f"could not read project .env at {dotenv_path}: {exc}. "
|
|
@@ -107,6 +148,8 @@ def _load_dotenv(*, start_path: Path) -> bool:
|
|
|
107
148
|
dotenv_path,
|
|
108
149
|
exc_info=True,
|
|
109
150
|
)
|
|
151
|
+
finally:
|
|
152
|
+
_restore_env(blocked_env)
|
|
110
153
|
|
|
111
154
|
try:
|
|
112
155
|
if _GLOBAL_DOTENV_PATH.is_file() and dotenv.load_dotenv(
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"""Deploy commands for the Managed Deep Agents (`/v1/deepagents/*`) surface."""
|
|
2
|
+
|
|
3
|
+
from deepagents_cli.deploy.commands import (
|
|
4
|
+
execute_agents_command,
|
|
5
|
+
execute_deploy_command,
|
|
6
|
+
execute_init_command,
|
|
7
|
+
execute_mcp_servers_command,
|
|
8
|
+
setup_deploy_parsers,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
__all__ = [
|
|
12
|
+
"execute_agents_command",
|
|
13
|
+
"execute_deploy_command",
|
|
14
|
+
"execute_init_command",
|
|
15
|
+
"execute_mcp_servers_command",
|
|
16
|
+
"setup_deploy_parsers",
|
|
17
|
+
]
|