RouteKitAI 0.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.
Files changed (105) hide show
  1. routekitai-0.1.0/CHANGELOG.md +70 -0
  2. routekitai-0.1.0/LICENSE +21 -0
  3. routekitai-0.1.0/MANIFEST.in +9 -0
  4. routekitai-0.1.0/PKG-INFO +328 -0
  5. routekitai-0.1.0/README.md +283 -0
  6. routekitai-0.1.0/docs/architecture.md +315 -0
  7. routekitai-0.1.0/docs/oidc-publishing.md +146 -0
  8. routekitai-0.1.0/docs/security-and-governance.md +481 -0
  9. routekitai-0.1.0/examples/__init__.py +1 -0
  10. routekitai-0.1.0/examples/basic.py +54 -0
  11. routekitai-0.1.0/examples/eval_regression.py +112 -0
  12. routekitai-0.1.0/examples/function_calling_policy.py +87 -0
  13. routekitai-0.1.0/examples/graph_agent.py +100 -0
  14. routekitai-0.1.0/examples/graph_agent_real.py +196 -0
  15. routekitai-0.1.0/examples/graph_policy.py +49 -0
  16. routekitai-0.1.0/examples/hello_routekit.py +71 -0
  17. routekitai-0.1.0/examples/plan_execute_policy.py +55 -0
  18. routekitai-0.1.0/examples/react_policy.py +113 -0
  19. routekitai-0.1.0/examples/supervisor_agent.py +69 -0
  20. routekitai-0.1.0/examples/supervisor_policy.py +57 -0
  21. routekitai-0.1.0/pyproject.toml +156 -0
  22. routekitai-0.1.0/setup.cfg +4 -0
  23. routekitai-0.1.0/src/RouteKitAI.egg-info/PKG-INFO +328 -0
  24. routekitai-0.1.0/src/RouteKitAI.egg-info/SOURCES.txt +103 -0
  25. routekitai-0.1.0/src/RouteKitAI.egg-info/dependency_links.txt +1 -0
  26. routekitai-0.1.0/src/RouteKitAI.egg-info/entry_points.txt +2 -0
  27. routekitai-0.1.0/src/RouteKitAI.egg-info/requires.txt +24 -0
  28. routekitai-0.1.0/src/RouteKitAI.egg-info/top_level.txt +1 -0
  29. routekitai-0.1.0/src/routekitai/__init__.py +53 -0
  30. routekitai-0.1.0/src/routekitai/cli/__init__.py +18 -0
  31. routekitai-0.1.0/src/routekitai/cli/main.py +40 -0
  32. routekitai-0.1.0/src/routekitai/cli/replay.py +80 -0
  33. routekitai-0.1.0/src/routekitai/cli/run.py +95 -0
  34. routekitai-0.1.0/src/routekitai/cli/serve.py +966 -0
  35. routekitai-0.1.0/src/routekitai/cli/test_agent.py +178 -0
  36. routekitai-0.1.0/src/routekitai/cli/trace.py +209 -0
  37. routekitai-0.1.0/src/routekitai/cli/trace_analyze.py +120 -0
  38. routekitai-0.1.0/src/routekitai/cli/trace_search.py +126 -0
  39. routekitai-0.1.0/src/routekitai/core/__init__.py +58 -0
  40. routekitai-0.1.0/src/routekitai/core/agent.py +325 -0
  41. routekitai-0.1.0/src/routekitai/core/errors.py +49 -0
  42. routekitai-0.1.0/src/routekitai/core/hooks.py +174 -0
  43. routekitai-0.1.0/src/routekitai/core/memory.py +54 -0
  44. routekitai-0.1.0/src/routekitai/core/message.py +132 -0
  45. routekitai-0.1.0/src/routekitai/core/model.py +91 -0
  46. routekitai-0.1.0/src/routekitai/core/policies.py +373 -0
  47. routekitai-0.1.0/src/routekitai/core/policy.py +85 -0
  48. routekitai-0.1.0/src/routekitai/core/policy_adapter.py +133 -0
  49. routekitai-0.1.0/src/routekitai/core/runtime.py +1403 -0
  50. routekitai-0.1.0/src/routekitai/core/tool.py +148 -0
  51. routekitai-0.1.0/src/routekitai/core/tools.py +180 -0
  52. routekitai-0.1.0/src/routekitai/evals/__init__.py +13 -0
  53. routekitai-0.1.0/src/routekitai/evals/dataset.py +75 -0
  54. routekitai-0.1.0/src/routekitai/evals/metrics.py +101 -0
  55. routekitai-0.1.0/src/routekitai/evals/runner.py +184 -0
  56. routekitai-0.1.0/src/routekitai/graphs/__init__.py +12 -0
  57. routekitai-0.1.0/src/routekitai/graphs/executors.py +457 -0
  58. routekitai-0.1.0/src/routekitai/graphs/graph.py +164 -0
  59. routekitai-0.1.0/src/routekitai/memory/__init__.py +13 -0
  60. routekitai-0.1.0/src/routekitai/memory/episodic.py +242 -0
  61. routekitai-0.1.0/src/routekitai/memory/kv.py +34 -0
  62. routekitai-0.1.0/src/routekitai/memory/retrieval.py +192 -0
  63. routekitai-0.1.0/src/routekitai/memory/vector.py +700 -0
  64. routekitai-0.1.0/src/routekitai/memory/working.py +66 -0
  65. routekitai-0.1.0/src/routekitai/message.py +29 -0
  66. routekitai-0.1.0/src/routekitai/model.py +48 -0
  67. routekitai-0.1.0/src/routekitai/observability/__init__.py +21 -0
  68. routekitai-0.1.0/src/routekitai/observability/analyzer.py +314 -0
  69. routekitai-0.1.0/src/routekitai/observability/exporters/__init__.py +10 -0
  70. routekitai-0.1.0/src/routekitai/observability/exporters/base.py +30 -0
  71. routekitai-0.1.0/src/routekitai/observability/exporters/jsonl.py +81 -0
  72. routekitai-0.1.0/src/routekitai/observability/exporters/otel.py +119 -0
  73. routekitai-0.1.0/src/routekitai/observability/spans.py +111 -0
  74. routekitai-0.1.0/src/routekitai/observability/streaming.py +117 -0
  75. routekitai-0.1.0/src/routekitai/observability/trace.py +144 -0
  76. routekitai-0.1.0/src/routekitai/providers/__init__.py +9 -0
  77. routekitai-0.1.0/src/routekitai/providers/anthropic.py +227 -0
  78. routekitai-0.1.0/src/routekitai/providers/azure_openai.py +243 -0
  79. routekitai-0.1.0/src/routekitai/providers/local.py +196 -0
  80. routekitai-0.1.0/src/routekitai/providers/openai.py +321 -0
  81. routekitai-0.1.0/src/routekitai/py.typed +0 -0
  82. routekitai-0.1.0/src/routekitai/sandbox/__init__.py +12 -0
  83. routekitai-0.1.0/src/routekitai/sandbox/filesystem.py +131 -0
  84. routekitai-0.1.0/src/routekitai/sandbox/network.py +142 -0
  85. routekitai-0.1.0/src/routekitai/sandbox/permissions.py +70 -0
  86. routekitai-0.1.0/src/routekitai/tool.py +33 -0
  87. routekitai-0.1.0/tests/test_evals.py +184 -0
  88. routekitai-0.1.0/tests/test_graphs.py +146 -0
  89. routekitai-0.1.0/tests/test_graphs_subgraph.py +86 -0
  90. routekitai-0.1.0/tests/test_hooks.py +281 -0
  91. routekitai-0.1.0/tests/test_integration.py +180 -0
  92. routekitai-0.1.0/tests/test_memory.py +209 -0
  93. routekitai-0.1.0/tests/test_memory_kv.py +37 -0
  94. routekitai-0.1.0/tests/test_memory_vector.py +189 -0
  95. routekitai-0.1.0/tests/test_message.py +95 -0
  96. routekitai-0.1.0/tests/test_otel_exporter.py +35 -0
  97. routekitai-0.1.0/tests/test_runtime.py +316 -0
  98. routekitai-0.1.0/tests/test_sandbox_filesystem.py +86 -0
  99. routekitai-0.1.0/tests/test_sandbox_network.py +60 -0
  100. routekitai-0.1.0/tests/test_streaming.py +518 -0
  101. routekitai-0.1.0/tests/test_streaming_serve.py +139 -0
  102. routekitai-0.1.0/tests/test_tool.py +167 -0
  103. routekitai-0.1.0/tests/test_tools.py +300 -0
  104. routekitai-0.1.0/tests/test_trace_analyzer.py +444 -0
  105. routekitai-0.1.0/tests/test_trace_analyzer_integration.py +209 -0
