rossum-agent 1.0.0rc0__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.
Files changed (83) hide show
  1. rossum_agent-1.0.0rc0/LICENSE +21 -0
  2. rossum_agent-1.0.0rc0/PKG-INFO +311 -0
  3. rossum_agent-1.0.0rc0/README.md +230 -0
  4. rossum_agent-1.0.0rc0/pyproject.toml +116 -0
  5. rossum_agent-1.0.0rc0/rossum_agent/__init__.py +9 -0
  6. rossum_agent-1.0.0rc0/rossum_agent/agent/__init__.py +32 -0
  7. rossum_agent-1.0.0rc0/rossum_agent/agent/core.py +932 -0
  8. rossum_agent-1.0.0rc0/rossum_agent/agent/memory.py +176 -0
  9. rossum_agent-1.0.0rc0/rossum_agent/agent/models.py +160 -0
  10. rossum_agent-1.0.0rc0/rossum_agent/agent/request_classifier.py +152 -0
  11. rossum_agent-1.0.0rc0/rossum_agent/agent/skills.py +132 -0
  12. rossum_agent-1.0.0rc0/rossum_agent/agent/types.py +5 -0
  13. rossum_agent-1.0.0rc0/rossum_agent/agent_logging.py +56 -0
  14. rossum_agent-1.0.0rc0/rossum_agent/api/__init__.py +1 -0
  15. rossum_agent-1.0.0rc0/rossum_agent/api/cli.py +51 -0
  16. rossum_agent-1.0.0rc0/rossum_agent/api/dependencies.py +190 -0
  17. rossum_agent-1.0.0rc0/rossum_agent/api/main.py +180 -0
  18. rossum_agent-1.0.0rc0/rossum_agent/api/models/__init__.py +1 -0
  19. rossum_agent-1.0.0rc0/rossum_agent/api/models/schemas.py +301 -0
  20. rossum_agent-1.0.0rc0/rossum_agent/api/routes/__init__.py +1 -0
  21. rossum_agent-1.0.0rc0/rossum_agent/api/routes/chats.py +95 -0
  22. rossum_agent-1.0.0rc0/rossum_agent/api/routes/files.py +113 -0
  23. rossum_agent-1.0.0rc0/rossum_agent/api/routes/health.py +44 -0
  24. rossum_agent-1.0.0rc0/rossum_agent/api/routes/messages.py +218 -0
  25. rossum_agent-1.0.0rc0/rossum_agent/api/services/__init__.py +1 -0
  26. rossum_agent-1.0.0rc0/rossum_agent/api/services/agent_service.py +451 -0
  27. rossum_agent-1.0.0rc0/rossum_agent/api/services/chat_service.py +197 -0
  28. rossum_agent-1.0.0rc0/rossum_agent/api/services/file_service.py +65 -0
  29. rossum_agent-1.0.0rc0/rossum_agent/assets/Primary_light_logo.png +0 -0
  30. rossum_agent-1.0.0rc0/rossum_agent/bedrock_client.py +64 -0
  31. rossum_agent-1.0.0rc0/rossum_agent/prompts/__init__.py +27 -0
  32. rossum_agent-1.0.0rc0/rossum_agent/prompts/base_prompt.py +80 -0
  33. rossum_agent-1.0.0rc0/rossum_agent/prompts/system_prompt.py +24 -0
  34. rossum_agent-1.0.0rc0/rossum_agent/py.typed +0 -0
  35. rossum_agent-1.0.0rc0/rossum_agent/redis_storage.py +482 -0
  36. rossum_agent-1.0.0rc0/rossum_agent/rossum_mcp_integration.py +123 -0
  37. rossum_agent-1.0.0rc0/rossum_agent/skills/hook-debugging.md +31 -0
  38. rossum_agent-1.0.0rc0/rossum_agent/skills/organization-setup.md +60 -0
  39. rossum_agent-1.0.0rc0/rossum_agent/skills/rossum-deployment.md +102 -0
  40. rossum_agent-1.0.0rc0/rossum_agent/skills/schema-patching.md +61 -0
  41. rossum_agent-1.0.0rc0/rossum_agent/skills/schema-pruning.md +23 -0
  42. rossum_agent-1.0.0rc0/rossum_agent/skills/ui-settings.md +45 -0
  43. rossum_agent-1.0.0rc0/rossum_agent/streamlit_app/__init__.py +1 -0
  44. rossum_agent-1.0.0rc0/rossum_agent/streamlit_app/app.py +646 -0
  45. rossum_agent-1.0.0rc0/rossum_agent/streamlit_app/beep_sound.py +36 -0
  46. rossum_agent-1.0.0rc0/rossum_agent/streamlit_app/cli.py +17 -0
  47. rossum_agent-1.0.0rc0/rossum_agent/streamlit_app/render_modules.py +123 -0
  48. rossum_agent-1.0.0rc0/rossum_agent/streamlit_app/response_formatting.py +305 -0
  49. rossum_agent-1.0.0rc0/rossum_agent/tools/__init__.py +214 -0
  50. rossum_agent-1.0.0rc0/rossum_agent/tools/core.py +173 -0
  51. rossum_agent-1.0.0rc0/rossum_agent/tools/deploy.py +404 -0
  52. rossum_agent-1.0.0rc0/rossum_agent/tools/dynamic_tools.py +365 -0
  53. rossum_agent-1.0.0rc0/rossum_agent/tools/file_tools.py +62 -0
  54. rossum_agent-1.0.0rc0/rossum_agent/tools/formula.py +187 -0
  55. rossum_agent-1.0.0rc0/rossum_agent/tools/skills.py +31 -0
  56. rossum_agent-1.0.0rc0/rossum_agent/tools/spawn_mcp.py +227 -0
  57. rossum_agent-1.0.0rc0/rossum_agent/tools/subagents/__init__.py +31 -0
  58. rossum_agent-1.0.0rc0/rossum_agent/tools/subagents/base.py +303 -0
  59. rossum_agent-1.0.0rc0/rossum_agent/tools/subagents/hook_debug.py +591 -0
  60. rossum_agent-1.0.0rc0/rossum_agent/tools/subagents/knowledge_base.py +305 -0
  61. rossum_agent-1.0.0rc0/rossum_agent/tools/subagents/mcp_helpers.py +47 -0
  62. rossum_agent-1.0.0rc0/rossum_agent/tools/subagents/schema_patching.py +471 -0
  63. rossum_agent-1.0.0rc0/rossum_agent/url_context.py +167 -0
  64. rossum_agent-1.0.0rc0/rossum_agent/user_detection.py +100 -0
  65. rossum_agent-1.0.0rc0/rossum_agent/utils.py +128 -0
  66. rossum_agent-1.0.0rc0/rossum_agent.egg-info/PKG-INFO +311 -0
  67. rossum_agent-1.0.0rc0/rossum_agent.egg-info/SOURCES.txt +81 -0
  68. rossum_agent-1.0.0rc0/rossum_agent.egg-info/dependency_links.txt +1 -0
  69. rossum_agent-1.0.0rc0/rossum_agent.egg-info/entry_points.txt +3 -0
  70. rossum_agent-1.0.0rc0/rossum_agent.egg-info/requires.txt +65 -0
  71. rossum_agent-1.0.0rc0/rossum_agent.egg-info/top_level.txt +1 -0
  72. rossum_agent-1.0.0rc0/setup.cfg +4 -0
  73. rossum_agent-1.0.0rc0/tests/test_agent_logging.py +204 -0
  74. rossum_agent-1.0.0rc0/tests/test_app_llm_response_formatting.py +492 -0
  75. rossum_agent-1.0.0rc0/tests/test_bedrock_client.py +191 -0
  76. rossum_agent-1.0.0rc0/tests/test_beep_sound.py +112 -0
  77. rossum_agent-1.0.0rc0/tests/test_dynamic_tools.py +825 -0
  78. rossum_agent-1.0.0rc0/tests/test_redis_storage.py +1105 -0
  79. rossum_agent-1.0.0rc0/tests/test_rossum_mcp_integration.py +261 -0
  80. rossum_agent-1.0.0rc0/tests/test_smoke.py +86 -0
  81. rossum_agent-1.0.0rc0/tests/test_url_context.py +245 -0
  82. rossum_agent-1.0.0rc0/tests/test_user_detection.py +191 -0
  83. rossum_agent-1.0.0rc0/tests/test_utils.py +371 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Rossum MCP Server Contributors
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.
@@ -0,0 +1,311 @@
1
+ Metadata-Version: 2.4
2
+ Name: rossum-agent
3
+ Version: 1.0.0rc0
4
+ Summary: AI agent toolkit for Rossum: document workflows conversationally, debug pipelines automatically, and enable agentic configuration of intelligent document processing.
5
+ Author-email: "Dan Stancl (Rossum AI)" <daniel.stancl@gmail.com>
6
+ License: MIT
7
+ Keywords: agent,rossum,document-processing,ai
8
+ Classifier: Development Status :: 4 - Beta
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Programming Language :: Python :: 3.13
13
+ Classifier: Programming Language :: Python :: 3.14
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
16
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
17
+ Requires-Python: >=3.12
18
+ Description-Content-Type: text/markdown
19
+ License-File: LICENSE
20
+ Requires-Dist: anthropic>=0.75.0
21
+ Requires-Dist: boto3>=1.0
22
+ Requires-Dist: cryptography>=41.0
23
+ Requires-Dist: ddgs>=9.9.0
24
+ Requires-Dist: fastmcp>=2.13.0
25
+ Requires-Dist: httpx>=0.27.0
26
+ Requires-Dist: jinja2>=3.0
27
+ Requires-Dist: PyJWT>=2.8
28
+ Requires-Dist: pyyaml>=6.0
29
+ Requires-Dist: python-dotenv
30
+ Requires-Dist: requests>=2.32
31
+ Requires-Dist: rossum-api>=3.8.0
32
+ Requires-Dist: rossum-deploy>=0.1.0
33
+ Requires-Dist: rossum-mcp>=1.0.0
34
+ Provides-Extra: api
35
+ Requires-Dist: fastapi>=0.115.0; extra == "api"
36
+ Requires-Dist: pydantic>2.0.0; extra == "api"
37
+ Requires-Dist: python-multipart>=0.0.22; extra == "api"
38
+ Requires-Dist: redis>=7.0.0; extra == "api"
39
+ Requires-Dist: slowapi>=0.1.9; extra == "api"
40
+ Requires-Dist: sse-starlette>=2.0.0; extra == "api"
41
+ Requires-Dist: uvicorn[standard]>=0.32.0; extra == "api"
42
+ Provides-Extra: docs
43
+ Requires-Dist: myst-parser>=2.0.0; extra == "docs"
44
+ Requires-Dist: sphinx>=7.0.0; extra == "docs"
45
+ Requires-Dist: sphinx-autodoc-typehints>=1.25.0; extra == "docs"
46
+ Requires-Dist: sphinx-copybutton>=0.5.2; extra == "docs"
47
+ Requires-Dist: sphinx-rtd-theme>=2.0.0; extra == "docs"
48
+ Provides-Extra: streamlit
49
+ Requires-Dist: pyperclip>=1.0; extra == "streamlit"
50
+ Requires-Dist: redis>=7.0.0; extra == "streamlit"
51
+ Requires-Dist: streamlit>=1.28.0; extra == "streamlit"
52
+ Provides-Extra: tests
53
+ Requires-Dist: coverage>=7.0.0; extra == "tests"
54
+ Requires-Dist: httpx>=0.27.0; extra == "tests"
55
+ Requires-Dist: pytest>=7.0.0; extra == "tests"
56
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "tests"
57
+ Requires-Dist: pytest-cov>=4.0.0; extra == "tests"
58
+ Requires-Dist: redis>=7.0.0; extra == "tests"
59
+ Requires-Dist: streamlit>=1.28.0; extra == "tests"
60
+ Provides-Extra: all
61
+ Requires-Dist: coverage>=7.0.0; extra == "all"
62
+ Requires-Dist: fastapi>=0.115.0; extra == "all"
63
+ Requires-Dist: httpx>=0.27.0; extra == "all"
64
+ Requires-Dist: myst-parser>=2.0.0; extra == "all"
65
+ Requires-Dist: pydantic>2.0.0; extra == "all"
66
+ Requires-Dist: pyperclip>=1.0; extra == "all"
67
+ Requires-Dist: pytest>=7.0.0; extra == "all"
68
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "all"
69
+ Requires-Dist: pytest-cov>=4.0.0; extra == "all"
70
+ Requires-Dist: python-multipart>=0.0.22; extra == "all"
71
+ Requires-Dist: redis>=7.0.0; extra == "all"
72
+ Requires-Dist: slowapi>=0.1.9; extra == "all"
73
+ Requires-Dist: sphinx>=7.0.0; extra == "all"
74
+ Requires-Dist: sphinx-autodoc-typehints>=1.25.0; extra == "all"
75
+ Requires-Dist: sphinx-copybutton>=0.5.2; extra == "all"
76
+ Requires-Dist: sphinx-rtd-theme>=2.0.0; extra == "all"
77
+ Requires-Dist: sse-starlette>=2.0.0; extra == "all"
78
+ Requires-Dist: streamlit>=1.28.0; extra == "all"
79
+ Requires-Dist: uvicorn[standard]>=0.32.0; extra == "all"
80
+ Dynamic: license-file
81
+
82
+ # Rossum Agent
83
+
84
+ <div align="center">
85
+
86
+ **AI agent for Rossum document processing. Debug hooks, deploy configs, and automate workflows conversationally.**
87
+
88
+ [![Documentation](https://img.shields.io/badge/docs-latest-blue.svg)](https://stancld.github.io/rossum-agents/)
89
+ [![Python](https://img.shields.io/badge/python-3.12%20%7C%203.13%20%7C%203.14-blue.svg)](https://www.python.org/downloads/)
90
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
91
+ [![PyPI - rossum-agent](https://img.shields.io/pypi/v/rossum-agent?label=rossum-agent)](https://pypi.org/project/rossum-agent/)
92
+ [![Coverage](https://codecov.io/gh/stancld/rossum-agents/branch/master/graph/badge.svg?flag=rossum-agent)](https://codecov.io/gh/stancld/rossum-agents)
93
+
94
+ [![Rossum API](https://img.shields.io/badge/Rossum-API-orange.svg)](https://github.com/rossumai/rossum-api)
95
+ [![MCP](https://img.shields.io/badge/MCP-compatible-green.svg)](https://modelcontextprotocol.io/)
96
+ [![Claude Opus 4.5](https://img.shields.io/badge/Claude-Opus_4.5-blueviolet.svg)](https://www.anthropic.com/claude/opus)
97
+ [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
98
+ [![ty](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ty/main/assets/badge/v0.json)](https://github.com/astral-sh/ty)
99
+ [![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
100
+
101
+ </div>
102
+
103
+ > [!NOTE]
104
+ > Community-developed integration (not official Rossum). Early stage - breaking changes expected.
105
+
106
+ ## Features
107
+
108
+ | Capability | Description |
109
+ |------------|-------------|
110
+ | **Rossum MCP Integration** | Full access to 50 MCP tools for document processing |
111
+ | **Hook Debugging** | Sandboxed execution with Opus sub-agent analysis |
112
+ | **Deployment Tools** | Pull, push, diff, copy configs across environments |
113
+ | **Knowledge Base Search** | AI-powered Rossum documentation search |
114
+ | **Multi-Environment** | Spawn connections to different Rossum environments |
115
+ | **Skills System** | Load domain-specific workflows on demand |
116
+
117
+ **Interfaces:** Streamlit UI, REST API, Python SDK
118
+
119
+ ## Quick Start
120
+
121
+ ```bash
122
+ # Set environment variables
123
+ export ROSSUM_API_TOKEN="your-api-token"
124
+ export ROSSUM_API_BASE_URL="https://api.elis.rossum.ai/v1"
125
+ export AWS_PROFILE="default" # For Bedrock
126
+
127
+ # Run the agent
128
+ uv pip install rossum-agent
129
+ rossum-agent
130
+ ```
131
+
132
+ Or with Docker:
133
+ ```bash
134
+ docker-compose up rossum-agent
135
+ # Open http://localhost:8501
136
+ ```
137
+
138
+ ## Installation
139
+
140
+ ```bash
141
+ git clone https://github.com/stancld/rossum-agents.git
142
+ cd rossum-mcp/rossum-agent
143
+ uv sync
144
+ ```
145
+
146
+ **With extras:**
147
+ ```bash
148
+ uv sync --extra all # All extras (api, streamlit, docs, tests)
149
+ uv sync --extra api # REST API (FastAPI, Redis)
150
+ uv sync --extra streamlit # Streamlit UI only
151
+ ```
152
+
153
+ ## Environment Variables
154
+
155
+ | Variable | Required | Description |
156
+ |----------|----------|-------------|
157
+ | `ROSSUM_API_TOKEN` | Yes | Rossum API authentication token |
158
+ | `ROSSUM_API_BASE_URL` | Yes | Base URL (e.g., `https://api.elis.rossum.ai/v1`) |
159
+ | `AWS_PROFILE` | Yes | AWS profile for Bedrock access |
160
+ | `AWS_DEFAULT_REGION` | No | AWS region (default: `us-east-1`) |
161
+ | `REDIS_HOST` | No | Redis host for chat persistence |
162
+ | `REDIS_PORT` | No | Redis port (default: `6379`) |
163
+
164
+ ## Usage
165
+
166
+ ### Streamlit UI
167
+
168
+ ```bash
169
+ rossum-agent
170
+ # Or: streamlit run rossum_agent/streamlit_app/app.py
171
+ ```
172
+
173
+ ### REST API
174
+
175
+ ```bash
176
+ rossum-agent-api --host 0.0.0.0 --port 8000
177
+ ```
178
+
179
+ ### Python SDK
180
+
181
+ ```python
182
+ import asyncio
183
+ from rossum_agent.agent import create_agent
184
+ from rossum_agent.rossum_mcp_integration import create_mcp_connection
185
+
186
+ async def main():
187
+ mcp_connection = await create_mcp_connection()
188
+ agent = await create_agent(mcp_connection=mcp_connection)
189
+
190
+ async for step in agent.run("List all queues"):
191
+ if step.final_answer:
192
+ print(step.final_answer)
193
+
194
+ asyncio.run(main())
195
+ ```
196
+
197
+ ## Available Tools
198
+
199
+ The agent provides internal tools and access to 50+ MCP tools via dynamic loading.
200
+
201
+ <details>
202
+ <summary><strong>Internal Tools</strong></summary>
203
+
204
+ **File & Knowledge:**
205
+ - `write_file` - Save reports, documentation, analysis results
206
+ - `search_knowledge_base` - Search Rossum docs with AI analysis
207
+
208
+ **Hook Analysis:**
209
+ - `evaluate_python_hook` - Execute hooks in sandboxed environment
210
+ - `debug_hook` - Expert debugging with Opus sub-agent
211
+
212
+ **Schema:**
213
+ - `patch_schema_with_subagent` - Safe schema modifications via Opus
214
+
215
+ **Deployment:**
216
+ - `deploy_pull` - Pull configs from organization
217
+ - `deploy_diff` - Compare local vs remote
218
+ - `deploy_push` - Push local changes
219
+ - `deploy_copy_org` - Copy entire organization
220
+ - `deploy_copy_workspace` - Copy single workspace
221
+ - `deploy_compare_workspaces` - Compare two workspaces
222
+ - `deploy_to_org` - Deploy to target organization
223
+
224
+ **Multi-Environment:**
225
+ - `spawn_mcp_connection` - Connect to different Rossum environment
226
+ - `call_on_connection` - Call tools on spawned connection
227
+ - `close_connection` - Close spawned connection
228
+
229
+ **Skills:**
230
+ - `load_skill` - Load domain-specific workflows (`rossum-deployment`, `hook-debugging`)
231
+
232
+ </details>
233
+
234
+ <details>
235
+ <summary><strong>Dynamic MCP Tool Loading</strong></summary>
236
+
237
+ Tools are loaded on-demand to reduce context usage. Use `load_tool_category` to load tools by category:
238
+
239
+ | Category | Description |
240
+ |----------|-------------|
241
+ | `annotations` | Upload, retrieve, update, confirm documents |
242
+ | `queues` | Create, configure, list queues |
243
+ | `schemas` | Define, modify field structures |
244
+ | `engines` | Extraction and splitting engines |
245
+ | `hooks` | Extensions and webhooks |
246
+ | `email_templates` | Automated email responses |
247
+ | `document_relations` | Export/einvoice links |
248
+ | `relations` | Annotation relations |
249
+ | `rules` | Schema validation rules |
250
+ | `users` | User and role management |
251
+ | `workspaces` | Workspace management |
252
+
253
+ Categories are auto-loaded based on keywords in the user's message.
254
+
255
+ </details>
256
+
257
+ ## Architecture
258
+
259
+ ```mermaid
260
+ flowchart TB
261
+ subgraph UI["User Interface"]
262
+ S[Streamlit UI]
263
+ A[REST API]
264
+ end
265
+
266
+ subgraph Agent["Rossum Agent (Claude Bedrock)"]
267
+ IT[Internal Tools]
268
+ DT[Deploy Tools]
269
+ MT[Spawn MCP Tools]
270
+ SK[Skills System]
271
+ end
272
+
273
+ subgraph MCP["Rossum MCP Server"]
274
+ Tools[50 MCP Tools]
275
+ end
276
+
277
+ API[Rossum API]
278
+
279
+ UI --> Agent
280
+ Agent --> MCP
281
+ MCP --> API
282
+ ```
283
+
284
+ <details>
285
+ <summary><strong>REST API Endpoints</strong></summary>
286
+
287
+ | Endpoint | Description |
288
+ |----------|-------------|
289
+ | `GET /api/v1/health` | Health check |
290
+ | `GET /api/v1/chats` | List all chats |
291
+ | `POST /api/v1/chats` | Create new chat |
292
+ | `GET /api/v1/chats/{id}` | Get chat details |
293
+ | `DELETE /api/v1/chats/{id}` | Delete chat |
294
+ | `POST /api/v1/chats/{id}/messages` | Send message (SSE) |
295
+ | `GET /api/v1/chats/{id}/files` | List files |
296
+ | `GET /api/v1/chats/{id}/files/{name}` | Download file |
297
+
298
+ API docs: `/api/docs` (Swagger) or `/api/redoc`
299
+
300
+ </details>
301
+
302
+ ## License
303
+
304
+ MIT License - see [LICENSE](../LICENSE) for details.
305
+
306
+ ## Resources
307
+
308
+ - [Full Documentation](https://stancld.github.io/rossum-agents/)
309
+ - [MCP Server README](../rossum-mcp/README.md)
310
+ - [Rossum API Documentation](https://rossum.app/api/docs/)
311
+ - [Main Repository](https://github.com/stancld/rossum-agents)
@@ -0,0 +1,230 @@
1
+ # Rossum Agent
2
+
3
+ <div align="center">
4
+
5
+ **AI agent for Rossum document processing. Debug hooks, deploy configs, and automate workflows conversationally.**
6
+
7
+ [![Documentation](https://img.shields.io/badge/docs-latest-blue.svg)](https://stancld.github.io/rossum-agents/)
8
+ [![Python](https://img.shields.io/badge/python-3.12%20%7C%203.13%20%7C%203.14-blue.svg)](https://www.python.org/downloads/)
9
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
10
+ [![PyPI - rossum-agent](https://img.shields.io/pypi/v/rossum-agent?label=rossum-agent)](https://pypi.org/project/rossum-agent/)
11
+ [![Coverage](https://codecov.io/gh/stancld/rossum-agents/branch/master/graph/badge.svg?flag=rossum-agent)](https://codecov.io/gh/stancld/rossum-agents)
12
+
13
+ [![Rossum API](https://img.shields.io/badge/Rossum-API-orange.svg)](https://github.com/rossumai/rossum-api)
14
+ [![MCP](https://img.shields.io/badge/MCP-compatible-green.svg)](https://modelcontextprotocol.io/)
15
+ [![Claude Opus 4.5](https://img.shields.io/badge/Claude-Opus_4.5-blueviolet.svg)](https://www.anthropic.com/claude/opus)
16
+ [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
17
+ [![ty](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ty/main/assets/badge/v0.json)](https://github.com/astral-sh/ty)
18
+ [![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
19
+
20
+ </div>
21
+
22
+ > [!NOTE]
23
+ > Community-developed integration (not official Rossum). Early stage - breaking changes expected.
24
+
25
+ ## Features
26
+
27
+ | Capability | Description |
28
+ |------------|-------------|
29
+ | **Rossum MCP Integration** | Full access to 50 MCP tools for document processing |
30
+ | **Hook Debugging** | Sandboxed execution with Opus sub-agent analysis |
31
+ | **Deployment Tools** | Pull, push, diff, copy configs across environments |
32
+ | **Knowledge Base Search** | AI-powered Rossum documentation search |
33
+ | **Multi-Environment** | Spawn connections to different Rossum environments |
34
+ | **Skills System** | Load domain-specific workflows on demand |
35
+
36
+ **Interfaces:** Streamlit UI, REST API, Python SDK
37
+
38
+ ## Quick Start
39
+
40
+ ```bash
41
+ # Set environment variables
42
+ export ROSSUM_API_TOKEN="your-api-token"
43
+ export ROSSUM_API_BASE_URL="https://api.elis.rossum.ai/v1"
44
+ export AWS_PROFILE="default" # For Bedrock
45
+
46
+ # Run the agent
47
+ uv pip install rossum-agent
48
+ rossum-agent
49
+ ```
50
+
51
+ Or with Docker:
52
+ ```bash
53
+ docker-compose up rossum-agent
54
+ # Open http://localhost:8501
55
+ ```
56
+
57
+ ## Installation
58
+
59
+ ```bash
60
+ git clone https://github.com/stancld/rossum-agents.git
61
+ cd rossum-mcp/rossum-agent
62
+ uv sync
63
+ ```
64
+
65
+ **With extras:**
66
+ ```bash
67
+ uv sync --extra all # All extras (api, streamlit, docs, tests)
68
+ uv sync --extra api # REST API (FastAPI, Redis)
69
+ uv sync --extra streamlit # Streamlit UI only
70
+ ```
71
+
72
+ ## Environment Variables
73
+
74
+ | Variable | Required | Description |
75
+ |----------|----------|-------------|
76
+ | `ROSSUM_API_TOKEN` | Yes | Rossum API authentication token |
77
+ | `ROSSUM_API_BASE_URL` | Yes | Base URL (e.g., `https://api.elis.rossum.ai/v1`) |
78
+ | `AWS_PROFILE` | Yes | AWS profile for Bedrock access |
79
+ | `AWS_DEFAULT_REGION` | No | AWS region (default: `us-east-1`) |
80
+ | `REDIS_HOST` | No | Redis host for chat persistence |
81
+ | `REDIS_PORT` | No | Redis port (default: `6379`) |
82
+
83
+ ## Usage
84
+
85
+ ### Streamlit UI
86
+
87
+ ```bash
88
+ rossum-agent
89
+ # Or: streamlit run rossum_agent/streamlit_app/app.py
90
+ ```
91
+
92
+ ### REST API
93
+
94
+ ```bash
95
+ rossum-agent-api --host 0.0.0.0 --port 8000
96
+ ```
97
+
98
+ ### Python SDK
99
+
100
+ ```python
101
+ import asyncio
102
+ from rossum_agent.agent import create_agent
103
+ from rossum_agent.rossum_mcp_integration import create_mcp_connection
104
+
105
+ async def main():
106
+ mcp_connection = await create_mcp_connection()
107
+ agent = await create_agent(mcp_connection=mcp_connection)
108
+
109
+ async for step in agent.run("List all queues"):
110
+ if step.final_answer:
111
+ print(step.final_answer)
112
+
113
+ asyncio.run(main())
114
+ ```
115
+
116
+ ## Available Tools
117
+
118
+ The agent provides internal tools and access to 50+ MCP tools via dynamic loading.
119
+
120
+ <details>
121
+ <summary><strong>Internal Tools</strong></summary>
122
+
123
+ **File & Knowledge:**
124
+ - `write_file` - Save reports, documentation, analysis results
125
+ - `search_knowledge_base` - Search Rossum docs with AI analysis
126
+
127
+ **Hook Analysis:**
128
+ - `evaluate_python_hook` - Execute hooks in sandboxed environment
129
+ - `debug_hook` - Expert debugging with Opus sub-agent
130
+
131
+ **Schema:**
132
+ - `patch_schema_with_subagent` - Safe schema modifications via Opus
133
+
134
+ **Deployment:**
135
+ - `deploy_pull` - Pull configs from organization
136
+ - `deploy_diff` - Compare local vs remote
137
+ - `deploy_push` - Push local changes
138
+ - `deploy_copy_org` - Copy entire organization
139
+ - `deploy_copy_workspace` - Copy single workspace
140
+ - `deploy_compare_workspaces` - Compare two workspaces
141
+ - `deploy_to_org` - Deploy to target organization
142
+
143
+ **Multi-Environment:**
144
+ - `spawn_mcp_connection` - Connect to different Rossum environment
145
+ - `call_on_connection` - Call tools on spawned connection
146
+ - `close_connection` - Close spawned connection
147
+
148
+ **Skills:**
149
+ - `load_skill` - Load domain-specific workflows (`rossum-deployment`, `hook-debugging`)
150
+
151
+ </details>
152
+
153
+ <details>
154
+ <summary><strong>Dynamic MCP Tool Loading</strong></summary>
155
+
156
+ Tools are loaded on-demand to reduce context usage. Use `load_tool_category` to load tools by category:
157
+
158
+ | Category | Description |
159
+ |----------|-------------|
160
+ | `annotations` | Upload, retrieve, update, confirm documents |
161
+ | `queues` | Create, configure, list queues |
162
+ | `schemas` | Define, modify field structures |
163
+ | `engines` | Extraction and splitting engines |
164
+ | `hooks` | Extensions and webhooks |
165
+ | `email_templates` | Automated email responses |
166
+ | `document_relations` | Export/einvoice links |
167
+ | `relations` | Annotation relations |
168
+ | `rules` | Schema validation rules |
169
+ | `users` | User and role management |
170
+ | `workspaces` | Workspace management |
171
+
172
+ Categories are auto-loaded based on keywords in the user's message.
173
+
174
+ </details>
175
+
176
+ ## Architecture
177
+
178
+ ```mermaid
179
+ flowchart TB
180
+ subgraph UI["User Interface"]
181
+ S[Streamlit UI]
182
+ A[REST API]
183
+ end
184
+
185
+ subgraph Agent["Rossum Agent (Claude Bedrock)"]
186
+ IT[Internal Tools]
187
+ DT[Deploy Tools]
188
+ MT[Spawn MCP Tools]
189
+ SK[Skills System]
190
+ end
191
+
192
+ subgraph MCP["Rossum MCP Server"]
193
+ Tools[50 MCP Tools]
194
+ end
195
+
196
+ API[Rossum API]
197
+
198
+ UI --> Agent
199
+ Agent --> MCP
200
+ MCP --> API
201
+ ```
202
+
203
+ <details>
204
+ <summary><strong>REST API Endpoints</strong></summary>
205
+
206
+ | Endpoint | Description |
207
+ |----------|-------------|
208
+ | `GET /api/v1/health` | Health check |
209
+ | `GET /api/v1/chats` | List all chats |
210
+ | `POST /api/v1/chats` | Create new chat |
211
+ | `GET /api/v1/chats/{id}` | Get chat details |
212
+ | `DELETE /api/v1/chats/{id}` | Delete chat |
213
+ | `POST /api/v1/chats/{id}/messages` | Send message (SSE) |
214
+ | `GET /api/v1/chats/{id}/files` | List files |
215
+ | `GET /api/v1/chats/{id}/files/{name}` | Download file |
216
+
217
+ API docs: `/api/docs` (Swagger) or `/api/redoc`
218
+
219
+ </details>
220
+
221
+ ## License
222
+
223
+ MIT License - see [LICENSE](../LICENSE) for details.
224
+
225
+ ## Resources
226
+
227
+ - [Full Documentation](https://stancld.github.io/rossum-agents/)
228
+ - [MCP Server README](../rossum-mcp/README.md)
229
+ - [Rossum API Documentation](https://rossum.app/api/docs/)
230
+ - [Main Repository](https://github.com/stancld/rossum-agents)
@@ -0,0 +1,116 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "rossum-agent"
7
+ version = "1.0.0rc0"
8
+ description = "AI agent toolkit for Rossum: document workflows conversationally, debug pipelines automatically, and enable agentic configuration of intelligent document processing."
9
+ readme = "README.md"
10
+ requires-python = ">=3.12"
11
+ license = {text = "MIT"}
12
+ authors = [
13
+ {name = "Dan Stancl (Rossum AI)", email = "daniel.stancl@gmail.com"}
14
+ ]
15
+ keywords = ["agent", "rossum", "document-processing", "ai"]
16
+ classifiers = [
17
+ "Development Status :: 4 - Beta",
18
+ "License :: OSI Approved :: MIT License",
19
+ "Programming Language :: Python :: 3",
20
+ "Programming Language :: Python :: 3.12",
21
+ "Programming Language :: Python :: 3.13",
22
+ "Programming Language :: Python :: 3.14",
23
+ "Intended Audience :: Developers",
24
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
25
+ "Topic :: Software Development :: Libraries :: Python Modules",
26
+ ]
27
+ dependencies = [
28
+ "anthropic>=0.75.0",
29
+ "boto3>=1.0",
30
+ "cryptography>=41.0",
31
+ "ddgs>=9.9.0",
32
+ "fastmcp>=2.13.0",
33
+ "httpx>=0.27.0",
34
+ "jinja2>=3.0",
35
+ "PyJWT>=2.8",
36
+ "pyyaml>=6.0",
37
+ "python-dotenv",
38
+ "requests>=2.32",
39
+ "rossum-api>=3.8.0",
40
+ "rossum-deploy>=0.1.0",
41
+ "rossum-mcp>=1.0.0",
42
+ ]
43
+
44
+ [project.scripts]
45
+ rossum-agent = "rossum_agent.streamlit_app.cli:main"
46
+ rossum-agent-api = "rossum_agent.api.main:main"
47
+
48
+ [project.optional-dependencies]
49
+ api = [
50
+ "fastapi>=0.115.0",
51
+ "pydantic>2.0.0",
52
+ "python-multipart>=0.0.22",
53
+ "redis>=7.0.0",
54
+ "slowapi>=0.1.9",
55
+ "sse-starlette>=2.0.0",
56
+ "uvicorn[standard]>=0.32.0",
57
+ ]
58
+ docs = [
59
+ "myst-parser>=2.0.0",
60
+ "sphinx>=7.0.0",
61
+ "sphinx-autodoc-typehints>=1.25.0",
62
+ "sphinx-copybutton>=0.5.2",
63
+ "sphinx-rtd-theme>=2.0.0",
64
+ ]
65
+ streamlit = [
66
+ "pyperclip>=1.0",
67
+ "redis>=7.0.0",
68
+ "streamlit>=1.28.0",
69
+ ]
70
+ tests = [
71
+ "coverage>=7.0.0",
72
+ "httpx>=0.27.0",
73
+ "pytest>=7.0.0",
74
+ "pytest-asyncio>=0.21.0",
75
+ "pytest-cov>=4.0.0",
76
+ "redis>=7.0.0",
77
+ "streamlit>=1.28.0",
78
+ ]
79
+ all = [
80
+ "coverage>=7.0.0",
81
+ "fastapi>=0.115.0",
82
+ "httpx>=0.27.0",
83
+ "myst-parser>=2.0.0",
84
+ "pydantic>2.0.0",
85
+ "pyperclip>=1.0",
86
+ "pytest>=7.0.0",
87
+ "pytest-asyncio>=0.21.0",
88
+ "pytest-cov>=4.0.0",
89
+ "python-multipart>=0.0.22",
90
+ "redis>=7.0.0",
91
+ "slowapi>=0.1.9",
92
+ "sphinx>=7.0.0",
93
+ "sphinx-autodoc-typehints>=1.25.0",
94
+ "sphinx-copybutton>=0.5.2",
95
+ "sphinx-rtd-theme>=2.0.0",
96
+ "sse-starlette>=2.0.0",
97
+ "streamlit>=1.28.0",
98
+ "uvicorn[standard]>=0.32.0",
99
+ ]
100
+
101
+ [tool.pytest.ini_options]
102
+ markers = [
103
+ "smoke: smoke tests requiring real API credentials (ROSSUM_API_TOKEN, ROSSUM_API_BASE_URL)"
104
+ ]
105
+ asyncio_mode = "auto"
106
+
107
+ [tool.setuptools.packages.find]
108
+ include = ["rossum_mcp*", "rossum_agent*", "rossum_deploy*"]
109
+
110
+ [tool.setuptools.package-data]
111
+ rossum_agent = ["assets/*.png", "skills/*.md"]
112
+
113
+ [dependency-groups]
114
+ dev = [
115
+ "pytest>=9.0.2",
116
+ ]
@@ -0,0 +1,9 @@
1
+ """Rossum Agent."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from rossum_agent.agent import AgentConfig, AgentStep, RossumAgent, create_agent
6
+
7
+ __version__ = "1.0.0rc0"
8
+
9
+ __all__ = ["AgentConfig", "AgentStep", "RossumAgent", "create_agent"]