solace-agent-mesh 1.0.2__py3-none-any.whl → 1.0.3__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.
Potentially problematic release.
This version of solace-agent-mesh might be problematic. Click here for more details.
- solace_agent_mesh/agent/adk/filesystem_artifact_service.py +32 -39
- solace_agent_mesh/agent/adk/services.py +140 -59
- solace_agent_mesh/agent/protocol/event_handlers.py +70 -116
- solace_agent_mesh/agent/sac/app.py +12 -2
- solace_agent_mesh/agent/sac/component.py +37 -1
- solace_agent_mesh/agent/tools/builtin_artifact_tools.py +8 -1
- solace_agent_mesh/agent/tools/peer_agent_tool.py +92 -84
- solace_agent_mesh/agent/utils/artifact_helpers.py +148 -14
- solace_agent_mesh/assets/docs/404.html +3 -3
- solace_agent_mesh/assets/docs/assets/js/{04989206.674a8007.js → 04989206.da8246cd.js} +1 -1
- solace_agent_mesh/assets/docs/assets/js/1023fc19.8e6d174c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/{3d406171.f722eaf5.js → 3d406171.9b081d5f.js} +1 -1
- solace_agent_mesh/assets/docs/assets/js/75384d09.c3991823.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9eff14a2.036c35ea.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/{aba87c2f.d3e2dcc3.js → aba87c2f.a6b84da6.js} +1 -1
- solace_agent_mesh/assets/docs/assets/js/{ae4415af.8e279b5d.js → ae4415af.96189a93.js} +1 -1
- solace_agent_mesh/assets/docs/assets/js/b7006a3a.38c0cf3d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/bb2ef573.56931473.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/{cc969b05.954186d4.js → cc969b05.bd3e0d6c.js} +1 -1
- solace_agent_mesh/assets/docs/assets/js/f284c35a.5aff74ab.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/{f897a61a.f8c53b0f.js → f897a61a.862b0514.js} +1 -1
- solace_agent_mesh/assets/docs/assets/js/main.dc7db184.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/runtime~main.aa687c82.js +1 -0
- solace_agent_mesh/assets/docs/docs/documentation/concepts/agents/index.html +3 -3
- solace_agent_mesh/assets/docs/docs/documentation/concepts/architecture/index.html +3 -3
- solace_agent_mesh/assets/docs/docs/documentation/concepts/cli/index.html +8 -6
- solace_agent_mesh/assets/docs/docs/documentation/concepts/gateways/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/concepts/orchestrator/index.html +3 -3
- solace_agent_mesh/assets/docs/docs/documentation/concepts/plugins/index.html +3 -3
- solace_agent_mesh/assets/docs/docs/documentation/deployment/debugging/index.html +3 -3
- solace_agent_mesh/assets/docs/docs/documentation/deployment/deploy/index.html +3 -3
- solace_agent_mesh/assets/docs/docs/documentation/deployment/observability/index.html +3 -3
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +3 -3
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/component-overview/index.html +3 -3
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/installation/index.html +3 -3
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +3 -3
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/quick-start/index.html +9 -9
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/bedrock-agents/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/custom-agent/index.html +5 -5
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/event-mesh-gateway/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/mcp-integration/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/mongodb-integration/index.html +5 -5
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/rag-integration/index.html +140 -0
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/rest-gateway/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/slack-integration/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/sql-database/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/artifact-management/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/audio-tools/index.html +3 -3
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/data-analysis-tools/index.html +5 -5
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/embeds/index.html +3 -3
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/index.html +3 -3
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/create-agents/index.html +3 -3
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/create-gateways/index.html +3 -3
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/creating-service-providers/index.html +3 -3
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/solace-ai-connector/index.html +3 -3
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/structure/index.html +3 -3
- solace_agent_mesh/assets/docs/img/solace-logo-text.svg +18 -0
- solace_agent_mesh/assets/docs/lunr-index-1755120326601.json +1 -0
- solace_agent_mesh/assets/docs/lunr-index.json +1 -1
- solace_agent_mesh/assets/docs/search-doc-1755120326601.json +1 -0
- solace_agent_mesh/assets/docs/search-doc.json +1 -1
- solace_agent_mesh/assets/docs/sitemap.xml +1 -1
- solace_agent_mesh/cli/__init__.py +1 -1
- solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +1 -1
- solace_agent_mesh/cli/commands/run_cmd.py +42 -3
- solace_agent_mesh/cli/main.py +1 -3
- solace_agent_mesh/client/webui/frontend/static/assets/main-BCpII1-0.css +1 -0
- solace_agent_mesh/client/webui/frontend/static/assets/main-DzKPMTRs.js +673 -0
- solace_agent_mesh/client/webui/frontend/static/index.html +2 -2
- solace_agent_mesh/common/exceptions.py +25 -0
- solace_agent_mesh/common/utils/initializer.py +3 -3
- solace_agent_mesh/common/utils/message_utils.py +79 -0
- solace_agent_mesh/config_portal/backend/common.py +1 -1
- solace_agent_mesh/config_portal/frontend/static/client/assets/{_index-_7yox_eh.js → _index-xSu2leR8.js} +1 -1
- solace_agent_mesh/config_portal/frontend/static/client/assets/{manifest-e5c3acfe.js → manifest-950eb3be.js} +1 -1
- solace_agent_mesh/config_portal/frontend/static/client/index.html +1 -1
- solace_agent_mesh/gateway/base/component.py +15 -2
- solace_agent_mesh/gateway/http_sse/sse_manager.py +23 -1
- solace_agent_mesh/templates/plugin_agent_config_template.yaml +1 -1
- {solace_agent_mesh-1.0.2.dist-info → solace_agent_mesh-1.0.3.dist-info}/METADATA +55 -45
- {solace_agent_mesh-1.0.2.dist-info → solace_agent_mesh-1.0.3.dist-info}/RECORD +85 -81
- solace_agent_mesh/assets/docs/assets/js/1023fc19.015679ca.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/9eff14a2.1bf8f61c.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/b7006a3a.40b10c9d.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/bb2ef573.207e6990.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/f284c35a.ecc3d195.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/main.c6286d7c.js +0 -2
- solace_agent_mesh/assets/docs/assets/js/runtime~main.d5133813.js +0 -1
- solace_agent_mesh/assets/docs/img/Solace_AI_Framework_README.png +0 -0
- solace_agent_mesh/assets/docs/lunr-index-1754075282978.json +0 -1
- solace_agent_mesh/assets/docs/search-doc-1754075282978.json +0 -1
- solace_agent_mesh/client/webui/frontend/static/assets/main-D11Lmy9p.css +0 -1
- solace_agent_mesh/client/webui/frontend/static/assets/main-Gfk3BYn5.js +0 -663
- /solace_agent_mesh/assets/docs/assets/js/{main.c6286d7c.js.LICENSE.txt → main.dc7db184.js.LICENSE.txt} +0 -0
- {solace_agent_mesh-1.0.2.dist-info → solace_agent_mesh-1.0.3.dist-info}/WHEEL +0 -0
- {solace_agent_mesh-1.0.2.dist-info → solace_agent_mesh-1.0.3.dist-info}/entry_points.txt +0 -0
- {solace_agent_mesh-1.0.2.dist-info → solace_agent_mesh-1.0.3.dist-info}/licenses/LICENSE +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
window.__remixManifest={"entry":{"module":"/assets/entry.client-CEumGClk.js","imports":["/assets/index-DSo1AH_7.js","/assets/components-B7lKcHVY.js"],"css":[]},"routes":{"root":{"id":"root","path":"","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/root-C4XmHinv.js","imports":["/assets/index-DSo1AH_7.js","/assets/components-B7lKcHVY.js"],"css":["/assets/root-DxRwaWiE.css"]},"routes/_index":{"id":"routes/_index","parentId":"root","index":true,"hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_index-
|
|
1
|
+
window.__remixManifest={"entry":{"module":"/assets/entry.client-CEumGClk.js","imports":["/assets/index-DSo1AH_7.js","/assets/components-B7lKcHVY.js"],"css":[]},"routes":{"root":{"id":"root","path":"","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/root-C4XmHinv.js","imports":["/assets/index-DSo1AH_7.js","/assets/components-B7lKcHVY.js"],"css":["/assets/root-DxRwaWiE.css"]},"routes/_index":{"id":"routes/_index","parentId":"root","index":true,"hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_index-xSu2leR8.js","imports":["/assets/index-DSo1AH_7.js"],"css":[]}},"url":"/assets/manifest-950eb3be.js","version":"950eb3be"};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
|
-
<html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/assets/root-DxRwaWiE.css"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap"/></head><body><p>Loading...</p><link rel="modulepreload" href="/assets/manifest-
|
|
2
|
+
<html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/assets/root-DxRwaWiE.css"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap"/></head><body><p>Loading...</p><link rel="modulepreload" href="/assets/manifest-950eb3be.js"/><link rel="modulepreload" href="/assets/entry.client-CEumGClk.js"/><link rel="modulepreload" href="/assets/index-DSo1AH_7.js"/><link rel="modulepreload" href="/assets/components-B7lKcHVY.js"/><link rel="modulepreload" href="/assets/root-C4XmHinv.js"/><script>window.__remixContext = {"basename":"/","future":{"v3_fetcherPersist":false,"v3_relativeSplatPath":false,"v3_throwAbortReason":false,"v3_routeConfig":false,"v3_singleFetch":false,"v3_lazyRouteDiscovery":false,"unstable_optimizeDeps":false},"isSpaMode":true,"state":{"loaderData":{"root":null,"routes/_index":null},"actionData":null,"errors":null}};</script><script type="module" async="">import "/assets/manifest-950eb3be.js";
|
|
3
3
|
import * as route0 from "/assets/root-C4XmHinv.js";
|
|
4
4
|
|
|
5
5
|
window.__remixRouteModules = {"root":route0};
|
|
@@ -65,7 +65,9 @@ from solace_ai_connector.common.event import Event, EventType
|
|
|
65
65
|
from abc import abstractmethod
|
|
66
66
|
|
|
67
67
|
from ...common.middleware.registry import MiddlewareRegistry
|
|
68
|
-
from ...agent.utils.artifact_helpers import
|
|
68
|
+
from ...agent.utils.artifact_helpers import (
|
|
69
|
+
load_artifact_content_or_metadata,
|
|
70
|
+
)
|
|
69
71
|
|
|
70
72
|
info = {
|
|
71
73
|
"class_name": "BaseGatewayComponent",
|
|
@@ -157,6 +159,7 @@ class BaseGatewayComponent(ComponentBase):
|
|
|
157
159
|
self.shared_artifact_service: Optional[BaseArtifactService] = (
|
|
158
160
|
initialize_artifact_service(self)
|
|
159
161
|
)
|
|
162
|
+
|
|
160
163
|
self.task_context_manager: TaskContextManager = TaskContextManager()
|
|
161
164
|
self.internal_event_queue: queue.Queue = queue.Queue()
|
|
162
165
|
self.message_processor_thread: Optional[threading.Thread] = None
|
|
@@ -340,7 +343,17 @@ class BaseGatewayComponent(ComponentBase):
|
|
|
340
343
|
)
|
|
341
344
|
external_request_context["a2a_session_id"] = a2a_session_id
|
|
342
345
|
|
|
343
|
-
|
|
346
|
+
a2a_metadata = {}
|
|
347
|
+
invoked_artifacts = external_request_context.get("invoked_with_artifacts")
|
|
348
|
+
if invoked_artifacts:
|
|
349
|
+
a2a_metadata["invoked_with_artifacts"] = invoked_artifacts
|
|
350
|
+
log.debug(
|
|
351
|
+
"%s Found %d artifact identifiers in external context to pass to agent.",
|
|
352
|
+
log_id_prefix,
|
|
353
|
+
len(invoked_artifacts),
|
|
354
|
+
)
|
|
355
|
+
|
|
356
|
+
a2a_message = A2AMessage(role="user", parts=a2a_parts, metadata=a2a_metadata)
|
|
344
357
|
reply_topic_pattern = get_gateway_response_topic(
|
|
345
358
|
self.namespace, self.gateway_id, "{task_id}"
|
|
346
359
|
)
|
|
@@ -6,6 +6,8 @@ import asyncio
|
|
|
6
6
|
import threading
|
|
7
7
|
from typing import Dict, List, Any
|
|
8
8
|
import json
|
|
9
|
+
import datetime
|
|
10
|
+
import math
|
|
9
11
|
|
|
10
12
|
from solace_ai_connector.common.log import log
|
|
11
13
|
|
|
@@ -46,6 +48,23 @@ class SSEManager:
|
|
|
46
48
|
)
|
|
47
49
|
return self._locks[current_loop]
|
|
48
50
|
|
|
51
|
+
def _sanitize_json(self, obj):
|
|
52
|
+
if isinstance(obj, dict):
|
|
53
|
+
return {k: self._sanitize_json(v) for k, v in obj.items()}
|
|
54
|
+
elif isinstance(obj, list):
|
|
55
|
+
return [self._sanitize_json(v) for v in obj]
|
|
56
|
+
elif isinstance(obj, (float, int)):
|
|
57
|
+
if math.isnan(obj) or math.isinf(obj):
|
|
58
|
+
return None
|
|
59
|
+
return obj
|
|
60
|
+
elif isinstance(obj, (str, bool, type(None))):
|
|
61
|
+
return obj
|
|
62
|
+
elif isinstance(obj, (datetime.datetime, datetime.date)):
|
|
63
|
+
return obj.isoformat()
|
|
64
|
+
else:
|
|
65
|
+
return str(obj)
|
|
66
|
+
|
|
67
|
+
|
|
49
68
|
async def create_sse_connection(self, task_id: str) -> asyncio.Queue:
|
|
50
69
|
"""
|
|
51
70
|
Creates a new queue for an SSE connection subscribing to a task.
|
|
@@ -136,7 +155,10 @@ class SSEManager:
|
|
|
136
155
|
|
|
137
156
|
queues_to_remove = []
|
|
138
157
|
try:
|
|
139
|
-
serialized_data = json.dumps(
|
|
158
|
+
serialized_data = json.dumps(
|
|
159
|
+
self._sanitize_json(event_data),
|
|
160
|
+
allow_nan=False
|
|
161
|
+
)
|
|
140
162
|
except Exception as json_err:
|
|
141
163
|
log.error(
|
|
142
164
|
"%s Failed to JSON serialize event data for Task ID %s: %s",
|
|
@@ -102,7 +102,7 @@ apps:
|
|
|
102
102
|
session_service: *default_session_service
|
|
103
103
|
artifact_service: *default_artifact_service
|
|
104
104
|
|
|
105
|
-
artifact_handling_mode: "
|
|
105
|
+
artifact_handling_mode: "reference"
|
|
106
106
|
enable_embed_resolution: true
|
|
107
107
|
enable_artifact_content_instruction: true
|
|
108
108
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: solace-agent-mesh
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.3
|
|
4
4
|
Summary: Solace Agent Mesh is an open-source framework for building event-driven, multi-agent AI systems where specialized agents collaborate on complex tasks.
|
|
5
5
|
Project-URL: Homepage, https://github.com/SolaceLabs/solace-agent-mesh
|
|
6
6
|
Project-URL: Repository, https://github.com/SolaceLabs/solace-agent-mesh
|
|
@@ -300,30 +300,33 @@ Description-Content-Type: text/markdown
|
|
|
300
300
|
|
|
301
301
|
---
|
|
302
302
|
|
|
303
|
-
|
|
303
|
+
**Solace Agent Mesh** is a framework that supports building AI applications where multiple specialized AI agents work together to solve complex problems. It uses the event messaging of [Solace Platform](https://solace.com) for true scalability and reliability.
|
|
304
304
|
|
|
305
|
-
|
|
305
|
+
With Solace Agent Mesh (SAM), you can create teams of AI agents, each having distinct skills and access to specific tools. For example, you could have a Database Agent that can make SQL queries to fetch data or a MultiModal Agent that can help create images, audio files and reports.
|
|
306
306
|
|
|
307
|
-
|
|
308
|
-
|
|
307
|
+
The framework handles the communication between agents automatically, so you can focus on building great AI experiences.
|
|
308
|
+
|
|
309
|
+
SAM creates a standardized communication layer where AI agents can:
|
|
310
|
+
* Delegate tasks to peer agents
|
|
311
|
+
* Share data and artifacts
|
|
309
312
|
* Connect with diverse user interfaces and external systems
|
|
310
|
-
* Execute
|
|
313
|
+
* Execute multi-step workflows with minimal coupling
|
|
314
|
+
|
|
315
|
+
SAM is built on top of the Solace AI Connector (SAC) which allows Solace Platform Event Brokers to connect to AI models and services and Google's Agent Development Kit (ADK) for AI logic and tool integrations.
|
|
311
316
|
|
|
312
|
-
|
|
317
|
+
The result? A fully asynchronous, event-driven and decoupled AI agent architecture ready for production deployment. It is robust, reliable and easy to maintain.
|
|
313
318
|
|
|
314
319
|
---
|
|
315
320
|
|
|
316
|
-
##
|
|
317
|
-
-
|
|
318
|
-
-
|
|
319
|
-
-
|
|
320
|
-
-
|
|
321
|
-
-
|
|
322
|
-
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
- 🔗 **[Dynamic Embeds](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/user-guide/builtin-tools/embeds)** – Include dynamic placeholders in responses that are resolved by the framework with support for modifier chains.
|
|
326
|
-
- 🤝 **[Agent-to-Agent Communication](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/concepts/architecture)** – Agents can discover and delegate tasks to peer agents using the A2A protocol over Solace.
|
|
321
|
+
## 🔑 Key Features
|
|
322
|
+
- **[Multi-Agent Event-Driven Architecture](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/getting-started/component-overview)** – Agents communicate via the Solace Event Mesh for true scalability
|
|
323
|
+
- **[Agent Orchestration](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/concepts/agents)** – Complex tasks are automatically broken down and delegated by the [Orchestrator](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/concepts/orchestrator) agent
|
|
324
|
+
- **[Flexible Interfaces](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/concepts/gateways)** – Integrate with REST API, web UI, [Slack](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/tutorials/slack-integration), or build your own integration
|
|
325
|
+
- **[Extensible](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/concepts/plugins)** – Add your own agents, gateways, or services with minimal code
|
|
326
|
+
- **[Agent-to-Agent Communication](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/concepts/architecture)** – Agents can discover and delegate tasks to each other seamlessly using the Agent2Agent (A2A) Protocol
|
|
327
|
+
- **[Dynamic Embeds](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/user-guide/builtin-tools/embeds)** – Embed dynamic content like real-time data, calculations and file contents in responses
|
|
328
|
+
|
|
329
|
+
📚 **Want to know more?** Check out the full Solace Agent Mesh [documentation](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/getting-started/introduction/).
|
|
327
330
|
|
|
328
331
|
---
|
|
329
332
|
|
|
@@ -342,39 +345,42 @@ To run Solace Agent Mesh locally, you'll need:
|
|
|
342
345
|
|
|
343
346
|
### 💻 Setup Steps
|
|
344
347
|
|
|
348
|
+
#### 1. Create a directory for a new project
|
|
345
349
|
```bash
|
|
346
|
-
# 1. (Optional) Create and activate a Python virtual environment
|
|
347
|
-
python3 -m venv .venv
|
|
348
|
-
source .venv/bin/activate
|
|
349
|
-
|
|
350
|
-
# 2. Install the Solace Agent Mesh
|
|
351
|
-
pip install solace-agent-mesh
|
|
352
|
-
|
|
353
|
-
# 3. Initialize a new project with web-based setup
|
|
354
350
|
mkdir my-agent-mesh && cd my-agent-mesh
|
|
351
|
+
```
|
|
352
|
+
#### 2. Create and activate a Python virtual environment
|
|
353
|
+
```bash
|
|
354
|
+
python3 -m venv .venv && source .venv/bin/activate
|
|
355
|
+
```
|
|
356
|
+
#### 3. Install Solace Agent Mesh (SAM)
|
|
357
|
+
```bash
|
|
358
|
+
pip3 install solace-agent-mesh
|
|
359
|
+
```
|
|
360
|
+
#### 4. Initialize the new project via a GUI interface
|
|
361
|
+
```bash
|
|
355
362
|
sam init --gui
|
|
356
|
-
|
|
357
|
-
|
|
363
|
+
```
|
|
364
|
+
Note: This initialization UI runs on port 5002
|
|
365
|
+
#### 5. Run the project
|
|
366
|
+
```bash
|
|
358
367
|
sam run
|
|
359
368
|
```
|
|
369
|
+
#### 6. Verify SAM is running
|
|
370
|
+
Open the Web UI at [http://localhost:8000](http://localhost:8000) for the chat inteface and ask a question
|
|
360
371
|
|
|
361
|
-
### 🔧
|
|
372
|
+
### 🔧 Customize SAM
|
|
362
373
|
|
|
374
|
+
#### New agents can be added via a GUI interface
|
|
363
375
|
```bash
|
|
364
|
-
# Add a new agent with GUI interface
|
|
365
376
|
sam add agent --gui
|
|
366
377
|
```
|
|
367
378
|
|
|
368
|
-
|
|
369
|
-
|
|
379
|
+
#### Existing plugins can be installed
|
|
370
380
|
```bash
|
|
371
381
|
sam plugin add <your-component-name> --plugin <plugin-name>
|
|
372
382
|
```
|
|
373
383
|
|
|
374
|
-
#### Once running:
|
|
375
|
-
|
|
376
|
-
Open the Web UI at [http://localhost:8000](http://localhost:8000) to talk with a chat interface.
|
|
377
|
-
|
|
378
384
|
---
|
|
379
385
|
|
|
380
386
|
## 🏗️ Architecture Overview
|
|
@@ -385,7 +391,7 @@ The system allows you to:
|
|
|
385
391
|
|
|
386
392
|
- Host AI agents developed with Google ADK within the SAC framework
|
|
387
393
|
- Define agent capabilities (LLM model, instructions, tools) primarily through SAC YAML configuration
|
|
388
|
-
-
|
|
394
|
+
- Use Solace Platform as the transport for standard Agent-to-Agent (A2A) protocol communication
|
|
389
395
|
- Enable dynamic discovery of peer agents running within the same ecosystem
|
|
390
396
|
- Allow agents to delegate tasks to discovered peers via the A2A protocol over Solace
|
|
391
397
|
- Manage file artifacts using built-in tools with automatic metadata injection
|
|
@@ -413,20 +419,24 @@ Want to go further? Here are some hands-on tutorials to help you get started:
|
|
|
413
419
|
| 🧠 **MCP Integration**<br>Integrating a Model Context Protocol (MCP) Servers into Solace Agent Mesh. | **~10–15 min** | [MCP Integration Tutorial](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/tutorials/mcp-integration) |
|
|
414
420
|
| 💬 **Slack Integration**<br>Chat with Solace Agent Mesh directly from Slack. | **~20–30 min** | [Slack Integration Tutorial](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/tutorials/slack-integration) |
|
|
415
421
|
|
|
416
|
-
📚 Want to explore more? Check out the full [Solace Agent Mesh documentation](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/getting-started/introduction/).
|
|
417
|
-
|
|
418
422
|
---
|
|
419
423
|
|
|
420
424
|
## 👥 Contributors
|
|
421
425
|
|
|
422
|
-
Solace Agent Mesh is built with the help of our amazing community.
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
+
Solace Agent Mesh is built with the help of our amazing community. Thanks to everyone who has contributed ideas, code and time to make this project better!
|
|
427
|
+
|
|
428
|
+
View the full list of contributors here: [GitHub Contributors](https://github.com/SolaceLabs/solace-agent-mesh/graphs/contributors) 💚
|
|
429
|
+
|
|
430
|
+
**Looking to contribute?** Check out [CONTRIBUTING.md](CONTRIBUTING.md) to get started and see how you can help!
|
|
426
431
|
|
|
427
432
|
---
|
|
428
433
|
|
|
429
434
|
## 📄 License
|
|
430
435
|
|
|
431
|
-
This project is licensed under the **Apache 2.0 License**.
|
|
432
|
-
|
|
436
|
+
This project is licensed under the **Apache 2.0 License**. See the full license text in the [LICENSE](LICENSE) file.
|
|
437
|
+
|
|
438
|
+
---
|
|
439
|
+
|
|
440
|
+
<h3 align="center">
|
|
441
|
+
<img src="./docs/static/img/solace-logo-text.svg" alt="Solace Agent Mesh Logo" width="100"/>
|
|
442
|
+
</h3>
|