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.

Files changed (97) hide show
  1. solace_agent_mesh/agent/adk/filesystem_artifact_service.py +32 -39
  2. solace_agent_mesh/agent/adk/services.py +140 -59
  3. solace_agent_mesh/agent/protocol/event_handlers.py +70 -116
  4. solace_agent_mesh/agent/sac/app.py +12 -2
  5. solace_agent_mesh/agent/sac/component.py +37 -1
  6. solace_agent_mesh/agent/tools/builtin_artifact_tools.py +8 -1
  7. solace_agent_mesh/agent/tools/peer_agent_tool.py +92 -84
  8. solace_agent_mesh/agent/utils/artifact_helpers.py +148 -14
  9. solace_agent_mesh/assets/docs/404.html +3 -3
  10. solace_agent_mesh/assets/docs/assets/js/{04989206.674a8007.js → 04989206.da8246cd.js} +1 -1
  11. solace_agent_mesh/assets/docs/assets/js/1023fc19.8e6d174c.js +1 -0
  12. solace_agent_mesh/assets/docs/assets/js/{3d406171.f722eaf5.js → 3d406171.9b081d5f.js} +1 -1
  13. solace_agent_mesh/assets/docs/assets/js/75384d09.c3991823.js +1 -0
  14. solace_agent_mesh/assets/docs/assets/js/9eff14a2.036c35ea.js +1 -0
  15. solace_agent_mesh/assets/docs/assets/js/{aba87c2f.d3e2dcc3.js → aba87c2f.a6b84da6.js} +1 -1
  16. solace_agent_mesh/assets/docs/assets/js/{ae4415af.8e279b5d.js → ae4415af.96189a93.js} +1 -1
  17. solace_agent_mesh/assets/docs/assets/js/b7006a3a.38c0cf3d.js +1 -0
  18. solace_agent_mesh/assets/docs/assets/js/bb2ef573.56931473.js +1 -0
  19. solace_agent_mesh/assets/docs/assets/js/{cc969b05.954186d4.js → cc969b05.bd3e0d6c.js} +1 -1
  20. solace_agent_mesh/assets/docs/assets/js/f284c35a.5aff74ab.js +1 -0
  21. solace_agent_mesh/assets/docs/assets/js/{f897a61a.f8c53b0f.js → f897a61a.862b0514.js} +1 -1
  22. solace_agent_mesh/assets/docs/assets/js/main.dc7db184.js +2 -0
  23. solace_agent_mesh/assets/docs/assets/js/runtime~main.aa687c82.js +1 -0
  24. solace_agent_mesh/assets/docs/docs/documentation/concepts/agents/index.html +3 -3
  25. solace_agent_mesh/assets/docs/docs/documentation/concepts/architecture/index.html +3 -3
  26. solace_agent_mesh/assets/docs/docs/documentation/concepts/cli/index.html +8 -6
  27. solace_agent_mesh/assets/docs/docs/documentation/concepts/gateways/index.html +4 -4
  28. solace_agent_mesh/assets/docs/docs/documentation/concepts/orchestrator/index.html +3 -3
  29. solace_agent_mesh/assets/docs/docs/documentation/concepts/plugins/index.html +3 -3
  30. solace_agent_mesh/assets/docs/docs/documentation/deployment/debugging/index.html +3 -3
  31. solace_agent_mesh/assets/docs/docs/documentation/deployment/deploy/index.html +3 -3
  32. solace_agent_mesh/assets/docs/docs/documentation/deployment/observability/index.html +3 -3
  33. solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +3 -3
  34. solace_agent_mesh/assets/docs/docs/documentation/getting-started/component-overview/index.html +3 -3
  35. solace_agent_mesh/assets/docs/docs/documentation/getting-started/installation/index.html +3 -3
  36. solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +3 -3
  37. solace_agent_mesh/assets/docs/docs/documentation/getting-started/quick-start/index.html +9 -9
  38. solace_agent_mesh/assets/docs/docs/documentation/tutorials/bedrock-agents/index.html +4 -4
  39. solace_agent_mesh/assets/docs/docs/documentation/tutorials/custom-agent/index.html +5 -5
  40. solace_agent_mesh/assets/docs/docs/documentation/tutorials/event-mesh-gateway/index.html +4 -4
  41. solace_agent_mesh/assets/docs/docs/documentation/tutorials/mcp-integration/index.html +4 -4
  42. solace_agent_mesh/assets/docs/docs/documentation/tutorials/mongodb-integration/index.html +5 -5
  43. solace_agent_mesh/assets/docs/docs/documentation/tutorials/rag-integration/index.html +140 -0
  44. solace_agent_mesh/assets/docs/docs/documentation/tutorials/rest-gateway/index.html +4 -4
  45. solace_agent_mesh/assets/docs/docs/documentation/tutorials/slack-integration/index.html +4 -4
  46. solace_agent_mesh/assets/docs/docs/documentation/tutorials/sql-database/index.html +4 -4
  47. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/artifact-management/index.html +4 -4
  48. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/audio-tools/index.html +3 -3
  49. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/data-analysis-tools/index.html +5 -5
  50. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/embeds/index.html +3 -3
  51. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/index.html +3 -3
  52. solace_agent_mesh/assets/docs/docs/documentation/user-guide/create-agents/index.html +3 -3
  53. solace_agent_mesh/assets/docs/docs/documentation/user-guide/create-gateways/index.html +3 -3
  54. solace_agent_mesh/assets/docs/docs/documentation/user-guide/creating-service-providers/index.html +3 -3
  55. solace_agent_mesh/assets/docs/docs/documentation/user-guide/solace-ai-connector/index.html +3 -3
  56. solace_agent_mesh/assets/docs/docs/documentation/user-guide/structure/index.html +3 -3
  57. solace_agent_mesh/assets/docs/img/solace-logo-text.svg +18 -0
  58. solace_agent_mesh/assets/docs/lunr-index-1755120326601.json +1 -0
  59. solace_agent_mesh/assets/docs/lunr-index.json +1 -1
  60. solace_agent_mesh/assets/docs/search-doc-1755120326601.json +1 -0
  61. solace_agent_mesh/assets/docs/search-doc.json +1 -1
  62. solace_agent_mesh/assets/docs/sitemap.xml +1 -1
  63. solace_agent_mesh/cli/__init__.py +1 -1
  64. solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +1 -1
  65. solace_agent_mesh/cli/commands/run_cmd.py +42 -3
  66. solace_agent_mesh/cli/main.py +1 -3
  67. solace_agent_mesh/client/webui/frontend/static/assets/main-BCpII1-0.css +1 -0
  68. solace_agent_mesh/client/webui/frontend/static/assets/main-DzKPMTRs.js +673 -0
  69. solace_agent_mesh/client/webui/frontend/static/index.html +2 -2
  70. solace_agent_mesh/common/exceptions.py +25 -0
  71. solace_agent_mesh/common/utils/initializer.py +3 -3
  72. solace_agent_mesh/common/utils/message_utils.py +79 -0
  73. solace_agent_mesh/config_portal/backend/common.py +1 -1
  74. solace_agent_mesh/config_portal/frontend/static/client/assets/{_index-_7yox_eh.js → _index-xSu2leR8.js} +1 -1
  75. solace_agent_mesh/config_portal/frontend/static/client/assets/{manifest-e5c3acfe.js → manifest-950eb3be.js} +1 -1
  76. solace_agent_mesh/config_portal/frontend/static/client/index.html +1 -1
  77. solace_agent_mesh/gateway/base/component.py +15 -2
  78. solace_agent_mesh/gateway/http_sse/sse_manager.py +23 -1
  79. solace_agent_mesh/templates/plugin_agent_config_template.yaml +1 -1
  80. {solace_agent_mesh-1.0.2.dist-info → solace_agent_mesh-1.0.3.dist-info}/METADATA +55 -45
  81. {solace_agent_mesh-1.0.2.dist-info → solace_agent_mesh-1.0.3.dist-info}/RECORD +85 -81
  82. solace_agent_mesh/assets/docs/assets/js/1023fc19.015679ca.js +0 -1
  83. solace_agent_mesh/assets/docs/assets/js/9eff14a2.1bf8f61c.js +0 -1
  84. solace_agent_mesh/assets/docs/assets/js/b7006a3a.40b10c9d.js +0 -1
  85. solace_agent_mesh/assets/docs/assets/js/bb2ef573.207e6990.js +0 -1
  86. solace_agent_mesh/assets/docs/assets/js/f284c35a.ecc3d195.js +0 -1
  87. solace_agent_mesh/assets/docs/assets/js/main.c6286d7c.js +0 -2
  88. solace_agent_mesh/assets/docs/assets/js/runtime~main.d5133813.js +0 -1
  89. solace_agent_mesh/assets/docs/img/Solace_AI_Framework_README.png +0 -0
  90. solace_agent_mesh/assets/docs/lunr-index-1754075282978.json +0 -1
  91. solace_agent_mesh/assets/docs/search-doc-1754075282978.json +0 -1
  92. solace_agent_mesh/client/webui/frontend/static/assets/main-D11Lmy9p.css +0 -1
  93. solace_agent_mesh/client/webui/frontend/static/assets/main-Gfk3BYn5.js +0 -663
  94. /solace_agent_mesh/assets/docs/assets/js/{main.c6286d7c.js.LICENSE.txt → main.dc7db184.js.LICENSE.txt} +0 -0
  95. {solace_agent_mesh-1.0.2.dist-info → solace_agent_mesh-1.0.3.dist-info}/WHEEL +0 -0
  96. {solace_agent_mesh-1.0.2.dist-info → solace_agent_mesh-1.0.3.dist-info}/entry_points.txt +0 -0
  97. {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-_7yox_eh.js","imports":["/assets/index-DSo1AH_7.js"],"css":[]}},"url":"/assets/manifest-e5c3acfe.js","version":"e5c3acfe"};
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&amp;display=swap"/></head><body><p>Loading...</p><link rel="modulepreload" href="/assets/manifest-e5c3acfe.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-e5c3acfe.js";
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&amp;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 load_artifact_content_or_metadata
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
- a2a_message = A2AMessage(role="user", parts=a2a_parts)
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(event_data)
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: "embed"
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.2
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
- The Solace Agent Mesh transforms how AI agents work together, creating a dynamic ecosystem where specialized agents communicate seamlessly, share information, and collaborate on complex tasks.
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
- Built on Solace PubSub+ Event Broker, this framework provides a robust foundation for enterprise-grade AI solutions that scale effortlessly. The mesh creates a standardized communication layer where AI agents can:
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
- * Delegate specialized tasks to peer agents
308
- * Share artifacts and data across the network
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 complex, multi-step workflows with minimal coupling
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
- Under the hood, the framework combines the Solace AI Connector (SAC) for runtime orchestration with Google's Agent Development Kit (ADK) for agent logic, LLM interaction, and tool execution—all communicating via the A2A protocol over Solace's event mesh. The result? A fully asynchronous, event-driven, and decoupled AI agent architecture ready for enterprise deployment.
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
- ## Key Features
317
- - ⚙️ **[Modular, Event-Driven Architecture](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/getting-started/component-overview)** – All components communicate via events through a central event mesh, enabling loose coupling and high scalability.
318
- - 🤖 **[Composable Agents](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/concepts/agents)** – Combine specialized AI agents to solve complex, multi-step workflows.
319
- - 🌐 **[Flexible Interfaces](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/concepts/gateways)** – Interact with SAM via the REST API, browser UI, [Slack](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/tutorials/slack-integration), etc.
320
- - 🧠 **[Orchestration Agent](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/concepts/orchestrator)** – Tasks are automatically broken down and delegated across agents by the orchestrator agent.
321
- - 🧩 **[Plugin-Extensible](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/concepts/plugins)** – Add your own agents, gateways, or services with minimal boilerplate.
322
- - 🏢 **[Production-Ready](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/deployment/deploy)** – Backed by [Solace's enterprise-grade event broker](https://solace.com/products/event-broker/) for reliability and performance.
323
- - 📁 **[File Management](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/user-guide/builtin-tools/artifact-management)** – Built-in tools for managing file artifacts with automatic metadata injection and artifact handling.
324
- - 📊 **[Data Analysis Tools](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/user-guide/builtin-tools/data-analysis-tools)** – Built-in tools for SQL queries, JQ transformations, and Plotly chart generation.
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
- # 4. Run the project
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
- ### 🔧 Adding Agents
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
- Or install an existing plugin:
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
- - Utilize Solace PubSub+ as the transport for standard Agent-to-Agent (A2A) protocol communication
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
- Thanks to everyone who has contributed ideas, code, and time to make this project better.
424
- 👀 View the full list of contributors [GitHub Contributors](https://github.com/SolaceLabs/solace-agent-mesh/graphs/contributors)
425
- 🤝 **Looking to contribute?** Check out [CONTRIBUTING.md](CONTRIBUTING.md) to get started and see how you can help.
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
- See the full license text in the [LICENSE](LICENSE) file.
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>