jaf-py 2.3.1__py3-none-any.whl → 2.4.2__py3-none-any.whl

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jaf-py
3
- Version: 2.3.1
3
+ Version: 2.4.2
4
4
  Summary: A purely functional agent framework with immutable state and composable tools - Python implementation
5
5
  Author: JAF Contributors
6
6
  Maintainer: JAF Contributors
@@ -48,6 +48,14 @@ Requires-Dist: opentelemetry-api>=1.22.0; extra == "tracing"
48
48
  Requires-Dist: opentelemetry-sdk>=1.22.0; extra == "tracing"
49
49
  Requires-Dist: opentelemetry-exporter-otlp>=1.22.0; extra == "tracing"
50
50
  Requires-Dist: langfuse<3.0.0; extra == "tracing"
51
+ Provides-Extra: attachments
52
+ Requires-Dist: PyPDF2>=3.0.0; extra == "attachments"
53
+ Requires-Dist: python-docx>=1.1.0; extra == "attachments"
54
+ Requires-Dist: openpyxl>=3.1.0; extra == "attachments"
55
+ Requires-Dist: pillow>=11.0.0; extra == "attachments"
56
+ Requires-Dist: python-magic>=0.4.27; sys_platform != "win32" and extra == "attachments"
57
+ Requires-Dist: python-magic-bin>=0.4.14; sys_platform == "win32" and extra == "attachments"
58
+ Requires-Dist: aiofiles>=23.0.0; extra == "attachments"
51
59
  Provides-Extra: dev
52
60
  Requires-Dist: pytest>=7.0.0; extra == "dev"
53
61
  Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
@@ -66,74 +74,74 @@ Requires-Dist: psycopg2-binary>=2.9.0; extra == "memory"
66
74
  Provides-Extra: visualization
67
75
  Requires-Dist: graphviz>=0.20.0; extra == "visualization"
68
76
  Provides-Extra: all
69
- Requires-Dist: jaf-py[dev,memory,server,tracing,visualization]; extra == "all"
77
+ Requires-Dist: jaf-py[attachments,dev,memory,server,tracing,visualization]; extra == "all"
70
78
  Dynamic: license-file
71
79
 
72
80
  # JAF (Juspay Agent Framework) - Python Implementation
73
81
 
74
82
  <!-- ![JAF Banner](docs/cover.png) -->
75
83
 
