a2a-adapter 0.1.3__py3-none-any.whl → 0.1.5__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.
a2a_adapter/loader.py CHANGED
@@ -13,27 +13,35 @@ from .adapter import BaseAgentAdapter
13
13
  async def load_a2a_agent(config: Dict[str, Any]) -> BaseAgentAdapter:
14
14
  """
15
15
  Factory function to load an agent adapter based on configuration.
16
-
16
+
17
17
  This function inspects the 'adapter' key in the config dictionary and
18
18
  instantiates the appropriate adapter class with the provided configuration.
19
-
19
+
20
20
  Args:
21
21
  config: Configuration dictionary with at least an 'adapter' key.
22
22
  Additional keys depend on the adapter type:
23
-
23
+
24
24
  - n8n: requires 'webhook_url', optional 'timeout', 'headers',
25
- 'payload_template', 'message_field'
26
- - crewai: requires 'crew' (CrewAI Crew instance)
25
+ 'payload_template', 'message_field', 'async_mode'
26
+ - crewai: requires 'crew' (CrewAI Crew instance),
27
+ optional 'inputs_key', 'async_mode'
27
28
  - langchain: requires 'runnable', optional 'input_key', 'output_key'
28
- - callable: requires 'callable' (async function)
29
-
29
+ - langgraph: requires 'graph' (CompiledGraph instance),
30
+ optional 'input_key', 'output_key', 'async_mode'
31
+ - callable: requires 'callable' (async function),
32
+ optional 'supports_streaming'
33
+ - openclaw: optional 'session_id', 'agent_id', 'thinking',
34
+ 'timeout', 'openclaw_path', 'working_directory',
35
+ 'env_vars', 'async_mode', 'task_store',
36
+ 'task_ttl_seconds', 'cleanup_interval_seconds'
37
+
30
38
  Returns:
31
39
  Configured BaseAgentAdapter instance
32
-
40
+
33
41
  Raises:
34
42
  ValueError: If adapter type is unknown or required config is missing
35
43
  ImportError: If required framework package is not installed
36
-
44
+
37
45
  Examples:
38
46
  >>> # Load n8n adapter (basic)
39
47
  >>> adapter = await load_a2a_agent({
@@ -41,7 +49,7 @@ async def load_a2a_agent(config: Dict[str, Any]) -> BaseAgentAdapter:
41
49
  ... "webhook_url": "https://n8n.example.com/webhook/agent",
42
50
  ... "timeout": 30
43
51
  ... })
44
-
52
+
45
53
  >>> # Load n8n adapter with custom payload mapping
46
54
  >>> adapter = await load_a2a_agent({
47
55
  ... "adapter": "n8n",
@@ -49,7 +57,7 @@ async def load_a2a_agent(config: Dict[str, Any]) -> BaseAgentAdapter:
49
57
  ... "payload_template": {"name": "A2A Agent"}, # Static fields
50
58
  ... "message_field": "event" # Use "event" instead of "message"
51
59
  ... })
52
-
60
+
53
61
  >>> # Load CrewAI adapter
54
62
  >>> from crewai import Crew, Agent, Task
55
63
  >>> crew = Crew(agents=[...], tasks=[...])
@@ -57,7 +65,7 @@ async def load_a2a_agent(config: Dict[str, Any]) -> BaseAgentAdapter:
57
65
  ... "adapter": "crewai",
58
66
  ... "crew": crew
59
67
  ... })
60
-
68
+
61
69
  >>> # Load LangChain adapter
62
70
  >>> from langchain_core.runnables import RunnablePassthrough
63
71
  >>> adapter = await load_a2a_agent({
@@ -65,67 +73,132 @@ async def load_a2a_agent(config: Dict[str, Any]) -> BaseAgentAdapter:
65
73
  ... "runnable": chain,
66
74
  ... "input_key": "input"
67
75
  ... })
76
+
77
+ >>> # Load LangGraph adapter
78
+ >>> from langgraph.graph import StateGraph
79
+ >>> graph = builder.compile()
80
+ >>> adapter = await load_a2a_agent({
81
+ ... "adapter": "langgraph",
82
+ ... "graph": graph,
83
+ ... "input_key": "messages"
84
+ ... })
85
+
86
+ >>> # Load callable adapter
87
+ >>> async def my_agent(inputs: dict) -> str:
88
+ ... return f"Processed: {inputs['message']}"
89
+ >>> adapter = await load_a2a_agent({
90
+ ... "adapter": "callable",
91
+ ... "callable": my_agent
92
+ ... })
93
+
94
+ >>> # Load OpenClaw adapter
95
+ >>> adapter = await load_a2a_agent({
96
+ ... "adapter": "openclaw",
97
+ ... "session_id": "my-session",
98
+ ... "agent_id": "main",
99
+ ... "thinking": "low",
100
+ ... "timeout": 300,
101
+ ... })
68
102
  """
