deepagents-cli 0.0.3__py3-none-any.whl → 0.0.4__py3-none-any.whl

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.

Potentially problematic release.


This version of deepagents-cli might be problematic. Click here for more details.

Files changed (41) hide show
  1. deepagents_cli/__init__.py +5 -0
  2. deepagents_cli/__main__.py +6 -0
  3. deepagents_cli/agent.py +267 -0
  4. deepagents_cli/cli.py +13 -0
  5. deepagents_cli/commands.py +86 -0
  6. deepagents_cli/config.py +138 -0
  7. deepagents_cli/execution.py +644 -0
  8. deepagents_cli/file_ops.py +347 -0
  9. deepagents_cli/input.py +249 -0
  10. deepagents_cli/main.py +217 -0
  11. deepagents_cli/py.typed +0 -0
  12. deepagents_cli/tools.py +140 -0
  13. deepagents_cli/ui.py +455 -0
  14. deepagents_cli-0.0.4.dist-info/METADATA +18 -0
  15. deepagents_cli-0.0.4.dist-info/RECORD +18 -0
  16. deepagents_cli-0.0.4.dist-info/entry_points.txt +3 -0
  17. deepagents_cli-0.0.4.dist-info/top_level.txt +1 -0
  18. deepagents/__init__.py +0 -7
  19. deepagents/cli.py +0 -567
  20. deepagents/default_agent_prompt.md +0 -64
  21. deepagents/graph.py +0 -144
  22. deepagents/memory/__init__.py +0 -17
  23. deepagents/memory/backends/__init__.py +0 -15
  24. deepagents/memory/backends/composite.py +0 -250
  25. deepagents/memory/backends/filesystem.py +0 -330
  26. deepagents/memory/backends/state.py +0 -206
  27. deepagents/memory/backends/store.py +0 -351
  28. deepagents/memory/backends/utils.py +0 -319
  29. deepagents/memory/protocol.py +0 -164
  30. deepagents/middleware/__init__.py +0 -13
  31. deepagents/middleware/agent_memory.py +0 -207
  32. deepagents/middleware/filesystem.py +0 -615
  33. deepagents/middleware/patch_tool_calls.py +0 -44
  34. deepagents/middleware/subagents.py +0 -481
  35. deepagents/pretty_cli.py +0 -289
  36. deepagents_cli-0.0.3.dist-info/METADATA +0 -551
  37. deepagents_cli-0.0.3.dist-info/RECORD +0 -24
  38. deepagents_cli-0.0.3.dist-info/entry_points.txt +0 -2
  39. deepagents_cli-0.0.3.dist-info/licenses/LICENSE +0 -21
  40. deepagents_cli-0.0.3.dist-info/top_level.txt +0 -1
  41. {deepagents_cli-0.0.3.dist-info → deepagents_cli-0.0.4.dist-info}/WHEEL +0 -0
