arca-agent 0.2.2__tar.gz → 0.2.5__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.
- {arca_agent-0.2.2/arca_agent.egg-info → arca_agent-0.2.5}/PKG-INFO +32 -9
- {arca_agent-0.2.2 → arca_agent-0.2.5}/README.md +15 -9
- arca_agent-0.2.5/arca/__version__.py +1 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca/core/config.py +1 -1
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca/llm/providers.py +21 -18
- {arca_agent-0.2.2 → arca_agent-0.2.5/arca_agent.egg-info}/PKG-INFO +32 -9
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca_agent.egg-info/SOURCES.txt +0 -1
- arca_agent-0.2.5/arca_agent.egg-info/requires.txt +34 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/pyproject.toml +10 -1
- arca_agent-0.2.2/arca/__version__.py +0 -1
- arca_agent-0.2.2/arca/_cpp_sim.cpython-312-x86_64-linux-gnu.so +0 -0
- arca_agent-0.2.2/arca_agent.egg-info/requires.txt +0 -17
- {arca_agent-0.2.2 → arca_agent-0.2.5}/MANIFEST.in +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca/__init__.py +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca/agents/__init__.py +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca/agents/langgraph_orchestrator.py +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca/api/__init__.py +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca/api/server.py +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca/cli.py +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca/core/__init__.py +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca/core/agent.py +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca/core/trainer.py +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca/cpp_ext/__init__.py +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca/cpp_ext/sim_engine.cpp +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca/llm/__init__.py +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca/sim/__init__.py +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca/sim/action.py +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca/sim/custom_network.py +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca/sim/environment.py +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca/sim/host.py +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca/sim/network_generator.py +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca/utils/__init__.py +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca/viz/__init__.py +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca/viz/visualizer.py +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca_agent.egg-info/dependency_links.txt +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca_agent.egg-info/entry_points.txt +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca_agent.egg-info/not-zip-safe +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/arca_agent.egg-info/top_level.txt +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/setup.cfg +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/setup.py +0 -0
- {arca_agent-0.2.2 → arca_agent-0.2.5}/tests/test_arca.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: arca-agent
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.5
|
|
4
4
|
Summary: ARCA — Local RL-powered Autonomous Cyber Pentesting Agent with LangGraph
|
|
5
5
|
Home-page: https://github.com/dipayandasgupta/arca
|
|
6
6
|
Author: Dipayan Dasgupta
|
|
@@ -11,6 +11,23 @@ Project-URL: Repository, https://github.com/DipayanDasgupta/arca
|
|
|
11
11
|
Keywords: reinforcement-learning,cybersecurity,pentesting,langgraph,agentic-ai,pybind11
|
|
12
12
|
Requires-Python: >=3.10
|
|
13
13
|
Description-Content-Type: text/markdown
|
|
14
|
+
Requires-Dist: numpy>=1.24
|
|
15
|
+
Requires-Dist: gymnasium>=0.29
|
|
16
|
+
Requires-Dist: stable-baselines3>=2.2
|
|
17
|
+
Requires-Dist: networkx>=3.0
|
|
18
|
+
Requires-Dist: torch>=2.0
|
|
19
|
+
Requires-Dist: fastapi>=0.110
|
|
20
|
+
Requires-Dist: uvicorn[standard]>=0.29
|
|
21
|
+
Requires-Dist: pydantic>=2.0
|
|
22
|
+
Requires-Dist: rich>=13.0
|
|
23
|
+
Requires-Dist: typer>=0.12
|
|
24
|
+
Requires-Dist: matplotlib>=3.8
|
|
25
|
+
Requires-Dist: plotly>=5.20
|
|
26
|
+
Requires-Dist: langgraph>=0.1
|
|
27
|
+
Requires-Dist: langchain>=0.2
|
|
28
|
+
Requires-Dist: ollama>=0.2
|
|
29
|
+
Requires-Dist: pyyaml>=6.0
|
|
30
|
+
Requires-Dist: pandas>=2.0
|
|
14
31
|
Provides-Extra: dev
|
|
15
32
|
Requires-Dist: pytest; extra == "dev"
|
|
16
33
|
Requires-Dist: black; extra == "dev"
|
|
@@ -28,17 +45,23 @@ Dynamic: author
|
|
|
28
45
|
Dynamic: home-page
|
|
29
46
|
Dynamic: requires-python
|
|
30
47
|
|
|
48
|
+
<div align="center">
|
|
49
|
+
<img src="https://github.com/DipayanDasgupta/arca/raw/main/logo.png"
|
|
50
|
+
alt="ARCA Logo"
|
|
51
|
+
width="320">
|
|
52
|
+
|
|
53
|
+
<h1>ARCA — Autonomous Reinforcement Cyber Agent</h1>
|
|
31
54
|
|
|
55
|
+
> **A fully local, pip-installable RL-powered cyber pentesting simulation framework with LangGraph orchestration and optional C++ acceleration.**
|
|
32
56
|
|
|
33
|
-
|
|
57
|
+
[](https://pypi.org/project/arca-agent/0.2.3/)
|
|
58
|
+
[](https://python.org)
|
|
59
|
+
[](LICENSE)
|
|
60
|
+
[](https://stable-baselines3.readthedocs.io)
|
|
61
|
+
[](https://langchain-ai.github.io/langgraph)
|
|
62
|
+
</div>
|
|
34
63
|
|
|
35
|
-
>
|
|
36
|
-
|
|
37
|
-
[](https://pypi.org/project/arca-agent/)
|
|
38
|
-
[](https://python.org)
|
|
39
|
-
[](LICENSE)
|
|
40
|
-
[](https://stable-baselines3.readthedocs.io)
|
|
41
|
-
[](https://langchain-ai.github.io/langgraph)
|
|
64
|
+
<br>
|
|
42
65
|
|
|
43
66
|
---
|
|
44
67
|
|
|
@@ -1,14 +1,20 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<img src="https://github.com/DipayanDasgupta/arca/raw/main/logo.png"
|
|
3
|
+
alt="ARCA Logo"
|
|
4
|
+
width="320">
|
|
5
|
+
|
|
6
|
+
<h1>ARCA — Autonomous Reinforcement Cyber Agent</h1>
|
|
1
7
|
|
|
8
|
+
> **A fully local, pip-installable RL-powered cyber pentesting simulation framework with LangGraph orchestration and optional C++ acceleration.**
|
|
2
9
|
|
|
3
|
-
|
|
10
|
+
[](https://pypi.org/project/arca-agent/0.2.3/)
|
|
11
|
+
[](https://python.org)
|
|
12
|
+
[](LICENSE)
|
|
13
|
+
[](https://stable-baselines3.readthedocs.io)
|
|
14
|
+
[](https://langchain-ai.github.io/langgraph)
|
|
15
|
+
</div>
|
|
4
16
|
|
|
5
|
-
>
|
|
6
|
-
|
|
7
|
-
[](https://pypi.org/project/arca-agent/)
|
|
8
|
-
[](https://python.org)
|
|
9
|
-
[](LICENSE)
|
|
10
|
-
[](https://stable-baselines3.readthedocs.io)
|
|
11
|
-
[](https://langchain-ai.github.io/langgraph)
|
|
17
|
+
<br>
|
|
12
18
|
|
|
13
19
|
---
|
|
14
20
|
|
|
@@ -197,4 +203,4 @@ ARCA is a **simulation and education tool only**. All attack actions run inside
|
|
|
197
203
|
## Author
|
|
198
204
|
|
|
199
205
|
**Dipayan Dasgupta** — IIT Madras, Civil Engineering
|
|
200
|
-
[GitHub](https://github.com/dipayandasgupta) · [LinkedIn](https://www.linkedin.com/in/dipayan-dasgupta-24a24719b/)
|
|
206
|
+
[GitHub](https://github.com/dipayandasgupta) · [LinkedIn](https://www.linkedin.com/in/dipayan-dasgupta-24a24719b/)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.2.5"
|
|
@@ -53,7 +53,7 @@ class RLConfig:
|
|
|
53
53
|
class LLMConfig:
|
|
54
54
|
"""LangGraph / LLM critic and reflection settings."""
|
|
55
55
|
enabled: bool = True
|
|
56
|
-
provider:
|
|
56
|
+
provider: str = "auto"
|
|
57
57
|
model: str = "llama3" # ollama model name or API model id
|
|
58
58
|
base_url: str = "http://localhost:11434"
|
|
59
59
|
temperature: float = 0.2
|
|
@@ -19,13 +19,9 @@ Setup:
|
|
|
19
19
|
Claude: export ANTHROPIC_API_KEY=sk-ant-...
|
|
20
20
|
"""
|
|
21
21
|
|
|
22
|
-
from __future__ import annotations
|
|
23
|
-
|
|
24
22
|
import os
|
|
25
|
-
import time
|
|
26
23
|
from abc import ABC, abstractmethod
|
|
27
24
|
from typing import Optional
|
|
28
|
-
from dataclasses import dataclass
|
|
29
25
|
|
|
30
26
|
|
|
31
27
|
# ── Base interface ────────────────────────────────────────────────────────────
|
|
@@ -97,7 +93,7 @@ class OllamaProvider(LLMProvider):
|
|
|
97
93
|
return data.get("response", "").strip()
|
|
98
94
|
|
|
99
95
|
|
|
100
|
-
# ── Groq (
|
|
96
|
+
# ── Groq (fixed - forces correct model) ───────────────────────────────────────
|
|
101
97
|
|
|
102
98
|
class GroqProvider(LLMProvider):
|
|
103
99
|
"""
|
|
@@ -108,12 +104,12 @@ class GroqProvider(LLMProvider):
|
|
|
108
104
|
Best models for ARCA:
|
|
109
105
|
llama-3.1-8b-instant — fast, good reasoning
|
|
110
106
|
llama-3.3-70b-versatile — slow but very capable
|
|
111
|
-
mixtral-8x7b-32768 — good for long context
|
|
112
107
|
"""
|
|
113
108
|
|
|
114
109
|
def __init__(self, model: str = "llama-3.1-8b-instant", api_key: Optional[str] = None):
|
|
115
|
-
|
|
116
|
-
self.
|
|
110
|
+
# Force correct model - ignore any wrong "llama3" passed from orchestrator
|
|
111
|
+
self.model = "llama-3.1-8b-instant" if model in ("llama3", "llama-3") else model
|
|
112
|
+
self.api_key = (api_key or os.environ.get("GROQ_API_KEY", "")).strip()
|
|
117
113
|
self._client = None
|
|
118
114
|
|
|
119
115
|
@property
|
|
@@ -121,7 +117,8 @@ class GroqProvider(LLMProvider):
|
|
|
121
117
|
return f"groq:{self.model}"
|
|
122
118
|
|
|
123
119
|
def is_available(self) -> bool:
|
|
124
|
-
|
|
120
|
+
# Strict check: must start with 'gsk_' and not be empty
|
|
121
|
+
return bool(self.api_key and self.api_key.startswith("gsk_"))
|
|
125
122
|
|
|
126
123
|
def _get_client(self):
|
|
127
124
|
if self._client is None:
|
|
@@ -130,17 +127,23 @@ class GroqProvider(LLMProvider):
|
|
|
130
127
|
self._client = Groq(api_key=self.api_key)
|
|
131
128
|
except ImportError:
|
|
132
129
|
raise ImportError("Install groq: pip install groq")
|
|
130
|
+
except Exception as e:
|
|
131
|
+
raise RuntimeError(f"Failed to initialize Groq client: {e}")
|
|
133
132
|
return self._client
|
|
134
133
|
|
|
135
134
|
def complete(self, prompt: str, max_tokens: int = 512) -> str:
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
135
|
+
try:
|
|
136
|
+
client = self._get_client()
|
|
137
|
+
response = client.chat.completions.create(
|
|
138
|
+
model=self.model,
|
|
139
|
+
messages=[{"role": "user", "content": prompt}],
|
|
140
|
+
max_tokens=max_tokens,
|
|
141
|
+
temperature=0.2,
|
|
142
|
+
)
|
|
143
|
+
return response.choices[0].message.content.strip()
|
|
144
|
+
except Exception as e:
|
|
145
|
+
# Let the caller know it failed so fallback can trigger cleanly
|
|
146
|
+
raise RuntimeError(f"Groq API call failed: {e}")
|
|
144
147
|
|
|
145
148
|
|
|
146
149
|
# ── Anthropic / Claude ────────────────────────────────────────────────────────
|
|
@@ -343,7 +346,7 @@ def list_providers() -> list[dict]:
|
|
|
343
346
|
{
|
|
344
347
|
"name": "groq",
|
|
345
348
|
"model": "llama-3.1-8b-instant",
|
|
346
|
-
"available":
|
|
349
|
+
"available": GroqProvider().is_available(), # Uses improved check
|
|
347
350
|
"setup": "export GROQ_API_KEY=gsk_... (free at console.groq.com)",
|
|
348
351
|
"cost": "Free tier",
|
|
349
352
|
"speed": "Very fast",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: arca-agent
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.5
|
|
4
4
|
Summary: ARCA — Local RL-powered Autonomous Cyber Pentesting Agent with LangGraph
|
|
5
5
|
Home-page: https://github.com/dipayandasgupta/arca
|
|
6
6
|
Author: Dipayan Dasgupta
|
|
@@ -11,6 +11,23 @@ Project-URL: Repository, https://github.com/DipayanDasgupta/arca
|
|
|
11
11
|
Keywords: reinforcement-learning,cybersecurity,pentesting,langgraph,agentic-ai,pybind11
|
|
12
12
|
Requires-Python: >=3.10
|
|
13
13
|
Description-Content-Type: text/markdown
|
|
14
|
+
Requires-Dist: numpy>=1.24
|
|
15
|
+
Requires-Dist: gymnasium>=0.29
|
|
16
|
+
Requires-Dist: stable-baselines3>=2.2
|
|
17
|
+
Requires-Dist: networkx>=3.0
|
|
18
|
+
Requires-Dist: torch>=2.0
|
|
19
|
+
Requires-Dist: fastapi>=0.110
|
|
20
|
+
Requires-Dist: uvicorn[standard]>=0.29
|
|
21
|
+
Requires-Dist: pydantic>=2.0
|
|
22
|
+
Requires-Dist: rich>=13.0
|
|
23
|
+
Requires-Dist: typer>=0.12
|
|
24
|
+
Requires-Dist: matplotlib>=3.8
|
|
25
|
+
Requires-Dist: plotly>=5.20
|
|
26
|
+
Requires-Dist: langgraph>=0.1
|
|
27
|
+
Requires-Dist: langchain>=0.2
|
|
28
|
+
Requires-Dist: ollama>=0.2
|
|
29
|
+
Requires-Dist: pyyaml>=6.0
|
|
30
|
+
Requires-Dist: pandas>=2.0
|
|
14
31
|
Provides-Extra: dev
|
|
15
32
|
Requires-Dist: pytest; extra == "dev"
|
|
16
33
|
Requires-Dist: black; extra == "dev"
|
|
@@ -28,17 +45,23 @@ Dynamic: author
|
|
|
28
45
|
Dynamic: home-page
|
|
29
46
|
Dynamic: requires-python
|
|
30
47
|
|
|
48
|
+
<div align="center">
|
|
49
|
+
<img src="https://github.com/DipayanDasgupta/arca/raw/main/logo.png"
|
|
50
|
+
alt="ARCA Logo"
|
|
51
|
+
width="320">
|
|
52
|
+
|
|
53
|
+
<h1>ARCA — Autonomous Reinforcement Cyber Agent</h1>
|
|
31
54
|
|
|
55
|
+
> **A fully local, pip-installable RL-powered cyber pentesting simulation framework with LangGraph orchestration and optional C++ acceleration.**
|
|
32
56
|
|
|
33
|
-
|
|
57
|
+
[](https://pypi.org/project/arca-agent/0.2.3/)
|
|
58
|
+
[](https://python.org)
|
|
59
|
+
[](LICENSE)
|
|
60
|
+
[](https://stable-baselines3.readthedocs.io)
|
|
61
|
+
[](https://langchain-ai.github.io/langgraph)
|
|
62
|
+
</div>
|
|
34
63
|
|
|
35
|
-
>
|
|
36
|
-
|
|
37
|
-
[](https://pypi.org/project/arca-agent/)
|
|
38
|
-
[](https://python.org)
|
|
39
|
-
[](LICENSE)
|
|
40
|
-
[](https://stable-baselines3.readthedocs.io)
|
|
41
|
-
[](https://langchain-ai.github.io/langgraph)
|
|
64
|
+
<br>
|
|
42
65
|
|
|
43
66
|
---
|
|
44
67
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
numpy>=1.24
|
|
2
|
+
gymnasium>=0.29
|
|
3
|
+
stable-baselines3>=2.2
|
|
4
|
+
networkx>=3.0
|
|
5
|
+
torch>=2.0
|
|
6
|
+
fastapi>=0.110
|
|
7
|
+
uvicorn[standard]>=0.29
|
|
8
|
+
pydantic>=2.0
|
|
9
|
+
rich>=13.0
|
|
10
|
+
typer>=0.12
|
|
11
|
+
matplotlib>=3.8
|
|
12
|
+
plotly>=5.20
|
|
13
|
+
langgraph>=0.1
|
|
14
|
+
langchain>=0.2
|
|
15
|
+
ollama>=0.2
|
|
16
|
+
pyyaml>=6.0
|
|
17
|
+
pandas>=2.0
|
|
18
|
+
|
|
19
|
+
[all]
|
|
20
|
+
pybind11>=2.11
|
|
21
|
+
dash>=2.16
|
|
22
|
+
ollama>=0.2
|
|
23
|
+
|
|
24
|
+
[cpp]
|
|
25
|
+
pybind11>=2.11
|
|
26
|
+
|
|
27
|
+
[dev]
|
|
28
|
+
pytest
|
|
29
|
+
black
|
|
30
|
+
ruff
|
|
31
|
+
mypy
|
|
32
|
+
|
|
33
|
+
[viz]
|
|
34
|
+
dash>=2.16
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "arca-agent"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.5"
|
|
4
4
|
description = "ARCA — Local RL-powered Autonomous Cyber Pentesting Agent with LangGraph"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -8,6 +8,15 @@ license = {text = "MIT"}
|
|
|
8
8
|
authors = [{name = "Dipayan Dasgupta", email = "deep.dasgupta2006@gmail.com"}]
|
|
9
9
|
keywords = ["reinforcement-learning", "cybersecurity", "pentesting", "langgraph", "agentic-ai", "pybind11"]
|
|
10
10
|
|
|
11
|
+
dependencies = [
|
|
12
|
+
"numpy>=1.24", "gymnasium>=0.29", "stable-baselines3>=2.2",
|
|
13
|
+
"networkx>=3.0", "torch>=2.0", "fastapi>=0.110",
|
|
14
|
+
"uvicorn[standard]>=0.29", "pydantic>=2.0", "rich>=13.0",
|
|
15
|
+
"typer>=0.12", "matplotlib>=3.8", "plotly>=5.20",
|
|
16
|
+
"langgraph>=0.1", "langchain>=0.2", "ollama>=0.2",
|
|
17
|
+
"pyyaml>=6.0", "pandas>=2.0"
|
|
18
|
+
]
|
|
19
|
+
|
|
11
20
|
[project.urls]
|
|
12
21
|
Homepage = "https://github.com/DipayanDasgupta/arca"
|
|
13
22
|
Repository = "https://github.com/DipayanDasgupta/arca"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.1.5"
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|