solace-agent-mesh 1.5.0__py3-none-any.whl → 1.5.1__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 (257) hide show
  1. solace_agent_mesh/agent/adk/callbacks.py +14 -12
  2. solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +3 -1
  3. solace_agent_mesh/agent/adk/intelligent_mcp_callbacks.py +2 -1
  4. solace_agent_mesh/agent/adk/mcp_content_processor.py +2 -1
  5. solace_agent_mesh/agent/adk/runner.py +3 -1
  6. solace_agent_mesh/agent/adk/services.py +4 -1
  7. solace_agent_mesh/agent/adk/setup.py +3 -1
  8. solace_agent_mesh/agent/adk/tool_wrapper.py +2 -2
  9. solace_agent_mesh/agent/protocol/event_handlers.py +2 -1
  10. solace_agent_mesh/agent/sac/app.py +3 -1
  11. solace_agent_mesh/agent/sac/component.py +4 -1
  12. solace_agent_mesh/agent/tools/audio_tools.py +2 -1
  13. solace_agent_mesh/agent/tools/builtin_artifact_tools.py +3 -1
  14. solace_agent_mesh/agent/tools/builtin_data_analysis_tools.py +3 -1
  15. solace_agent_mesh/agent/tools/dynamic_tool.py +2 -1
  16. solace_agent_mesh/agent/tools/general_agent_tools.py +2 -1
  17. solace_agent_mesh/agent/tools/image_tools.py +2 -1
  18. solace_agent_mesh/agent/tools/peer_agent_tool.py +2 -1
  19. solace_agent_mesh/agent/tools/registry.py +3 -1
  20. solace_agent_mesh/agent/tools/test_tools.py +2 -1
  21. solace_agent_mesh/agent/tools/web_tools.py +2 -1
  22. solace_agent_mesh/agent/utils/artifact_helpers.py +3 -1
  23. solace_agent_mesh/agent/utils/config_parser.py +3 -1
  24. solace_agent_mesh/assets/docs/404.html +3 -3
  25. solace_agent_mesh/assets/docs/assets/js/{b7006a3a.73a79653.js → 032c2d61.f3d37824.js} +1 -1
  26. solace_agent_mesh/assets/docs/assets/js/0bcf40b7.c019ad46.js +1 -0
  27. solace_agent_mesh/assets/docs/assets/js/15ba94aa.932dd2db.js +1 -0
  28. solace_agent_mesh/assets/docs/assets/js/2131ec11.5c7a1f6e.js +1 -0
  29. solace_agent_mesh/assets/docs/assets/js/{2334.622a6395.js → 2334.1cf50a20.js} +1 -1
  30. solace_agent_mesh/assets/docs/assets/js/240a0364.7eac6021.js +1 -0
  31. solace_agent_mesh/assets/docs/assets/js/2e32b5e0.33f5d75b.js +1 -0
  32. solace_agent_mesh/assets/docs/assets/js/341393d4.0fac2613.js +1 -0
  33. solace_agent_mesh/assets/docs/assets/js/{3624.b524e433.js → 3624.0eaa1fd0.js} +1 -1
  34. solace_agent_mesh/assets/docs/assets/js/3a6c6137.f5940cfa.js +1 -0
  35. solace_agent_mesh/assets/docs/assets/js/3ac1795d.76654dd9.js +1 -0
  36. solace_agent_mesh/assets/docs/assets/js/3ff0015d.2be20244.js +1 -0
  37. solace_agent_mesh/assets/docs/assets/js/509e993c.4c7a1a6d.js +1 -0
  38. solace_agent_mesh/assets/docs/assets/js/547e15cc.2cbb060a.js +1 -0
  39. solace_agent_mesh/assets/docs/assets/js/55b7b518.f2b1d1ba.js +1 -0
  40. solace_agent_mesh/assets/docs/assets/js/5c2bd65f.e49689dd.js +1 -0
  41. solace_agent_mesh/assets/docs/assets/js/6063ff4c.ef84f702.js +1 -0
  42. solace_agent_mesh/assets/docs/assets/js/631738c7.a8b1ef8b.js +1 -0
  43. solace_agent_mesh/assets/docs/assets/js/6a520c9d.ba015d81.js +1 -0
  44. solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.39d5851d.js +1 -0
  45. solace_agent_mesh/assets/docs/assets/js/6d84eae0.4a5fbf39.js +1 -0
  46. solace_agent_mesh/assets/docs/assets/js/6fdfefc7.99de744e.js +1 -0
  47. solace_agent_mesh/assets/docs/assets/js/71da7b71.804d6567.js +1 -0
  48. solace_agent_mesh/assets/docs/assets/js/722f809d.965da774.js +1 -0
  49. solace_agent_mesh/assets/docs/assets/js/742f027b.46c07808.js +1 -0
  50. solace_agent_mesh/assets/docs/assets/js/77cf947d.64c9bd6c.js +1 -0
  51. solace_agent_mesh/assets/docs/assets/js/8024126c.56e59919.js +1 -0
  52. solace_agent_mesh/assets/docs/assets/js/81a99df0.07034dd9.js +1 -0
  53. solace_agent_mesh/assets/docs/assets/js/82fbfb93.139a1a1f.js +1 -0
  54. solace_agent_mesh/assets/docs/assets/js/{8591.d7c16be6.js → 8591.5d015485.js} +2 -2
  55. solace_agent_mesh/assets/docs/assets/js/{8731.49e930c2.js → 8731.6c1dbf0c.js} +1 -1
  56. solace_agent_mesh/assets/docs/assets/js/945fb41e.6f4cdffd.js +1 -0
  57. solace_agent_mesh/assets/docs/assets/js/94e8668d.b5ddb7a1.js +1 -0
  58. solace_agent_mesh/assets/docs/assets/js/9bb13469.dd1c9b54.js +1 -0
  59. solace_agent_mesh/assets/docs/assets/js/9e9d0a82.dd810042.js +1 -0
  60. solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e6dd091.js +1 -0
  61. solace_agent_mesh/assets/docs/assets/js/ad71b5ed.60668e9e.js +1 -0
  62. solace_agent_mesh/assets/docs/assets/js/c198a0dc.8f31f867.js +1 -0
  63. solace_agent_mesh/assets/docs/assets/js/c93cbaa0.eaff365e.js +1 -0
  64. solace_agent_mesh/assets/docs/assets/js/da0b5bad.9d369087.js +1 -0
  65. solace_agent_mesh/assets/docs/assets/js/db924877.cbc66f02.js +1 -0
  66. solace_agent_mesh/assets/docs/assets/js/dd817ffc.0aa9630a.js +1 -0
  67. solace_agent_mesh/assets/docs/assets/js/dd81e2b8.d590bc9e.js +1 -0
  68. solace_agent_mesh/assets/docs/assets/js/de5f4c65.e8241890.js +1 -0
  69. solace_agent_mesh/assets/docs/assets/js/de915948.139b4b9c.js +1 -0
  70. solace_agent_mesh/assets/docs/assets/js/e3d9abda.2b916f9e.js +1 -0
  71. solace_agent_mesh/assets/docs/assets/js/e6f9706b.582a78ca.js +1 -0
  72. solace_agent_mesh/assets/docs/assets/js/e92d0134.cf6d6522.js +1 -0
  73. solace_agent_mesh/assets/docs/assets/js/f284c35a.5766a13d.js +1 -0
  74. solace_agent_mesh/assets/docs/assets/js/ff4d71f2.9c0297a6.js +1 -0
  75. solace_agent_mesh/assets/docs/assets/js/main.bd3c34f3.js +2 -0
  76. solace_agent_mesh/assets/docs/assets/js/runtime~main.18dc45dd.js +1 -0
  77. solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +143 -0
  78. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/artifact-management/index.html +7 -7
  79. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/audio-tools/index.html +7 -7
  80. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/data-analysis-tools/index.html +8 -8
  81. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/embeds/index.html +6 -6
  82. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/index.html +11 -11
  83. solace_agent_mesh/assets/docs/docs/documentation/{concepts → components}/cli/index.html +25 -25
  84. solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +91 -0
  85. solace_agent_mesh/assets/docs/docs/documentation/components/index.html +29 -0
  86. solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +55 -0
  87. solace_agent_mesh/assets/docs/docs/documentation/components/plugins/index.html +110 -0
  88. solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +104 -0
  89. solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +57 -0
  90. solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +25 -0
  91. solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +59 -0
  92. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → developing}/create-agents/index.html +113 -152
  93. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → developing}/create-gateways/index.html +9 -9
  94. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → developing}/creating-python-tools/index.html +12 -12
  95. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +54 -0
  96. solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +32 -0
  97. solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +55 -0
  98. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/bedrock-agents/index.html +25 -25
  99. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/custom-agent/index.html +13 -13
  100. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/event-mesh-gateway/index.html +11 -11
  101. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/mcp-integration/index.html +10 -10
  102. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/mongodb-integration/index.html +13 -13
  103. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/rag-integration/index.html +13 -13
  104. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/rest-gateway/index.html +10 -10
  105. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +72 -0
  106. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/sql-database/index.html +14 -14
  107. solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +33 -0
  108. solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +83 -0
  109. solace_agent_mesh/assets/docs/docs/documentation/enterprise/rbac-setup-guide/index.html +222 -0
  110. solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +161 -0
  111. solace_agent_mesh/assets/docs/docs/documentation/getting-started/architecture/index.html +75 -0
  112. solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +53 -0
  113. solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +35 -100
  114. solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +41 -0
  115. solace_agent_mesh/assets/docs/docs/documentation/{getting-started → installing-and-configuring}/configurations/index.html +56 -50
  116. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +25 -0
  117. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +76 -0
  118. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +63 -0
  119. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +142 -0
  120. solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-gateway-upgrade-to-0.3.0/index.html +100 -0
  121. solace_agent_mesh/assets/docs/docs/documentation/{Migrations/A2A Upgrade To 0.3.0/a2a-technical-migration-map/index.html → migrations/a2a-upgrade/a2a-technical-migration-map/index.html} +10 -11
  122. solace_agent_mesh/assets/docs/img/solace-logo.png +0 -0
  123. solace_agent_mesh/assets/docs/lunr-index-1760121512891.json +1 -0
  124. solace_agent_mesh/assets/docs/lunr-index.json +1 -1
  125. solace_agent_mesh/assets/docs/search-doc-1760121512891.json +1 -0
  126. solace_agent_mesh/assets/docs/search-doc.json +1 -1
  127. solace_agent_mesh/assets/docs/sitemap.xml +1 -1
  128. solace_agent_mesh/cli/__init__.py +1 -1
  129. solace_agent_mesh/client/webui/frontend/static/assets/{main-C__uuUkB.js → main-2nd1gbaH.js} +1 -1
  130. solace_agent_mesh/client/webui/frontend/static/assets/{main-CZbpmwfA.css → main-DoKXctCM.css} +1 -1
  131. solace_agent_mesh/client/webui/frontend/static/index.html +2 -2
  132. solace_agent_mesh/common/a2a/artifact.py +2 -1
  133. solace_agent_mesh/common/a2a/protocol.py +3 -2
  134. solace_agent_mesh/common/a2a/translation.py +3 -1
  135. solace_agent_mesh/common/middleware/config_resolver.py +3 -1
  136. solace_agent_mesh/common/middleware/registry.py +3 -1
  137. solace_agent_mesh/common/sac/sam_component_base.py +2 -1
  138. solace_agent_mesh/common/sam_events/event_service.py +3 -2
  139. solace_agent_mesh/common/services/employee_service.py +3 -1
  140. solace_agent_mesh/common/services/identity_service.py +2 -1
  141. solace_agent_mesh/common/services/providers/local_file_identity_service.py +2 -1
  142. solace_agent_mesh/common/utils/artifact_utils.py +3 -1
  143. solace_agent_mesh/common/utils/asyncio_macos_fix.py +3 -1
  144. solace_agent_mesh/common/utils/embeds/converter.py +3 -1
  145. solace_agent_mesh/common/utils/embeds/evaluators.py +2 -1
  146. solace_agent_mesh/common/utils/embeds/modifiers.py +3 -2
  147. solace_agent_mesh/common/utils/embeds/resolver.py +2 -1
  148. solace_agent_mesh/common/utils/initializer.py +3 -1
  149. solace_agent_mesh/common/utils/message_utils.py +2 -1
  150. solace_agent_mesh/common/utils/push_notification_auth.py +3 -2
  151. solace_agent_mesh/core_a2a/service.py +2 -2
  152. solace_agent_mesh/gateway/base/app.py +2 -1
  153. solace_agent_mesh/gateway/base/component.py +3 -1
  154. solace_agent_mesh/gateway/base/task_context.py +2 -1
  155. solace_agent_mesh/gateway/http_sse/app.py +2 -1
  156. solace_agent_mesh/gateway/http_sse/component.py +4 -1
  157. solace_agent_mesh/gateway/http_sse/components/task_logger_forwarder.py +3 -2
  158. solace_agent_mesh/gateway/http_sse/components/visualization_forwarder_component.py +3 -1
  159. solace_agent_mesh/gateway/http_sse/dependencies.py +3 -1
  160. solace_agent_mesh/gateway/http_sse/main.py +3 -1
  161. solace_agent_mesh/gateway/http_sse/routers/agent_cards.py +3 -2
  162. solace_agent_mesh/gateway/http_sse/routers/artifacts.py +2 -2
  163. solace_agent_mesh/gateway/http_sse/routers/auth.py +3 -1
  164. solace_agent_mesh/gateway/http_sse/routers/config.py +3 -2
  165. solace_agent_mesh/gateway/http_sse/routers/people.py +3 -1
  166. solace_agent_mesh/gateway/http_sse/routers/sessions.py +3 -1
  167. solace_agent_mesh/gateway/http_sse/routers/sse.py +3 -2
  168. solace_agent_mesh/gateway/http_sse/routers/tasks.py +2 -1
  169. solace_agent_mesh/gateway/http_sse/routers/users.py +3 -1
  170. solace_agent_mesh/gateway/http_sse/routers/visualization.py +2 -1
  171. solace_agent_mesh/gateway/http_sse/services/agent_card_service.py +3 -1
  172. solace_agent_mesh/gateway/http_sse/services/data_retention_service.py +2 -1
  173. solace_agent_mesh/gateway/http_sse/services/feedback_service.py +2 -1
  174. solace_agent_mesh/gateway/http_sse/services/people_service.py +2 -2
  175. solace_agent_mesh/gateway/http_sse/services/session_service.py +3 -1
  176. solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +2 -1
  177. solace_agent_mesh/gateway/http_sse/services/task_service.py +3 -2
  178. solace_agent_mesh/gateway/http_sse/session_manager.py +2 -1
  179. solace_agent_mesh/gateway/http_sse/sse_event_buffer.py +2 -1
  180. solace_agent_mesh/gateway/http_sse/sse_manager.py +2 -2
  181. solace_agent_mesh/templates/gateway_app_template.py +4 -2
  182. solace_agent_mesh/templates/gateway_component_template.py +3 -1
  183. solace_agent_mesh/templates/logging_config_template.ini +22 -45
  184. solace_agent_mesh/templates/plugin_tools_template.py +2 -2
  185. {solace_agent_mesh-1.5.0.dist-info → solace_agent_mesh-1.5.1.dist-info}/METADATA +2 -2
  186. {solace_agent_mesh-1.5.0.dist-info → solace_agent_mesh-1.5.1.dist-info}/RECORD +191 -183
  187. solace_agent_mesh/assets/docs/assets/images/sac-flows-80d5b603c6aafd33e87945680ce0abf3.png +0 -0
  188. solace_agent_mesh/assets/docs/assets/images/sac_parts_of_a_component-cb3d0424b1d0c17734c5435cca6b4082.png +0 -0
  189. solace_agent_mesh/assets/docs/assets/js/04989206.a248f00c.js +0 -1
  190. solace_agent_mesh/assets/docs/assets/js/0e682baa.d54b8668.js +0 -1
  191. solace_agent_mesh/assets/docs/assets/js/1023fc19.8a8a9309.js +0 -1
  192. solace_agent_mesh/assets/docs/assets/js/1523c6b4.2645ef68.js +0 -1
  193. solace_agent_mesh/assets/docs/assets/js/166ab619.e27886d9.js +0 -1
  194. solace_agent_mesh/assets/docs/assets/js/1c6e87d2.e056b7e0.js +0 -1
  195. solace_agent_mesh/assets/docs/assets/js/21ceee5f.3bf39250.js +0 -1
  196. solace_agent_mesh/assets/docs/assets/js/2a9cab12.2afaee76.js +0 -1
  197. solace_agent_mesh/assets/docs/assets/js/332e10b5.f7629851.js +0 -1
  198. solace_agent_mesh/assets/docs/assets/js/3d406171.5560fdf9.js +0 -1
  199. solace_agent_mesh/assets/docs/assets/js/42b3f8d8.508ae8db.js +0 -1
  200. solace_agent_mesh/assets/docs/assets/js/442a8107.b5c2532a.js +0 -1
  201. solace_agent_mesh/assets/docs/assets/js/453a82a6.3c6bb61d.js +0 -1
  202. solace_agent_mesh/assets/docs/assets/js/483cef9a.bf9398af.js +0 -1
  203. solace_agent_mesh/assets/docs/assets/js/4c2787c2.c1290a40.js +0 -1
  204. solace_agent_mesh/assets/docs/assets/js/55f47984.bcd00a86.js +0 -1
  205. solace_agent_mesh/assets/docs/assets/js/5b4258a4.fdfd2325.js +0 -1
  206. solace_agent_mesh/assets/docs/assets/js/664b740a.ba305a89.js +0 -1
  207. solace_agent_mesh/assets/docs/assets/js/75384d09.c19e8b51.js +0 -1
  208. solace_agent_mesh/assets/docs/assets/js/768e31b0.9abcdc48.js +0 -1
  209. solace_agent_mesh/assets/docs/assets/js/85387663.be2bc838.js +0 -1
  210. solace_agent_mesh/assets/docs/assets/js/945fb41e.16e00776.js +0 -1
  211. solace_agent_mesh/assets/docs/assets/js/9a09e75d.92de8cf5.js +0 -1
  212. solace_agent_mesh/assets/docs/assets/js/9eff14a2.d62aad71.js +0 -1
  213. solace_agent_mesh/assets/docs/assets/js/a12a4955.25fbed32.js +0 -1
  214. solace_agent_mesh/assets/docs/assets/js/a3a92b25.af35e313.js +0 -1
  215. solace_agent_mesh/assets/docs/assets/js/aba87c2f.4ddf32f2.js +0 -1
  216. solace_agent_mesh/assets/docs/assets/js/ae0e903d.5fe5203f.js +0 -1
  217. solace_agent_mesh/assets/docs/assets/js/ae4415af.16cc58d3.js +0 -1
  218. solace_agent_mesh/assets/docs/assets/js/bac0be12.17de4316.js +0 -1
  219. solace_agent_mesh/assets/docs/assets/js/c2c06897.87cb1f47.js +0 -1
  220. solace_agent_mesh/assets/docs/assets/js/c835a94d.ce21f0bf.js +0 -1
  221. solace_agent_mesh/assets/docs/assets/js/cc969b05.feef7dcc.js +0 -1
  222. solace_agent_mesh/assets/docs/assets/js/cd3d4052.a19e7d78.js +0 -1
  223. solace_agent_mesh/assets/docs/assets/js/ced92a13.fb92e7ca.js +0 -1
  224. solace_agent_mesh/assets/docs/assets/js/cee5d587.47904f5e.js +0 -1
  225. solace_agent_mesh/assets/docs/assets/js/d6a81ee7.829198f1.js +0 -1
  226. solace_agent_mesh/assets/docs/assets/js/f284c35a.ed8dd236.js +0 -1
  227. solace_agent_mesh/assets/docs/assets/js/f897a61a.126663fe.js +0 -1
  228. solace_agent_mesh/assets/docs/assets/js/fbfa3e75.e144b16c.js +0 -1
  229. solace_agent_mesh/assets/docs/assets/js/main.0c149855.js +0 -2
  230. solace_agent_mesh/assets/docs/assets/js/runtime~main.c66557e4.js +0 -1
  231. solace_agent_mesh/assets/docs/docs/documentation/Enterprise/installation/index.html +0 -46
  232. solace_agent_mesh/assets/docs/docs/documentation/Enterprise/rbac-setup-guilde/index.html +0 -201
  233. solace_agent_mesh/assets/docs/docs/documentation/Enterprise/single-sign-on/index.html +0 -29
  234. solace_agent_mesh/assets/docs/docs/documentation/Migrations/A2A Upgrade To 0.3.0/a2a-gateway-upgrade-to-0.3.0/index.html +0 -105
  235. solace_agent_mesh/assets/docs/docs/documentation/concepts/agents/index.html +0 -144
  236. solace_agent_mesh/assets/docs/docs/documentation/concepts/architecture/index.html +0 -91
  237. solace_agent_mesh/assets/docs/docs/documentation/concepts/gateways/index.html +0 -91
  238. solace_agent_mesh/assets/docs/docs/documentation/concepts/orchestrator/index.html +0 -55
  239. solace_agent_mesh/assets/docs/docs/documentation/concepts/plugins/index.html +0 -111
  240. solace_agent_mesh/assets/docs/docs/documentation/deployment/debugging/index.html +0 -77
  241. solace_agent_mesh/assets/docs/docs/documentation/deployment/deploy/index.html +0 -48
  242. solace_agent_mesh/assets/docs/docs/documentation/deployment/observability/index.html +0 -54
  243. solace_agent_mesh/assets/docs/docs/documentation/getting-started/component-overview/index.html +0 -45
  244. solace_agent_mesh/assets/docs/docs/documentation/getting-started/configurations/litellm_models/index.html +0 -49
  245. solace_agent_mesh/assets/docs/docs/documentation/getting-started/installation/index.html +0 -76
  246. solace_agent_mesh/assets/docs/docs/documentation/getting-started/quick-start/index.html +0 -73
  247. solace_agent_mesh/assets/docs/docs/documentation/tutorials/slack-integration/index.html +0 -72
  248. solace_agent_mesh/assets/docs/docs/documentation/user-guide/creating-service-providers/index.html +0 -54
  249. solace_agent_mesh/assets/docs/docs/documentation/user-guide/solace-ai-connector/index.html +0 -69
  250. solace_agent_mesh/assets/docs/docs/documentation/user-guide/structure/index.html +0 -59
  251. solace_agent_mesh/assets/docs/lunr-index-1760032255022.json +0 -1
  252. solace_agent_mesh/assets/docs/search-doc-1760032255022.json +0 -1
  253. /solace_agent_mesh/assets/docs/assets/js/{8591.d7c16be6.js.LICENSE.txt → 8591.5d015485.js.LICENSE.txt} +0 -0
  254. /solace_agent_mesh/assets/docs/assets/js/{main.0c149855.js.LICENSE.txt → main.bd3c34f3.js.LICENSE.txt} +0 -0
  255. {solace_agent_mesh-1.5.0.dist-info → solace_agent_mesh-1.5.1.dist-info}/WHEEL +0 -0
  256. {solace_agent_mesh-1.5.0.dist-info → solace_agent_mesh-1.5.1.dist-info}/entry_points.txt +0 -0
  257. {solace_agent_mesh-1.5.0.dist-info → solace_agent_mesh-1.5.1.dist-info}/licenses/LICENSE +0 -0