@@ -1,551 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: deepagents-cli
3
- Version: 0.0.3
4
- Summary: General purpose 'deep agent' with sub-agent spawning, todo list capabilities, and mock file system. Built on LangGraph.
5
- License: MIT
6
- Requires-Python: <4.0,>=3.11
7
- Description-Content-Type: text/markdown
8
- License-File: LICENSE
9
- Requires-Dist: tavily-python
10
- Requires-Dist: python-dotenv
11
- Requires-Dist: requests
12
- Requires-Dist: rich>=13.0.0
13
- Requires-Dist: langchain-anthropic<2.0.0,>=1.0.0
14
- Requires-Dist: langchain<2.0.0,>=1.0.0
15
- Requires-Dist: langchain-core<2.0.0,>=1.0.0
16
- Requires-Dist: wcmatch
17
- Provides-Extra: dev
18
- Requires-Dist: pytest; extra == "dev"
19
- Requires-Dist: pytest-recording; extra == "dev"
20
- Requires-Dist: pytest-cov; extra == "dev"
21
- Requires-Dist: build; extra == "dev"
22
- Requires-Dist: twine; extra == "dev"
23
- Requires-Dist: langchain-openai; extra == "dev"
24
- Dynamic: license-file
25
-
26
- # 🧠🤖Deep Agents
27
-
28
- Using an LLM to call tools in a loop is the simplest form of an agent.
29
- This architecture, however, can yield agents that are “shallow” and fail to plan and act over longer, more complex tasks.
30
-
31
- Applications like “Deep Research”, "Manus", and “Claude Code” have gotten around this limitation by implementing a combination of four things:
32
- a **planning tool**, **sub agents**, access to a **file system**, and a **detailed prompt**.
33
-
34
- <img src="deep_agents.png" alt="deep agent" width="600"/>
35
-
36
- `deepagents` is a Python package that implements these in a general purpose way so that you can easily create a Deep Agent for your application.
37
-
38
- **Acknowledgements: 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.**
39
-
40
- ## Installation
41
-
42
- ```bash
43
- # pip
44
- pip install deepagents
45
-
46
- # uv
47
- uv add deepagents
48
-
49
- # poetry
50
- poetry add deepagents
51
- ```
52
-
53
- ## Usage
54
-
55
- (To run the example below, you will need to `pip install tavily-python`).
56
-
57
- Make sure to set `TAVILY_API_KEY` in your environment. You can generate one [here](https://www.tavily.com/).
58
-
59
- ```python
60
- import os
61
- from typing import Literal
62
- from tavily import TavilyClient
63
- from deepagents import create_deep_agent
64
-
65
- tavily_client = TavilyClient(api_key=os.environ["TAVILY_API_KEY"])
66
-
67
- # Web search tool
68
- def internet_search(
69
- query: str,
70
- max_results: int = 5,
71
- topic: Literal["general", "news", "finance"] = "general",
72
- include_raw_content: bool = False,
73
- ):
74
- """Run a web search"""
75
- return tavily_client.search(
76
- query,
77
- max_results=max_results,
78
- include_raw_content=include_raw_content,
79
- topic=topic,
80
- )
81
-
82
-
83
- # System prompt to steer the agent to be an expert researcher
84
- research_instructions = """You are an expert researcher. Your job is to conduct thorough research, and then write a polished report.
85
-
86
- You have access to an internet search tool as your primary means of gathering information.
87
-
88
- ## `internet_search`
89
-
90
- Use this to run an internet search for a given query. You can specify the max number of results to return, the topic, and whether raw content should be included.
91
- """
92
-
93
- # Create the deep agent
94
- agent = create_deep_agent(
95
- tools=[internet_search],
96
- system_prompt=research_instructions,
97
- )
98
-
99
- # Invoke the agent
100
- result = agent.invoke({"messages": [{"role": "user", "content": "What is langgraph?"}]})
101
- ```
102
-
103
- See [examples/research/research_agent.py](examples/research/research_agent.py) for a more complex example.
104
-
105
- The agent created with `create_deep_agent` is just a LangGraph graph - so you can interact with it (streaming, human-in-the-loop, memory, studio)
106
- in the same way you would any LangGraph agent.
107
-
108
- ## Core Capabilities
109
- **Planning & Task Decomposition**
110
-
111
- Deep Agents include a built-in `write_todos` tool that enables agents to break down complex tasks into discrete steps, track progress, and adapt plans as new information emerges.
112
-
113
- **Context Management**
114
-
115
- File system tools (`ls`, `read_file`, `write_file`, `edit_file`) allow agents to offload large context to memory, preventing context window overflow and enabling work with variable-length tool results.
116
-
117
- **Subagent Spawning**
118
-
119
- A built-in `task` tool enables agents to spawn specialized subagents for context isolation. This keeps the main agent’s context clean while still going deep on specific subtasks.
120
-
121
- **Long-term Memory**
122
-
123
- Extend agents with persistent memory across threads using LangGraph’s Store. Agents can save and retrieve information from previous conversations.
124
-
125
- ## Customizing Deep Agents
126
-
127
- There are several parameters you can pass to `create_deep_agent` to create your own custom deep agent.
128
-
129
- ### `model`
130
-
131
- By default, `deepagents` uses `"claude-sonnet-4-5-20250929"`. You can customize this by passing any [LangChain model object](https://python.langchain.com/docs/integrations/chat/).
132
-
133
- ```python
134
- from langchain.chat_models import init_chat_model
135
- from deepagents import create_deep_agent
136
-
137
- model = init_chat_model(
138
- model="openai:gpt-5",
139
- )
140
- agent = create_deep_agent(
141
- model=model,
142
- )
143
- ```
144
-
145
- ### `system_prompt`
146
- Deep Agents come with a built-in system prompt. This is relatively detailed prompt that is heavily based on and inspired by [attempts](https://github.com/kn1026/cc/blob/main/claudecode.md) to [replicate](https://github.com/asgeirtj/system_prompts_leaks/blob/main/Anthropic/claude-code.md)
147
- Claude Code's system prompt. It was made more general purpose than Claude Code's system prompt. The default prompt contains detailed instructions for how to use the built-in planning tool, file system tools, and sub agents.
148
-
149
- Each deep agent tailored to a use case should include a custom system prompt specific to that use case as well. The importance of prompting for creating a successful deep agent cannot be overstated.
150
-
151
- ```python
152
- from deepagents import create_deep_agent
153
-
154
- research_instructions = """You are an expert researcher. Your job is to conduct thorough research, and then write a polished report.
155
- """
156
-
157
- agent = create_deep_agent(
158
- system_prompt=research_instructions,
159
- )
160
- ```
161
-
162
- ### `tools`
163
-
164
- Just like with tool-calling agents, you can provide a deep agent with a set of tools that it has access to.
165
-
166
- ```python
167
- import os
168
- from typing import Literal
169
- from tavily import TavilyClient
170
- from deepagents import create_deep_agent
171
-
172
- tavily_client = TavilyClient(api_key=os.environ["TAVILY_API_KEY"])
173
-
174
- def internet_search(
175
- query: str,
176
- max_results: int = 5,
177
- topic: Literal["general", "news", "finance"] = "general",
178
- include_raw_content: bool = False,
179
- ):
180
- """Run a web search"""
181
- return tavily_client.search(
182
- query,
183
- max_results=max_results,
184
- include_raw_content=include_raw_content,
185
- topic=topic,
186
- )
187
-
188
- agent = create_deep_agent(
189
- tools=[internet_search]
190
- )
191
- ```
192
-
193
- ### `middleware`
194
- `create_deep_agent` is implemented with middleware that can be customized. You can provide additional middleware to extend functionality, add tools, or implement custom hooks.
195
-
196
- ```python
197
- from langchain_core.tools import tool
198
- from deepagents import create_deep_agent
199
- from langchain.agents.middleware import AgentMiddleware
200
-
201
- @tool
202
- def get_weather(city: str) -> str:
203
- """Get the weather in a city."""
204
- return f"The weather in {city} is sunny."
205
-
206
- @tool
207
- def get_temperature(city: str) -> str:
208
- """Get the temperature in a city."""
209
- return f"The temperature in {city} is 70 degrees Fahrenheit."
210
-
211
- class WeatherMiddleware(AgentMiddleware):
212
- tools = [get_weather, get_temperature]
213
-
214
- agent = create_deep_agent(
215
- model="anthropic:claude-sonnet-4-20250514",
216
- middleware=[WeatherMiddleware()]
217
- )
218
- ```
219
-
220
- ### `subagents`
221
-
222
- A main feature of Deep Agents is their ability to spawn subagents. You can specify custom subagents that your agent can hand off work to in the subagents parameter. Sub agents are useful for context quarantine (to help not pollute the overall context of the main agent) as well as custom instructions.
223
-
224
- `subagents` should be a list of dictionaries, where each dictionary follow this schema:
225
-
226
- ```python
227
- class SubAgent(TypedDict):
228
- name: str
229
- description: str
230
- prompt: str
231
- tools: Sequence[BaseTool | Callable | dict[str, Any]]
232
- model: NotRequired[str | BaseChatModel]
233
- middleware: NotRequired[list[AgentMiddleware]]
234
- interrupt_on: NotRequired[dict[str, bool | InterruptOnConfig]]
235
-
236
- class CompiledSubAgent(TypedDict):
237
- name: str
238
- description: str
239
- runnable: Runnable
240
- ```
241
-
242
- **SubAgent fields:**
243
- - **name**: This is the name of the subagent, and how the main agent will call the subagent
244
- - **description**: This is the description of the subagent that is shown to the main agent
245
- - **prompt**: This is the prompt used for the subagent
246
- - **tools**: This is the list of tools that the subagent has access to.
247
- - **model**: Optional model name or model instance.
248
- - **middleware** Additional middleware to attach to the subagent. See [here](https://docs.langchain.com/oss/python/langchain/middleware) for an introduction into middleware and how it works with create_agent.
249
- - **interrupt_on** A custom interrupt config that specifies human-in-the-loop interactions for your tools.
250
-
251
- **CompiledSubAgent fields:**
252
- - **name**: This is the name of the subagent, and how the main agent will call the subagent
253
- - **description**: This is the description of the subagent that is shown to the main agent
254
- - **runnable**: A pre-built LangGraph graph/agent that will be used as the subagent
255
-
256
- #### Using SubAgent
257
-
258
- ```python
259
- import os
260
- from typing import Literal
261
- from tavily import TavilyClient
262
- from deepagents import create_deep_agent
263
-
264
- tavily_client = TavilyClient(api_key=os.environ["TAVILY_API_KEY"])
265
-
266
- def internet_search(
267
- query: str,
268
- max_results: int = 5,
269
- topic: Literal["general", "news", "finance"] = "general",
270
- include_raw_content: bool = False,
271
- ):
272
- """Run a web search"""
273
- return tavily_client.search(
274
- query,
275
- max_results=max_results,
276
- include_raw_content=include_raw_content,
277
- topic=topic,
278
- )
279
-
280
- research_subagent = {
281
- "name": "research-agent",
282
- "description": "Used to research more in depth questions",
283
- "system_prompt": "You are a great researcher",
284
- "tools": [internet_search],
285
- "model": "openai:gpt-4o", # Optional override, defaults to main agent model
286
- }
287
- subagents = [research_subagent]
288
-
289
- agent = create_deep_agent(
290
- model="anthropic:claude-sonnet-4-20250514",
291
- subagents=subagents
292
- )
293
- ```
294
-
295
- #### Using CustomSubAgent
296
-
297
- For more complex use cases, you can provide your own pre-built LangGraph graph as a subagent:
298
-
299
- ```python
300
- # Create a custom agent graph
301
- custom_graph = create_agent(
302
- model=your_model,
303
- tools=specialized_tools,
304
- prompt="You are a specialized agent for data analysis..."
305
- )
306
-
307
- # Use it as a custom subagent
308
- custom_subagent = CompiledSubAgent(
309
- name="data-analyzer",
310
- description="Specialized agent for complex data analysis tasks",
311
- runnable=custom_graph
312
- )
313
-
314
- subagents = [custom_subagent]
315
-
316
- agent = create_deep_agent(
317
- model="anthropic:claude-sonnet-4-20250514",
318
- tools=[internet_search],
319
- system_prompt=research_instructions,
320
- subagents=subagents
321
- )
322
- ```
323
-
324
- ### `memory_backend`
325
- Deep agents come with a local filesystem to offload memory to. By default, this filesystem is stored in state (ephemeral, transient to a single thread).
326
-
327
- You can configure persistent long-term memory using a CompositeBackend with StoreBackend:
328
-
329
- ```python
330
- from deepagents import create_deep_agent
331
- from deepagents.memory.backends import StateBackend, StoreBackend, CompositeBackend
332
- from langgraph.store.memory import InMemoryStore
333
-
334
- store = InMemoryStore() # Or any other Store object
335
-
336
- # Create a hybrid backend: ephemeral files in / and persistent files in /memories/
337
- backend = CompositeBackend(
338
- default=StateBackend(),
339
- routes={"/memories/": StoreBackend()}
340
- )
341
-
342
- agent = create_deep_agent(
343
- memory_backend=backend,
344
- store=store
345
- )
346
- ```
347
-
348
- ### `interrupt_on`
349
- A common reality for agents is that some tool operations may be sensitive and require human approval before execution. Deep Agents supports human-in-the-loop workflows through LangGraph’s interrupt capabilities. You can configure which tools require approval using a checkpointer.
350
-
351
- These tool configs are passed to our prebuilt [HITL middleware](https://docs.langchain.com/oss/python/langchain/middleware#human-in-the-loop) so that the agent pauses execution and waits for feedback from the user before executing configured tools.
352
-
353
- ```python
354
- from langchain_core.tools import tool
355
- from deepagents import create_deep_agent
356
-
357
- @tool
358
- def get_weather(city: str) -> str:
359
- """Get the weather in a city."""
360
- return f"The weather in {city} is sunny."
361
-
362
- agent = create_deep_agent(
363
- model="anthropic:claude-sonnet-4-20250514",
364
- tools=[get_weather],
365
- interrupt_on={
366
- "get_weather": {
367
- "allowed_decisions": ["approve", "edit", "reject"]
368
- },
369
- }
370
- )
371
-
372
- ```
373
-
374
- ## Deep Agents Middleware
375
-
376
- Deep Agents are built with a modular middleware architecture. As a reminder, Deep Agents have access to:
377
- - A planning tool
378
- - A filesystem for storing context and long-term memories
379
- - The ability to spawn subagents
380
-
381
- Each of these features is implemented as separate middleware. When you create a deep agent with `create_deep_agent`, we automatically attach **PlanningMiddleware**, **FilesystemMiddleware** and **SubAgentMiddleware** to your agent.
382
-
383
- Middleware is a composable concept, and you can choose to add as many or as few middleware to an agent depending on your use case. That means that you can also use any of the aforementioned middleware independently!
384
-
385
- ### TodoListMiddleware
386
-
387
- Planning is integral to solving complex problems. If you’ve used claude code recently, you’ll notice how it writes out a To-Do list before tackling complex, multi-part tasks. You’ll also notice how it can adapt and update this To-Do list on the fly as more information comes in.
388
-
389
- **TodoListMiddleware** provides your agent with a tool specifically for updating this To-Do list. Before, and while it executes a multi-part task, the agent is prompted to use the write_todos tool to keep track of what its doing, and what still needs to be done.
390
-
391
- ```python
392
- from langchain.agents import create_agent
393
- from langchain.agents.middleware import TodoListMiddleware
394
-
395
- # TodoListMiddleware is included by default in create_deep_agent
396
- # You can customize it if building a custom agent
397
- agent = create_agent(
398
- model="anthropic:claude-sonnet-4-20250514",
399
- # Custom planning instructions can be added via middleware
400
- middleware=[
401
- TodoListMiddleware(
402
- system_prompt="Use the write_todos tool to..." # Optional: Custom addition to the system prompt
403
- ),
404
- ],
405
- )
406
- ```
407
-
408
- ### FilesystemMiddleware
409
-
410
- Context engineering is one of the main challenges in building effective agents. This can be particularly hard when using tools that can return variable length results (ex. web_search, rag), as long ToolResults can quickly fill up your context window.
411
- **FilesystemMiddleware** provides four tools to your agent to interact with both short-term and long-term memory.
412
- - **ls**: List the files in your filesystem
413
- - **read_file**: Read an entire file, or a certain number of lines from a file
414
- - **write_file**: Write a new file to your filesystem
415
- - **edit_file**: Edit an existing file in your filesystem
416
-
417
- ```python
418
- from langchain.agents import create_agent
419
- from deepagents.middleware.filesystem import FilesystemMiddleware
420
- from deepagents.memory.backends import StateBackend, StoreBackend, CompositeBackend
421
-
422
- # FilesystemMiddleware is included by default in create_deep_agent
423
- # You can customize it if building a custom agent
424
- agent = create_agent(
425
- model="anthropic:claude-sonnet-4-20250514",
426
- middleware=[
427
- FilesystemMiddleware(
428
- memory_backend=StateBackend(), # Optional: customize storage backend (defaults to StateBackend)
429
- # For persistent memory, use CompositeBackend:
430
- # memory_backend=CompositeBackend(
431
- # default=StateBackend(),
432
- # routes={"/memories/": StoreBackend()}
433
- # )
434
- system_prompt="Write to the filesystem when...", # Optional custom system prompt override
435
- custom_tool_descriptions={
436
- "ls": "Use the ls tool when...",
437
- "read_file": "Use the read_file tool to..."
438
- } # Optional: Custom descriptions for filesystem tools
439
- ),
440
- ],
441
- )
442
- ```
443
-
444
- ### SubAgentMiddleware
445
-
446
- Handing off tasks to subagents is a great way to isolate context, keeping the context window of the main (supervisor) agent clean while still going deep on a task. The subagents middleware allows you supply subagents through a task tool.
447
-
448
- A subagent is defined with a name, description, system prompt, and tools. You can also provide a subagent with a custom model, or with additional middleware. This can be particularly useful when you want to give the subagent an additional state key to share with the main agent.
449
-
450
- ```python
451
- from langchain_core.tools import tool
452
- from langchain.agents import create_agent
453
- from deepagents.middleware.subagents import SubAgentMiddleware
454
-
455
-
456
- @tool
457
- def get_weather(city: str) -> str:
458
- """Get the weather in a city."""
459
- return f"The weather in {city} is sunny."
460
-
461
- agent = create_agent(
462
- model="claude-sonnet-4-20250514",
463
- middleware=[
464
- SubAgentMiddleware(
465
- default_model="claude-sonnet-4-20250514",
466
- default_tools=[],
467
- subagents=[
468
- {
469
- "name": "weather",
470
- "description": "This subagent can get weather in cities.",
471
- "system_prompt": "Use the get_weather tool to get the weather in a city.",
472
- "tools": [get_weather],
473
- "model": "gpt-4.1",
474
- "middleware": [],
475
- }
476
- ],
477
- )
478
- ],
479
- )
480
- ```
481
-
482
- For more complex use cases, you can also provide your own pre-built LangGraph graph as a subagent.
483
-
484
- ```python
485
- # Create a custom LangGraph graph
486
- def create_weather_graph():
487
- workflow = StateGraph(...)
488
- # Build your custom graph
489
- return workflow.compile()
490
-
491
- weather_graph = create_weather_graph()
492
-
493
- # Wrap it in a CompiledSubAgent
494
- weather_subagent = CompiledSubAgent(
495
- name="weather",
496
- description="This subagent can get weather in cities.",
497
- runnable=weather_graph
498
- )
499
-
500
- agent = create_agent(
501
- model="anthropic:claude-sonnet-4-20250514",
502
- middleware=[
503
- SubAgentMiddleware(
504
- default_model="claude-sonnet-4-20250514",
505
- default_tools=[],
506
- subagents=[weather_subagent],
507
- )
508
- ],
509
- )
510
- ```
511
-
512
- ## Sync vs Async
513
-
514
- Prior versions of deepagents separated sync and async agent factories.
515
-
516
- `async_create_deep_agent` has been folded in to `create_deep_agent`.
517
-
518
- **You should use `create_deep_agent` as the factory for both sync and async agents**
519
-
520
-
521
- ## MCP
522
-
523
- The `deepagents` library can be ran with MCP tools. This can be achieved by using the [Langchain MCP Adapter library](https://github.com/langchain-ai/langchain-mcp-adapters).
524
-
525
- **NOTE:** You will want to use `from deepagents import async_create_deep_agent` to use the async version of `deepagents`, since MCP tools are async
526
-
527
- (To run the example below, will need to `pip install langchain-mcp-adapters`)
528
-
529
- ```python
530
- import asyncio
531
- from langchain_mcp_adapters.client import MultiServerMCPClient
532
- from deepagents import create_deep_agent
533
-
534
- async def main():
535
- # Collect MCP tools
536
- mcp_client = MultiServerMCPClient(...)
537
- mcp_tools = await mcp_client.get_tools()
538
-
539
- # Create agent
540
- agent = create_deep_agent(tools=mcp_tools, ....)
541
-
542
- # Stream the agent
543
- async for chunk in agent.astream(
544
- {"messages": [{"role": "user", "content": "what is langgraph?"}]},
545
- stream_mode="values"
546
- ):
547
- if "messages" in chunk:
548
- chunk["messages"][-1].pretty_print()
549
-
550
- asyncio.run(main())
551
- ```
@@ -1,24 +0,0 @@
1
- deepagents/__init__.py,sha256=9BVNn4lfF5N8l2KY8Ttxi82zO609I-fGqoSIF7DAxiU,342
2
- deepagents/cli.py,sha256=3UA2SQvAGmUv_elLhi03LjT5U1uyPJ4_XC6wg8Qpl4E,21381
3
- deepagents/default_agent_prompt.md,sha256=4UbINqwOHbkolh3TTeV3FZWadrVdViHbvIuewnf7wxQ,2925
4
- deepagents/graph.py,sha256=238tz_eU8HUXFz2PE6uqbW64cPbTKxT8VNfzmNEoLBM,6245
5
- deepagents/pretty_cli.py,sha256=h43O2j-NA3d6_blvB9_fikSstSY6Nske5K4PjYaOajc,10326
6
- deepagents/memory/__init__.py,sha256=AnII-JcpwkJlBNzReZy2mgWbZQ7nrc-QN9kNxPoK4fg,353
7
- deepagents/memory/protocol.py,sha256=Rb_I6Fs27xL-iwHIiD60JluWcho_B_LilamAVlRs8RE,6100
8
- deepagents/memory/backends/__init__.py,sha256=PdBH3KkEuVAp5SHmGlitM80OV5JXzhfjfehTMOe5Zg4,472
9
- deepagents/memory/backends/composite.py,sha256=Ar53CGX8yzJrjOqV1dy3i7iGvzEkTfJgwIUYK9ffV14,10261
10
- deepagents/memory/backends/filesystem.py,sha256=-i_OG2K-dyPROXlKbKgIBvHdj0MWQUWzy7xm603kjWY,11684
11
- deepagents/memory/backends/state.py,sha256=iP46YlS1lR65WE5lGj2J1cH09UGjntoESVQ_v42Co9Y,6754
12
- deepagents/memory/backends/store.py,sha256=aWhpiR43-32HwO2VlL238_OqhU7qVabUL6i49UINaH8,11822
13
- deepagents/memory/backends/utils.py,sha256=n7z73Jes7qZUN8-Tjbz6fFAoZ3XHqZpm5rD9i-0Uvbk,9605
14
- deepagents/middleware/__init__.py,sha256=Uf4L69XweeHTcQiFz-IEd27wM5L8Mrq5u8OpJ3nwvQY,400
15
- deepagents/middleware/agent_memory.py,sha256=4bMs-EFbp0-pqDDfOjh_kQkP49M_p5KvUL7JafC4rag,8061
16
- deepagents/middleware/filesystem.py,sha256=oPTlcW35ijcB643pX4PldF3Qxpj-o2wEdQ9HILx7SLk,25334
17
- deepagents/middleware/patch_tool_calls.py,sha256=Cu8rUpt1GjrYgfMvZG6wOowvnmFeYTCauOJhlltNPmo,2045
18
- deepagents/middleware/subagents.py,sha256=NH7QEShEPAosc3HLbSFwlgtlZv3SZpkPEAqHRbuqE_c,23538
19
- deepagents_cli-0.0.3.dist-info/licenses/LICENSE,sha256=c__BaxUCK69leo2yEKynf8lWndu8iwYwge1CbyqAe-E,1071
20
- deepagents_cli-0.0.3.dist-info/METADATA,sha256=r7jWMUaQJIf22JG6x9_bOrqoFVE1gqItgV3oI21B-M4,19792
21
- deepagents_cli-0.0.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
22
- deepagents_cli-0.0.3.dist-info/entry_points.txt,sha256=5qO2sNhal5xQqcexm2VtT981A29FBKt-75aE4gatH8Q,55
23
- deepagents_cli-0.0.3.dist-info/top_level.txt,sha256=drAzchOzPNePwpb3_pbPuvLuayXkN7SNqeIKMBWJoAo,11
24
- deepagents_cli-0.0.3.dist-info/RECORD,,
@@ -1,2 +0,0 @@
1
- [console_scripts]
2
- deepagents = deepagents.cli:cli_main
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 Harrison Chase
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1 +0,0 @@
1
- deepagents