76
- [![Version](https://img.shields.io/badge/version-2.2.3-blue.svg)](https://github.com/xynehq/jaf-py)
84
+ [![Version](https://img.shields.io/badge/version-2.3.1-blue.svg)](https://github.com/xynehq/jaf-py)
77
85
  [![Python](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/)
78
86
  [![Docs](https://img.shields.io/badge/Docs-Live-brightgreen)](https://xynehq.github.io/jaf-py/)
79
87
 
80
88
  A purely functional agent framework with immutable state and composable tools, professionally converted from TypeScript to Python. JAF enables building production-ready AI agent systems with built-in security, observability, and error handling.
81
89
 
82
- **🎯 Production Ready**: Complete feature parity with TypeScript version, comprehensive test suite, and production deployment support.
83
-
84
- ## 📚 **[Read the Full Documentation](https://xynehq.github.io/jaf-py/)**
85
-
86
- **[🚀 Get Started →](https://xynehq.github.io/jaf-py/getting-started/)** | **[📖 API Reference →](https://xynehq.github.io/jaf-py/api-reference/)** | **[🎮 Examples →](https://xynehq.github.io/jaf-py/examples/)**
87
-
88
- ## Key Features
89
-
90
- ### 🏗️ **Complete TypeScript Conversion**
91
- -**Full Feature Parity**: All TypeScript functionality converted to Python
92
- -**Type Safety**: Pydantic models with runtime validation
93
- -**Immutable State**: Functional programming principles preserved
94
- -**Tool Integration**: Complete tool calling and execution system
95
-
96
- ### 🚀 **Production Ready Server**
97
- -**FastAPI Server**: High-performance async HTTP API
98
- -**Auto Documentation**: Interactive API docs at `/docs`
99
- -**Health Monitoring**: Built-in health checks and metrics
100
- -**CORS Support**: Ready for browser integration
101
-
102
- ### 🔌 **Model Context Protocol (MCP)**
103
- -**MCP Client**: Full MCP specification support
104
- -**Stdio & SSE**: Multiple transport protocols
105
- -**Tool Integration**: Seamless MCP tool integration
106
- -**Auto Discovery**: Dynamic tool loading from MCP servers
107
-
108
- ### 🛡️ **Enterprise Security**
109
- -**Input Guardrails**: Content filtering and validation
110
- -**Output Guardrails**: Response sanitization
111
- -**Permission System**: Role-based access control
112
- -**Audit Logging**: Complete interaction tracing
113
- -**Proxy Support**: Corporate proxy integration with authentication
114
-
115
- ### 📊 **Observability & Monitoring**
116
- -**Real-time Tracing**: Event-driven observability
117
- -**OpenTelemetry Integration**: Distributed tracing with OTLP
118
- -**Langfuse Tracing**: LLM observability and analytics
119
- -**Structured Logging**: JSON-formatted logs
120
- -**Error Handling**: Comprehensive error types and recovery
121
- -**Performance Metrics**: Built-in timing and counters
122
-
123
- ### 🤖 **Agent-as-Tool Architecture**
124
- -**Hierarchical Orchestration**: Use agents as tools in other agents
125
- -**Conditional Tool Enabling**: Enable/disable agent tools based on context
126
- -**Session Management**: Configurable session inheritance for sub-agents
127
- -**Flexible Output Extraction**: Custom extractors for agent tool outputs
128
-
129
- ### 🔧 **Developer Experience**
130
- -**CLI Tools**: Project initialization and management
131
- -**Hot Reload**: Development server with auto-reload
132
- -**Type Hints**: Full mypy compatibility
133
- -**Rich Examples**: RAG, multi-agent, agent-as-tool, and server demos
134
- -**Visual Architecture**: Graphviz-powered agent and tool diagrams
135
-
136
- ## 🎯 Core Philosophy
90
+ **Production Ready**: Complete feature parity with TypeScript version, comprehensive test suite, and production deployment support.
91
+
92
+ ## **[Read the Full Documentation](https://xynehq.github.io/jaf-py/)**
93
+
94
+ **[ Get Started →](https://xynehq.github.io/jaf-py/getting-started/)** | **[ API Reference →](https://xynehq.github.io/jaf-py/api-reference/)** | **[ Examples →](https://xynehq.github.io/jaf-py/examples/)**
95
+
96
+ ## Key Features
97
+
98
+ ### **Complete TypeScript Conversion**
99
+ - **Full Feature Parity**: All TypeScript functionality converted to Python
100
+ - **Type Safety**: Pydantic models with runtime validation
101
+ - **Immutable State**: Functional programming principles preserved
102
+ - **Tool Integration**: Complete tool calling and execution system
103
+
104
+ ### **Production Ready Server**
105
+ - **FastAPI Server**: High-performance async HTTP API
106
+ - **Auto Documentation**: Interactive API docs at `/docs`
107
+ - **Health Monitoring**: Built-in health checks and metrics
108
+ - **CORS Support**: Ready for browser integration
109
+
110
+ ### **Model Context Protocol (MCP)**
111
+ - **MCP Client**: Full MCP specification support
112
+ - **Stdio & SSE**: Multiple transport protocols
113
+ - **Tool Integration**: Seamless MCP tool integration
114
+ - **Auto Discovery**: Dynamic tool loading from MCP servers
115
+
116
+ ### **Enterprise Security**
117
+ - **Input Guardrails**: Content filtering and validation
118
+ - **Output Guardrails**: Response sanitization
119
+ - **Permission System**: Role-based access control
120
+ - **Audit Logging**: Complete interaction tracing
121
+ - **Proxy Support**: Corporate proxy integration with authentication
122
+
123
+ ### **Observability & Monitoring**
124
+ - **Real-time Tracing**: Event-driven observability
125
+ - **OpenTelemetry Integration**: Distributed tracing with OTLP
126
+ - **Langfuse Tracing**: LLM observability and analytics
127
+ - **Structured Logging**: JSON-formatted logs
128
+ - **Error Handling**: Comprehensive error types and recovery
129
+ - **Performance Metrics**: Built-in timing and counters
130
+
131
+ ### **Agent-as-Tool Architecture**
132
+ - **Hierarchical Orchestration**: Use agents as tools in other agents
133
+ - **Conditional Tool Enabling**: Enable/disable agent tools based on context
134
+ - **Session Management**: Configurable session inheritance for sub-agents
135
+ - **Flexible Output Extraction**: Custom extractors for agent tool outputs
136
+
137
+ ### **Developer Experience**
138
+ - **CLI Tools**: Project initialization and management
139
+ - **Hot Reload**: Development server with auto-reload
140
+ - **Type Hints**: Full mypy compatibility
141
+ - **Rich Examples**: RAG, multi-agent, agent-as-tool, and server demos
142
+ - **Visual Architecture**: Graphviz-powered agent and tool diagrams
143
+
144
+ ## Core Philosophy
137
145
 
138
146
  - **Immutability**: All core data structures are deeply immutable
139
147
  - **Pure Functions**: Core logic expressed as pure, predictable functions
@@ -141,7 +149,7 @@ A purely functional agent framework with immutable state and composable tools, p
141
149
  - **Composition over Configuration**: Build complex behavior by composing simple functions
142
150
  - **Type-Safe by Design**: Leverages Python's type system with Pydantic for runtime safety
143
151
 
144
- ## 🚀 Quick Start
152
+ ## Quick Start
145
153
 
146
154
  ### Installation
147
155
 
@@ -197,37 +205,37 @@ pip install -r requirements-docs.txt
197
205
  ./docs.sh deploy # Deploy to GitHub Pages
198
206
  ```
199
207
 
200
- ## 📖 Documentation
208
+ ## Documentation
201
209
 
202
- ### 🌐 **[Official Documentation Website](https://xynehq.github.io/jaf-py/)**
210
+ ### **[Official Documentation Website](https://xynehq.github.io/jaf-py/)**
203
211
 
204
212
  The complete, searchable documentation is available at **[xynehq.github.io/jaf-py](https://xynehq.github.io/jaf-py/)** with:
205
213
 
206
- -**Interactive navigation** with search and filtering
207
- -**Dark/light mode** with automatic system preference detection
208
- -**Mobile-responsive design** for documentation on any device
209
- -**Live code examples** with syntax highlighting
210
- -**API reference** with auto-generated documentation
211
- -**Always up-to-date** with automatic deployments
214
+ - **Interactive navigation** with search and filtering
215
+ - **Dark/light mode** with automatic system preference detection
216
+ - **Mobile-responsive design** for documentation on any device
217
+ - **Live code examples** with syntax highlighting
218
+ - **API reference** with auto-generated documentation
219
+ - **Always up-to-date** with automatic deployments
212
220
 
213
- ### 📁 **Local Documentation**
221
+ ### **Local Documentation**
214
222
 
215
223
  For offline access, documentation is also available in the [`docs/`](docs/) directory:
216
224
 
217
- - **[📚 Documentation Hub](docs/README.md)** - Your starting point for all documentation
218
- - **[🚀 Getting Started](docs/getting-started.md)** - Installation and first agent tutorial
219
- - **[🏗️ Core Concepts](docs/core-concepts.md)** - JAF's functional architecture principles
220
- - **[📋 API Reference](docs/api-reference.md)** - Complete Python API documentation
221
- - **[🔧 Tools Guide](docs/tools.md)** - Creating and using tools
222
- - **[💾 Memory System](docs/memory-system.md)** - Persistence and memory providers
223
- - **[🤖 Model Providers](docs/model-providers.md)** - LiteLLM integration
224
- - **[📊 Monitoring](docs/monitoring.md)** - Observability, metrics, and alerting
225
- - **[🌐 Server API](docs/server-api.md)** - FastAPI endpoints reference
226
- - **[📦 Deployment](docs/deployment.md)** - Production deployment guide
227
- - **[🎮 Examples](docs/examples.md)** - Detailed example walkthroughs
228
- - **[🔧 Troubleshooting](docs/troubleshooting.md)** - Common issues and solutions
229
-
230
- ## 📁 Project Structure
225
+ - **[ Documentation Hub](docs/README.md)** - Your starting point for all documentation
226
+ - **[ Getting Started](docs/getting-started.md)** - Installation and first agent tutorial
227
+ - **[ Core Concepts](docs/core-concepts.md)** - JAF's functional architecture principles
228
+ - **[ API Reference](docs/api-reference.md)** - Complete Python API documentation
229
+ - **[ Tools Guide](docs/tools.md)** - Creating and using tools
230
+ - **[ Memory System](docs/memory-system.md)** - Persistence and memory providers
231
+ - **[ Model Providers](docs/model-providers.md)** - LiteLLM integration
232
+ - **[ Monitoring](docs/monitoring.md)** - Observability, metrics, and alerting
233
+ - **[ Server API](docs/server-api.md)** - FastAPI endpoints reference
234
+ - **[ Deployment](docs/deployment.md)** - Production deployment guide
235
+ - **[ Examples](docs/examples.md)** - Detailed example walkthroughs
236
+ - **[ Troubleshooting](docs/troubleshooting.md)** - Common issues and solutions
237
+
238
+ ## Project Structure
231
239
 
232
240
  ```
233
241
  jaf-py/
@@ -243,7 +251,7 @@ jaf-py/
243
251
  └── tests/ # Test suite
244
252
  ```
245
253
 
246
- ## 🎨 Architectural Visualization
254
+ ## Architectural Visualization
247
255
 
248
256
  JAF includes powerful visualization capabilities to help you understand and document your agent systems.
249
257
 
@@ -295,7 +303,7 @@ async def main():
295
303
  )
296
304
 
297
305
  if result.success:
298
- print(f" Visualization saved to: {result.output_path}")
306
+ print(f" Visualization saved to: {result.output_path}")
299
307
  else:
300
308
  print(f"❌ Error: {result.error}")
301
309
 
@@ -304,12 +312,12 @@ asyncio.run(main())
304
312
 
305
313
  ### Features
306
314
 
307
- - **🎨 Multiple Color Schemes**: Choose from `default`, `modern`, or `minimal` themes
308
- - **📊 Agent Architecture**: Visualize agents, tools, and handoff relationships
309
- - **🔧 Tool Ecosystems**: Generate dedicated tool interaction diagrams
310
- - **🏃 Runner Architecture**: Show complete system architecture with session layers
311
- - **📄 Multiple Formats**: Export as PNG, SVG, or PDF
312
- - **⚙️ Customizable Layouts**: Support for various Graphviz layouts (`dot`, `circo`, `neato`, etc.)
315
+ - **Multiple Color Schemes**: Choose from `default`, `modern`, or `minimal` themes
316
+ - **Agent Architecture**: Visualize agents, tools, and handoff relationships
317
+ - **Tool Ecosystems**: Generate dedicated tool interaction diagrams
318
+ - **Runner Architecture**: Show complete system architecture with session layers
319
+ - **Multiple Formats**: Export as PNG, SVG, or PDF
320
+ - **Customizable Layouts**: Support for various Graphviz layouts (`dot`, `circo`, `neato`, etc.)
313
321
 
314
322
  ### Example Output
315
323
 
@@ -336,7 +344,7 @@ await run_visualization_examples()
336
344
  # - ./examples/agent-modern.png (modern color scheme)
337
345
  ```
338
346
 
339
- ## 🏗️ Key Components
347
+ ## Key Components
340
348
 
341
349
  ### Core Types
342
350
 
@@ -414,7 +422,7 @@ async def main():
414
422
  asyncio.run(main())
415
423
  ```
416
424
 
417
- ## 🛡️ Security & Validation
425
+ ## Security & Validation
418
426
 
419
427
  ### Composable Validation Policies
420
428
 
@@ -449,7 +457,7 @@ config = RunConfig(
449
457
  )
450
458
  ```
451
459
 
452
- ## 🤖 Agent-as-Tool Functionality
460
+ ## Agent-as-Tool Functionality
453
461
 
454
462
  JAF 2.2+ introduces powerful agent-as-tool capabilities, allowing you to use agents as tools within other agents for hierarchical orchestration:
455
463
 
@@ -528,7 +536,7 @@ def create_triage_agent():
528
536
  )
529
537
  ```
530
538
 
531
- ## 📊 Observability
539
+ ## Observability
532
540
 
533
541
  ### Real-time Tracing
534
542
 
@@ -605,7 +613,7 @@ if result.outcome.status == 'error':
605
613
  print(f"[{severity}] {formatted_error} (retryable: {is_retryable})")
606
614
  ```
607
615
 
608
- ## 🔌 Provider Integrations
616
+ ## Provider Integrations
609
617
 
610
618
  ### A2A (Agent-to-Agent) Communication
611
619
 
@@ -672,7 +680,7 @@ from jaf.providers.mcp import create_mcp_sse_client
672
680
  sse_client = create_mcp_sse_client('http://localhost:8080/sse')
673
681
  ```
674
682
 
675
- ## 🚀 Development Server
683
+ ## Development Server
676
684
 
677
685
  JAF includes a built-in development server for testing agents locally via HTTP endpoints:
678
686
 
@@ -706,7 +714,7 @@ Server provides RESTful endpoints:
706
714
  - `POST /chat` - General chat endpoint
707
715
  - `POST /agents/{name}/chat` - Agent-specific endpoint
708
716
 
709
- ## 🔧 Function Composition
717
+ ## Function Composition
710
718
 
711
719
  JAF supports functional composition patterns for building complex behaviors from simple, reusable functions:
712
720
 
@@ -742,7 +750,7 @@ enhanced_tool = create_function_tool({
742
750
  - **Type Safety**: Full type checking support
743
751
  - **Performance**: Optimize individual pieces independently
744
752
 
745
- ## 🎮 Example Applications
753
+ ## Example Applications
746
754
 
747
755
  Explore the example applications to see the framework in action:
748
756
 
@@ -754,12 +762,12 @@ python server_example.py
754
762
  ```
755
763
 
756
764
  **Features demonstrated:**
757
- -Multiple specialized agents (math, weather, general)
758
- -Tool integration (calculator, weather API)
759
- -Agent handoffs and routing
760
- -RESTful API with auto-documentation
761
- -Real-time tracing and error handling
762
- -Production-ready server configuration
765
+ - Multiple specialized agents (math, weather, general)
766
+ - Tool integration (calculator, weather API)
767
+ - Agent handoffs and routing
768
+ - RESTful API with auto-documentation
769
+ - Real-time tracing and error handling
770
+ - Production-ready server configuration
763
771
 
764
772
  **Available endpoints:**
765
773
  - `GET /health` - Server health check
@@ -778,11 +786,11 @@ python agent_as_tool_example.py --server
778
786
  ```
779
787
 
780
788
  **Features demonstrated:**
781
- -Hierarchical agent orchestration
782
- -Conditional tool enabling based on context
783
- -Custom output extraction from agent tools
784
- -Session management for sub-agents
785
- -Translation agents working together
789
+ - Hierarchical agent orchestration
790
+ - Conditional tool enabling based on context
791
+ - Custom output extraction from agent tools
792
+ - Session management for sub-agents
793
+ - Translation agents working together
786
794
 
787
795
  ### 3. Tracing Integration Demos
788
796
 
@@ -796,10 +804,10 @@ python langfuse_tracing_demo.py
796
804
  ```
797
805
 
798
806
  **Features demonstrated:**
799
- -OpenTelemetry distributed tracing setup
800
- -Langfuse LLM observability integration
801
- -Composite trace collectors
802
- -Real-time monitoring and analytics
807
+ - OpenTelemetry distributed tracing setup
808
+ - Langfuse LLM observability integration
809
+ - Composite trace collectors
810
+ - Real-time monitoring and analytics
803
811
 
804
812
  ### 4. MCP Integration Demo
805
813
 
@@ -809,12 +817,12 @@ python main.py
809
817
  ```
810
818
 
811
819
  **Features demonstrated:**
812
- -Model Context Protocol integration
813
- -Dynamic tool loading from MCP servers
814
- -Secure filesystem operations
815
- -MCP client configuration and management
820
+ - Model Context Protocol integration
821
+ - Dynamic tool loading from MCP servers
822
+ - Secure filesystem operations
823
+ - MCP client configuration and management
816
824
 
817
- ## 🧪 Testing
825
+ ## Testing
818
826
 
819
827
  ```bash
820
828
  pytest # Run tests
@@ -823,7 +831,7 @@ mypy . # Type checking
823
831
  black . # Format code
824
832
  ```
825
833
 
826
- ## 🏛️ Architecture Principles
834
+ ## Architecture Principles
827
835
 
828
836
  ### Immutable State Machine
829
837
  - All state transformations create new state objects
@@ -859,4 +867,4 @@ MIT
859
867
 
860
868
  ---
861
869
 
862
- **JAF (Juspay Agentic Framework) v2.2** - Building the future of functional AI agent systems 🚀
870
+ **JAF (Juspay Agentic Framework) v2.2** - Building the future of functional AI agent systems
@@ -1,4 +1,4 @@
1
- jaf/__init__.py,sha256=JO-LHWJOF9IFGiQ9G4dk3Q2pFe2Wuqi5D3rA8E-W_1E,7859
1
+ jaf/__init__.py,sha256=kNxEp8Gr_lmJheZWRbjukSFjJX9K7RBOzAzTM690N7Y,8260
2
2
  jaf/cli.py,sha256=Af4di_NZ7rZ4wFl0R4EZh611NgJ--TL03vNyZ2M1_FY,8477
3
3
  jaf/exceptions.py,sha256=nl8JY355u7oTXB3PmC_LhnUaL8fzk2K4EaWM4fVpMPE,9196
4
4
  jaf/a2a/__init__.py,sha256=p4YVthZH0ow1ZECqWTQ0aQl8JWySYZb25jlzZJ09na4,7662
@@ -39,24 +39,26 @@ jaf/a2a/tests/test_integration.py,sha256=I7LdgwN99mAOljM9kYtK7dGMMntTSWKMw_oLOcJ
39
39
  jaf/a2a/tests/test_protocol.py,sha256=He3vGlBfIazpppAnuSybutrvjIN3VGxEleAohrVd9hc,23287
40
40
  jaf/a2a/tests/test_types.py,sha256=PgRjDVJrHSXuu05z0B5lsSUUY5qEdQLFJbLBIExyVgI,18384
41
41
  jaf/core/__init__.py,sha256=rBvP_7TGbJICDJnA7a3qyX8yQErCDWaGAn5WzpyH4gU,1339
42
- jaf/core/agent_tool.py,sha256=8TcBuSxGmDTW5F_GhBU_m5S43nYqkjO4qTrNERraAig,11656
43
- jaf/core/analytics.py,sha256=NrUfOLLTDIhOzdfc65ZqS9AJ4ZAP9BtNtga69q0YdYw,23265
42
+ jaf/core/agent_tool.py,sha256=tfLNaTIcOZ0dR9GBP1AHLPkLExm_dLbURnVIN4R84FQ,11806
43
+ jaf/core/analytics.py,sha256=zFHIWqWal0bbEFCmJDc4DKeM0Ja7b_D19PqVaBI12pA,23338
44
44
  jaf/core/composition.py,sha256=IVxRO1Q9nK7JRH32qQ4p8WMIUu66BhqPNrlTNMGFVwE,26317
45
- jaf/core/engine.py,sha256=v6yXp-zJF9Cj_9qlaW1rmCz7_N3YuDU02xxlzl-howM,27122
45
+ jaf/core/engine.py,sha256=uijM1N-W-OG1oelMtV4m-o2cdrBziLU75jn8JOZBaWA,50631
46
46
  jaf/core/errors.py,sha256=5fwTNhkojKRQ4wZj3lZlgDnAsrYyjYOwXJkIr5EGNUc,5539
47
47
  jaf/core/performance.py,sha256=jedQmTEkrKMD6_Aw1h8PdG-5TsdYSFFT7Or6k5dmN2g,9974
48
48
  jaf/core/proxy.py,sha256=_WM3cpRlSQLYpgSBrnY30UPMe2iZtlqDQ65kppE-WY0,4609
49
49
  jaf/core/proxy_helpers.py,sha256=i7a5fAX9rLmO4FMBX51-yRkTFwfWedzQNgnLmeLUd_A,4370
50
+ jaf/core/state.py,sha256=NMtYTpUYa64m1Kte6lD8LGnF2bl69HAcdgXH6f-M97c,5650
50
51
  jaf/core/streaming.py,sha256=c5o9iqpjoYV2LrUpG6qLWCYrWcP-DCcZsvMbyqKunp8,16089
51
52
  jaf/core/tool_results.py,sha256=-bTOqOX02lMyslp5Z4Dmuhx0cLd5o7kgR88qK2HO_sw,11323
52
- jaf/core/tools.py,sha256=SbJRRr4y_xxNYNTulZg6OiyNaHBlo_qXWYY510jxQEs,16489
53
- jaf/core/tracing.py,sha256=3ByTbpYMWHJku-NEasK5ncyMOdv7vHwmG6ybJP19pxE,31659
54
- jaf/core/types.py,sha256=9UXrPkepw7opgv1VGbPAC1Zx80RP4-ouRxtb6kVTA-A,17063
53
+ jaf/core/tools.py,sha256=84N9A7QQ3xxcOs2eUUot3nmCnt5i7iZT9VwkuzuFBxQ,16274
54
+ jaf/core/tracing.py,sha256=pOswPTvhIYXj88kxMSJDySfbcnROU3eB4dooVl1e_18,36604
55
+ jaf/core/types.py,sha256=_e7F368BwzdZ2BZuakSp5Bw7gzi8xYD0LlOIy2S25Ds,23061
55
56
  jaf/core/workflows.py,sha256=Ul-82gzjIXtkhnSMSPv-8igikjkMtW1EBo9yrfodtvI,26294
56
57
  jaf/memory/__init__.py,sha256=-L98xlvihurGAzF0DnXtkueDVvO_wV2XxxEwAWdAj50,1400
58
+ jaf/memory/approval_storage.py,sha256=HHZ_b57kIthdR53QE5XNSII9xy1Cg-1cFUCSAZ8A4Rk,11083
57
59
  jaf/memory/factory.py,sha256=Fh6JyvQtCKe38DZV5-NnC9vPRCvzBgSSPFIGaX7Nt5E,2958
58
- jaf/memory/types.py,sha256=6XFC1yTlzwf9PF5UKuO5PlDdzj2CmGorZOXKCH4s6fk,8380
59
- jaf/memory/utils.py,sha256=erX-Fk7N5aZp7PpGeP7Zhk0LEbxnHNcDdEJ-4RhVRQQ,6863
60
+ jaf/memory/types.py,sha256=rAilMYhAzJLceGkdk1U_worRTNw75ZJV5ZuXYR6oyLA,8484
61
+ jaf/memory/utils.py,sha256=t_sH2txnbYLO_noT6ysmJfiU6lX7b_sp_g0lNQ2B61A,6881
60
62
  jaf/memory/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
63
  jaf/memory/providers/in_memory.py,sha256=5hiCumGK2c6SlEFdPAacC493JY1hDDfY1CaMxx8pS2E,12558
62
64
  jaf/memory/providers/postgres.py,sha256=pIXLnIsE9kA4IydIgBs3EZnI40t_h2HFIThr5NTZuhA,12144
@@ -68,20 +70,23 @@ jaf/policies/handoff.py,sha256=KJYYuL9T6v6DECRhnsS2Je6q4Aj9_zC5d_KBnvEnZNE,8318
68
70
  jaf/policies/validation.py,sha256=wn-7ynH10E5nk-_r1_kHIYHrBGmLX0EFr-FUTHrsxvc,10903
69
71
  jaf/providers/__init__.py,sha256=j_o-Rubr8d9tNYlFWb6fvzkxIBl3JKK_iabj9wTFia0,2114
70
72
  jaf/providers/mcp.py,sha256=WxcC8gUFpDBBYyhorMcc1jHq3xMDMBtnwyRPthfL0S0,13074
71
- jaf/providers/model.py,sha256=9w2mph6g1TaLOFp3t0VtN2kYEfTa-lyYAVjAqQg3wrU,7748
72
- jaf/server/__init__.py,sha256=K0vSgTfzn3oM54UX9BeAROpaksYY43mFtfjSXoQrhXA,339
73
+ jaf/providers/model.py,sha256=NJTa-1k0EruDdLf2HS1ZdDpFJhHXzzfQyXAbJx9kZVc,25468
74
+ jaf/server/__init__.py,sha256=fMPnLZBRm6t3yQrr7-PnoHAQ8qj9o6Z1AJLM1M6bIS0,392
73
75
  jaf/server/main.py,sha256=CTb0ywbPIq9ELfay5MKChVR7BpIQOoEbPjPfpzo2aBQ,2152
74
- jaf/server/server.py,sha256=o-n6dPWmlu4_v5ozVW3BTOm1b5kHBQhqRYlHh5sXL-k,8048
75
- jaf/server/types.py,sha256=On99oPFdCEjVFsxFqUbs3sUhlZ3sryn4dKuZgJKRdM4,4116
76
+ jaf/server/server.py,sha256=LooAxxdeitwZHJff-UTE3L7zM6pSNqixMipOgspL5SA,38787
77
+ jaf/server/types.py,sha256=Gg8z1bkA7IYg94lp31iB92-4VkJr9syKA41uVCfNZBc,10544
78
+ jaf/utils/__init__.py,sha256=4Lte7HPIpmEuGvWd9lSH9gljV11wy-yNFjECPhcejAY,1236
79
+ jaf/utils/attachments.py,sha256=9xNzzQanCwJnBR1L6P79YQtbuRupiDluDn46SYUlHok,13542
80
+ jaf/utils/document_processor.py,sha256=FSALtq-RLMWJPmxRSDs32Nys4XAvacSbRf211-mjIeA,20150
76
81
  jaf/visualization/__init__.py,sha256=hx9Ao08C34_rCNd13ATWBkoiWLZspquD8MuPuQ4U5gE,1218
77
82
  jaf/visualization/example.py,sha256=8GN7Bi328yPhAWX-PVJUUa4NbO7cpC0QuwOaUt9Fsk4,12622
78
83
  jaf/visualization/functional_core.py,sha256=zedMDZbvjuOugWwnh6SJ2stvRNQX1Hlkb9AbtAtjZUg,6109
79
84
  jaf/visualization/graphviz.py,sha256=WTOM6UP72-lVKwI4_SAr5-GCC3ouckxHv88ypCDQWJ0,12056
80
85
  jaf/visualization/imperative_shell.py,sha256=GpMrAlMnLo2IQgyB2nardCz09vMvAzaYI46MyrvJ0i4,2593
81
86
  jaf/visualization/types.py,sha256=QQcbVeQJLuAOXk8ynd08DXIS-PVCnv3R-XVE9iAcglw,1389
82
- jaf_py-2.3.1.dist-info/licenses/LICENSE,sha256=LXUQBJxdyr-7C4bk9cQBwvsF_xwA-UVstDTKabpcjlI,1063
83
- jaf_py-2.3.1.dist-info/METADATA,sha256=0o3VxXPHt1FO6lHDttZyFGNDk-WPH5nxaX9zXoAvcLg,27613
84
- jaf_py-2.3.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
85
- jaf_py-2.3.1.dist-info/entry_points.txt,sha256=OtIJeNJpb24kgGrqRx9szGgDx1vL9ayq8uHErmu7U5w,41
86
- jaf_py-2.3.1.dist-info/top_level.txt,sha256=Xu1RZbGaM4_yQX7bpalo881hg7N_dybaOW282F15ruE,4
87
- jaf_py-2.3.1.dist-info/RECORD,,
87
+ jaf_py-2.4.2.dist-info/licenses/LICENSE,sha256=LXUQBJxdyr-7C4bk9cQBwvsF_xwA-UVstDTKabpcjlI,1063
88
+ jaf_py-2.4.2.dist-info/METADATA,sha256=P6_xWxcUBZj-5uJXZhxRU4rAIWhRc1Q_EPYC6ohASpk,27712
89
+ jaf_py-2.4.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
90
+ jaf_py-2.4.2.dist-info/entry_points.txt,sha256=OtIJeNJpb24kgGrqRx9szGgDx1vL9ayq8uHErmu7U5w,41
91
+ jaf_py-2.4.2.dist-info/top_level.txt,sha256=Xu1RZbGaM4_yQX7bpalo881hg7N_dybaOW282F15ruE,4
92
+ jaf_py-2.4.2.dist-info/RECORD,,
File without changes