bog-agents 0.5.2__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.
- bog_agents-0.5.2/PKG-INFO +183 -0
- bog_agents-0.5.2/README.md +150 -0
- bog_agents-0.5.2/bog_agents/__init__.py +120 -0
- bog_agents-0.5.2/bog_agents/_models.py +81 -0
- bog_agents-0.5.2/bog_agents/_version.py +3 -0
- bog_agents-0.5.2/bog_agents/backends/__init__.py +24 -0
- bog_agents-0.5.2/bog_agents/backends/composite.py +741 -0
- bog_agents-0.5.2/bog_agents/backends/filesystem.py +726 -0
- bog_agents-0.5.2/bog_agents/backends/local_shell.py +359 -0
- bog_agents-0.5.2/bog_agents/backends/protocol.py +518 -0
- bog_agents-0.5.2/bog_agents/backends/sandbox.py +445 -0
- bog_agents-0.5.2/bog_agents/backends/state.py +232 -0
- bog_agents-0.5.2/bog_agents/backends/store.py +627 -0
- bog_agents-0.5.2/bog_agents/backends/utils.py +560 -0
- bog_agents-0.5.2/bog_agents/base_prompt.md +50 -0
- bog_agents-0.5.2/bog_agents/feature_config.py +221 -0
- bog_agents-0.5.2/bog_agents/graph.py +868 -0
- bog_agents-0.5.2/bog_agents/middleware/__init__.py +234 -0
- bog_agents-0.5.2/bog_agents/middleware/_utils.py +23 -0
- bog_agents-0.5.2/bog_agents/middleware/adaptive_context.py +341 -0
- bog_agents-0.5.2/bog_agents/middleware/agent_replay.py +585 -0
- bog_agents-0.5.2/bog_agents/middleware/agent_teams.py +215 -0
- bog_agents-0.5.2/bog_agents/middleware/air_gapped.py +382 -0
- bog_agents-0.5.2/bog_agents/middleware/approval_gates.py +372 -0
- bog_agents-0.5.2/bog_agents/middleware/architect.py +198 -0
- bog_agents-0.5.2/bog_agents/middleware/audit_trail.py +371 -0
- bog_agents-0.5.2/bog_agents/middleware/auto_quality.py +366 -0
- bog_agents-0.5.2/bog_agents/middleware/automations.py +205 -0
- bog_agents-0.5.2/bog_agents/middleware/browser_agent.py +194 -0
- bog_agents-0.5.2/bog_agents/middleware/browser_agent_fa.py +193 -0
- bog_agents-0.5.2/bog_agents/middleware/checkpointing.py +287 -0
- bog_agents-0.5.2/bog_agents/middleware/citations.py +456 -0
- bog_agents-0.5.2/bog_agents/middleware/client_knowledge_base.py +404 -0
- bog_agents-0.5.2/bog_agents/middleware/client_reports.py +274 -0
- bog_agents-0.5.2/bog_agents/middleware/cloud_sandbox.py +187 -0
- bog_agents-0.5.2/bog_agents/middleware/code_intelligence.py +476 -0
- bog_agents-0.5.2/bog_agents/middleware/code_review.py +284 -0
- bog_agents-0.5.2/bog_agents/middleware/collaborative_sessions.py +265 -0
- bog_agents-0.5.2/bog_agents/middleware/competitive_intel.py +300 -0
- bog_agents-0.5.2/bog_agents/middleware/computer_use.py +180 -0
- bog_agents-0.5.2/bog_agents/middleware/context_packing.py +323 -0
- bog_agents-0.5.2/bog_agents/middleware/conversation_branch.py +232 -0
- bog_agents-0.5.2/bog_agents/middleware/cost_tracker.py +390 -0
- bog_agents-0.5.2/bog_agents/middleware/dashboard.py +362 -0
- bog_agents-0.5.2/bog_agents/middleware/deep_research.py +349 -0
- bog_agents-0.5.2/bog_agents/middleware/dlp.py +339 -0
- bog_agents-0.5.2/bog_agents/middleware/due_diligence.py +269 -0
- bog_agents-0.5.2/bog_agents/middleware/earnings_analysis.py +376 -0
- bog_agents-0.5.2/bog_agents/middleware/enhanced_skills.py +486 -0
- bog_agents-0.5.2/bog_agents/middleware/enterprise.py +376 -0
- bog_agents-0.5.2/bog_agents/middleware/fact_check.py +447 -0
- bog_agents-0.5.2/bog_agents/middleware/filesystem.py +1386 -0
- bog_agents-0.5.2/bog_agents/middleware/financial_data.py +306 -0
- bog_agents-0.5.2/bog_agents/middleware/firm_deployment.py +345 -0
- bog_agents-0.5.2/bog_agents/middleware/git_tools.py +215 -0
- bog_agents-0.5.2/bog_agents/middleware/hallucination_detection.py +425 -0
- bog_agents-0.5.2/bog_agents/middleware/hot_reload_skills.py +245 -0
- bog_agents-0.5.2/bog_agents/middleware/http_hooks.py +414 -0
- bog_agents-0.5.2/bog_agents/middleware/image_input.py +203 -0
- bog_agents-0.5.2/bog_agents/middleware/image_pdf_input.py +187 -0
- bog_agents-0.5.2/bog_agents/middleware/knowledge_graph.py +436 -0
- bog_agents-0.5.2/bog_agents/middleware/lifecycle_hooks.py +363 -0
- bog_agents-0.5.2/bog_agents/middleware/market_sentiment.py +275 -0
- bog_agents-0.5.2/bog_agents/middleware/meeting_prep.py +430 -0
- bog_agents-0.5.2/bog_agents/middleware/memory.py +354 -0
- bog_agents-0.5.2/bog_agents/middleware/messaging_integration.py +239 -0
- bog_agents-0.5.2/bog_agents/middleware/model_cascade.py +405 -0
- bog_agents-0.5.2/bog_agents/middleware/model_portfolio.py +344 -0
- bog_agents-0.5.2/bog_agents/middleware/multi_agent_orchestrator.py +224 -0
- bog_agents-0.5.2/bog_agents/middleware/multi_edit.py +173 -0
- bog_agents-0.5.2/bog_agents/middleware/multi_model.py +232 -0
- bog_agents-0.5.2/bog_agents/middleware/nl_query.py +312 -0
- bog_agents-0.5.2/bog_agents/middleware/notifications.py +257 -0
- bog_agents-0.5.2/bog_agents/middleware/offline_mode.py +436 -0
- bog_agents-0.5.2/bog_agents/middleware/opensearch_rag.py +383 -0
- bog_agents-0.5.2/bog_agents/middleware/parallel_agents.py +244 -0
- bog_agents-0.5.2/bog_agents/middleware/patch_tool_calls.py +44 -0
- bog_agents-0.5.2/bog_agents/middleware/pdf_reader.py +174 -0
- bog_agents-0.5.2/bog_agents/middleware/peer_comparison.py +319 -0
- bog_agents-0.5.2/bog_agents/middleware/plan_mode.py +160 -0
- bog_agents-0.5.2/bog_agents/middleware/plugin_system.py +294 -0
- bog_agents-0.5.2/bog_agents/middleware/portfolio_analysis.py +391 -0
- bog_agents-0.5.2/bog_agents/middleware/pr_management.py +228 -0
- bog_agents-0.5.2/bog_agents/middleware/rbac.py +383 -0
- bog_agents-0.5.2/bog_agents/middleware/read_many_files.py +133 -0
- bog_agents-0.5.2/bog_agents/middleware/reasoning_chain.py +355 -0
- bog_agents-0.5.2/bog_agents/middleware/regulatory_alerts.py +307 -0
- bog_agents-0.5.2/bog_agents/middleware/regulatory_impact.py +417 -0
- bog_agents-0.5.2/bog_agents/middleware/repo_map.py +349 -0
- bog_agents-0.5.2/bog_agents/middleware/safe_tools.py +170 -0
- bog_agents-0.5.2/bog_agents/middleware/saved_prompts.py +543 -0
- bog_agents-0.5.2/bog_agents/middleware/scenario_engine.py +278 -0
- bog_agents-0.5.2/bog_agents/middleware/scheduled_reports.py +358 -0
- bog_agents-0.5.2/bog_agents/middleware/scheduled_runs.py +574 -0
- bog_agents-0.5.2/bog_agents/middleware/security_audit.py +645 -0
- bog_agents-0.5.2/bog_agents/middleware/self_improving.py +423 -0
- bog_agents-0.5.2/bog_agents/middleware/skills.py +834 -0
- bog_agents-0.5.2/bog_agents/middleware/smart_approvals.py +387 -0
- bog_agents-0.5.2/bog_agents/middleware/smart_context.py +270 -0
- bog_agents-0.5.2/bog_agents/middleware/sso_auth.py +370 -0
- bog_agents-0.5.2/bog_agents/middleware/subagents.py +692 -0
- bog_agents-0.5.2/bog_agents/middleware/summarization.py +1505 -0
- bog_agents-0.5.2/bog_agents/middleware/tax_optimization.py +348 -0
- bog_agents-0.5.2/bog_agents/middleware/test_generation.py +220 -0
- bog_agents-0.5.2/bog_agents/middleware/version_control.py +250 -0
- bog_agents-0.5.2/bog_agents/middleware/voice_io.py +231 -0
- bog_agents-0.5.2/bog_agents/middleware/worktree.py +267 -0
- bog_agents-0.5.2/bog_agents/py.typed +0 -0
- bog_agents-0.5.2/bog_agents/sandbox/__init__.py +25 -0
- bog_agents-0.5.2/bog_agents/sandbox/local_sandbox.py +299 -0
- bog_agents-0.5.2/bog_agents/serve.py +471 -0
- bog_agents-0.5.2/bog_agents.egg-info/PKG-INFO +183 -0
- bog_agents-0.5.2/bog_agents.egg-info/SOURCES.txt +116 -0
- bog_agents-0.5.2/bog_agents.egg-info/dependency_links.txt +1 -0
- bog_agents-0.5.2/bog_agents.egg-info/requires.txt +10 -0
- bog_agents-0.5.2/bog_agents.egg-info/top_level.txt +1 -0
- bog_agents-0.5.2/pyproject.toml +244 -0
- bog_agents-0.5.2/setup.cfg +4 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: bog-agents
|
|
3
|
+
Version: 0.5.2
|
|
4
|
+
Summary: Bog Agents - batteries-included agent harness for building AI agents. Supports any major provider (Anthropic, OpenAI, AWS Bedrock, Google, etc.) and local models via Ollama. Built on LangGraph.
|
|
5
|
+
Author-email: bogware <support@bogware.com>
|
|
6
|
+
Maintainer-email: bogware <support@bogware.com>
|
|
7
|
+
License: MIT
|
|
8
|
+
Project-URL: Homepage, https://github.com/bogware/bog-agents
|
|
9
|
+
Project-URL: Repository, https://github.com/bogware/bog-agents
|
|
10
|
+
Project-URL: Issues, https://github.com/bogware/bog-agents/issues
|
|
11
|
+
Keywords: agents,ai,llm,langgraph,langchain,bog-agents,sub-agents,agentic,multi-provider,ollama
|
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
20
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
21
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
22
|
+
Requires-Python: <4.0,>=3.11
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
Requires-Dist: langchain-core<2.0.0,>=1.2.18
|
|
25
|
+
Requires-Dist: langchain<2.0.0,>=1.2.11
|
|
26
|
+
Requires-Dist: langchain-anthropic<2.0.0,>=1.3.4
|
|
27
|
+
Requires-Dist: langchain-google-genai<5.0.0,>=4.2.0
|
|
28
|
+
Requires-Dist: wcmatch
|
|
29
|
+
Provides-Extra: serve
|
|
30
|
+
Requires-Dist: starlette>=0.41.0; extra == "serve"
|
|
31
|
+
Requires-Dist: uvicorn>=0.34.0; extra == "serve"
|
|
32
|
+
Requires-Dist: sse-starlette>=2.0.0; extra == "serve"
|
|
33
|
+
|
|
34
|
+
# 🧠🤖 Bog Agents
|
|
35
|
+
|
|
36
|
+
[](https://pypi.org/project/bog-agents/#history)
|
|
37
|
+
[](https://opensource.org/licenses/MIT)
|
|
38
|
+
[](https://pypistats.org/packages/bog-agents)
|
|
39
|
+
[](https://x.com/langchain)
|
|
40
|
+
|
|
41
|
+
Looking for the JS/TS version? Check out [Bog Agents.js](https://github.com/langchain-ai/bog-agentsjs).
|
|
42
|
+
|
|
43
|
+
To help you ship LangChain apps to production faster, check out [LangSmith](https://smith.langchain.com).
|
|
44
|
+
LangSmith is a unified developer platform for building, testing, and monitoring LLM applications.
|
|
45
|
+
|
|
46
|
+
## Quick Install
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
pip install bog-agents
|
|
50
|
+
# or
|
|
51
|
+
uv add bog-agents
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Getting Started
|
|
55
|
+
|
|
56
|
+
1. **Set your API key** (the default model uses Anthropic):
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
export ANTHROPIC_API_KEY="sk-ant-..."
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Or for OpenAI, Google, etc.:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
export OPENAI_API_KEY="sk-..."
|
|
66
|
+
export GOOGLE_API_KEY="AI..."
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
2. **Create and run an agent**:
|
|
70
|
+
|
|
71
|
+
```python
|
|
72
|
+
from bog_agents import create_agent
|
|
73
|
+
|
|
74
|
+
# Uses Claude Sonnet by default (needs ANTHROPIC_API_KEY)
|
|
75
|
+
agent = create_agent()
|
|
76
|
+
|
|
77
|
+
# Or specify a different provider
|
|
78
|
+
agent = create_agent(model="openai:gpt-4o")
|
|
79
|
+
agent = create_agent(model="google_genai:gemini-2.0-flash")
|
|
80
|
+
|
|
81
|
+
# Run the agent
|
|
82
|
+
result = agent.invoke(
|
|
83
|
+
{"messages": [{"role": "user", "content": "Hello!"}]},
|
|
84
|
+
config={"configurable": {"thread_id": "my-thread"}},
|
|
85
|
+
)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
3. **Run as an HTTP server** (optional):
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
pip install 'bog-agents[serve]'
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
```python
|
|
95
|
+
from bog_agents import create_agent
|
|
96
|
+
from bog_agents.serve import AgentServer
|
|
97
|
+
|
|
98
|
+
agent = create_agent()
|
|
99
|
+
server = AgentServer(agent)
|
|
100
|
+
server.run() # Starts on http://127.0.0.1:8420
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## 🤔 What is this?
|
|
104
|
+
|
|
105
|
+
Using an LLM to call tools in a loop is the simplest form of an agent. This architecture, however, can yield agents that are "shallow" and fail to plan and act over longer, more complex tasks.
|
|
106
|
+
|
|
107
|
+
Applications like "Deep Research", "Manus", and "Claude Code" have gotten around this limitation by implementing a combination of four things: a **planning tool**, **sub agents**, access to a **file system**, and a **detailed prompt**.
|
|
108
|
+
|
|
109
|
+
`bog-agents` is a Python package that implements these in a general purpose way so that you can easily create a Bog Agents for your application. For a full overview and quickstart of Bog Agents, the best resource is our [docs](https://docs.langchain.com/oss/python/bog-agents/overview).
|
|
110
|
+
|
|
111
|
+
**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.**
|
|
112
|
+
|
|
113
|
+
## 🚀 Features
|
|
114
|
+
|
|
115
|
+
### Core Agent
|
|
116
|
+
- **LangGraph-powered** — composable agent with middleware architecture
|
|
117
|
+
- **Multi-model** — works with Anthropic, OpenAI, Google, DeepSeek, and any LangChain-compatible LLM
|
|
118
|
+
- **Sub-agents** — spawn isolated sub-agents for complex tasks
|
|
119
|
+
- **File system** — read, write, edit, search files with pluggable backends
|
|
120
|
+
- **Planning** — built-in todo list and plan mode for structured task execution
|
|
121
|
+
|
|
122
|
+
### Middleware (Pluggable)
|
|
123
|
+
|
|
124
|
+
| Middleware | Description |
|
|
125
|
+
|-----------|-------------|
|
|
126
|
+
| `FilesystemMiddleware` | File read/write/edit/search + multi-edit and batch read |
|
|
127
|
+
| `GitToolsMiddleware` | 9 git tools: status, diff, log, commit, add, branch, stash, blame, show |
|
|
128
|
+
| `RepoMapMiddleware` | Structural code map with symbol extraction (Python, JS, TS, Rust, Go, Java) |
|
|
129
|
+
| `CheckpointingMiddleware` | Git-based snapshots before mutations, with undo/diff |
|
|
130
|
+
| `CostTrackerMiddleware` | Token usage, cost estimation, budget enforcement, effort levels |
|
|
131
|
+
| `PlanModeMiddleware` | Read-only mode that blocks mutating tools |
|
|
132
|
+
| `AutoQualityMiddleware` | Auto-lint/test after edits with project detection |
|
|
133
|
+
| `ArchitectMiddleware` | Dual-model architect/reviewer with cross-model consultation |
|
|
134
|
+
| `ParallelAgentsMiddleware` | Concurrent sub-agent task execution |
|
|
135
|
+
| `LifecycleHooksMiddleware` | 15 event types for external tool integration |
|
|
136
|
+
| `ContextPackingMiddleware` | Smart structured context compression |
|
|
137
|
+
| `SummarizationMiddleware` | Auto-summarization when context window fills |
|
|
138
|
+
| `MemoryMiddleware` | Persistent AGENTS.md memory across sessions |
|
|
139
|
+
| `SkillsMiddleware` | Custom skill/instruction loading |
|
|
140
|
+
| `SafeToolsConfig` | Per-tool auto-approval rules |
|
|
141
|
+
|
|
142
|
+
### Security
|
|
143
|
+
- **OS-level sandbox** — bubblewrap (Linux), seatbelt (macOS), landlock isolation
|
|
144
|
+
- **Human-in-the-loop** — configurable tool approval with interrupt handling
|
|
145
|
+
|
|
146
|
+
## 📦 Quick Start
|
|
147
|
+
|
|
148
|
+
```python
|
|
149
|
+
from bog_agents import create_agent
|
|
150
|
+
|
|
151
|
+
agent = create_agent(
|
|
152
|
+
model="anthropic:claude-sonnet-4-6",
|
|
153
|
+
enable_git_tools=True,
|
|
154
|
+
enable_repo_map=True,
|
|
155
|
+
enable_checkpointing=True,
|
|
156
|
+
enable_cost_tracking=True,
|
|
157
|
+
enable_plan_mode=True,
|
|
158
|
+
auto_lint=True,
|
|
159
|
+
working_dir="/path/to/project",
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
# Run the agent
|
|
163
|
+
result = await agent.ainvoke(
|
|
164
|
+
{"messages": [{"role": "user", "content": "Fix the failing tests"}]},
|
|
165
|
+
config={"configurable": {"thread_id": "my-session"}},
|
|
166
|
+
)
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## 📖 Resources
|
|
170
|
+
|
|
171
|
+
- **[Documentation](https://docs.langchain.com/oss/python/bog-agents)** — Full documentation
|
|
172
|
+
- **[API Reference](https://reference.langchain.com/python/bog-agents/)** — Full SDK reference documentation
|
|
173
|
+
- **[Chat LangChain](https://chat.langchain.com)** - Chat interactively with the docs
|
|
174
|
+
|
|
175
|
+
## 📕 Releases & Versioning
|
|
176
|
+
|
|
177
|
+
See our [Releases](https://docs.langchain.com/oss/python/release-policy) and [Versioning](https://docs.langchain.com/oss/python/versioning) policies.
|
|
178
|
+
|
|
179
|
+
## 💁 Contributing
|
|
180
|
+
|
|
181
|
+
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.
|
|
182
|
+
|
|
183
|
+
For detailed information on how to contribute, see the [Contributing Guide](https://docs.langchain.com/oss/python/contributing/overview).
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# 🧠🤖 Bog Agents
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/bog-agents/#history)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
[](https://pypistats.org/packages/bog-agents)
|
|
6
|
+
[](https://x.com/langchain)
|
|
7
|
+
|
|
8
|
+
Looking for the JS/TS version? Check out [Bog Agents.js](https://github.com/langchain-ai/bog-agentsjs).
|
|
9
|
+
|
|
10
|
+
To help you ship LangChain apps to production faster, check out [LangSmith](https://smith.langchain.com).
|
|
11
|
+
LangSmith is a unified developer platform for building, testing, and monitoring LLM applications.
|
|
12
|
+
|
|
13
|
+
## Quick Install
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
pip install bog-agents
|
|
17
|
+
# or
|
|
18
|
+
uv add bog-agents
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Getting Started
|
|
22
|
+
|
|
23
|
+
1. **Set your API key** (the default model uses Anthropic):
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
export ANTHROPIC_API_KEY="sk-ant-..."
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Or for OpenAI, Google, etc.:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
export OPENAI_API_KEY="sk-..."
|
|
33
|
+
export GOOGLE_API_KEY="AI..."
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
2. **Create and run an agent**:
|
|
37
|
+
|
|
38
|
+
```python
|
|
39
|
+
from bog_agents import create_agent
|
|
40
|
+
|
|
41
|
+
# Uses Claude Sonnet by default (needs ANTHROPIC_API_KEY)
|
|
42
|
+
agent = create_agent()
|
|
43
|
+
|
|
44
|
+
# Or specify a different provider
|
|
45
|
+
agent = create_agent(model="openai:gpt-4o")
|
|
46
|
+
agent = create_agent(model="google_genai:gemini-2.0-flash")
|
|
47
|
+
|
|
48
|
+
# Run the agent
|
|
49
|
+
result = agent.invoke(
|
|
50
|
+
{"messages": [{"role": "user", "content": "Hello!"}]},
|
|
51
|
+
config={"configurable": {"thread_id": "my-thread"}},
|
|
52
|
+
)
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
3. **Run as an HTTP server** (optional):
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
pip install 'bog-agents[serve]'
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
```python
|
|
62
|
+
from bog_agents import create_agent
|
|
63
|
+
from bog_agents.serve import AgentServer
|
|
64
|
+
|
|
65
|
+
agent = create_agent()
|
|
66
|
+
server = AgentServer(agent)
|
|
67
|
+
server.run() # Starts on http://127.0.0.1:8420
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## 🤔 What is this?
|
|
71
|
+
|
|
72
|
+
Using an LLM to call tools in a loop is the simplest form of an agent. This architecture, however, can yield agents that are "shallow" and fail to plan and act over longer, more complex tasks.
|
|
73
|
+
|
|
74
|
+
Applications like "Deep Research", "Manus", and "Claude Code" have gotten around this limitation by implementing a combination of four things: a **planning tool**, **sub agents**, access to a **file system**, and a **detailed prompt**.
|
|
75
|
+
|
|
76
|
+
`bog-agents` is a Python package that implements these in a general purpose way so that you can easily create a Bog Agents for your application. For a full overview and quickstart of Bog Agents, the best resource is our [docs](https://docs.langchain.com/oss/python/bog-agents/overview).
|
|
77
|
+
|
|
78
|
+
**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.**
|
|
79
|
+
|
|
80
|
+
## 🚀 Features
|
|
81
|
+
|
|
82
|
+
### Core Agent
|
|
83
|
+
- **LangGraph-powered** — composable agent with middleware architecture
|
|
84
|
+
- **Multi-model** — works with Anthropic, OpenAI, Google, DeepSeek, and any LangChain-compatible LLM
|
|
85
|
+
- **Sub-agents** — spawn isolated sub-agents for complex tasks
|
|
86
|
+
- **File system** — read, write, edit, search files with pluggable backends
|
|
87
|
+
- **Planning** — built-in todo list and plan mode for structured task execution
|
|
88
|
+
|
|
89
|
+
### Middleware (Pluggable)
|
|
90
|
+
|
|
91
|
+
| Middleware | Description |
|
|
92
|
+
|-----------|-------------|
|
|
93
|
+
| `FilesystemMiddleware` | File read/write/edit/search + multi-edit and batch read |
|
|
94
|
+
| `GitToolsMiddleware` | 9 git tools: status, diff, log, commit, add, branch, stash, blame, show |
|
|
95
|
+
| `RepoMapMiddleware` | Structural code map with symbol extraction (Python, JS, TS, Rust, Go, Java) |
|
|
96
|
+
| `CheckpointingMiddleware` | Git-based snapshots before mutations, with undo/diff |
|
|
97
|
+
| `CostTrackerMiddleware` | Token usage, cost estimation, budget enforcement, effort levels |
|
|
98
|
+
| `PlanModeMiddleware` | Read-only mode that blocks mutating tools |
|
|
99
|
+
| `AutoQualityMiddleware` | Auto-lint/test after edits with project detection |
|
|
100
|
+
| `ArchitectMiddleware` | Dual-model architect/reviewer with cross-model consultation |
|
|
101
|
+
| `ParallelAgentsMiddleware` | Concurrent sub-agent task execution |
|
|
102
|
+
| `LifecycleHooksMiddleware` | 15 event types for external tool integration |
|
|
103
|
+
| `ContextPackingMiddleware` | Smart structured context compression |
|
|
104
|
+
| `SummarizationMiddleware` | Auto-summarization when context window fills |
|
|
105
|
+
| `MemoryMiddleware` | Persistent AGENTS.md memory across sessions |
|
|
106
|
+
| `SkillsMiddleware` | Custom skill/instruction loading |
|
|
107
|
+
| `SafeToolsConfig` | Per-tool auto-approval rules |
|
|
108
|
+
|
|
109
|
+
### Security
|
|
110
|
+
- **OS-level sandbox** — bubblewrap (Linux), seatbelt (macOS), landlock isolation
|
|
111
|
+
- **Human-in-the-loop** — configurable tool approval with interrupt handling
|
|
112
|
+
|
|
113
|
+
## 📦 Quick Start
|
|
114
|
+
|
|
115
|
+
```python
|
|
116
|
+
from bog_agents import create_agent
|
|
117
|
+
|
|
118
|
+
agent = create_agent(
|
|
119
|
+
model="anthropic:claude-sonnet-4-6",
|
|
120
|
+
enable_git_tools=True,
|
|
121
|
+
enable_repo_map=True,
|
|
122
|
+
enable_checkpointing=True,
|
|
123
|
+
enable_cost_tracking=True,
|
|
124
|
+
enable_plan_mode=True,
|
|
125
|
+
auto_lint=True,
|
|
126
|
+
working_dir="/path/to/project",
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
# Run the agent
|
|
130
|
+
result = await agent.ainvoke(
|
|
131
|
+
{"messages": [{"role": "user", "content": "Fix the failing tests"}]},
|
|
132
|
+
config={"configurable": {"thread_id": "my-session"}},
|
|
133
|
+
)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## 📖 Resources
|
|
137
|
+
|
|
138
|
+
- **[Documentation](https://docs.langchain.com/oss/python/bog-agents)** — Full documentation
|
|
139
|
+
- **[API Reference](https://reference.langchain.com/python/bog-agents/)** — Full SDK reference documentation
|
|
140
|
+
- **[Chat LangChain](https://chat.langchain.com)** - Chat interactively with the docs
|
|
141
|
+
|
|
142
|
+
## 📕 Releases & Versioning
|
|
143
|
+
|
|
144
|
+
See our [Releases](https://docs.langchain.com/oss/python/release-policy) and [Versioning](https://docs.langchain.com/oss/python/versioning) policies.
|
|
145
|
+
|
|
146
|
+
## 💁 Contributing
|
|
147
|
+
|
|
148
|
+
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.
|
|
149
|
+
|
|
150
|
+
For detailed information on how to contribute, see the [Contributing Guide](https://docs.langchain.com/oss/python/contributing/overview).
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"""Bog Agents package.
|
|
2
|
+
|
|
3
|
+
Middleware classes are loaded lazily — they are only imported when first accessed.
|
|
4
|
+
This keeps ``import bog_agents`` fast.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from bog_agents._version import __version__
|
|
8
|
+
from bog_agents.feature_config import FeatureConfig
|
|
9
|
+
from bog_agents.graph import create_agent
|
|
10
|
+
|
|
11
|
+
# Lazy-loaded symbols: maps exported name → (module_path, attribute_name)
|
|
12
|
+
_LAZY_IMPORTS: dict[str, tuple[str, str]] = {
|
|
13
|
+
"AdaptiveContextMiddleware": ("bog_agents.middleware.adaptive_context", "AdaptiveContextMiddleware"),
|
|
14
|
+
"AgentReplayMiddleware": ("bog_agents.middleware.agent_replay", "AgentReplayMiddleware"),
|
|
15
|
+
"AgentTeamsMiddleware": ("bog_agents.middleware.agent_teams", "AgentTeamsMiddleware"),
|
|
16
|
+
"AirGappedMiddleware": ("bog_agents.middleware.air_gapped", "AirGappedMiddleware"),
|
|
17
|
+
"ApprovalGatesMiddleware": ("bog_agents.middleware.approval_gates", "ApprovalGatesMiddleware"),
|
|
18
|
+
"ArchitectMiddleware": ("bog_agents.middleware.architect", "ArchitectMiddleware"),
|
|
19
|
+
"AuditTrailMiddleware": ("bog_agents.middleware.audit_trail", "AuditTrailMiddleware"),
|
|
20
|
+
"AutoQualityMiddleware": ("bog_agents.middleware.auto_quality", "AutoQualityMiddleware"),
|
|
21
|
+
"AutomationsMiddleware": ("bog_agents.middleware.automations", "AutomationsMiddleware"),
|
|
22
|
+
"BrowserAgentFAMiddleware": ("bog_agents.middleware.browser_agent_fa", "BrowserAgentFAMiddleware"),
|
|
23
|
+
"BrowserAgentMiddleware": ("bog_agents.middleware.browser_agent", "BrowserAgentMiddleware"),
|
|
24
|
+
"CheckpointingMiddleware": ("bog_agents.middleware.checkpointing", "CheckpointingMiddleware"),
|
|
25
|
+
"CitationsMiddleware": ("bog_agents.middleware.citations", "CitationsMiddleware"),
|
|
26
|
+
"ClientKnowledgeBaseMiddleware": ("bog_agents.middleware.client_knowledge_base", "ClientKnowledgeBaseMiddleware"),
|
|
27
|
+
"ClientReportsMiddleware": ("bog_agents.middleware.client_reports", "ClientReportsMiddleware"),
|
|
28
|
+
"CloudSandboxMiddleware": ("bog_agents.middleware.cloud_sandbox", "CloudSandboxMiddleware"),
|
|
29
|
+
"CodeIntelligenceMiddleware": ("bog_agents.middleware.code_intelligence", "CodeIntelligenceMiddleware"),
|
|
30
|
+
"CodeReviewMiddleware": ("bog_agents.middleware.code_review", "CodeReviewMiddleware"),
|
|
31
|
+
"CollaborativeSessionsMiddleware": ("bog_agents.middleware.collaborative_sessions", "CollaborativeSessionsMiddleware"),
|
|
32
|
+
"CompetitiveIntelMiddleware": ("bog_agents.middleware.competitive_intel", "CompetitiveIntelMiddleware"),
|
|
33
|
+
"CompiledSubAgent": ("bog_agents.middleware.subagents", "CompiledSubAgent"),
|
|
34
|
+
"ComputerUseMiddleware": ("bog_agents.middleware.computer_use", "ComputerUseMiddleware"),
|
|
35
|
+
"ContextPackingMiddleware": ("bog_agents.middleware.context_packing", "ContextPackingMiddleware"),
|
|
36
|
+
"ConversationBranchMiddleware": ("bog_agents.middleware.conversation_branch", "ConversationBranchMiddleware"),
|
|
37
|
+
"CostTrackerMiddleware": ("bog_agents.middleware.cost_tracker", "CostTrackerMiddleware"),
|
|
38
|
+
"DLPMiddleware": ("bog_agents.middleware.dlp", "DLPMiddleware"),
|
|
39
|
+
"DashboardMiddleware": ("bog_agents.middleware.dashboard", "DashboardMiddleware"),
|
|
40
|
+
"DeepResearchMiddleware": ("bog_agents.middleware.deep_research", "DeepResearchMiddleware"),
|
|
41
|
+
"DueDiligenceMiddleware": ("bog_agents.middleware.due_diligence", "DueDiligenceMiddleware"),
|
|
42
|
+
"EarningsAnalysisMiddleware": ("bog_agents.middleware.earnings_analysis", "EarningsAnalysisMiddleware"),
|
|
43
|
+
"EnhancedSkillsMiddleware": ("bog_agents.middleware.enhanced_skills", "EnhancedSkillsMiddleware"),
|
|
44
|
+
"EnterpriseMiddleware": ("bog_agents.middleware.enterprise", "EnterpriseMiddleware"),
|
|
45
|
+
"FactCheckMiddleware": ("bog_agents.middleware.fact_check", "FactCheckMiddleware"),
|
|
46
|
+
"FilesystemMiddleware": ("bog_agents.middleware.filesystem", "FilesystemMiddleware"),
|
|
47
|
+
"FinancialDataMiddleware": ("bog_agents.middleware.financial_data", "FinancialDataMiddleware"),
|
|
48
|
+
"FirmDeploymentMiddleware": ("bog_agents.middleware.firm_deployment", "FirmDeploymentMiddleware"),
|
|
49
|
+
"GitToolsMiddleware": ("bog_agents.middleware.git_tools", "GitToolsMiddleware"),
|
|
50
|
+
"HallucinationDetectionMiddleware": ("bog_agents.middleware.hallucination_detection", "HallucinationDetectionMiddleware"),
|
|
51
|
+
"HotReloadSkillsMiddleware": ("bog_agents.middleware.hot_reload_skills", "HotReloadSkillsMiddleware"),
|
|
52
|
+
"HttpHooksMiddleware": ("bog_agents.middleware.http_hooks", "HttpHooksMiddleware"),
|
|
53
|
+
"ImageInputMiddleware": ("bog_agents.middleware.image_input", "ImageInputMiddleware"),
|
|
54
|
+
"ImagePdfInputMiddleware": ("bog_agents.middleware.image_pdf_input", "ImagePdfInputMiddleware"),
|
|
55
|
+
"KnowledgeGraphMiddleware": ("bog_agents.middleware.knowledge_graph", "KnowledgeGraphMiddleware"),
|
|
56
|
+
"LifecycleHooksMiddleware": ("bog_agents.middleware.lifecycle_hooks", "LifecycleHooksMiddleware"),
|
|
57
|
+
"MarketSentimentMiddleware": ("bog_agents.middleware.market_sentiment", "MarketSentimentMiddleware"),
|
|
58
|
+
"MeetingPrepMiddleware": ("bog_agents.middleware.meeting_prep", "MeetingPrepMiddleware"),
|
|
59
|
+
"MemoryMiddleware": ("bog_agents.middleware.memory", "MemoryMiddleware"),
|
|
60
|
+
"MessagingIntegrationMiddleware": ("bog_agents.middleware.messaging_integration", "MessagingIntegrationMiddleware"),
|
|
61
|
+
"ModelCascadeMiddleware": ("bog_agents.middleware.model_cascade", "ModelCascadeMiddleware"),
|
|
62
|
+
"ModelPortfolioMiddleware": ("bog_agents.middleware.model_portfolio", "ModelPortfolioMiddleware"),
|
|
63
|
+
"MultiAgentOrchestratorMiddleware": ("bog_agents.middleware.multi_agent_orchestrator", "MultiAgentOrchestratorMiddleware"),
|
|
64
|
+
"MultiModelMiddleware": ("bog_agents.middleware.multi_model", "MultiModelMiddleware"),
|
|
65
|
+
"NLQueryMiddleware": ("bog_agents.middleware.nl_query", "NLQueryMiddleware"),
|
|
66
|
+
"NotificationsMiddleware": ("bog_agents.middleware.notifications", "NotificationsMiddleware"),
|
|
67
|
+
"OfflineModeMiddleware": ("bog_agents.middleware.offline_mode", "OfflineModeMiddleware"),
|
|
68
|
+
"OpenSearchRAGMiddleware": ("bog_agents.middleware.opensearch_rag", "OpenSearchRAGMiddleware"),
|
|
69
|
+
"PRManagementMiddleware": ("bog_agents.middleware.pr_management", "PRManagementMiddleware"),
|
|
70
|
+
"ParallelAgentsMiddleware": ("bog_agents.middleware.parallel_agents", "ParallelAgentsMiddleware"),
|
|
71
|
+
"PeerComparisonMiddleware": ("bog_agents.middleware.peer_comparison", "PeerComparisonMiddleware"),
|
|
72
|
+
"PlanModeMiddleware": ("bog_agents.middleware.plan_mode", "PlanModeMiddleware"),
|
|
73
|
+
"PluginSystemMiddleware": ("bog_agents.middleware.plugin_system", "PluginSystemMiddleware"),
|
|
74
|
+
"PortfolioAnalysisMiddleware": ("bog_agents.middleware.portfolio_analysis", "PortfolioAnalysisMiddleware"),
|
|
75
|
+
"RBACMiddleware": ("bog_agents.middleware.rbac", "RBACMiddleware"),
|
|
76
|
+
"ReasoningChainMiddleware": ("bog_agents.middleware.reasoning_chain", "ReasoningChainMiddleware"),
|
|
77
|
+
"RegulatoryAlertsMiddleware": ("bog_agents.middleware.regulatory_alerts", "RegulatoryAlertsMiddleware"),
|
|
78
|
+
"RegulatoryImpactMiddleware": ("bog_agents.middleware.regulatory_impact", "RegulatoryImpactMiddleware"),
|
|
79
|
+
"RepoMapMiddleware": ("bog_agents.middleware.repo_map", "RepoMapMiddleware"),
|
|
80
|
+
"SSOAuthMiddleware": ("bog_agents.middleware.sso_auth", "SSOAuthMiddleware"),
|
|
81
|
+
"SafeToolsConfig": ("bog_agents.middleware.safe_tools", "SafeToolsConfig"),
|
|
82
|
+
"SavedPromptsMiddleware": ("bog_agents.middleware.saved_prompts", "SavedPromptsMiddleware"),
|
|
83
|
+
"ScenarioEngineMiddleware": ("bog_agents.middleware.scenario_engine", "ScenarioEngineMiddleware"),
|
|
84
|
+
"ScheduledReportsMiddleware": ("bog_agents.middleware.scheduled_reports", "ScheduledReportsMiddleware"),
|
|
85
|
+
"ScheduledRunsMiddleware": ("bog_agents.middleware.scheduled_runs", "ScheduledRunsMiddleware"),
|
|
86
|
+
"SecurityAuditMiddleware": ("bog_agents.middleware.security_audit", "SecurityAuditMiddleware"),
|
|
87
|
+
"SelfImprovingMiddleware": ("bog_agents.middleware.self_improving", "SelfImprovingMiddleware"),
|
|
88
|
+
"SmartApprovalsMiddleware": ("bog_agents.middleware.smart_approvals", "SmartApprovalsMiddleware"),
|
|
89
|
+
"SmartContextMiddleware": ("bog_agents.middleware.smart_context", "SmartContextMiddleware"),
|
|
90
|
+
"SubAgent": ("bog_agents.middleware.subagents", "SubAgent"),
|
|
91
|
+
"SubAgentMiddleware": ("bog_agents.middleware.subagents", "SubAgentMiddleware"),
|
|
92
|
+
"TaxOptimizationMiddleware": ("bog_agents.middleware.tax_optimization", "TaxOptimizationMiddleware"),
|
|
93
|
+
"TestGenerationMiddleware": ("bog_agents.middleware.test_generation", "TestGenerationMiddleware"),
|
|
94
|
+
"VersionControlMiddleware": ("bog_agents.middleware.version_control", "VersionControlMiddleware"),
|
|
95
|
+
"VoiceIOMiddleware": ("bog_agents.middleware.voice_io", "VoiceIOMiddleware"),
|
|
96
|
+
"WorktreeMiddleware": ("bog_agents.middleware.worktree", "WorktreeMiddleware"),
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def __getattr__(name: str) -> object:
|
|
101
|
+
"""Lazy-load middleware classes on first access."""
|
|
102
|
+
if name in _LAZY_IMPORTS:
|
|
103
|
+
module_path, attr_name = _LAZY_IMPORTS[name]
|
|
104
|
+
import importlib
|
|
105
|
+
|
|
106
|
+
module = importlib.import_module(module_path)
|
|
107
|
+
value = getattr(module, attr_name)
|
|
108
|
+
# Cache in module namespace so subsequent accesses are fast
|
|
109
|
+
globals()[name] = value
|
|
110
|
+
return value
|
|
111
|
+
msg = f"module {__name__!r} has no attribute {name!r}"
|
|
112
|
+
raise AttributeError(msg)
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
__all__ = [ # noqa: PLE0604
|
|
116
|
+
"FeatureConfig",
|
|
117
|
+
"__version__",
|
|
118
|
+
"create_agent",
|
|
119
|
+
*_LAZY_IMPORTS,
|
|
120
|
+
]
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"""Shared helpers for resolving and inspecting chat models."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
from langchain.chat_models import init_chat_model
|
|
8
|
+
from langchain_core.language_models import BaseChatModel
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def resolve_model(model: str | BaseChatModel) -> BaseChatModel:
|
|
12
|
+
"""Resolve a model string to a `BaseChatModel`.
|
|
13
|
+
|
|
14
|
+
If `model` is already a `BaseChatModel`, returns it unchanged.
|
|
15
|
+
|
|
16
|
+
String models are resolved via `init_chat_model`. OpenAI models
|
|
17
|
+
(prefixed with `openai:`) default to the Responses API.
|
|
18
|
+
|
|
19
|
+
Args:
|
|
20
|
+
model: Model string or pre-configured model instance.
|
|
21
|
+
|
|
22
|
+
Returns:
|
|
23
|
+
Resolved `BaseChatModel` instance.
|
|
24
|
+
"""
|
|
25
|
+
if isinstance(model, BaseChatModel):
|
|
26
|
+
return model
|
|
27
|
+
if model.startswith("openai:"):
|
|
28
|
+
return init_chat_model(model, use_responses_api=True)
|
|
29
|
+
return init_chat_model(model)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def get_model_identifier(model: BaseChatModel) -> str | None:
|
|
33
|
+
"""Extract the provider-native model identifier from a chat model.
|
|
34
|
+
|
|
35
|
+
Providers do not agree on a single field name for the identifier. Some use
|
|
36
|
+
`model_name`, while others use `model`. Reading the serialized model config
|
|
37
|
+
lets us inspect both without relying on reflective attribute access.
|
|
38
|
+
|
|
39
|
+
Args:
|
|
40
|
+
model: Chat model instance to inspect.
|
|
41
|
+
|
|
42
|
+
Returns:
|
|
43
|
+
The configured model identifier, or `None` if it is unavailable.
|
|
44
|
+
"""
|
|
45
|
+
config = model.model_dump()
|
|
46
|
+
return _string_value(config, "model_name") or _string_value(config, "model")
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def model_matches_spec(model: BaseChatModel, spec: str) -> bool:
|
|
50
|
+
"""Check whether a model instance already matches a string model spec.
|
|
51
|
+
|
|
52
|
+
Matching is performed in two ways: first by exact string equality between
|
|
53
|
+
`spec` and the model identifier, then by comparing only the model-name
|
|
54
|
+
portion of a `provider:model` spec against the identifier. For example,
|
|
55
|
+
`"openai:gpt-5"` matches a model with identifier `"gpt-5"`.
|
|
56
|
+
|
|
57
|
+
Assumes the `provider:model` convention (single colon separator).
|
|
58
|
+
|
|
59
|
+
Args:
|
|
60
|
+
model: Chat model instance to inspect.
|
|
61
|
+
spec: Model spec in `provider:model` format (e.g., `openai:gpt-5`).
|
|
62
|
+
|
|
63
|
+
Returns:
|
|
64
|
+
`True` if the model already matches the spec, otherwise `False`.
|
|
65
|
+
"""
|
|
66
|
+
current = get_model_identifier(model)
|
|
67
|
+
if current is None:
|
|
68
|
+
return False
|
|
69
|
+
if spec == current:
|
|
70
|
+
return True
|
|
71
|
+
|
|
72
|
+
_, separator, model_name = spec.partition(":")
|
|
73
|
+
return bool(separator) and model_name == current
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def _string_value(config: dict[str, Any], key: str) -> str | None:
|
|
77
|
+
"""Return a non-empty string value from a serialized model config."""
|
|
78
|
+
value = config.get(key)
|
|
79
|
+
if isinstance(value, str) and value:
|
|
80
|
+
return value
|
|
81
|
+
return None
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"""Memory backends for pluggable file storage."""
|
|
2
|
+
|
|
3
|
+
from bog_agents.backends.composite import CompositeBackend
|
|
4
|
+
from bog_agents.backends.filesystem import FilesystemBackend
|
|
5
|
+
from bog_agents.backends.local_shell import DEFAULT_EXECUTE_TIMEOUT, LocalShellBackend
|
|
6
|
+
from bog_agents.backends.protocol import BackendProtocol
|
|
7
|
+
from bog_agents.backends.state import StateBackend
|
|
8
|
+
from bog_agents.backends.store import (
|
|
9
|
+
BackendContext,
|
|
10
|
+
NamespaceFactory,
|
|
11
|
+
StoreBackend,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
__all__ = [
|
|
15
|
+
"DEFAULT_EXECUTE_TIMEOUT",
|
|
16
|
+
"BackendContext",
|
|
17
|
+
"BackendProtocol",
|
|
18
|
+
"CompositeBackend",
|
|
19
|
+
"FilesystemBackend",
|
|
20
|
+
"LocalShellBackend",
|
|
21
|
+
"NamespaceFactory",
|
|
22
|
+
"StateBackend",
|
|
23
|
+
"StoreBackend",
|
|
24
|
+
]
|