debuganything 1.0.0__tar.gz → 1.1.0__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.
@@ -8,8 +8,8 @@ examples/**/__pycache__/
8
8
  *.pcap
9
9
  *.heapsnapshot
10
10
  .vhs-out/
11
- .lab-dea/
12
- .lab-dea/
11
+ .lab-debuganything/
12
+ .lab-debuganything/
13
13
  python/dist/
14
14
  python/**/__pycache__/
15
15
  python/*.egg-info/
@@ -19,3 +19,4 @@ _site/
19
19
 
20
20
  # fixtures are real captured tool output; never ignore them
21
21
  !tests/fixtures/**
22
+
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 Shreyas Sawant and DEA contributors
3
+ Copyright (c) 2026 Shreyas Sawant and Debug Anything contributors
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: debuganything
3
- Version: 1.0.0
3
+ Version: 1.1.0
4
4
  Summary: Debug Anything from Python agents: observe running processes (strace, py-spy, perf, lsof, tcpdump, gdb/lldb, heap snapshots) and get evidence-backed findings. Wraps the Debug Anything CLI/MCP server; tool adapters for LangChain, LlamaIndex and CrewAI.
5
5
  Project-URL: Homepage, https://github.com/shreyassaw5394/debuganything
6
6
  Project-URL: Documentation, https://github.com/shreyassaw5394/debuganything/tree/main/docs
@@ -49,7 +49,7 @@ pip install 'debuganything[crewai]' # + CrewAI BaseTools
49
49
  ```python
50
50
  from debuganything import DebugAnything
51
51
 
52
- debuganything = DEA() # uses `debuganything` if installed, else `npx -y debuganything@latest`
52
+ debuganything = DebugAnything() # uses `debuganything` if installed, else `npx -y debuganything@1.1.0`
53
53
  print(da.readiness()["findings"])
54
54
  s = da.attach(12345) # pid, "my-container", "ns/pod", or a command
55
55
  before = da.snapshot_memory(s)
@@ -69,36 +69,36 @@ Every call returns the Debug Anything `ToolResult` dict (`ok`, `findings`, `evid
69
69
  ## LangChain
70
70
 
71
71
  ```python
72
- from debuganything.langchain import dea_tools
72
+ from debuganything.langchain import debuganything_tools
73
73
  from langgraph.prebuilt import create_react_agent
74
74
 
75
- agent = create_react_agent(llm, dea_tools())
75
+ agent = create_react_agent(llm, debuganything_tools())
76
76
  agent.invoke({"messages": [("user", "pid 12345 is slow — attach and tell me why, with evidence")]})
77
77
  ```
78
78
 
79
79
  ## LlamaIndex
80
80
 
81
81
  ```python
82
- from debuganything.llamaindex import dea_tools
82
+ from debuganything.llamaindex import debuganything_tools
83
83
  from llama_index.core.agent import ReActAgent
84
84
 
85
- agent = ReActAgent.from_tools(dea_tools(), llm=llm, verbose=True)
85
+ agent = ReActAgent.from_tools(debuganything_tools(), llm=llm, verbose=True)
86
86
  ```
87
87
 
88
88
  ## CrewAI
89
89
 
90
90
  ```python
91
- from debuganything.crewai import dea_tools
91
+ from debuganything.crewai import debuganything_tools
92
92
  from crewai import Agent
93
93
 
94
- sre = Agent(role="SRE", goal="Diagnose the hung worker with evidence, never guess", tools=dea_tools(), llm=llm)
94
+ sre = Agent(role="SRE", goal="Diagnose the hung worker with evidence, never guess", tools=debuganything_tools(), llm=llm)
95
95
  ```
96
96
 
97
97
  ## Or just use MCP
98
98
 
99
99
  Any framework with MCP support (LangChain `langchain-mcp-adapters`, LlamaIndex
100
100
  `McpToolSpec`, CrewAI `MCPServerAdapter`, Claude Code, Codex, Cursor…) can run
101
- Debug Anything directly: `{"command": "npx", "args": ["-y", "debuganything@latest", "serve"]}`.
101
+ Debug Anything directly: `{"command": "npx", "args": ["-y", "debuganything@1.1.0", "serve"]}`.
102
102
  Same 14 tools, same ToolResult, plus the guided prompts.
103
103
 
104
104
  ## Safety
@@ -109,4 +109,4 @@ what it returns, and keeps raw artifacts under `~/.debuganything/sessions/`. See
109
109
 
110
110
  ## License and disclaimer
111
111
 
112
- MIT. Provided "as is", without warranty of any kind; the authors accept no liability for any damage arising from use. Only observe systems you own or are explicitly authorized to debug — you are solely responsible for authorization and legal compliance. Findings are automated diagnostics, not professional advice. See the full [DISCLAIMER](https://github.com/shreyassaw5394/debuganything/blob/main/DISCLAIMER.md).
112
+ MIT. Debug Anything is a free, non-commercial passion project by an independent developer. Provided "as is", without warranty of any kind; the authors accept no liability for any damage arising from use. Only observe systems you own or are explicitly authorized to debug — you are solely responsible for authorization and legal compliance. Findings are automated diagnostics, not professional advice. See the full [DISCLAIMER](https://github.com/shreyassaw5394/debuganything/blob/main/DISCLAIMER.md).
@@ -21,7 +21,7 @@ pip install 'debuganything[crewai]' # + CrewAI BaseTools
21
21
  ```python
22
22
  from debuganything import DebugAnything
23
23
 
24
- debuganything = DEA() # uses `debuganything` if installed, else `npx -y debuganything@latest`
24
+ debuganything = DebugAnything() # uses `debuganything` if installed, else `npx -y debuganything@1.1.0`
25
25
  print(da.readiness()["findings"])
26
26
  s = da.attach(12345) # pid, "my-container", "ns/pod", or a command
27
27
  before = da.snapshot_memory(s)
@@ -41,36 +41,36 @@ Every call returns the Debug Anything `ToolResult` dict (`ok`, `findings`, `evid
41
41
  ## LangChain
42
42
 
43
43
  ```python
44
- from debuganything.langchain import dea_tools
44
+ from debuganything.langchain import debuganything_tools
45
45
  from langgraph.prebuilt import create_react_agent
46
46
 
47
- agent = create_react_agent(llm, dea_tools())
47
+ agent = create_react_agent(llm, debuganything_tools())
48
48
  agent.invoke({"messages": [("user", "pid 12345 is slow — attach and tell me why, with evidence")]})
49
49
  ```
50
50
 
51
51
  ## LlamaIndex
52
52
 
53
53
  ```python
54
- from debuganything.llamaindex import dea_tools
54
+ from debuganything.llamaindex import debuganything_tools
55
55
  from llama_index.core.agent import ReActAgent
56
56
 
57
- agent = ReActAgent.from_tools(dea_tools(), llm=llm, verbose=True)
57
+ agent = ReActAgent.from_tools(debuganything_tools(), llm=llm, verbose=True)
58
58
  ```
59
59
 
60
60
  ## CrewAI
61
61
 
62
62
  ```python
63
- from debuganything.crewai import dea_tools
63
+ from debuganything.crewai import debuganything_tools
64
64
  from crewai import Agent
65
65
 
66
- sre = Agent(role="SRE", goal="Diagnose the hung worker with evidence, never guess", tools=dea_tools(), llm=llm)
66
+ sre = Agent(role="SRE", goal="Diagnose the hung worker with evidence, never guess", tools=debuganything_tools(), llm=llm)
67
67
  ```
68
68
 
69
69
  ## Or just use MCP
70
70
 
71
71
  Any framework with MCP support (LangChain `langchain-mcp-adapters`, LlamaIndex
72
72
  `McpToolSpec`, CrewAI `MCPServerAdapter`, Claude Code, Codex, Cursor…) can run
73
- Debug Anything directly: `{"command": "npx", "args": ["-y", "debuganything@latest", "serve"]}`.
73
+ Debug Anything directly: `{"command": "npx", "args": ["-y", "debuganything@1.1.0", "serve"]}`.
74
74
  Same 14 tools, same ToolResult, plus the guided prompts.
75
75
 
76
76
  ## Safety
@@ -81,4 +81,4 @@ what it returns, and keeps raw artifacts under `~/.debuganything/sessions/`. See
81
81
 
82
82
  ## License and disclaimer
83
83
 
84
- MIT. Provided "as is", without warranty of any kind; the authors accept no liability for any damage arising from use. Only observe systems you own or are explicitly authorized to debug — you are solely responsible for authorization and legal compliance. Findings are automated diagnostics, not professional advice. See the full [DISCLAIMER](https://github.com/shreyassaw5394/debuganything/blob/main/DISCLAIMER.md).
84
+ MIT. Debug Anything is a free, non-commercial passion project by an independent developer. Provided "as is", without warranty of any kind; the authors accept no liability for any damage arising from use. Only observe systems you own or are explicitly authorized to debug — you are solely responsible for authorization and legal compliance. Findings are automated diagnostics, not professional advice. See the full [DISCLAIMER](https://github.com/shreyassaw5394/debuganything/blob/main/DISCLAIMER.md).
@@ -6,7 +6,7 @@ method returns the Debug Anything ``ToolResult`` dict: ``findings`` cite ``evide
6
6
  files under ``~/.debuganything/sessions/<id>/``.
7
7
 
8
8
  from debuganything import DebugAnything
9
- debuganything = DEA()
9
+ debuganything = DebugAnything()
10
10
  s = da.attach(12345)
11
11
  print(da.profile_cpu(s, duration_s=10)["findings"])
12
12
  da.detach(s)
@@ -23,7 +23,7 @@ import shutil
23
23
  import subprocess
24
24
  from typing import Any, Dict, List, Optional, Sequence
25
25
 
26
- __version__ = "0.1.1"
26
+ __version__ = "1.1.0"
27
27
  __all__ = ["DebugAnything", "DebugAnythingError", "TOOLS", "ToolResult"]
28
28
 
29
29
  ToolResult = Dict[str, Any]
@@ -55,7 +55,7 @@ class DebugAnything:
55
55
  """Client for the Debug Anything CLI.
56
56
 
57
57
  Args:
58
- command: how to invoke DebugAnything. Defaults to ``["npx", "-y", "debuganything@latest"]``;
58
+ command: how to invoke DebugAnything. Defaults to ``["npx", "-y", "debuganything@1.1.0"]``;
59
59
  pass ``["debuganything"]`` if installed globally. ``DEA_COMMAND`` env var (shell-split) overrides.
60
60
  timeout: subprocess timeout in seconds (Debug Anything itself caps tools at 60 s).
61
61
  raise_on_error: raise ``DebugAnythingError`` when ``ok`` is false instead of returning the result.
@@ -66,7 +66,7 @@ class DebugAnything:
66
66
  if command is None and env_cmd:
67
67
  command = env_cmd.split()
68
68
  if command is None:
69
- command = ["debuganything"] if shutil.which("debuganything") else ["npx", "-y", "debuganything@latest"]
69
+ command = ["debuganything"] if shutil.which("debuganything") else ["npx", "-y", "debuganything@1.1.0"]
70
70
  self.command: List[str] = list(command)
71
71
  self.timeout = timeout
72
72
  self.raise_on_error = raise_on_error
@@ -1,7 +1,7 @@
1
1
  """CrewAI tools for DebugAnything.
2
2
 
3
- from debuganything.crewai import dea_tools
4
- agent = Agent(role="SRE", goal="diagnose the slow API with evidence", tools=dea_tools(), ...)
3
+ from debuganything.crewai import debuganything_tools
4
+ agent = Agent(role="SRE", goal="diagnose the slow API with evidence", tools=debuganything_tools(), ...)
5
5
 
6
6
  Requires ``pip install debuganything[crewai]``.
7
7
  """
@@ -31,8 +31,8 @@ def _model(tool: str) -> Type[BaseModel]:
31
31
  return create_model(f"Dea{tool.title().replace('_', '')}Args", **fields) # type: ignore[call-overload]
32
32
 
33
33
 
34
- def dea_tools(client: Optional[DebugAnything] = None, include: Optional[List[str]] = None) -> List["BaseTool"]:
35
- debuganything = client or DEA()
34
+ def debuganything_tools(client: Optional[DebugAnything] = None, include: Optional[List[str]] = None) -> List["BaseTool"]:
35
+ debuganything = client or DebugAnything()
36
36
  out: List[BaseTool] = []
37
37
  for tool_name, desc in TOOLS.items():
38
38
  if include and tool_name not in include:
@@ -1,7 +1,7 @@
1
1
  """LangChain tools for DebugAnything.
2
2
 
3
- from debuganything.langchain import dea_tools
4
- tools = dea_tools() # 14 StructuredTools, one per Debug Anything tool
3
+ from debuganything.langchain import debuganything_tools
4
+ tools = debuganything_tools() # 14 StructuredTools, one per Debug Anything tool
5
5
  agent = create_react_agent(llm, tools)
6
6
 
7
7
  Each tool returns the ToolResult as a JSON string. Requires ``pip install debuganything[langchain]``.
@@ -33,9 +33,9 @@ def _model(tool: str) -> Type[BaseModel]:
33
33
  return create_model(f"Dea{tool.title().replace('_', '')}Args", **fields) # type: ignore[call-overload]
34
34
 
35
35
 
36
- def dea_tools(client: Optional[DebugAnything] = None, include: Optional[List[str]] = None) -> List["StructuredTool"]:
36
+ def debuganything_tools(client: Optional[DebugAnything] = None, include: Optional[List[str]] = None) -> List["StructuredTool"]:
37
37
  """Build one LangChain StructuredTool per Debug Anything tool."""
38
- debuganything = client or DEA()
38
+ debuganything = client or DebugAnything()
39
39
  out: List[StructuredTool] = []
40
40
  for name, desc in TOOLS.items():
41
41
  if include and name not in include:
@@ -1,7 +1,7 @@
1
1
  """LlamaIndex FunctionTools for DebugAnything.
2
2
 
3
- from debuganything.llamaindex import dea_tools
4
- agent = ReActAgent.from_tools(dea_tools(), llm=llm)
3
+ from debuganything.llamaindex import debuganything_tools
4
+ agent = ReActAgent.from_tools(debuganything_tools(), llm=llm)
5
5
 
6
6
  Requires ``pip install debuganything[llamaindex]``.
7
7
  """
@@ -18,8 +18,8 @@ except ImportError as e: # pragma: no cover
18
18
  raise ImportError("pip install 'debuganything[llamaindex]'") from e
19
19
 
20
20
 
21
- def dea_tools(client: Optional[DebugAnything] = None, include: Optional[List[str]] = None) -> List["FunctionTool"]:
22
- debuganything = client or DEA()
21
+ def debuganything_tools(client: Optional[DebugAnything] = None, include: Optional[List[str]] = None) -> List["FunctionTool"]:
22
+ debuganything = client or DebugAnything()
23
23
  out: List[FunctionTool] = []
24
24
  for name, desc in TOOLS.items():
25
25
  if include and name not in include:
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "debuganything"
7
- version = "1.0.0"
7
+ version = "1.1.0"
8
8
  description = "Debug Anything from Python agents: observe running processes (strace, py-spy, perf, lsof, tcpdump, gdb/lldb, heap snapshots) and get evidence-backed findings. Wraps the Debug Anything CLI/MCP server; tool adapters for LangChain, LlamaIndex and CrewAI."
9
9
  readme = "README.md"
10
10
  license = "MIT"