@@ -1,54 +0,0 @@
1
- <!doctype html>
2
- <html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-documentation/user-guide/creating-service-providers" data-has-hydrated="false">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="generator" content="Docusaurus v3.8.1">
6
- <title data-rh="true">Creating Service Providers | Solace Agent Mesh</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://solacelabs.github.io/solace-agent-mesh/img/logo.png"><meta data-rh="true" name="twitter:image" content="https://solacelabs.github.io/solace-agent-mesh/img/logo.png"><meta data-rh="true" property="og:url" content="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/user-guide/creating-service-providers"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Creating Service Providers | Solace Agent Mesh"><meta data-rh="true" name="description" content="This guide details the process for developers to create service provider plugins for integrating backend systems (for example, HR platforms, CRMs) with Solace Agent Mesh."><meta data-rh="true" property="og:description" content="This guide details the process for developers to create service provider plugins for integrating backend systems (for example, HR platforms, CRMs) with Solace Agent Mesh."><link data-rh="true" rel="icon" href="/solace-agent-mesh/img/logo.png"><link data-rh="true" rel="canonical" href="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/user-guide/creating-service-providers"><link data-rh="true" rel="alternate" href="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/user-guide/creating-service-providers" hreflang="en"><link data-rh="true" rel="alternate" href="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/user-guide/creating-service-providers" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Creating Service Providers","item":"https://solacelabs.github.io/solace-agent-mesh/docs/documentation/user-guide/creating-service-providers"}]}</script><link rel="stylesheet" href="/solace-agent-mesh/assets/css/styles.906a1503.css">
7
- <script src="/solace-agent-mesh/assets/js/runtime~main.c66557e4.js" defer="defer"></script>
8
- <script src="/solace-agent-mesh/assets/js/main.0c149855.js" defer="defer"></script>
9
- </head>
10
- <body class="navigation-with-keyboard">
11
- <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
12
- <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
13
- </defs></svg>
14
- <script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")),document.documentElement.setAttribute("data-theme-choice",t||"system")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/solace-agent-mesh/img/logo.png"><link rel="preload" as="image" href="/solace-agent-mesh/img/solace-logo.png"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="theme-layout-navbar navbar navbar--fixed-top"><div class="navbar__inner"><div class="theme-layout-navbar-left navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/solace-agent-mesh/docs/documentation/getting-started/introduction"><div class="navbar__logo"><img src="/solace-agent-mesh/img/logo.png" alt="Solace Agent Mesh Logo" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/solace-agent-mesh/img/logo.png" alt="Solace Agent Mesh Logo" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><b class="navbar__title text--truncate">Solace Agent Mesh</b></a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/solace-agent-mesh/docs/documentation/getting-started/introduction">Documentation</a></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><a href="https://github.com/SolaceLabs/solace-agent-mesh/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="system mode" aria-label="Switch between dark and light mode (currently system mode)"><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP systemToggleIcon_QzmC"><path fill="currentColor" d="m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input id="search_input_react" type="search" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="theme-layout-main main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="true" href="/solace-agent-mesh/docs/documentation/getting-started/introduction">Getting Started</a></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/getting-started/introduction">Introduction</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/getting-started/installation">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/getting-started/quick-start">Quick Start</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/getting-started/component-overview">Component Overview</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/getting-started/configurations/">Configurations</a></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/getting-started/configurations/litellm_models">LLM Models</a></li></ul></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/solace-agent-mesh/docs/documentation/concepts/architecture">Components and Concepts</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role="button" aria-expanded="true" href="/solace-agent-mesh/docs/documentation/user-guide/solace-ai-connector">User Guide</a></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/user-guide/solace-ai-connector">Solace AI Event Connector</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/user-guide/structure">Structure</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/user-guide/create-agents">Create Agents</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/user-guide/creating-python-tools">Creating Python Tools</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/user-guide/create-gateways">Create Gateways</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/solace-agent-mesh/docs/documentation/user-guide/creating-service-providers">Creating Service Providers</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/solace-agent-mesh/docs/documentation/user-guide/builtin-tools/">Built-in Tools</a><button aria-label="Expand sidebar category &#x27;Built-in Tools&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/solace-agent-mesh/docs/documentation/deployment/deploy">Deployment</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/solace-agent-mesh/docs/documentation/tutorials/custom-agent">Tutorials</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/solace-agent-mesh/docs/documentation/Migrations/A2A Upgrade To 0.3.0/a2a-gateway-upgrade-to-0.3.0">Migrations</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/solace-agent-mesh/docs/documentation/Enterprise/installation">Enterprise</a></div></li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs"><li class="breadcrumbs__item"><span class="breadcrumbs__link">User Guide</span></li><li class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link">Creating Service Providers</span></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Creating Service Providers</h1></header>
15
- <p>This guide details the process for developers to create service provider plugins for integrating backend systems (for example, HR platforms, CRMs) with Solace Agent Mesh.</p>
16
- <h2 class="anchor anchorWithStickyNavbar_LWe7" id="understanding-service-providers">Understanding Service Providers<a href="#understanding-service-providers" class="hash-link" aria-label="Direct link to Understanding Service Providers" title="Direct link to Understanding Service Providers">​</a></h2>
17
- <p>Service Providers function as the abstraction layer between Solace Agent Mesh and enterprise data sources. They are implemented as Python classes that adhere to a specific abstract base class, enabling standardized interaction between Solace Agent Mesh components (Gateways and Agents) and the underlying data.</p>
18
- <p>There are two primary service provider interfaces:</p>
19
- <ul>
20
- <li><strong><code>BaseIdentityService</code></strong>: Responsible for <strong>identity enrichment</strong>. This service is utilized by Gateways to augment the profile of an authenticated user with additional details (for example, full name, job title) based on their initial authentication claims.</li>
21
- <li><strong><code>BaseEmployeeService</code></strong>: Responsible for <strong>general directory querying</strong>. This service is utilized by agents (for example, the <code>EmployeeAgent</code>) to execute lookups across the entire employee directory.</li>
22
- </ul>
23
- <h2 class="anchor anchorWithStickyNavbar_LWe7" id="the-dual-role-provider-pattern">The &quot;Dual-Role Provider&quot; Pattern<a href="#the-dual-role-provider-pattern" class="hash-link" aria-label="Direct link to The &quot;Dual-Role Provider&quot; Pattern" title="Direct link to The &quot;Dual-Role Provider&quot; Pattern">​</a></h2>
24
- <p>In many enterprise systems, particularly HR platforms, the data source for identity enrichment and general employee queries is identical. To optimize development, Solace Agent Mesh promotes a &quot;Dual-Role Provider&quot; pattern.</p>
25
- <p>This pattern involves creating a single class that inherits from both <code>BaseIdentityService</code> and <code>BaseEmployeeService</code>. This consolidated class can then be configured to fulfill either or both roles, thereby reducing code duplication.</p>
26
- <h2 class="anchor anchorWithStickyNavbar_LWe7" id="step-by-step-implementation-guide">Step-by-Step Implementation Guide<a href="#step-by-step-implementation-guide" class="hash-link" aria-label="Direct link to Step-by-Step Implementation Guide" title="Direct link to Step-by-Step Implementation Guide">​</a></h2>
27
- <p>This section provides a walkthrough for creating a new provider for a fictional &quot;CorpHR&quot; system.</p>
28
- <h3 class="anchor anchorWithStickyNavbar_LWe7" id="step-1-establish-the-plugin-structure">Step 1: Establish the Plugin Structure<a href="#step-1-establish-the-plugin-structure" class="hash-link" aria-label="Direct link to Step 1: Establish the Plugin Structure" title="Direct link to Step 1: Establish the Plugin Structure">​</a></h3>
29
- <p>The recommended structure for a custom service provider plugin should include a <code>pyproject.toml</code> for packaging and a <code>src</code> directory for the source code.</p>
30
- <div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">sam plugin create my_corp_hr_provider --type custom</span><br></span></code></pre></div></div>
31
- <h3 class="anchor anchorWithStickyNavbar_LWe7" id="step-2-define-the-provider-class">Step 2: Define the Provider Class<a href="#step-2-define-the-provider-class" class="hash-link" aria-label="Direct link to Step 2: Define the Provider Class" title="Direct link to Step 2: Define the Provider Class">​</a></h3>
32
- <p>Create a <code>provider.py</code> module and define the provider class, ensuring it inherits from both base service classes.</p>
33
- <div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># my_corp_hr_provider/provider.py</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># Import base classes from the Solace Agent Mesh framework</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">try</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">from</span><span class="token plain"> solace_agent_mesh</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">common</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">services</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">identity_service </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> BaseIdentityService</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">from</span><span class="token plain"> solace_agent_mesh</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">common</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">services</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">employee_service </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> BaseEmployeeService</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">except</span><span class="token plain"> ImportError</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># Fallback for local development environments</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">from</span><span class="token plain"> src</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">solace_agent_mesh</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">common</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">services</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">identity_service </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> BaseIdentityService</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">from</span><span class="token plain"> src</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">solace_agent_mesh</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">common</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">services</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">employee_service </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> BaseEmployeeService</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># Import any other necessary libraries, such as &#x27;requests&#x27; or a proprietary SDK</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># from .corp_hr_sdk import CorpHR_SDK</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">class</span><span class="token plain"> </span><span class="token class-name">CorpHRProvider</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">BaseIdentityService</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> BaseEmployeeService</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)">&quot;&quot;&quot;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> A dual-role provider for the CorpHR system, implementing methods</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> for both identity enrichment and employee directory services.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> &quot;&quot;&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">__init__</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> config</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token builtin" style="color:rgb(189, 147, 249)">super</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">__init__</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">config</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># Initialize the backend service/SDK client here.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># It is best practice to implement this as a singleton to share</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># connection pools and cache.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># self.corp_hr_sdk = CorpHR_SDK(api_key=config.get(&quot;api_key&quot;))</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># --- BaseIdentityService Method Implementations ---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">async</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">get_user_profile</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> auth_claims</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)">&quot;&quot;&quot;Enrich the current user&#x27;s profile based on their auth claims.&quot;&quot;&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># TODO: Implement logic to fetch user data from CorpHR</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">pass</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">async</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">search_users</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> query</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> limit</span><span class="token operator">=</span><span class="token number">10</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)">&quot;&quot;&quot;Search for users, for features like @-mentions.&quot;&quot;&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># TODO: Implement user search logic against CorpHR</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">pass</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># --- BaseEmployeeService Method Implementations ---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">async</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">get_employee_dataframe</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)">&quot;&quot;&quot;Return all employees as a pandas DataFrame for directory-wide queries.&quot;&quot;&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># TODO: Fetch all employee data and return as a DataFrame</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">pass</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">async</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">get_employee_profile</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> employee_id</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)">&quot;&quot;&quot;Get a single employee&#x27;s full profile by their ID.&quot;&quot;&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># Note: This is a general directory lookup, distinct from get_user_profile.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># TODO: Implement single employee lookup</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">pass</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">async</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">get_time_off_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> employee_id</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)">&quot;&quot;&quot;Get an employee&#x27;s raw time off data.&quot;&quot;&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># Example return format:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># return [{&#x27;start&#x27;: &#x27;2025-07-04&#x27;, &#x27;end&#x27;: &#x27;2025-07-04&#x27;, &#x27;type&#x27;: &#x27;Holiday&#x27;}]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># TODO: Implement time off data retrieval</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">pass</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">async</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">get_employee_profile_picture</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> employee_id</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)">&quot;&quot;&quot;Fetch a profile picture as a data URI string.&quot;&quot;&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># Example return format: &quot;data:image/jpeg;base64,...&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># TODO: Implement profile picture fetching</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">pass</span><br></span></code></pre></div></div>
34
- <h3 class="anchor anchorWithStickyNavbar_LWe7" id="step-3-map-to-the-canonical-employee-schema">Step 3: Map to the Canonical Employee Schema<a href="#step-3-map-to-the-canonical-employee-schema" class="hash-link" aria-label="Direct link to Step 3: Map to the Canonical Employee Schema" title="Direct link to Step 3: Map to the Canonical Employee Schema">​</a></h3>
35
- <p>When implementing the service methods, it is <strong>mandatory</strong> to map the data from the source system to Solace Agent Mesh&#x27;s <strong>canonical employee schema</strong>. This ensures data consistency and interoperability with all tools and components across the mesh.</p>
36
- <table><thead><tr><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead><tbody><tr><td><code>id</code></td><td><code>string</code></td><td>A unique, stable, and <strong>lowercase</strong> identifier (e.g., email, GUID).</td></tr><tr><td><code>displayName</code></td><td><code>string</code></td><td>The employee&#x27;s full name for display purposes.</td></tr><tr><td><code>workEmail</code></td><td><code>string</code></td><td>The employee&#x27;s primary work email address.</td></tr><tr><td><code>jobTitle</code></td><td><code>string</code></td><td>The employee&#x27;s official job title.</td></tr><tr><td><code>department</code></td><td><code>string</code></td><td>The department to which the employee belongs.</td></tr><tr><td><code>location</code></td><td><code>string</code></td><td>The physical or regional location of the employee.</td></tr><tr><td><code>supervisorId</code></td><td><code>string</code></td><td>The unique <code>id</code> of the employee&#x27;s direct manager.</td></tr><tr><td><code>hireDate</code></td><td><code>string</code></td><td>The date the employee was hired (ISO 8601: <code>YYYY-MM-DD</code>).</td></tr><tr><td><code>mobilePhone</code></td><td><code>string</code></td><td>The employee&#x27;s mobile phone number (optional).</td></tr></tbody></table>
37
- <div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>If a field is not available in the source system, return <code>None</code> or omit the key from the returned dictionary.</p></div></div>
38
- <h3 class="anchor anchorWithStickyNavbar_LWe7" id="step-4-register-the-plugin">Step 4: Register the Plugin<a href="#step-4-register-the-plugin" class="hash-link" aria-label="Direct link to Step 4: Register the Plugin" title="Direct link to Step 4: Register the Plugin">​</a></h3>
39
- <p>To make the provider discoverable by Solace Agent Mesh, it must be registered as a plugin via entry points.</p>
40
- <p><strong>1. Add an entry point in <code>pyproject.toml</code>:</strong>
41
- The key assigned here (<code>corphr</code>) is used as the <code>type</code> identifier in YAML configurations.</p>
42
- <div class="language-toml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-toml codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">[project.entry-points.&quot;solace_agent_mesh.plugins&quot;]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">corphr = &quot;my_corp_hr_provider:info&quot;</span><br></span></code></pre></div></div>
43
- <p><strong>2. Define the <code>info</code> object in the plugin&#x27;s <code>__init__.py</code>:</strong>
44
- This object points to the provider&#x27;s class path and provides a brief description.</p>
45
- <div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># my_corp_hr_provider/__init__.py</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">info </span><span class="token operator">=</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;class_path&quot;</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;my_corp_hr_provider.provider.CorpHRProvider&quot;</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;description&quot;</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;Identity and People Service provider for CorpHR.&quot;</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><br></span></code></pre></div></div>
46
- <h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuring-the-provider">Configuring the Provider<a href="#configuring-the-provider" class="hash-link" aria-label="Direct link to Configuring the Provider" title="Direct link to Configuring the Provider">​</a></h2>
47
- <p>Once the plugin is created and installed (for example, via <code>pip install .</code>), it can be configured in any Gateway or Agent <code>app_config.yml</code>.</p>
48
- <p><strong>For a Gateway (Identity Service Role):</strong></p>
49
- <div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">app_config</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">identity_service</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;corphr&quot;</span><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># Matches the key in pyproject.toml</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">api_key</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;${CORPHR_API_KEY}&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">lookup_key</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;email&quot;</span><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># The field from auth_claims to use for lookup</span><br></span></code></pre></div></div>
50
- <p><strong>For an Agent (Employee Service Role):</strong>
51
- This example demonstrates configuring the provider for the <code>employee_tools</code> group.</p>
52
- <div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">app_config</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">tools</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">tool_type</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> builtin</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">group</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">group_name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;employee_tools&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">config</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;corphr&quot;</span><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># Same provider, different role</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">api_key</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;${CORPHR_API_KEY}&quot;</span><br></span></code></pre></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/SolaceLabs/solace-agent-mesh/edit/main/docs/docs/documentation/user-guide/creating-service-providers.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/solace-agent-mesh/docs/documentation/user-guide/create-gateways"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Create Gateways</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/solace-agent-mesh/docs/documentation/user-guide/builtin-tools/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Configuring Built-in Tools</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#understanding-service-providers" class="table-of-contents__link toc-highlight">Understanding Service Providers</a></li><li><a href="#the-dual-role-provider-pattern" class="table-of-contents__link toc-highlight">The &quot;Dual-Role Provider&quot; Pattern</a></li><li><a href="#step-by-step-implementation-guide" class="table-of-contents__link toc-highlight">Step-by-Step Implementation Guide</a><ul><li><a href="#step-1-establish-the-plugin-structure" class="table-of-contents__link toc-highlight">Step 1: Establish the Plugin Structure</a></li><li><a href="#step-2-define-the-provider-class" class="table-of-contents__link toc-highlight">Step 2: Define the Provider Class</a></li><li><a href="#step-3-map-to-the-canonical-employee-schema" class="table-of-contents__link toc-highlight">Step 3: Map to the Canonical Employee Schema</a></li><li><a href="#step-4-register-the-plugin" class="table-of-contents__link toc-highlight">Step 4: Register the Plugin</a></li></ul></li><li><a href="#configuring-the-provider" class="table-of-contents__link toc-highlight">Configuring the Provider</a></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Solace Agent Mesh</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/solace-agent-mesh/docs/documentation/getting-started/introduction">Documentation</a></li><li class="footer__item"><a href="https://github.com/SolaceLabs/solace-agent-mesh/" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://github.com/SolaceLabs/solace-agent-mesh-core-plugins/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Official Plugins<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Company</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://solace.com/products/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Products<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/contact/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Contact<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/support/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Support<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/legal/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Privacy and Legal<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://www.linkedin.com/company/solacedotcom/" target="_blank" rel="noopener noreferrer" class="footer__link-item">LinkedIn<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://github.com/SolaceLabs" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://www.youtube.com/SolaceSystems" target="_blank" rel="noopener noreferrer" class="footer__link-item">YouTube<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://twitter.com/solacedotcom" target="_blank" rel="noopener noreferrer" class="footer__link-item">X<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/solace-agent-mesh/img/solace-logo.png" alt="Solace Logo" class="footer__logo themedComponent_mlkZ themedComponent--light_NVdE" width="10%" height="10%"><img src="/solace-agent-mesh/img/solace-logo.png" alt="Solace Logo" class="footer__logo themedComponent_mlkZ themedComponent--dark_xIcU" width="10%" height="10%"></div><div class="footer__copyright">Solace Agent Mesh. Copyright © 2025 Solace. Version: 1.5.0</div></div></div></footer></div>
53
- </body>
54
- </html>
@@ -1,69 +0,0 @@
1
- <!doctype html>
2
- <html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-documentation/user-guide/solace-ai-connector" data-has-hydrated="false">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="generator" content="Docusaurus v3.8.1">
6
- <title data-rh="true">Solace AI Event Connector | Solace Agent Mesh</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://solacelabs.github.io/solace-agent-mesh/img/logo.png"><meta data-rh="true" name="twitter:image" content="https://solacelabs.github.io/solace-agent-mesh/img/logo.png"><meta data-rh="true" property="og:url" content="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/user-guide/solace-ai-connector"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Solace AI Event Connector | Solace Agent Mesh"><meta data-rh="true" name="description" content="The Solace AI Event Connector is an important part of Solace Agent Mesh. It is a powerful tool designed to seamlessly integrate AI capabilities into your event-driven architecture. It enables you to create efficient pipelines that can process events from the Solace event brokers, using AI and other types of components, and then publish the results back to the Solace event brokers."><meta data-rh="true" property="og:description" content="The Solace AI Event Connector is an important part of Solace Agent Mesh. It is a powerful tool designed to seamlessly integrate AI capabilities into your event-driven architecture. It enables you to create efficient pipelines that can process events from the Solace event brokers, using AI and other types of components, and then publish the results back to the Solace event brokers."><link data-rh="true" rel="icon" href="/solace-agent-mesh/img/logo.png"><link data-rh="true" rel="canonical" href="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/user-guide/solace-ai-connector"><link data-rh="true" rel="alternate" href="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/user-guide/solace-ai-connector" hreflang="en"><link data-rh="true" rel="alternate" href="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/user-guide/solace-ai-connector" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Solace AI Event Connector","item":"https://solacelabs.github.io/solace-agent-mesh/docs/documentation/user-guide/solace-ai-connector"}]}</script><link rel="stylesheet" href="/solace-agent-mesh/assets/css/styles.906a1503.css">
7
- <script src="/solace-agent-mesh/assets/js/runtime~main.c66557e4.js" defer="defer"></script>
8
- <script src="/solace-agent-mesh/assets/js/main.0c149855.js" defer="defer"></script>
9
- </head>
10
- <body class="navigation-with-keyboard">
11
- <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
12
- <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
13
- </defs></svg>
14
- <script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")),document.documentElement.setAttribute("data-theme-choice",t||"system")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/solace-agent-mesh/img/logo.png"><link rel="preload" as="image" href="/solace-agent-mesh/img/solace-logo.png"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="theme-layout-navbar navbar navbar--fixed-top"><div class="navbar__inner"><div class="theme-layout-navbar-left navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/solace-agent-mesh/docs/documentation/getting-started/introduction"><div class="navbar__logo"><img src="/solace-agent-mesh/img/logo.png" alt="Solace Agent Mesh Logo" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/solace-agent-mesh/img/logo.png" alt="Solace Agent Mesh Logo" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><b class="navbar__title text--truncate">Solace Agent Mesh</b></a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/solace-agent-mesh/docs/documentation/getting-started/introduction">Documentation</a></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><a href="https://github.com/SolaceLabs/solace-agent-mesh/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="system mode" aria-label="Switch between dark and light mode (currently system mode)"><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP systemToggleIcon_QzmC"><path fill="currentColor" d="m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input id="search_input_react" type="search" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="theme-layout-main main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="true" href="/solace-agent-mesh/docs/documentation/getting-started/introduction">Getting Started</a></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/getting-started/introduction">Introduction</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/getting-started/installation">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/getting-started/quick-start">Quick Start</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/getting-started/component-overview">Component Overview</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/getting-started/configurations/">Configurations</a></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/getting-started/configurations/litellm_models">LLM Models</a></li></ul></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/solace-agent-mesh/docs/documentation/concepts/architecture">Components and Concepts</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role="button" aria-expanded="true" href="/solace-agent-mesh/docs/documentation/user-guide/solace-ai-connector">User Guide</a></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/solace-agent-mesh/docs/documentation/user-guide/solace-ai-connector">Solace AI Event Connector</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/user-guide/structure">Structure</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/user-guide/create-agents">Create Agents</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/user-guide/creating-python-tools">Creating Python Tools</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/user-guide/create-gateways">Create Gateways</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/user-guide/creating-service-providers">Creating Service Providers</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/solace-agent-mesh/docs/documentation/user-guide/builtin-tools/">Built-in Tools</a><button aria-label="Expand sidebar category &#x27;Built-in Tools&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/solace-agent-mesh/docs/documentation/deployment/deploy">Deployment</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/solace-agent-mesh/docs/documentation/tutorials/custom-agent">Tutorials</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/solace-agent-mesh/docs/documentation/Migrations/A2A Upgrade To 0.3.0/a2a-gateway-upgrade-to-0.3.0">Migrations</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/solace-agent-mesh/docs/documentation/Enterprise/installation">Enterprise</a></div></li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs"><li class="breadcrumbs__item"><span class="breadcrumbs__link">User Guide</span></li><li class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link">Solace AI Event Connector</span></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Solace AI Event Connector</h1></header>
15
- <p>The Solace AI Event Connector is an important part of Solace Agent Mesh. It is a powerful tool designed to seamlessly integrate AI capabilities into your event-driven architecture. It enables you to create efficient pipelines that can process events from the Solace event brokers, using AI and other types of components, and then publish the results back to the Solace event brokers.</p>
16
- <div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>GitHub</div><div class="admonitionContent_BuS1"><p>For more information, see <a href="https://github.com/SolaceLabs/solace-ai-connector" target="_blank" rel="noopener noreferrer">Solace AI Event Connector Github</a>.</p></div></div>
17
- <h2 class="anchor anchorWithStickyNavbar_LWe7" id="key-features">Key Features<a href="#key-features" class="hash-link" aria-label="Direct link to Key Features" title="Direct link to Key Features">​</a></h2>
18
- <ul>
19
- <li><strong>Event Processing Pipeline</strong>: Creates flows consisting of input components, processing components, and output components.</li>
20
- <li><strong>AI Model Integration</strong>: Built on LangChain and LiteLLM supporting various AI models and providers.</li>
21
- <li><strong>Extensible Architecture</strong>: Supports custom plugins and components for specialized processing needs.</li>
22
- <li><strong>Resilient Processing</strong>: Ensures reliable event handling with acknowledgment-based processing.</li>
23
- <li><strong>Scalable Design</strong>: Supports parallel processing and multiple component instances.</li>
24
- </ul>
25
- <h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-it-works">How It Works<a href="#how-it-works" class="hash-link" aria-label="Direct link to How It Works" title="Direct link to How It Works">​</a></h2>
26
- <p>Solace AI Event Connector operates through a series of interconnected components:</p>
27
- <p><img decoding="async" loading="lazy" alt="SAC Flow Diagram" src="/solace-agent-mesh/assets/images/sac-flows-80d5b603c6aafd33e87945680ce0abf3.png" width="896" height="299" class="img_ev3q"></p>
28
- <ol>
29
- <li>
30
- <p><strong>Flow Structure</strong></p>
31
- <ul>
32
- <li>Each flow has one input component</li>
33
- <li>Multiple processing components</li>
34
- <li>One output component</li>
35
- <li>Components are connected via queues for buffering</li>
36
- </ul>
37
- </li>
38
- <li>
39
- <p><strong>Component Processing</strong></p>
40
- <ul>
41
- <li>Each component runs in its own thread</li>
42
- <li>Processes one message at a time</li>
43
- <li>Supports input transforms and selections</li>
44
- <li>Can be scaled with multiple instances for parallel processing</li>
45
- </ul>
46
- <p><img decoding="async" loading="lazy" alt="SAC Component Diagram" src="/solace-agent-mesh/assets/images/sac_parts_of_a_component-cb3d0424b1d0c17734c5435cca6b4082.png" width="723" height="292" class="img_ev3q"></p>
47
- </li>
48
- <li>
49
- <p><strong>Event Management</strong></p>
50
- <ul>
51
- <li>Tracks events throughout the processing pipeline</li>
52
- <li>Uses acknowledgment system for reliable delivery</li>
53
- <li>Ensures no event loss during processing</li>
54
- </ul>
55
- </li>
56
- </ol>
57
- <h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
58
- <p>The Solace AI Event Connector is configured through YAML files that allow you to:</p>
59
- <ul>
60
- <li>Define flow components and their sequence</li>
61
- <li>Set queue depths between components</li>
62
- <li>Configure the number of parallel instances</li>
63
- <li>Specify input/output parameters</li>
64
- <li>Define processing logic and transformations</li>
65
- <li>Pass the source path for the custom python components</li>
66
- </ul>
67
- <p>For more information about the connector, see <a href="https://github.com/SolaceLabs/solace-ai-connector/blob/main/docs/index.md" target="_blank" rel="noopener noreferrer">Solace AI Event Connector</a>.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/SolaceLabs/solace-agent-mesh/edit/main/docs/docs/documentation/user-guide/solace-ai-connector.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/solace-agent-mesh/docs/documentation/concepts/plugins"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Plugins</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/solace-agent-mesh/docs/documentation/user-guide/structure"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Structure</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#key-features" class="table-of-contents__link toc-highlight">Key Features</a></li><li><a href="#how-it-works" class="table-of-contents__link toc-highlight">How It Works</a></li><li><a href="#configuration" class="table-of-contents__link toc-highlight">Configuration</a></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Solace Agent Mesh</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/solace-agent-mesh/docs/documentation/getting-started/introduction">Documentation</a></li><li class="footer__item"><a href="https://github.com/SolaceLabs/solace-agent-mesh/" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://github.com/SolaceLabs/solace-agent-mesh-core-plugins/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Official Plugins<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Company</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://solace.com/products/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Products<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/contact/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Contact<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/support/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Support<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/legal/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Privacy and Legal<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://www.linkedin.com/company/solacedotcom/" target="_blank" rel="noopener noreferrer" class="footer__link-item">LinkedIn<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://github.com/SolaceLabs" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://www.youtube.com/SolaceSystems" target="_blank" rel="noopener noreferrer" class="footer__link-item">YouTube<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://twitter.com/solacedotcom" target="_blank" rel="noopener noreferrer" class="footer__link-item">X<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/solace-agent-mesh/img/solace-logo.png" alt="Solace Logo" class="footer__logo themedComponent_mlkZ themedComponent--light_NVdE" width="10%" height="10%"><img src="/solace-agent-mesh/img/solace-logo.png" alt="Solace Logo" class="footer__logo themedComponent_mlkZ themedComponent--dark_xIcU" width="10%" height="10%"></div><div class="footer__copyright">Solace Agent Mesh. Copyright © 2025 Solace. Version: 1.5.0</div></div></div></footer></div>
68
- </body>
69
- </html>
@@ -1,59 +0,0 @@
1
- <!doctype html>
2
- <html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-documentation/user-guide/structure" data-has-hydrated="false">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="generator" content="Docusaurus v3.8.1">
6
- <title data-rh="true">Structure | Solace Agent Mesh</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://solacelabs.github.io/solace-agent-mesh/img/logo.png"><meta data-rh="true" name="twitter:image" content="https://solacelabs.github.io/solace-agent-mesh/img/logo.png"><meta data-rh="true" property="og:url" content="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/user-guide/structure"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Structure | Solace Agent Mesh"><meta data-rh="true" name="description" content="Solace Agent Mesh is built on the A2A (Agent-to-Agent) protocol architecture, powered by Solace AI Event Connector and uses the Solace broker as the communication backbone. The framework is controlled by YAML configuration files that define agents, gateways, and plugins, enabling distributed AI agent communication through event-driven messaging."><meta data-rh="true" property="og:description" content="Solace Agent Mesh is built on the A2A (Agent-to-Agent) protocol architecture, powered by Solace AI Event Connector and uses the Solace broker as the communication backbone. The framework is controlled by YAML configuration files that define agents, gateways, and plugins, enabling distributed AI agent communication through event-driven messaging."><link data-rh="true" rel="icon" href="/solace-agent-mesh/img/logo.png"><link data-rh="true" rel="canonical" href="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/user-guide/structure"><link data-rh="true" rel="alternate" href="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/user-guide/structure" hreflang="en"><link data-rh="true" rel="alternate" href="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/user-guide/structure" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Structure","item":"https://solacelabs.github.io/solace-agent-mesh/docs/documentation/user-guide/structure"}]}</script><link rel="stylesheet" href="/solace-agent-mesh/assets/css/styles.906a1503.css">
7
- <script src="/solace-agent-mesh/assets/js/runtime~main.c66557e4.js" defer="defer"></script>
8
- <script src="/solace-agent-mesh/assets/js/main.0c149855.js" defer="defer"></script>
9
- </head>
10
- <body class="navigation-with-keyboard">
11
- <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
12
- <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
13
- </defs></svg>
14
- <script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")),document.documentElement.setAttribute("data-theme-choice",t||"system")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/solace-agent-mesh/img/logo.png"><link rel="preload" as="image" href="/solace-agent-mesh/img/solace-logo.png"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="theme-layout-navbar navbar navbar--fixed-top"><div class="navbar__inner"><div class="theme-layout-navbar-left navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/solace-agent-mesh/docs/documentation/getting-started/introduction"><div class="navbar__logo"><img src="/solace-agent-mesh/img/logo.png" alt="Solace Agent Mesh Logo" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/solace-agent-mesh/img/logo.png" alt="Solace Agent Mesh Logo" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><b class="navbar__title text--truncate">Solace Agent Mesh</b></a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/solace-agent-mesh/docs/documentation/getting-started/introduction">Documentation</a></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><a href="https://github.com/SolaceLabs/solace-agent-mesh/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="system mode" aria-label="Switch between dark and light mode (currently system mode)"><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP systemToggleIcon_QzmC"><path fill="currentColor" d="m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input id="search_input_react" type="search" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="theme-layout-main main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="true" href="/solace-agent-mesh/docs/documentation/getting-started/introduction">Getting Started</a></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/getting-started/introduction">Introduction</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/getting-started/installation">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/getting-started/quick-start">Quick Start</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/getting-started/component-overview">Component Overview</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/getting-started/configurations/">Configurations</a></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/getting-started/configurations/litellm_models">LLM Models</a></li></ul></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/solace-agent-mesh/docs/documentation/concepts/architecture">Components and Concepts</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role="button" aria-expanded="true" href="/solace-agent-mesh/docs/documentation/user-guide/solace-ai-connector">User Guide</a></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/user-guide/solace-ai-connector">Solace AI Event Connector</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/solace-agent-mesh/docs/documentation/user-guide/structure">Structure</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/user-guide/create-agents">Create Agents</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/user-guide/creating-python-tools">Creating Python Tools</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/user-guide/create-gateways">Create Gateways</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/solace-agent-mesh/docs/documentation/user-guide/creating-service-providers">Creating Service Providers</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/solace-agent-mesh/docs/documentation/user-guide/builtin-tools/">Built-in Tools</a><button aria-label="Expand sidebar category &#x27;Built-in Tools&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/solace-agent-mesh/docs/documentation/deployment/deploy">Deployment</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/solace-agent-mesh/docs/documentation/tutorials/custom-agent">Tutorials</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/solace-agent-mesh/docs/documentation/Migrations/A2A Upgrade To 0.3.0/a2a-gateway-upgrade-to-0.3.0">Migrations</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/solace-agent-mesh/docs/documentation/Enterprise/installation">Enterprise</a></div></li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs"><li class="breadcrumbs__item"><span class="breadcrumbs__link">User Guide</span></li><li class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link">Structure</span></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Structure</h1></header>
15
- <p>Solace Agent Mesh is built on the A2A (Agent-to-Agent) protocol architecture, powered by <a href="/solace-agent-mesh/docs/documentation/user-guide/solace-ai-connector">Solace AI Event Connector</a> and uses the Solace broker as the communication backbone. The framework is controlled by YAML configuration files that define agents, gateways, and plugins, enabling distributed AI agent communication through event-driven messaging.</p>
16
- <h2 class="anchor anchorWithStickyNavbar_LWe7" id="project-structure">Project Structure<a href="#project-structure" class="hash-link" aria-label="Direct link to Project Structure" title="Direct link to Project Structure">​</a></h2>
17
- <p>A fresh Solace Agent Mesh project follows this structure:</p>
18
- <div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">my-sam-project/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── configs/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ ├── shared_config.yaml # Shared broker, models, and services config</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ ├── agents/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ │ └── main_orchestrator.yaml # Default orchestrator agent</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ └── gateways/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ │ └── webui.yaml # Default web UI gateway</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ ├── plugins/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── src/ # Custom Python components (optional)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ └── __init__.py</span><br></span></code></pre></div></div>
19
- <h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration-organization">Configuration Organization<a href="#configuration-organization" class="hash-link" aria-label="Direct link to Configuration Organization" title="Direct link to Configuration Organization">​</a></h2>
20
- <h3 class="anchor anchorWithStickyNavbar_LWe7" id="directory-structure">Directory Structure<a href="#directory-structure" class="hash-link" aria-label="Direct link to Directory Structure" title="Direct link to Directory Structure">​</a></h3>
21
- <p>The <code>configs/</code> directory uses a logical organization:</p>
22
- <ul>
23
- <li><strong><code>agents/</code></strong> - Contains agent configuration files</li>
24
- <li><strong><code>gateways/</code></strong> - Contains gateway configuration files</li>
25
- <li><strong><code>plugins/</code></strong> - Contains plugin configuration files (created when plugins are added)</li>
26
- </ul>
27
- <p>Further subdirectories can be created within <code>agents/</code>, <code>gateways/</code>, and <code>plugins/</code> to organize configurations by functionality or purpose.</p>
28
- <div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>File Discovery</div><div class="admonitionContent_BuS1"><p>The CLI automatically crawls through the configs directory to find configuration files. Files that start with <code>_</code> (underscore) or <code>shared_config</code> are ignored and not processed by the CLI.
29
- For example:</p><ul>
30
- <li><code>_example_agent.yaml</code> is ignored</li>
31
- <li><code>shared_config_for_db_agents.yaml</code> is ignored (Can still be included in other config files using <code>!include</code> directive)</li>
32
- </ul></div></div>
33
- <h3 class="anchor anchorWithStickyNavbar_LWe7" id="shared-configuration">Shared Configuration<a href="#shared-configuration" class="hash-link" aria-label="Direct link to Shared Configuration" title="Direct link to Shared Configuration">​</a></h3>
34
- <p>The <code>shared_config.yaml</code> file is the foundation of your project configuration. It contains common elements that are reused across all agents and gateways using YAML anchors:</p>
35
- <ul>
36
- <li><strong>Broker Connection</strong>: Solace broker settings for A2A communication</li>
37
- <li><strong>Model Definitions</strong>: LLM model configurations (planning, general, multimodal, etc.)</li>
38
- <li><strong>Services</strong>: Artifact service, session service, and data tools configuration</li>
39
- </ul>
40
- <p>This shared configuration approach eliminates duplication and ensures consistency across your entire project. Each agent and gateway configuration file references these shared elements using YAML anchor syntax (<code>*reference_name</code>).</p>
41
- <p>Further values can be added to the shared configuration file as needed, and they are available to all agents and gateways that include it.</p>
42
- <h2 class="anchor anchorWithStickyNavbar_LWe7" id="yaml-configuration-files">YAML Configuration Files<a href="#yaml-configuration-files" class="hash-link" aria-label="Direct link to YAML Configuration Files" title="Direct link to YAML Configuration Files">​</a></h2>
43
- <p>Each configuration file defines one [recommended] or more applications that can be run independently. The framework supports:</p>
44
- <ul>
45
- <li><strong>Agent Applications</strong>: A2A-enabled agents that use Google ADK runtime and Solace Agent Mesh framework</li>
46
- <li><strong>Gateway Applications</strong>: Protocol translators that bridge external interfaces to adopted A2A protocol</li>
47
- <li><strong>Plugin Applications</strong>: Specialized components that extend framework capabilities</li>
48
- </ul>
49
- <h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration-management">Configuration Management<a href="#configuration-management" class="hash-link" aria-label="Direct link to Configuration Management" title="Direct link to Configuration Management">​</a></h2>
50
- <ul>
51
- <li><strong>Environment Variables</strong>: Configuration values use environment variables for flexibility across environments</li>
52
- <li><strong>Shared Configuration</strong>: Common settings are defined once in <code>shared_config.yaml</code> and referenced using YAML anchors (<code>&amp;</code> and <code>*</code>)</li>
53
- <li><strong>Automatic Generation</strong>: The <code>sam add agent</code>, <code>sam add gateway</code>, and <code>sam plugin add</code> commands automatically generate appropriate configuration files</li>
54
- <li><strong>Standalone Execution</strong>: Each configuration file can be run independently using <code>sam run &lt;config-file&gt;</code></li>
55
- </ul>
56
- <h2 class="anchor anchorWithStickyNavbar_LWe7" id="python-components">Python Components<a href="#python-components" class="hash-link" aria-label="Direct link to Python Components" title="Direct link to Python Components">​</a></h2>
57
- <p>While most functionality is configured through YAML, custom Python components can be added to the <code>src/</code> directory when needed. The framework provides base classes for extending functionality such as custom agent tools, gateway protocol handlers, and service providers.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/SolaceLabs/solace-agent-mesh/edit/main/docs/docs/documentation/user-guide/structure.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/solace-agent-mesh/docs/documentation/user-guide/solace-ai-connector"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Solace AI Event Connector</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/solace-agent-mesh/docs/documentation/user-guide/create-agents"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Create Agents</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#project-structure" class="table-of-contents__link toc-highlight">Project Structure</a></li><li><a href="#configuration-organization" class="table-of-contents__link toc-highlight">Configuration Organization</a><ul><li><a href="#directory-structure" class="table-of-contents__link toc-highlight">Directory Structure</a></li><li><a href="#shared-configuration" class="table-of-contents__link toc-highlight">Shared Configuration</a></li></ul></li><li><a href="#yaml-configuration-files" class="table-of-contents__link toc-highlight">YAML Configuration Files</a></li><li><a href="#configuration-management" class="table-of-contents__link toc-highlight">Configuration Management</a></li><li><a href="#python-components" class="table-of-contents__link toc-highlight">Python Components</a></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Solace Agent Mesh</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/solace-agent-mesh/docs/documentation/getting-started/introduction">Documentation</a></li><li class="footer__item"><a href="https://github.com/SolaceLabs/solace-agent-mesh/" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://github.com/SolaceLabs/solace-agent-mesh-core-plugins/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Official Plugins<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Company</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://solace.com/products/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Products<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/contact/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Contact<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/support/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Support<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/legal/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Privacy and Legal<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://www.linkedin.com/company/solacedotcom/" target="_blank" rel="noopener noreferrer" class="footer__link-item">LinkedIn<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://github.com/SolaceLabs" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://www.youtube.com/SolaceSystems" target="_blank" rel="noopener noreferrer" class="footer__link-item">YouTube<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://twitter.com/solacedotcom" target="_blank" rel="noopener noreferrer" class="footer__link-item">X<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/solace-agent-mesh/img/solace-logo.png" alt="Solace Logo" class="footer__logo themedComponent_mlkZ themedComponent--light_NVdE" width="10%" height="10%"><img src="/solace-agent-mesh/img/solace-logo.png" alt="Solace Logo" class="footer__logo themedComponent_mlkZ themedComponent--dark_xIcU" width="10%" height="10%"></div><div class="footer__copyright">Solace Agent Mesh. Copyright © 2025 Solace. Version: 1.5.0</div></div></div></footer></div>
58
- </body>
59
- </html>