69
103
  adapter_type = config.get("adapter")
70
-
104
+
71
105
  if not adapter_type:
72
106
  raise ValueError("Config must include 'adapter' key specifying adapter type")
73
-
107
+
74
108
  if adapter_type == "n8n":
75
109
  from .integrations.n8n import N8nAgentAdapter
76
-
110
+
77
111
  webhook_url = config.get("webhook_url")
78
112
  if not webhook_url:
79
113
  raise ValueError("n8n adapter requires 'webhook_url' in config")
80
-
114
+
81
115
  return N8nAgentAdapter(
82
116
  webhook_url=webhook_url,
83
117
  timeout=config.get("timeout", 30),
84
118
  headers=config.get("headers"),
85
119
  payload_template=config.get("payload_template"),
86
120
  message_field=config.get("message_field", "message"),
121
+ async_mode=config.get("async_mode", False),
122
+ task_store=config.get("task_store"),
123
+ async_timeout=config.get("async_timeout", 300),
87
124
  )
88
-
125
+
89
126
  elif adapter_type == "crewai":
90
127
  from .integrations.crewai import CrewAIAgentAdapter
91
-
128
+
92
129
  crew = config.get("crew")
93
130
  if crew is None:
94
131
  raise ValueError("crewai adapter requires 'crew' instance in config")
95
-
132
+
96
133
  return CrewAIAgentAdapter(
97
134
  crew=crew,
98
135
  inputs_key=config.get("inputs_key", "inputs"),
136
+ async_mode=config.get("async_mode", False),
137
+ task_store=config.get("task_store"),
138
+ async_timeout=config.get("async_timeout", 600),
99
139
  )
100
-
140
+
101
141
  elif adapter_type == "langchain":
102
142
  from .integrations.langchain import LangChainAgentAdapter
103
-
143
+
104
144
  runnable = config.get("runnable")
105
145
  if runnable is None:
106
146
  raise ValueError("langchain adapter requires 'runnable' in config")
107
-
147
+
108
148
  return LangChainAgentAdapter(
109
149
  runnable=runnable,
110
150
  input_key=config.get("input_key", "input"),
111
151
  output_key=config.get("output_key"),
112
152
  )
113
-
153
+
154
+ elif adapter_type == "langgraph":
155
+ from .integrations.langgraph import LangGraphAgentAdapter
156
+
157
+ graph = config.get("graph")
158
+ if graph is None:
159
+ raise ValueError("langgraph adapter requires 'graph' (CompiledGraph) in config")
160
+
161
+ return LangGraphAgentAdapter(
162
+ graph=graph,
163
+ input_key=config.get("input_key", "messages"),
164
+ output_key=config.get("output_key"),
165
+ state_key=config.get("state_key"),
166
+ async_mode=config.get("async_mode", False),
167
+ task_store=config.get("task_store"),
168
+ async_timeout=config.get("async_timeout", 300),
169
+ )
170
+
114
171
  elif adapter_type == "callable":
115
172
  from .integrations.callable import CallableAgentAdapter
116
-
173
+
117
174
  func = config.get("callable")
118
175
  if func is None:
119
176
  raise ValueError("callable adapter requires 'callable' function in config")
120
-
177
+
121
178
  return CallableAgentAdapter(
122
179
  func=func,
123
180
  supports_streaming=config.get("supports_streaming", False),
124
181
  )
125
-
182
+
183
+ elif adapter_type == "openclaw":
184
+ from .integrations.openclaw import OpenClawAgentAdapter
185
+
186
+ return OpenClawAgentAdapter(
187
+ session_id=config.get("session_id"),
188
+ agent_id=config.get("agent_id"),
189
+ thinking=config.get("thinking", "low"),
190
+ timeout=config.get("timeout", 600),
191
+ openclaw_path=config.get("openclaw_path", "openclaw"),
192
+ working_directory=config.get("working_directory"),
193
+ env_vars=config.get("env_vars"),
194
+ async_mode=config.get("async_mode", True),
195
+ task_store=config.get("task_store"),
196
+ task_ttl_seconds=config.get("task_ttl_seconds", 3600),
197
+ cleanup_interval_seconds=config.get("cleanup_interval_seconds", 300),
198
+ )
199
+
126
200
  else:
127
201
  raise ValueError(
128
202
  f"Unknown adapter type: {adapter_type}. "
129
- f"Supported types: n8n, crewai, langchain, callable"
203
+ f"Supported types: n8n, crewai, langchain, langgraph, callable, openclaw"
130
204
  )
131
-
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: a2a-adapter
3
- Version: 0.1.3
3
+ Version: 0.1.5
4
4
  Summary: A2A Protocol Adapter SDK for integrating various agent frameworks
5
5
  Author-email: HYBRO AI <info@hybro.ai>
6
6
  License: Apache-2.0
@@ -52,20 +52,24 @@ Dynamic: license-file
52
52
 
53
53
  **🚀 Open Source A2A Protocol Adapter SDK - Make Any Agent Framework A2A-Compatible in 3 Lines**
54
54
 
55
- A Python SDK that enables seamless integration of various agent frameworks (n8n, CrewAI, LangChain, etc.) with the [A2A (Agent-to-Agent) Protocol](https://github.com/a2aproject/A2A). Build interoperable AI agent systems that can communicate across different platforms and frameworks.
55
+ A Python SDK that enables seamless integration of various agent frameworks (n8n, LangGraph, CrewAI, LangChain, etc.) and personal AI agents (OpenClaw) with the [A2A (Agent-to-Agent) Protocol](https://github.com/a2aproject/A2A). Build interoperable AI agent systems that can communicate across different platforms and frameworks.
56
56
 
57
57
  **✨ Key Benefits:**
58
58
 
59
59
  - 🔌 **3-line setup** - Expose any agent as A2A-compliant
60
- - 🌐 **Framework agnostic** - Works with n8n, CrewAI, LangChain, and more
60
+ - 🌐 **Framework agnostic** - Works with n8n, LangGraph, CrewAI, LangChain, and more
61
61
  - 🌊 **Streaming support** - Built-in streaming for real-time responses
62
62
  - 🎯 **Production ready** - Type-safe, well-tested, and actively maintained
63
63
 
64
+ **▶️ Demo: n8n → A2A Agent**
65
+
66
+ [![A2A Adapter Demo](https://img.youtube.com/vi/rHWi7tLQ444/0.jpg)](https://youtu.be/rHWi7tLQ444)
67
+
64
68
  ## Features
65
69
 
66
- ✨ **Framework Agnostic**: Integrate n8n workflows, CrewAI crews, LangChain chains, and more
70
+ ✨ **Framework Agnostic**: Integrate n8n workflows, LangGraph workflows, CrewAI crews, LangChain chains, OpenClaw personal agents, and more
67
71
  🔌 **Simple API**: 3-line setup to expose any agent as A2A-compliant
68
- 🌊 **Streaming Support**: Built-in streaming for LangChain and custom adapters
72
+ 🌊 **Streaming Support**: Built-in streaming for LangGraph, LangChain, and custom adapters
69
73
  🎯 **Type Safe**: Leverages official A2A SDK types
70
74
  🔧 **Extensible**: Easy to add custom adapters for new frameworks
71
75
  📦 **Minimal Dependencies**: Optional dependencies per framework
@@ -81,14 +85,16 @@ A Python SDK that enables seamless integration of various agent frameworks (n8n,
81
85
  ┌─────────────────┐
82
86
  │ A2A Adapter │ (This SDK)
83
87
  │ - N8n │
88
+ │ - LangGraph │
84
89
  │ - CrewAI │
85
90
  │ - LangChain │
86
- │ - Custom
91
+ │ - OpenClaw
92
+ │ - Callable │
87
93
  └────────┬────────┘
88
94
 
89
95
 
90
96
  ┌─────────────────┐
91
- │ Your Agent │ (n8n workflow / CrewAI crew / Chain)
97
+ │ Your Agent │ (n8n workflow / CrewAI crew / Chain / OpenClaw)
92
98
  └─────────────────┘
93
99
  ```
94
100
 
@@ -198,6 +204,17 @@ adapter = await load_a2a_agent({
198
204
  })
199
205
  ```
200
206
 
207
+ ### LangGraph Workflow → A2A Agent (with Streaming)
208
+
209
+ ```python
210
+ adapter = await load_a2a_agent({
211
+ "adapter": "langgraph",
212
+ "graph": your_compiled_graph,
213
+ "input_key": "messages",
214
+ "output_key": "output"
215
+ })
216
+ ```
217
+
201
218
  ### Custom Function → A2A Agent
202
219
 
203
220
  ```python
@@ -210,6 +227,16 @@ adapter = await load_a2a_agent({
210
227
  })
211
228
  ```
212
229
 
230
+ ### OpenClaw Agent → A2A Agent
231
+
232
+ ```python
233
+ adapter = await load_a2a_agent({
234
+ "adapter": "openclaw",
235
+ "thinking": "low",
236
+ "async_mode": True
237
+ })
238
+ ```
239
+
213
240
  📚 **[View all examples →](https://github.com/hybroai/a2a-adapter/tree/main/examples/)**
214
241
 
215
242
  ## Advanced Usage
@@ -271,9 +298,35 @@ class StreamingAdapter(BaseAgentAdapter):
271
298
  return True
272
299
  ```
273
300
 
274
- ### Using with LangGraph
301
+ ### LangGraph Workflow as A2A Server
275
302
 
276
- Integrate A2A agents into LangGraph workflows:
303
+ Expose a LangGraph workflow as an A2A server:
304
+
305
+ ```python
306
+ from langgraph.graph import StateGraph, END
307
+
308
+ # Build your workflow
309
+ builder = StateGraph(YourState)
310
+ builder.add_node("process", process_node)
311
+ builder.set_entry_point("process")
312
+ builder.add_edge("process", END)
313
+ graph = builder.compile()
314
+
315
+ # Expose as A2A agent
316
+ adapter = await load_a2a_agent({
317
+ "adapter": "langgraph",
318
+ "graph": graph,
319
+ "input_key": "messages",
320
+ "output_key": "output"
321
+ })
322
+ serve_agent(agent_card=card, adapter=adapter, port=9002)
323
+ ```
324
+
325
+ See [examples/07_langgraph_server.py](https://github.com/hybroai/a2a-adapter/blob/main/examples/07_langgraph_server.py) for complete example.
326
+
327
+ ### Using A2A Agents from LangGraph
328
+
329
+ Call A2A agents from within a LangGraph workflow:
277
330
 
278
331
  ```python
279
332
  from langgraph.graph import StateGraph
@@ -332,6 +385,19 @@ See [examples/06_langgraph_single_agent.py](https://github.com/hybroai/a2a-adapt
332
385
  }
333
386
  ```
334
387
 
388
+ ### LangGraph Adapter
389
+
390
+ ```python
391
+ {
392
+ "adapter": "langgraph",
393
+ "graph": compiled_graph, # Required: CompiledGraph from StateGraph.compile()
394
+ "input_key": "messages", # Optional, default: "messages" (for chat) or "input"
395
+ "output_key": None, # Optional, extracts specific key from final state
396
+ "async_mode": False, # Optional, enables async task execution
397
+ "async_timeout": 300 # Optional, timeout for async mode (default: 300s)
398
+ }
399
+ ```
400
+
335
401
  ### Callable Adapter
336
402
 
337
403
  ```python
@@ -342,6 +408,19 @@ See [examples/06_langgraph_single_agent.py](https://github.com/hybroai/a2a-adapt
342
408
  }
343
409
  ```
344
410
 
411
+ ### OpenClaw Adapter
412
+
413
+ ```python
414
+ {
415
+ "adapter": "openclaw",
416
+ "session_id": "my-session", # Optional, auto-generated if not provided
417
+ "agent_id": None, # Optional, use default agent
418
+ "thinking": "low", # Optional: off|minimal|low|medium|high|xhigh
419
+ "timeout": 600, # Optional, command timeout in seconds
420
+ "async_mode": True # Optional, return Task immediately (default: True)
421
+ }
422
+ ```
423
+
345
424
  ## Examples
346
425
 
347
426
  The `examples/` directory contains complete working examples:
@@ -351,7 +430,9 @@ The `examples/` directory contains complete working examples:
351
430
  - **03_single_langchain_agent.py** - LangChain streaming agent
352
431
  - **04_single_agent_client.py** - A2A client for testing
353
432
  - **05_custom_adapter.py** - Custom adapter implementations
354
- - **06_langgraph_single_agent.py** - LangGraph + A2A integration
433
+ - **06_langgraph_single_agent.py** - Calling A2A agents from LangGraph
434
+ - **07_langgraph_server.py** - LangGraph workflow as A2A server
435
+ - **08_openclaw_agent.py** - OpenClaw personal AI agent
355
436
 
356
437
  Run any example:
357
438
 
@@ -455,13 +536,16 @@ Convert framework output to A2A Message or Task.
455
536
 
456
537
  Check if this adapter supports streaming responses.
457
538
 
458
- ## Framework Support
539
+ ## Adapter Support
459
540
 
460
- | Framework | Adapter | Non-Streaming | Streaming | Status |
461
- | ------------- | ----------------------- | ------------- | ---------- | ---------- |
462
- | **n8n** | `N8nAgentAdapter` | ✅ | 🔜 Planned | ✅ Stable |
463
- | **CrewAI** | `CrewAIAgentAdapter` | 🔜 Planned | 🔜 Planned | 🔜 Planned |
464
- | **LangChain** | `LangChainAgentAdapter` | 🔜 Planned | 🔜 Planned | 🔜 Planned |
541
+ | Agent/Framework | Adapter | Non-Streaming | Streaming | Async Tasks | Status |
542
+ | --------------- | ------------------------ | ------------- | --------- | ----------- | --------- |
543
+ | **n8n** | `N8nAgentAdapter` | ✅ | ❌ | | ✅ Stable |
544
+ | **LangGraph** | `LangGraphAgentAdapter` | ✅ | | | Stable |
545
+ | **CrewAI** | `CrewAIAgentAdapter` | | | | Stable |
546
+ | **LangChain** | `LangChainAgentAdapter` | ✅ | ✅ | ❌ | ✅ Stable |
547
+ | **OpenClaw** | `OpenClawAgentAdapter` | ✅ | ❌ | ✅ | ✅ Stable |
548
+ | **Callable** | `CallableAgentAdapter` | ✅ | ✅ | ❌ | ✅ Stable |
465
549
 
466
550
  ## 🤝 Contributing
467
551
 
@@ -488,12 +572,14 @@ We welcome contributions from the community! Whether you're fixing bugs, adding
488
572
  ## Roadmap
489
573
 
490
574
  - [x] Core adapter abstraction
491
- - [x] N8n adapter
492
- - [ ] CrewAI adapter
493
- - [ ] LangChain adapter with streaming
494
- - [ ] Callable adapter
495
- - [ ] Comprehensive examples
496
- - [ ] Task support (async execution pattern)
575
+ - [x] N8n adapter (with async task support)
576
+ - [x] LangGraph adapter (with streaming and async tasks)
577
+ - [x] CrewAI adapter (with async task support)
578
+ - [x] LangChain adapter (with streaming)
579
+ - [x] Callable adapter (with streaming)
580
+ - [x] OpenClaw adapter (with async tasks)
581
+ - [x] Comprehensive examples
582
+ - [x] Task support (async execution pattern)
497
583
  - [ ] Artifact support (file uploads/downloads)
498
584
  - [ ] AutoGen adapter
499
585
  - [ ] Semantic Kernel adapter
@@ -528,12 +614,6 @@ We welcome contributions from the community! Whether you're fixing bugs, adding
528
614
 
529
615
  Apache-2.0 License - see [LICENSE](https://github.com/hybroai/a2a-adapter/blob/main/LICENSE) file for details.
530
616
 
531
- ## Credits
532
-
533
- Built with ❤️ by [HYBRO AI](https://hybro.ai)
534
-
535
- Powered by the [A2A Protocol](https://github.com/a2aproject/A2A)
536
-
537
617
  ## 💬 Community & Support
538
618
 
539
619
  - 📚 **[Full Documentation](https://github.com/hybroai/a2a-adapter/blob/main/README.md)** - Complete API reference and guides
@@ -0,0 +1,16 @@
1
+ a2a_adapter/__init__.py,sha256=rGARy2mP88R-gM0A-0ZxUAGIbZaF9Kzp-Gfg1tO8cZ8,1252
2
+ a2a_adapter/adapter.py,sha256=xCHmNNi5C_71A8OlIf_UZ1gUcvAFAIMrq8vGV_tYuTM,6098
3
+ a2a_adapter/client.py,sha256=YvKgeMS7bPFsnIKhkzUv9wZ0QmBG8UJGsz_AdIn-SNA,9468
4
+ a2a_adapter/loader.py,sha256=HxUYzmD_BOZy4L_fVcl6lq8n3xvhytZqEP0wbO-deiw,7759
5
+ a2a_adapter/integrations/__init__.py,sha256=vhBLCVHqqN_YVdZGw55TMuKU1YcC_RLbGtcrQhGHEGA,1518
6
+ a2a_adapter/integrations/callable.py,sha256=TLtHtFwYr3vPmYWCcCvYGqSEAPV3QZxm8DnYAsy92KM,9404
7
+ a2a_adapter/integrations/crewai.py,sha256=YjTR-qU5m5XK0ojkngVRB6vWicfi6c6ZkGBoHBxrbR8,20410
8
+ a2a_adapter/integrations/langchain.py,sha256=0zpjd2vTTAEBdywsG-3rc04hVGl7Wsw-7mwJfPyc2ZM,11118
9
+ a2a_adapter/integrations/langgraph.py,sha256=euOpSXmgsqEw-mYzn_fmMxX3INaFI7gYqiNULvplTDw,27035
10
+ a2a_adapter/integrations/n8n.py,sha256=d9RqAS7y4eJZPWBaSOHBnT-wqFvTuJtmbE4rsvu5V2o,30171
11
+ a2a_adapter/integrations/openclaw.py,sha256=5qE9MdDQeCV0zwlPYAEySe0Piejz9tq7R83GW0OoRcc,48298
12
+ a2a_adapter-0.1.5.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
13
+ a2a_adapter-0.1.5.dist-info/METADATA,sha256=9MhhgcTByuH_VqKStSIxuNWJkABbLIwZsK4Lb_yIdSo,20405
14
+ a2a_adapter-0.1.5.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
15
+ a2a_adapter-0.1.5.dist-info/top_level.txt,sha256=b1O1dTJ2AoPEB2x-r5IHEsS2x1fczOzTrpR2DgF3LgE,12
16
+ a2a_adapter-0.1.5.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,14 +0,0 @@
1
- a2a_adapter/__init__.py,sha256=PZu--DO6e7lo5gr8OEmP8F64uJKrhG8_SCAF-kpGZyg,1252
2
- a2a_adapter/adapter.py,sha256=xCHmNNi5C_71A8OlIf_UZ1gUcvAFAIMrq8vGV_tYuTM,6098
3
- a2a_adapter/client.py,sha256=TLkYBGQitZdrw_FY_ov9EjHicJX0dqqXaQ-dwfkUv2I,7397
4
- a2a_adapter/loader.py,sha256=QEhozlS0dOu4qXoWpqglV1J2x2FN-CtWq4_ueq5Pr7o,4692
5
- a2a_adapter/integrations/__init__.py,sha256=vDYdcveV_U-nr39fvSnpIif2QgDF_AS6CPlElpBDrDs,1099
6
- a2a_adapter/integrations/callable.py,sha256=GsKZO5TyJVMOAS21cr7JNVKqjg7Z2CSc9Q9vhzgkapY,5917
7
- a2a_adapter/integrations/crewai.py,sha256=S4mF1mJeTAfMdif-su1E7jUjWgxAeFKlgz9WXlZEKN0,4813
8
- a2a_adapter/integrations/langchain.py,sha256=raaaJA_FS3qBsURbCbBq2bcfsRMdKgpVbKEUN3rWA4s,5866
9
- a2a_adapter/integrations/n8n.py,sha256=d9RqAS7y4eJZPWBaSOHBnT-wqFvTuJtmbE4rsvu5V2o,30171
10
- a2a_adapter-0.1.3.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
11
- a2a_adapter-0.1.3.dist-info/METADATA,sha256=PDtE_QDY4006UYYEbSt_9FKOom9eXuXvPyHdszf6Gow,17499
12
- a2a_adapter-0.1.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
13
- a2a_adapter-0.1.3.dist-info/top_level.txt,sha256=b1O1dTJ2AoPEB2x-r5IHEsS2x1fczOzTrpR2DgF3LgE,12
14
- a2a_adapter-0.1.3.dist-info/RECORD,,