@@ -0,0 +1,70 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Added
11
+ - Initial project scaffold
12
+ - Core primitives: Model, Message, Tool, Agent, Runtime
13
+ - Graph-based orchestration with nodes, edges, and state management
14
+ - Step-based execution with complete trace capture
15
+ - Immutable trace format with event logging
16
+ - Deterministic replay engine with stub support
17
+ - Policy system: ReAct, FunctionCalling, Graph, Supervisor, PlanExecute
18
+ - Memory backends: EpisodicMemory, RetrievalMemory
19
+ - Security hooks: PII redaction, tool filtering, approval gates
20
+ - CLI tools: run, trace, replay, test-agent commands
21
+ - Evaluation harness with dataset support and regression testing
22
+ - Multi-agent supervisor pattern with delegation
23
+ - Error handling with context and proper exception types
24
+ - Type-safe APIs with full mypy compliance
25
+ - Async-first design with asyncio support
26
+ - Development tooling: ruff, mypy, pytest configuration
27
+ - Comprehensive test suite
28
+ - Documentation: architecture, security, examples
29
+
30
+ ### Changed
31
+ - N/A (initial release)
32
+
33
+ ### Deprecated
34
+ - N/A (initial release)
35
+
36
+ ### Removed
37
+ - N/A (initial release)
38
+
39
+ ### Fixed
40
+ - N/A (initial release)
41
+
42
+ ### Security
43
+ - PII redaction for emails, phones, and custom patterns
44
+ - Tool allow/deny lists at agent and runtime levels
45
+ - Approval gates for high-risk permissions
46
+ - Trace security with redaction support
47
+
48
+ ## [0.1.0] - 2024-01-XX
49
+
50
+ ### Added
51
+ - Initial public release
52
+ - Core framework functionality
53
+ - Graph orchestration
54
+ - Tracing and replay
55
+ - Security features
56
+ - CLI tools
57
+
58
+ ---
59
+
60
+ ## Version History
61
+
62
+ - **0.1.0**: Initial release with core features
63
+
64
+ ## Upcoming Features
65
+
66
+ See [Architecture Guide](docs/architecture.md#future-directions) for planned features.
67
+
68
+ ## Contributing
69
+
70
+ See [Contributing Guide](CONTRIBUTING.md) (coming soon) for how to contribute changes.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Mohamed Ghassen Brahim
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,9 @@
1
+ include README.md
2
+ include LICENSE
3
+ include CHANGELOG.md
4
+ include pyproject.toml
5
+ recursive-include docs *.md
6
+ recursive-include examples *.py
7
+ global-exclude __pycache__
8
+ global-exclude *.py[co]
9
+ global-exclude .DS_Store
@@ -0,0 +1,328 @@
1
+ Metadata-Version: 2.4
2
+ Name: RouteKitAI
3
+ Version: 0.1.0
4
+ Summary: An agent development + orchestration framework
5
+ Author: Mohamed Ghassen Brahim
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/MedGhassen/RouteKit
8
+ Project-URL: Documentation, https://routekit.readthedocs.io
9
+ Project-URL: Repository, https://github.com/MedGhassen/RouteKit
10
+ Project-URL: Issues, https://github.com/MedGhassen/RouteKit/issues
11
+ Keywords: ai,agents,orchestration,llm,framework
12
+ Classifier: Development Status :: 3 - Alpha
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: Typing :: Typed
20
+ Requires-Python: >=3.11
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: pydantic<3.0.0,>=2.0.0
24
+ Requires-Dist: numpy<3.0.0,>=1.24.0
25
+ Requires-Dist: httpx>=0.24.0
26
+ Provides-Extra: dev
27
+ Requires-Dist: pytest>=7.4.0; extra == "dev"
28
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
29
+ Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
30
+ Requires-Dist: mypy>=1.5.0; extra == "dev"
31
+ Requires-Dist: ruff<1.0.0,>=0.1.0; extra == "dev"
32
+ Requires-Dist: rich>=13.0.0; extra == "dev"
33
+ Requires-Dist: typer>=0.9.0; extra == "dev"
34
+ Requires-Dist: safety>=2.0.0; extra == "dev"
35
+ Requires-Dist: bandit>=1.7.0; extra == "dev"
36
+ Provides-Extra: ui
37
+ Requires-Dist: fastapi>=0.104.0; extra == "ui"
38
+ Requires-Dist: uvicorn[standard]>=0.24.0; extra == "ui"
39
+ Provides-Extra: optional
40
+ Requires-Dist: sentence-transformers>=2.2.0; extra == "optional"
41
+ Requires-Dist: faiss-cpu>=1.7.4; extra == "optional"
42
+ Requires-Dist: openai>=1.0.0; extra == "optional"
43
+ Requires-Dist: nest-asyncio>=1.5.0; extra == "optional"
44
+ Dynamic: license-file
45
+
46
+ # RouteKitAI
47
+
48
+ <div align="center">
49
+
50
+ **A minimal, production-ready framework for building and orchestrating AI agents**
51
+
52
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
53
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
54
+ [![Code style: 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)
55
+ [![Type checking: mypy](https://img.shields.io/badge/type%20checking-mypy-blue)](http://mypy-lang.org/)
56
+
57
+ [Features](#features) โ€ข [Quick Start](#quick-start) โ€ข [Documentation](#documentation) โ€ข [Examples](#examples) โ€ข [Contributing](#contributing)
58
+
59
+ </div>
60
+
61
+ ---
62
+
63
+ RouteKitAI is a Python framework for building AI agents with **graph-based orchestration**, **built-in tracing**, and **deterministic replay**. Unlike other frameworks, RouteKitAI treats observability and testability as first-class features from day one.
64
+
65
+ ## โœจ Features
66
+
67
+ ### ๐ŸŽฏ Core Capabilities
68
+
69
+ - **Graph-Native Orchestration**: Define agent workflows as explicit graphs with clear control flow
70
+ - **Automatic Tracing**: Every execution produces a complete, immutable trace log
71
+ - **Deterministic Replay**: Reproduce any agent run exactly for testing and debugging
72
+ - **Type-Safe APIs**: Full type hints with mypy compliance
73
+ - **Async-First**: Built for modern Python async/await patterns
74
+ - **Minimal API**: Just 5 core primitivesโ€”no bloat
75
+
76
+ ### ๐Ÿ›ก๏ธ Production Features
77
+
78
+ - **Security Hooks**: PII redaction, tool allow/deny lists, approval gates
79
+ - **Memory Support**: Episodic, retrieval, and vector memory backends
80
+ - **Policy System**: ReAct, Supervisor, Graph, and custom policies
81
+ - **Error Handling**: Comprehensive error types with context
82
+ - **CLI Tools**: Run, trace, replay, and test agents from the command line
83
+ - **Trace Analysis**: Metrics, timeline visualization, step-by-step debugging, and search
84
+
85
+ ## ๐Ÿš€ Quick Start
86
+
87
+ ### Installation
88
+
89
+ ```bash
90
+ pip install RouteKitAI
91
+ ```
92
+
93
+ For development with CLI tools:
94
+
95
+ ```bash
96
+ pip install "RouteKitAI[dev]"
97
+ ```
98
+
99
+ ### Basic Example
100
+
101
+ ```python
102
+ import asyncio
103
+ from routekitai import Agent
104
+ from routekitai.providers.local import FakeModel
105
+ from routekitai.core.tools import EchoTool
106
+
107
+ # Create a model
108
+ model = FakeModel(name="test")
109
+ model.add_response("Hello from routekitai!")
110
+
111
+ # Create an agent
112
+ agent = Agent(
113
+ name="my_agent",
114
+ model=model,
115
+ tools=[EchoTool()]
116
+ )
117
+
118
+ # Run the agent
119
+ async def main():
120
+ result = await agent.run("Hello!")
121
+ print(result.output.content)
122
+ print(f"Trace ID: {result.trace_id}")
123
+
124
+ asyncio.run(main())
125
+ ```
126
+
127
+ ### Graph-Based Workflow
128
+
129
+ ```python
130
+ import asyncio
131
+ from routekitai import Agent
132
+ from routekitai.core.policies import GraphPolicy
133
+ from routekitai.graphs import Graph, GraphNode, GraphEdge, NodeType
134
+ from routekitai.providers.local import FakeModel
135
+ from routekitai.core.tools import EchoTool
136
+
137
+ # Create models and agents
138
+ model1 = FakeModel(name="model1")
139
+ model1.add_response("Processing input...")
140
+
141
+ model2 = FakeModel(name="model2")
142
+ model2.add_response("Finalizing result...")
143
+
144
+ agent1 = Agent(name="agent1", model=model1, tools=[EchoTool()])
145
+ agent2 = Agent(name="agent2", model=model2, tools=[])
146
+
147
+ # Define a graph: agent1 -> tool -> agent2
148
+ graph = Graph(
149
+ name="example_graph",
150
+ entry_node="start",
151
+ exit_node="end",
152
+ nodes=[
153
+ GraphNode(
154
+ id="start",
155
+ type=NodeType.MODEL,
156
+ agent_name="agent1",
157
+ output_mapping={"output": "processed_input"},
158
+ ),
159
+ GraphNode(
160
+ id="echo_tool",
161
+ type=NodeType.TOOL,
162
+ tool_name="echo",
163
+ input_mapping={"processed_input": "message"},
164
+ output_mapping={"result": "echo_result"},
165
+ ),
166
+ GraphNode(
167
+ id="end",
168
+ type=NodeType.MODEL,
169
+ agent_name="agent2",
170
+ input_mapping={"echo_result": "prompt"},
171
+ ),
172
+ ],
173
+ edges=[
174
+ GraphEdge(source="start", target="echo_tool"),
175
+ GraphEdge(source="echo_tool", target="end"),
176
+ ],
177
+ )
178
+
179
+ # Create agent with graph policy
180
+ agent = Agent(
181
+ name="graph_agent",
182
+ model=model1,
183
+ policy=GraphPolicy(graph=graph)
184
+ )
185
+
186
+ # Run the agent
187
+ async def main():
188
+ result = await agent.run("Process this task")
189
+ print(result.output.content)
190
+
191
+ asyncio.run(main())
192
+ ```
193
+
194
+ ## ๐Ÿ“š Documentation
195
+
196
+ - **[Architecture Guide](docs/architecture.md)**: Deep dive into RouteKitAI's design
197
+ - **[Security & Governance](docs/security-and-governance.md)**: Security features and best practices
198
+ - **[API Reference](https://RouteKitAI.readthedocs.io)**: Complete API documentation (coming soon)
199
+
200
+ ## ๐ŸŽ“ Examples
201
+
202
+ Check out the [`examples/`](examples/) directory for complete examples:
203
+
204
+ - **[Basic Agent](examples/hello_RouteKitAI.py)**: Simple agent with tools
205
+ - **[Graph Orchestration](examples/graph_agent.py)**: Multi-agent workflow
206
+ - **[Supervisor Pattern](examples/supervisor_agent.py)**: Supervisor delegating to sub-agents
207
+ - **[Evaluation Harness](examples/eval_regression.py)**: Testing agents with datasets
208
+
209
+ ## ๐Ÿ› ๏ธ CLI Commands
210
+
211
+ RouteKitAI provides a CLI for common operations:
212
+
213
+ ```bash
214
+ # Run an agent script
215
+ RouteKitAI run agent_script.py
216
+
217
+ # View a trace (multiple formats available)
218
+ RouteKitAI trace <trace_id> # Table view (default)
219
+ RouteKitAI trace <trace_id> --format timeline # Timeline visualization
220
+ RouteKitAI trace <trace_id> --format steps # Step-by-step execution
221
+ RouteKitAI trace <trace_id> --format json # JSON output
222
+ RouteKitAI trace <trace_id> --format raw # Raw JSONL
223
+
224
+ # Analyze trace metrics
225
+ RouteKitAI trace-analyze <trace_id> # Performance metrics, token usage, costs
226
+
227
+ # Search traces
228
+ RouteKitAI trace-search "error" # Search all traces for "error"
229
+ RouteKitAI trace-search "model" --trace-id abc # Search specific trace
230
+ RouteKitAI trace-search "tool" --event-type tool_called # Filter by event type
231
+
232
+ # Replay a trace
233
+ RouteKitAI replay <trace_id> --agent my_agent
234
+
235
+ # Start web UI for trace visualization
236
+ RouteKitAI serve # Start on default port 8080
237
+ RouteKitAI serve --port 3000 # Custom port
238
+ RouteKitAI serve --host 0.0.0.0 # Make accessible from network
239
+
240
+ # Run sanity checks
241
+ RouteKitAI test-agent
242
+ ```
243
+
244
+ ## ๐Ÿ—๏ธ Core Primitives
245
+
246
+ RouteKitAI keeps it minimal with 5 core primitives:
247
+
248
+ 1. **Model**: LLM interface abstraction
249
+ 2. **Message**: Conversation message representation
250
+ 3. **Tool**: Callable function/tool definition
251
+ 4. **Agent**: Agent with model and tools
252
+ 5. **Runtime**: Orchestration and execution engine
253
+
254
+ ## ๐Ÿงช Development
255
+
256
+ ### Setup
257
+
258
+ ```bash
259
+ # Clone the repository
260
+ git clone https://github.com/MedGhassen/RouteKitAI.git
261
+ cd RouteKitAI
262
+
263
+ # Install with dev dependencies
264
+ pip install -e ".[dev]"
265
+ ```
266
+
267
+ ### Running Tests
268
+
269
+ ```bash
270
+ # Run all tests
271
+ pytest
272
+
273
+ # Run with coverage
274
+ pytest --cov=RouteKitAI --cov-report=html
275
+
276
+ # Run specific test file
277
+ pytest tests/test_runtime.py
278
+ ```
279
+
280
+ ### Code Quality
281
+
282
+ ```bash
283
+ # Type checking
284
+ mypy src/
285
+
286
+ # Linting
287
+ ruff check src/
288
+
289
+ # Format code
290
+ ruff format src/
291
+ ```
292
+
293
+ ## ๐Ÿค Contributing
294
+
295
+ Contributions are welcome! Please read our contributing guidelines (coming soon) and:
296
+
297
+ 1. Fork the repository
298
+ 2. Create a feature branch (`git checkout -b feature/amazing-feature`)
299
+ 3. Commit your changes (`git commit -m 'Add amazing feature'`)
300
+ 4. Push to the branch (`git push origin feature/amazing-feature`)
301
+ 5. Open a Pull Request
302
+
303
+ ## ๐Ÿ“‹ Requirements
304
+
305
+ - Python 3.11 or higher
306
+ - Pydantic 2.0+
307
+
308
+ ## ๐Ÿ“„ License
309
+
310
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
311
+
312
+ ## ๐Ÿ™ Acknowledgments
313
+
314
+ RouteKitAI is inspired by the need for testable, observable AI agent frameworks. Special thanks to the open-source community for their contributions and feedback.
315
+
316
+ ## ๐Ÿ”— Links
317
+
318
+ - **GitHub**: [https://github.com/MedGhassen/RouteKitAI](https://github.com/MedGhassen/RouteKitAI)
319
+ - **Documentation**: [https://RouteKitAI.readthedocs.io](https://RouteKitAI.readthedocs.io) (coming soon)
320
+ - **Issues**: [https://github.com/MedGhassen/RouteKitAI/issues](https://github.com/MedGhassen/RouteKitAI/issues)
321
+
322
+ ---
323
+
324
+ <div align="center">
325
+
326
+ Made with โค๏ธ by the Mohamed Ghassen Brahim
327
+
328
+ </div>