solace-agent-mesh 1.5.0__py3-none-any.whl → 1.6.0__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 (326) hide show
  1. solace_agent_mesh/agent/adk/callbacks.py +14 -17
  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/models/lite_llm.py +123 -8
  6. solace_agent_mesh/agent/adk/models/oauth2_token_manager.py +245 -0
  7. solace_agent_mesh/agent/adk/runner.py +3 -1
  8. solace_agent_mesh/agent/adk/services.py +4 -1
  9. solace_agent_mesh/agent/adk/setup.py +3 -1
  10. solace_agent_mesh/agent/adk/tool_wrapper.py +2 -2
  11. solace_agent_mesh/agent/protocol/event_handlers.py +42 -2
  12. solace_agent_mesh/agent/proxies/__init__.py +0 -0
  13. solace_agent_mesh/agent/proxies/a2a/__init__.py +3 -0
  14. solace_agent_mesh/agent/proxies/a2a/app.py +55 -0
  15. solace_agent_mesh/agent/proxies/a2a/component.py +1115 -0
  16. solace_agent_mesh/agent/proxies/a2a/config.py +140 -0
  17. solace_agent_mesh/agent/proxies/a2a/oauth_token_cache.py +104 -0
  18. solace_agent_mesh/agent/proxies/base/__init__.py +3 -0
  19. solace_agent_mesh/agent/proxies/base/app.py +99 -0
  20. solace_agent_mesh/agent/proxies/base/component.py +619 -0
  21. solace_agent_mesh/agent/proxies/base/config.py +85 -0
  22. solace_agent_mesh/agent/proxies/base/proxy_task_context.py +17 -0
  23. solace_agent_mesh/agent/sac/app.py +12 -4
  24. solace_agent_mesh/agent/sac/component.py +164 -9
  25. solace_agent_mesh/agent/tools/audio_tools.py +127 -9
  26. solace_agent_mesh/agent/tools/builtin_artifact_tools.py +3 -1
  27. solace_agent_mesh/agent/tools/builtin_data_analysis_tools.py +3 -1
  28. solace_agent_mesh/agent/tools/dynamic_tool.py +2 -1
  29. solace_agent_mesh/agent/tools/general_agent_tools.py +2 -1
  30. solace_agent_mesh/agent/tools/image_tools.py +2 -1
  31. solace_agent_mesh/agent/tools/peer_agent_tool.py +2 -1
  32. solace_agent_mesh/agent/tools/registry.py +3 -1
  33. solace_agent_mesh/agent/tools/test_tools.py +2 -1
  34. solace_agent_mesh/agent/tools/web_tools.py +12 -6
  35. solace_agent_mesh/agent/utils/artifact_helpers.py +144 -4
  36. solace_agent_mesh/agent/utils/config_parser.py +3 -1
  37. solace_agent_mesh/assets/docs/404.html +3 -3
  38. solace_agent_mesh/assets/docs/assets/js/{b7006a3a.73a79653.js → 032c2d61.f3d37824.js} +1 -1
  39. solace_agent_mesh/assets/docs/assets/js/0bcf40b7.c019ad46.js +1 -0
  40. solace_agent_mesh/assets/docs/assets/js/15ba94aa.932dd2db.js +1 -0
  41. solace_agent_mesh/assets/docs/assets/js/2131ec11.5c7a1f6e.js +1 -0
  42. solace_agent_mesh/assets/docs/assets/js/{2334.622a6395.js → 2334.1cf50a20.js} +1 -1
  43. solace_agent_mesh/assets/docs/assets/js/240a0364.7eac6021.js +1 -0
  44. solace_agent_mesh/assets/docs/assets/js/2e32b5e0.33f5d75b.js +1 -0
  45. solace_agent_mesh/assets/docs/assets/js/341393d4.0fac2613.js +1 -0
  46. solace_agent_mesh/assets/docs/assets/js/{3624.b524e433.js → 3624.0eaa1fd0.js} +1 -1
  47. solace_agent_mesh/assets/docs/assets/js/3a6c6137.f5940cfa.js +1 -0
  48. solace_agent_mesh/assets/docs/assets/js/3ac1795d.76654dd9.js +1 -0
  49. solace_agent_mesh/assets/docs/assets/js/3ff0015d.2be20244.js +1 -0
  50. solace_agent_mesh/assets/docs/assets/js/509e993c.4c7a1a6d.js +1 -0
  51. solace_agent_mesh/assets/docs/assets/js/547e15cc.2cbb060a.js +1 -0
  52. solace_agent_mesh/assets/docs/assets/js/55b7b518.f2b1d1ba.js +1 -0
  53. solace_agent_mesh/assets/docs/assets/js/5c2bd65f.eda4bcb2.js +1 -0
  54. solace_agent_mesh/assets/docs/assets/js/6063ff4c.ef84f702.js +1 -0
  55. solace_agent_mesh/assets/docs/assets/js/631738c7.a8b1ef8b.js +1 -0
  56. solace_agent_mesh/assets/docs/assets/js/6a520c9d.ba015d81.js +1 -0
  57. solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.f4b15f3b.js +1 -0
  58. solace_agent_mesh/assets/docs/assets/js/6d84eae0.4a5fbf39.js +1 -0
  59. solace_agent_mesh/assets/docs/assets/js/6fdfefc7.99de744e.js +1 -0
  60. solace_agent_mesh/assets/docs/assets/js/71da7b71.38583438.js +1 -0
  61. solace_agent_mesh/assets/docs/assets/js/722f809d.965da774.js +1 -0
  62. solace_agent_mesh/assets/docs/assets/js/742f027b.46c07808.js +1 -0
  63. solace_agent_mesh/assets/docs/assets/js/77cf947d.48cb18a2.js +1 -0
  64. solace_agent_mesh/assets/docs/assets/js/8024126c.56e59919.js +1 -0
  65. solace_agent_mesh/assets/docs/assets/js/81a99df0.07034dd9.js +1 -0
  66. solace_agent_mesh/assets/docs/assets/js/82fbfb93.139a1a1f.js +1 -0
  67. solace_agent_mesh/assets/docs/assets/js/{8591.d7c16be6.js → 8591.5d015485.js} +2 -2
  68. solace_agent_mesh/assets/docs/assets/js/{8731.49e930c2.js → 8731.6c1dbf0c.js} +1 -1
  69. solace_agent_mesh/assets/docs/assets/js/924ffdeb.8095e148.js +1 -0
  70. solace_agent_mesh/assets/docs/assets/js/945fb41e.6f4cdffd.js +1 -0
  71. solace_agent_mesh/assets/docs/assets/js/94e8668d.b5ddb7a1.js +1 -0
  72. solace_agent_mesh/assets/docs/assets/js/9bb13469.dd1c9b54.js +1 -0
  73. solace_agent_mesh/assets/docs/assets/js/9e9d0a82.570c057b.js +1 -0
  74. solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e6dd091.js +1 -0
  75. solace_agent_mesh/assets/docs/assets/js/ad71b5ed.af3ecfd1.js +1 -0
  76. solace_agent_mesh/assets/docs/assets/js/c198a0dc.8f31f867.js +1 -0
  77. solace_agent_mesh/assets/docs/assets/js/c93cbaa0.eaff365e.js +1 -0
  78. solace_agent_mesh/assets/docs/assets/js/ceb2a7a6.5d92d7d0.js +1 -0
  79. solace_agent_mesh/assets/docs/assets/js/da0b5bad.d08a9466.js +1 -0
  80. solace_agent_mesh/assets/docs/assets/js/db924877.e98d12a1.js +1 -0
  81. solace_agent_mesh/assets/docs/assets/js/dd817ffc.0aa9630a.js +1 -0
  82. solace_agent_mesh/assets/docs/assets/js/dd81e2b8.d590bc9e.js +1 -0
  83. solace_agent_mesh/assets/docs/assets/js/de5f4c65.e8241890.js +1 -0
  84. solace_agent_mesh/assets/docs/assets/js/de915948.27d6b065.js +1 -0
  85. solace_agent_mesh/assets/docs/assets/js/e3d9abda.2b916f9e.js +1 -0
  86. solace_agent_mesh/assets/docs/assets/js/e6f9706b.e74a984d.js +1 -0
  87. solace_agent_mesh/assets/docs/assets/js/e92d0134.cf6d6522.js +1 -0
  88. solace_agent_mesh/assets/docs/assets/js/f284c35a.42f59cdd.js +1 -0
  89. solace_agent_mesh/assets/docs/assets/js/ff4d71f2.15b02f97.js +1 -0
  90. solace_agent_mesh/assets/docs/assets/js/main.20feee82.js +2 -0
  91. solace_agent_mesh/assets/docs/assets/js/runtime~main.0d198646.js +1 -0
  92. solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +154 -0
  93. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/artifact-management/index.html +7 -7
  94. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/audio-tools/index.html +7 -7
  95. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/data-analysis-tools/index.html +8 -8
  96. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/embeds/index.html +6 -6
  97. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/index.html +11 -11
  98. solace_agent_mesh/assets/docs/docs/documentation/{concepts → components}/cli/index.html +25 -25
  99. solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +91 -0
  100. solace_agent_mesh/assets/docs/docs/documentation/components/index.html +29 -0
  101. solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +55 -0
  102. solace_agent_mesh/assets/docs/docs/documentation/components/plugins/index.html +110 -0
  103. solace_agent_mesh/assets/docs/docs/documentation/components/proxies/index.html +262 -0
  104. solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +104 -0
  105. solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +85 -0
  106. solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +25 -0
  107. solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +59 -0
  108. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → developing}/create-agents/index.html +113 -152
  109. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → developing}/create-gateways/index.html +10 -10
  110. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → developing}/creating-python-tools/index.html +12 -12
  111. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +54 -0
  112. solace_agent_mesh/assets/docs/docs/documentation/developing/evaluations/index.html +135 -0
  113. solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +34 -0
  114. solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +55 -0
  115. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/bedrock-agents/index.html +25 -25
  116. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/custom-agent/index.html +13 -13
  117. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/event-mesh-gateway/index.html +12 -12
  118. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/mcp-integration/index.html +10 -10
  119. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/mongodb-integration/index.html +13 -13
  120. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/rag-integration/index.html +13 -13
  121. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/rest-gateway/index.html +10 -10
  122. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +72 -0
  123. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/sql-database/index.html +14 -14
  124. solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +33 -0
  125. solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +83 -0
  126. solace_agent_mesh/assets/docs/docs/documentation/enterprise/rbac-setup-guide/index.html +222 -0
  127. solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +161 -0
  128. solace_agent_mesh/assets/docs/docs/documentation/getting-started/architecture/index.html +75 -0
  129. solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +53 -0
  130. solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +35 -100
  131. solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +41 -0
  132. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/configurations/index.html +81 -0
  133. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +25 -0
  134. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +76 -0
  135. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +160 -0
  136. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +142 -0
  137. solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-gateway-upgrade-to-0.3.0/index.html +100 -0
  138. 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
  139. solace_agent_mesh/assets/docs/img/solace-logo.png +0 -0
  140. solace_agent_mesh/assets/docs/lunr-index-1761165361160.json +1 -0
  141. solace_agent_mesh/assets/docs/lunr-index.json +1 -1
  142. solace_agent_mesh/assets/docs/search-doc-1761165361160.json +1 -0
  143. solace_agent_mesh/assets/docs/search-doc.json +1 -1
  144. solace_agent_mesh/assets/docs/sitemap.xml +1 -1
  145. solace_agent_mesh/cli/__init__.py +1 -1
  146. solace_agent_mesh/cli/commands/add_cmd/agent_cmd.py +2 -69
  147. solace_agent_mesh/cli/commands/eval_cmd.py +11 -49
  148. solace_agent_mesh/cli/commands/init_cmd/__init__.py +0 -5
  149. solace_agent_mesh/cli/commands/init_cmd/env_step.py +10 -12
  150. solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +9 -61
  151. solace_agent_mesh/cli/commands/init_cmd/webui_gateway_step.py +9 -49
  152. solace_agent_mesh/cli/commands/plugin_cmd/add_cmd.py +1 -2
  153. solace_agent_mesh/client/webui/frontend/static/assets/{authCallback-DwrxZE0E.js → authCallback-BTf6dqwp.js} +1 -1
  154. solace_agent_mesh/client/webui/frontend/static/assets/{client-DarGQzyw.js → client-CaY59VuC.js} +1 -1
  155. solace_agent_mesh/client/webui/frontend/static/assets/main-BGTaW0uv.js +342 -0
  156. solace_agent_mesh/client/webui/frontend/static/assets/main-DHJKSW1S.css +1 -0
  157. solace_agent_mesh/client/webui/frontend/static/assets/{vendor-BKIeiHj_.js → vendor-BEmvJSYz.js} +1 -1
  158. solace_agent_mesh/client/webui/frontend/static/auth-callback.html +3 -3
  159. solace_agent_mesh/client/webui/frontend/static/index.html +4 -4
  160. solace_agent_mesh/common/a2a/__init__.py +24 -0
  161. solace_agent_mesh/common/a2a/artifact.py +41 -1
  162. solace_agent_mesh/common/a2a/events.py +29 -0
  163. solace_agent_mesh/common/a2a/message.py +68 -0
  164. solace_agent_mesh/common/a2a/protocol.py +76 -3
  165. solace_agent_mesh/common/a2a/translation.py +3 -1
  166. solace_agent_mesh/common/agent_registry.py +83 -3
  167. solace_agent_mesh/common/constants.py +3 -1
  168. solace_agent_mesh/common/middleware/config_resolver.py +3 -1
  169. solace_agent_mesh/common/middleware/registry.py +3 -1
  170. solace_agent_mesh/common/sac/sam_component_base.py +2 -1
  171. solace_agent_mesh/common/sam_events/event_service.py +3 -2
  172. solace_agent_mesh/common/services/employee_service.py +3 -1
  173. solace_agent_mesh/common/services/identity_service.py +2 -1
  174. solace_agent_mesh/common/services/providers/local_file_identity_service.py +2 -1
  175. solace_agent_mesh/common/utils/artifact_utils.py +3 -1
  176. solace_agent_mesh/common/utils/asyncio_macos_fix.py +3 -1
  177. solace_agent_mesh/common/utils/embeds/converter.py +3 -1
  178. solace_agent_mesh/common/utils/embeds/evaluators.py +2 -1
  179. solace_agent_mesh/common/utils/embeds/modifiers.py +3 -2
  180. solace_agent_mesh/common/utils/embeds/resolver.py +2 -1
  181. solace_agent_mesh/common/utils/initializer.py +3 -1
  182. solace_agent_mesh/common/utils/message_utils.py +2 -1
  183. solace_agent_mesh/common/utils/push_notification_auth.py +3 -2
  184. solace_agent_mesh/common/utils/pydantic_utils.py +12 -0
  185. solace_agent_mesh/config_portal/backend/common.py +1 -1
  186. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-ByU1X1HD.js +98 -0
  187. solace_agent_mesh/config_portal/frontend/static/client/assets/{manifest-44d62be6.js → manifest-61038fc6.js} +1 -1
  188. solace_agent_mesh/config_portal/frontend/static/client/index.html +1 -1
  189. solace_agent_mesh/core_a2a/service.py +2 -2
  190. solace_agent_mesh/evaluation/evaluator.py +128 -104
  191. solace_agent_mesh/evaluation/message_organizer.py +116 -110
  192. solace_agent_mesh/evaluation/report_data_processor.py +84 -86
  193. solace_agent_mesh/evaluation/report_generator.py +73 -79
  194. solace_agent_mesh/evaluation/run.py +421 -235
  195. solace_agent_mesh/evaluation/shared/__init__.py +92 -0
  196. solace_agent_mesh/evaluation/shared/constants.py +47 -0
  197. solace_agent_mesh/evaluation/shared/exceptions.py +50 -0
  198. solace_agent_mesh/evaluation/shared/helpers.py +35 -0
  199. solace_agent_mesh/evaluation/shared/test_case_loader.py +167 -0
  200. solace_agent_mesh/evaluation/shared/test_suite_loader.py +280 -0
  201. solace_agent_mesh/evaluation/subscriber.py +111 -232
  202. solace_agent_mesh/evaluation/summary_builder.py +227 -117
  203. solace_agent_mesh/gateway/base/app.py +3 -2
  204. solace_agent_mesh/gateway/base/component.py +11 -2
  205. solace_agent_mesh/gateway/base/task_context.py +2 -1
  206. solace_agent_mesh/gateway/http_sse/alembic/versions/20251015_add_session_performance_indexes.py +70 -0
  207. solace_agent_mesh/gateway/http_sse/app.py +2 -1
  208. solace_agent_mesh/gateway/http_sse/component.py +102 -3
  209. solace_agent_mesh/gateway/http_sse/components/task_logger_forwarder.py +3 -2
  210. solace_agent_mesh/gateway/http_sse/components/visualization_forwarder_component.py +3 -1
  211. solace_agent_mesh/gateway/http_sse/dependencies.py +7 -5
  212. solace_agent_mesh/gateway/http_sse/main.py +5 -2
  213. solace_agent_mesh/gateway/http_sse/repository/chat_task_repository.py +12 -13
  214. solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +15 -18
  215. solace_agent_mesh/gateway/http_sse/repository/interfaces.py +25 -18
  216. solace_agent_mesh/gateway/http_sse/repository/session_repository.py +30 -26
  217. solace_agent_mesh/gateway/http_sse/repository/task_repository.py +35 -44
  218. solace_agent_mesh/gateway/http_sse/routers/agent_cards.py +7 -5
  219. solace_agent_mesh/gateway/http_sse/routers/artifacts.py +97 -205
  220. solace_agent_mesh/gateway/http_sse/routers/auth.py +3 -1
  221. solace_agent_mesh/gateway/http_sse/routers/config.py +3 -2
  222. solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +4 -3
  223. solace_agent_mesh/gateway/http_sse/routers/people.py +3 -1
  224. solace_agent_mesh/gateway/http_sse/routers/sessions.py +5 -3
  225. solace_agent_mesh/gateway/http_sse/routers/sse.py +3 -2
  226. solace_agent_mesh/gateway/http_sse/routers/tasks.py +35 -42
  227. solace_agent_mesh/gateway/http_sse/routers/users.py +3 -1
  228. solace_agent_mesh/gateway/http_sse/routers/visualization.py +19 -12
  229. solace_agent_mesh/gateway/http_sse/services/agent_card_service.py +3 -1
  230. solace_agent_mesh/gateway/http_sse/services/data_retention_service.py +6 -5
  231. solace_agent_mesh/gateway/http_sse/services/feedback_service.py +53 -44
  232. solace_agent_mesh/gateway/http_sse/services/people_service.py +2 -2
  233. solace_agent_mesh/gateway/http_sse/services/session_service.py +23 -21
  234. solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +10 -9
  235. solace_agent_mesh/gateway/http_sse/services/task_service.py +3 -2
  236. solace_agent_mesh/gateway/http_sse/session_manager.py +2 -1
  237. solace_agent_mesh/gateway/http_sse/shared/base_repository.py +45 -71
  238. solace_agent_mesh/gateway/http_sse/shared/types.py +0 -18
  239. solace_agent_mesh/gateway/http_sse/sse_event_buffer.py +2 -1
  240. solace_agent_mesh/gateway/http_sse/sse_manager.py +2 -2
  241. solace_agent_mesh/templates/gateway_app_template.py +4 -2
  242. solace_agent_mesh/templates/gateway_component_template.py +3 -1
  243. solace_agent_mesh/templates/gateway_config_template.yaml +0 -5
  244. solace_agent_mesh/templates/logging_config_template.ini +27 -46
  245. solace_agent_mesh/templates/plugin_gateway_config_template.yaml +0 -3
  246. solace_agent_mesh/templates/plugin_tools_template.py +2 -2
  247. solace_agent_mesh/templates/shared_config.yaml +40 -0
  248. {solace_agent_mesh-1.5.0.dist-info → solace_agent_mesh-1.6.0.dist-info}/METADATA +47 -21
  249. {solace_agent_mesh-1.5.0.dist-info → solace_agent_mesh-1.6.0.dist-info}/RECORD +254 -225
  250. solace_agent_mesh/assets/docs/assets/images/sac-flows-80d5b603c6aafd33e87945680ce0abf3.png +0 -0
  251. solace_agent_mesh/assets/docs/assets/images/sac_parts_of_a_component-cb3d0424b1d0c17734c5435cca6b4082.png +0 -0
  252. solace_agent_mesh/assets/docs/assets/js/04989206.a248f00c.js +0 -1
  253. solace_agent_mesh/assets/docs/assets/js/0e682baa.d54b8668.js +0 -1
  254. solace_agent_mesh/assets/docs/assets/js/1023fc19.8a8a9309.js +0 -1
  255. solace_agent_mesh/assets/docs/assets/js/1523c6b4.2645ef68.js +0 -1
  256. solace_agent_mesh/assets/docs/assets/js/166ab619.e27886d9.js +0 -1
  257. solace_agent_mesh/assets/docs/assets/js/1c6e87d2.e056b7e0.js +0 -1
  258. solace_agent_mesh/assets/docs/assets/js/21ceee5f.3bf39250.js +0 -1
  259. solace_agent_mesh/assets/docs/assets/js/2a9cab12.2afaee76.js +0 -1
  260. solace_agent_mesh/assets/docs/assets/js/332e10b5.f7629851.js +0 -1
  261. solace_agent_mesh/assets/docs/assets/js/3d406171.5560fdf9.js +0 -1
  262. solace_agent_mesh/assets/docs/assets/js/42b3f8d8.508ae8db.js +0 -1
  263. solace_agent_mesh/assets/docs/assets/js/442a8107.b5c2532a.js +0 -1
  264. solace_agent_mesh/assets/docs/assets/js/453a82a6.3c6bb61d.js +0 -1
  265. solace_agent_mesh/assets/docs/assets/js/483cef9a.bf9398af.js +0 -1
  266. solace_agent_mesh/assets/docs/assets/js/4c2787c2.c1290a40.js +0 -1
  267. solace_agent_mesh/assets/docs/assets/js/55f47984.bcd00a86.js +0 -1
  268. solace_agent_mesh/assets/docs/assets/js/5b4258a4.fdfd2325.js +0 -1
  269. solace_agent_mesh/assets/docs/assets/js/664b740a.ba305a89.js +0 -1
  270. solace_agent_mesh/assets/docs/assets/js/75384d09.c19e8b51.js +0 -1
  271. solace_agent_mesh/assets/docs/assets/js/768e31b0.9abcdc48.js +0 -1
  272. solace_agent_mesh/assets/docs/assets/js/85387663.be2bc838.js +0 -1
  273. solace_agent_mesh/assets/docs/assets/js/945fb41e.16e00776.js +0 -1
  274. solace_agent_mesh/assets/docs/assets/js/9a09e75d.92de8cf5.js +0 -1
  275. solace_agent_mesh/assets/docs/assets/js/9eff14a2.d62aad71.js +0 -1
  276. solace_agent_mesh/assets/docs/assets/js/a12a4955.25fbed32.js +0 -1
  277. solace_agent_mesh/assets/docs/assets/js/a3a92b25.af35e313.js +0 -1
  278. solace_agent_mesh/assets/docs/assets/js/aba87c2f.4ddf32f2.js +0 -1
  279. solace_agent_mesh/assets/docs/assets/js/ae0e903d.5fe5203f.js +0 -1
  280. solace_agent_mesh/assets/docs/assets/js/ae4415af.16cc58d3.js +0 -1
  281. solace_agent_mesh/assets/docs/assets/js/bac0be12.17de4316.js +0 -1
  282. solace_agent_mesh/assets/docs/assets/js/c2c06897.87cb1f47.js +0 -1
  283. solace_agent_mesh/assets/docs/assets/js/c835a94d.ce21f0bf.js +0 -1
  284. solace_agent_mesh/assets/docs/assets/js/cc969b05.feef7dcc.js +0 -1
  285. solace_agent_mesh/assets/docs/assets/js/cd3d4052.a19e7d78.js +0 -1
  286. solace_agent_mesh/assets/docs/assets/js/ced92a13.fb92e7ca.js +0 -1
  287. solace_agent_mesh/assets/docs/assets/js/cee5d587.47904f5e.js +0 -1
  288. solace_agent_mesh/assets/docs/assets/js/d6a81ee7.829198f1.js +0 -1
  289. solace_agent_mesh/assets/docs/assets/js/f284c35a.ed8dd236.js +0 -1
  290. solace_agent_mesh/assets/docs/assets/js/f897a61a.126663fe.js +0 -1
  291. solace_agent_mesh/assets/docs/assets/js/fbfa3e75.e144b16c.js +0 -1
  292. solace_agent_mesh/assets/docs/assets/js/main.0c149855.js +0 -2
  293. solace_agent_mesh/assets/docs/assets/js/runtime~main.c66557e4.js +0 -1
  294. solace_agent_mesh/assets/docs/docs/documentation/Enterprise/installation/index.html +0 -46
  295. solace_agent_mesh/assets/docs/docs/documentation/Enterprise/rbac-setup-guilde/index.html +0 -201
  296. solace_agent_mesh/assets/docs/docs/documentation/Enterprise/single-sign-on/index.html +0 -29
  297. 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
  298. solace_agent_mesh/assets/docs/docs/documentation/concepts/agents/index.html +0 -144
  299. solace_agent_mesh/assets/docs/docs/documentation/concepts/architecture/index.html +0 -91
  300. solace_agent_mesh/assets/docs/docs/documentation/concepts/gateways/index.html +0 -91
  301. solace_agent_mesh/assets/docs/docs/documentation/concepts/orchestrator/index.html +0 -55
  302. solace_agent_mesh/assets/docs/docs/documentation/concepts/plugins/index.html +0 -111
  303. solace_agent_mesh/assets/docs/docs/documentation/deployment/debugging/index.html +0 -77
  304. solace_agent_mesh/assets/docs/docs/documentation/deployment/deploy/index.html +0 -48
  305. solace_agent_mesh/assets/docs/docs/documentation/deployment/observability/index.html +0 -54
  306. solace_agent_mesh/assets/docs/docs/documentation/getting-started/component-overview/index.html +0 -45
  307. solace_agent_mesh/assets/docs/docs/documentation/getting-started/configurations/index.html +0 -74
  308. solace_agent_mesh/assets/docs/docs/documentation/getting-started/configurations/litellm_models/index.html +0 -49
  309. solace_agent_mesh/assets/docs/docs/documentation/getting-started/installation/index.html +0 -76
  310. solace_agent_mesh/assets/docs/docs/documentation/getting-started/quick-start/index.html +0 -73
  311. solace_agent_mesh/assets/docs/docs/documentation/tutorials/slack-integration/index.html +0 -72
  312. solace_agent_mesh/assets/docs/docs/documentation/user-guide/creating-service-providers/index.html +0 -54
  313. solace_agent_mesh/assets/docs/docs/documentation/user-guide/solace-ai-connector/index.html +0 -69
  314. solace_agent_mesh/assets/docs/docs/documentation/user-guide/structure/index.html +0 -59
  315. solace_agent_mesh/assets/docs/lunr-index-1760032255022.json +0 -1
  316. solace_agent_mesh/assets/docs/search-doc-1760032255022.json +0 -1
  317. solace_agent_mesh/client/webui/frontend/static/assets/main-CZbpmwfA.css +0 -1
  318. solace_agent_mesh/client/webui/frontend/static/assets/main-C__uuUkB.js +0 -339
  319. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-BNuqpWDc.js +0 -98
  320. solace_agent_mesh/evaluation/config_loader.py +0 -657
  321. solace_agent_mesh/evaluation/test_case_loader.py +0 -714
  322. /solace_agent_mesh/assets/docs/assets/js/{8591.d7c16be6.js.LICENSE.txt → 8591.5d015485.js.LICENSE.txt} +0 -0
  323. /solace_agent_mesh/assets/docs/assets/js/{main.0c149855.js.LICENSE.txt → main.20feee82.js.LICENSE.txt} +0 -0
  324. {solace_agent_mesh-1.5.0.dist-info → solace_agent_mesh-1.6.0.dist-info}/WHEEL +0 -0
  325. {solace_agent_mesh-1.5.0.dist-info → solace_agent_mesh-1.6.0.dist-info}/entry_points.txt +0 -0
  326. {solace_agent_mesh-1.5.0.dist-info → solace_agent_mesh-1.6.0.dist-info}/licenses/LICENSE +0 -0
@@ -3,15 +3,16 @@ Service layer for handling A2A task submissions and cancellations.
3
3
  Uses CoreA2AService for logic and a provided function for publishing.
4
4
  """
5
5
 
6
+ import logging
6
7
  import threading
7
8
  from typing import Callable, Dict, Optional
8
9
 
9
- from solace_ai_connector.common.log import log
10
-
11
10
  from ....common import a2a
12
11
  from ....gateway.http_sse.sse_manager import SSEManager
13
12
  from ....core_a2a.service import CoreA2AService
14
13
 
14
+ log = logging.getLogger(__name__)
15
+
15
16
  PublishFunc = Callable[[str, Dict, Optional[Dict]], None]
16
17
 
17
18
 
@@ -2,13 +2,14 @@
2
2
  Manages web user sessions and mapping to A2A Client IDs.
3
3
  """
4
4
 
5
+ import logging
5
6
  import uuid
6
7
  from collections.abc import Callable
7
8
  from typing import Any
8
9
 
9
- from solace_ai_connector.common.log import log
10
10
  from starlette.requests import Request
11
11
 
12
+ log = logging.getLogger(__name__)
12
13
 
13
14
  SESSION_KEY_CLIENT_ID = "a2a_client_id"
14
15
  SESSION_KEY_SESSION_ID = "a2a_session_id"
@@ -6,16 +6,15 @@ for database session management and transaction handling.
6
6
  """
7
7
 
8
8
  from abc import ABC, abstractmethod
9
- from typing import Dict, Any, List, Optional, TypeVar, Generic, Type
9
+ from typing import Any, Generic, TypeVar
10
+
10
11
  from sqlalchemy.orm import Session
11
- from sqlalchemy.exc import NoResultFound
12
- from .exceptions import EntityNotFoundError, ValidationError
13
- from .types import PaginationInfo
14
12
 
13
+ from .exceptions import EntityNotFoundError
15
14
 
16
- T = TypeVar('T')
17
- ModelType = TypeVar('ModelType')
18
- EntityType = TypeVar('EntityType')
15
+ T = TypeVar("T")
16
+ ModelType = TypeVar("ModelType")
17
+ EntityType = TypeVar("EntityType")
19
18
 
20
19
 
21
20
  class BaseRepository(ABC, Generic[ModelType, EntityType]):
@@ -27,7 +26,7 @@ class BaseRepository(ABC, Generic[ModelType, EntityType]):
27
26
  transactions should be handled at the service/API layer.
28
27
  """
29
28
 
30
- def __init__(self, model_class: Type[ModelType], entity_class: Type[EntityType]):
29
+ def __init__(self, model_class: type[ModelType], entity_class: type[EntityType]):
31
30
  """
32
31
  Initialize repository with model and entity classes.
33
32
 
@@ -44,7 +43,7 @@ class BaseRepository(ABC, Generic[ModelType, EntityType]):
44
43
  """Return the entity name for error messages."""
45
44
  pass
46
45
 
47
- def create(self, session: Session, create_data: Dict[str, Any]) -> EntityType:
46
+ def create(self, session: Session, create_data: dict[str, Any]) -> EntityType:
48
47
  """
49
48
  Create a new entity.
50
49
 
@@ -83,16 +82,20 @@ class BaseRepository(ABC, Generic[ModelType, EntityType]):
83
82
  Raises:
84
83
  EntityNotFoundError: If entity not found
85
84
  """
86
- model_instance = session.query(self.model_class).filter(
87
- self.model_class.id == str(entity_id)
88
- ).first()
85
+ model_instance = (
86
+ session.query(self.model_class)
87
+ .filter(self.model_class.id == str(entity_id))
88
+ .first()
89
+ )
89
90
 
90
91
  if not model_instance:
91
92
  raise EntityNotFoundError(self.entity_name, entity_id)
92
93
 
93
94
  return self.entity_class.model_validate(model_instance)
94
95
 
95
- def get_all(self, session: Session, limit: Optional[int] = None, offset: Optional[int] = None) -> List[EntityType]:
96
+ def get_all(
97
+ self, session: Session, limit: int | None = None, offset: int | None = None
98
+ ) -> list[EntityType]:
96
99
  """
97
100
  Get all entities with optional pagination.
98
101
 
@@ -112,9 +115,13 @@ class BaseRepository(ABC, Generic[ModelType, EntityType]):
112
115
  query = query.limit(limit)
113
116
 
114
117
  model_instances = query.all()
115
- return [self.entity_class.model_validate(instance) for instance in model_instances]
118
+ return [
119
+ self.entity_class.model_validate(instance) for instance in model_instances
120
+ ]
116
121
 
117
- def update(self, session: Session, entity_id: Any, update_data: Dict[str, Any]) -> EntityType:
122
+ def update(
123
+ self, session: Session, entity_id: Any, update_data: dict[str, Any]
124
+ ) -> EntityType:
118
125
  """
119
126
  Update an entity.
120
127
 
@@ -129,9 +136,11 @@ class BaseRepository(ABC, Generic[ModelType, EntityType]):
129
136
  Raises:
130
137
  EntityNotFoundError: If entity not found
131
138
  """
132
- model_instance = session.query(self.model_class).filter(
133
- self.model_class.id == str(entity_id)
134
- ).first()
139
+ model_instance = (
140
+ session.query(self.model_class)
141
+ .filter(self.model_class.id == str(entity_id))
142
+ .first()
143
+ )
135
144
 
136
145
  if not model_instance:
137
146
  raise EntityNotFoundError(self.entity_name, entity_id)
@@ -158,9 +167,11 @@ class BaseRepository(ABC, Generic[ModelType, EntityType]):
158
167
  Raises:
159
168
  EntityNotFoundError: If entity not found
160
169
  """
161
- model_instance = session.query(self.model_class).filter(
162
- self.model_class.id == str(entity_id)
163
- ).first()
170
+ model_instance = (
171
+ session.query(self.model_class)
172
+ .filter(self.model_class.id == str(entity_id))
173
+ .first()
174
+ )
164
175
 
165
176
  if not model_instance:
166
177
  raise EntityNotFoundError(self.entity_name, entity_id)
@@ -179,9 +190,11 @@ class BaseRepository(ABC, Generic[ModelType, EntityType]):
179
190
  Returns:
180
191
  True if entity exists, False otherwise
181
192
  """
182
- count = session.query(self.model_class).filter(
183
- self.model_class.id == str(entity_id)
184
- ).count()
193
+ count = (
194
+ session.query(self.model_class)
195
+ .filter(self.model_class.id == str(entity_id))
196
+ .count()
197
+ )
185
198
 
186
199
  return count > 0
187
200
 
@@ -200,52 +213,13 @@ class BaseRepository(ABC, Generic[ModelType, EntityType]):
200
213
 
201
214
  class PaginatedRepository(BaseRepository[ModelType, EntityType]):
202
215
  """
203
- Base repository with enhanced pagination support.
204
- """
205
-
206
- def get_paginated(self, session: Session, page_number: int, page_size: int) -> tuple[List[EntityType], int]:
207
- """
208
- Get paginated results.
209
-
210
- Args:
211
- session: Database session
212
- page_number: Page number (1-based)
213
- page_size: Number of items per page
214
-
215
- Returns:
216
- Tuple of (entities, total_count)
217
- """
218
- offset = (page_number - 1) * page_size
216
+ Base repository with pagination support.
219
217
 
220
- total_count = self.count(session)
221
-
222
- entities = self.get_all(session, limit=page_size, offset=offset)
223
-
224
- return entities, total_count
225
-
226
- def get_paginated_with_info(self, session: Session, pagination: PaginationInfo) -> tuple[List[EntityType], PaginationInfo]:
227
- """
228
- Get paginated results with complete pagination info.
229
-
230
- Args:
231
- session: Database session
232
- pagination: Pagination parameters
233
-
234
- Returns:
235
- Tuple of (entities, updated_pagination_info)
236
- """
237
- entities, total_count = self.get_paginated(session, pagination.page, pagination.page_size)
238
-
239
- updated_pagination = PaginationInfo(
240
- page=pagination.page,
241
- page_size=pagination.page_size,
242
- total_items=total_count,
243
- total_pages=(total_count + pagination.page_size - 1) // pagination.page_size,
244
- has_next=pagination.page * pagination.page_size < total_count,
245
- has_previous=pagination.page > 1
246
- )
218
+ Concrete repositories should implement their own pagination methods
219
+ that apply specific filters and ordering before pagination.
220
+ """
247
221
 
248
- return entities, updated_pagination
222
+ pass
249
223
 
250
224
 
251
225
  class ValidationMixin:
@@ -253,7 +227,7 @@ class ValidationMixin:
253
227
  Mixin for repositories that need validation logic.
254
228
  """
255
229
 
256
- def validate_create_data(self, create_data: Dict[str, Any]) -> None:
230
+ def validate_create_data(self, create_data: dict[str, Any]) -> None:
257
231
  """
258
232
  Validate data before creation.
259
233
 
@@ -265,7 +239,7 @@ class ValidationMixin:
265
239
  """
266
240
  pass
267
241
 
268
- def validate_update_data(self, update_data: Dict[str, Any]) -> None:
242
+ def validate_update_data(self, update_data: dict[str, Any]) -> None:
269
243
  """
270
244
  Validate data before update.
271
245
 
@@ -275,4 +249,4 @@ class ValidationMixin:
275
249
  Raises:
276
250
  ValidationError: If validation fails
277
251
  """
278
- pass
252
+ pass
@@ -35,24 +35,6 @@ class LegacyTimestamp(BaseModel):
35
35
  updated_at: datetime | None = None
36
36
 
37
37
 
38
- class PaginationParams(BaseModel):
39
- """Pagination parameters for list requests."""
40
-
41
- page: int
42
- page_size: int
43
-
44
-
45
- class PaginationInfo(BaseModel):
46
- """Pagination information for list responses."""
47
-
48
- page: int
49
- page_size: int
50
- total_items: int
51
- total_pages: int
52
- has_next: bool
53
- has_previous: bool
54
-
55
-
56
38
  class SortInfo(BaseModel):
57
39
  """Sorting information for list requests."""
58
40
 
@@ -2,11 +2,12 @@
2
2
  A thread-safe buffer for holding early SSE events before a client connects.
3
3
  """
4
4
 
5
+ import logging
5
6
  import datetime
6
7
  import threading
7
8
  from typing import Any, Dict, List, Optional, Tuple
8
9
 
9
- from solace_ai_connector.common.log import log
10
+ log = logging.getLogger(__name__)
10
11
 
11
12
 
12
13
  class SSEEventBuffer:
@@ -2,6 +2,7 @@
2
2
  Manages Server-Sent Event (SSE) connections for streaming task updates.
3
3
  """
4
4
 
5
+ import logging
5
6
  import asyncio
6
7
  import threading
7
8
  from typing import Dict, List, Any
@@ -9,10 +10,9 @@ import json
9
10
  import datetime
10
11
  import math
11
12
 
12
- from solace_ai_connector.common.log import log
13
-
14
13
  from .sse_event_buffer import SSEEventBuffer
15
14
 
15
+ log = logging.getLogger(__name__)
16
16
 
17
17
  class SSEManager:
18
18
  """
@@ -2,14 +2,16 @@
2
2
  Solace Agent Mesh App class for the __GATEWAY_NAME_PASCAL_CASE__ Gateway.
3
3
  """
4
4
 
5
+ import logging
5
6
  from typing import Any, Dict, List, Type
6
7
 
7
- from solace_ai_connector.common.log import log
8
8
  from solace_agent_mesh.gateway.base.app import BaseGatewayApp
9
9
  from solace_agent_mesh.gateway.base.component import BaseGatewayComponent
10
10
 
11
11
  from .component import __GATEWAY_NAME_PASCAL_CASE__GatewayComponent
12
12
 
13
+ log = logging.getLogger(__name__)
14
+
13
15
  info = {
14
16
  "class_name": "__GATEWAY_NAME_PASCAL_CASE__GatewayApp",
15
17
  "description": "Custom App class for the A2A __GATEWAY_NAME_PASCAL_CASE__ Gateway.",
@@ -70,4 +72,4 @@ class __GATEWAY_NAME_PASCAL_CASE__GatewayApp(BaseGatewayApp):
70
72
  """
71
73
  Returns the specific gateway component class for this app.
72
74
  """
73
- return __GATEWAY_NAME_PASCAL_CASE__GatewayComponent
75
+ return __GATEWAY_NAME_PASCAL_CASE__GatewayComponent
@@ -2,9 +2,9 @@
2
2
  Solace Agent Mesh Component class for the __GATEWAY_NAME_PASCAL_CASE__ Gateway.
3
3
  """
4
4
 
5
+ import logging
5
6
  from typing import Any, Dict, List, Optional, Tuple, Union
6
7
 
7
- from solace_ai_connector.common.log import log
8
8
  from solace_agent_mesh.gateway.base.component import BaseGatewayComponent
9
9
  from a2a.types import (
10
10
  TextPart,
@@ -18,6 +18,8 @@ from a2a.types import (
18
18
  from ...common import a2a
19
19
  from ...common.a2a import ContentPart
20
20
 
21
+ log = logging.getLogger(__name__)
22
+
21
23
  info = {
22
24
  "class_name": "__GATEWAY_NAME_PASCAL_CASE__GatewayComponent",
23
25
  "description": (
@@ -21,11 +21,6 @@ apps:
21
21
 
22
22
  artifact_service: __ARTIFACT_SERVICE__
23
23
 
24
- authorization_service:
25
- type: "none" # Or "default_rbac"
26
- # role_definitions_path: "config/auth/roles.yaml"
27
- # user_assignments_path: "config/auth/users.yaml"
28
-
29
24
  system_purpose: >
30
25
  __SYSTEM_PURPOSE__
31
26
 
@@ -1,64 +1,45 @@
1
1
  [loggers]
2
- keys=root,LiteLLM,py_warnings,solace_ai_connector,uvicorn,uvicorn_error,uvicorn_access
3
-
4
- [handlers]
5
- keys=streamHandler,rotatingFileHandler
6
-
7
- [formatters]
8
- keys=simpleFormatter
2
+ keys=root,solace_ai_connector,solace_agent_mesh,sam_trace
9
3
 
10
4
  [logger_root]
11
- level=DEBUG
5
+ level=${LOGGING_ROOT_LEVEL, WARNING}
12
6
  handlers=streamHandler,rotatingFileHandler
13
7
  qualname=root
14
8
 
15
- [handler_streamHandler]
16
- class=StreamHandler
17
- level=INFO
18
- formatter=simpleFormatter
19
- args=(sys.stdout,)
20
-
21
- [logger_LiteLLM]
22
- level=DEBUG
23
- handlers=streamHandler,rotatingFileHandler
24
- qualname=LiteLLM
25
- propagate=0
26
-
27
- [logger_py_warnings]
28
- level=WARNING
29
- handlers=streamHandler,rotatingFileHandler
30
- qualname=py.warnings
31
- propagate=0
32
-
33
9
  [logger_solace_ai_connector]
34
- level=DEBUG
35
- handlers=streamHandler,rotatingFileHandler
10
+ level=${LOGGING_SOLACE_AI_CONNECTOR_LEVEL, INFO}
11
+ handlers=
36
12
  qualname=solace_ai_connector
37
- propagate=0
38
13
 
39
- [logger_uvicorn]
40
- level=DEBUG
41
- handlers=streamHandler,rotatingFileHandler
42
- qualname=uvicorn
43
- propagate=0
14
+ [logger_solace_agent_mesh]
15
+ level=${LOGGING_SAM_LEVEL, INFO}
16
+ handlers=
17
+ qualname=solace_agent_mesh
44
18
 
45
- [logger_uvicorn_error]
46
- level=INFO
47
- handlers=streamHandler,rotatingFileHandler
48
- qualname=uvicorn.error
49
- propagate=0
19
+ [logger_sam_trace]
20
+ level=${LOGGING_SAM_TRACE_LEVEL, INFO}
21
+ handlers=
22
+ qualname=sam_trace
50
23
 
51
- [logger_uvicorn_access]
52
- level=INFO
53
- handlers=streamHandler,rotatingFileHandler
54
- qualname=uvicorn.access
55
- propagate=0
24
+ [handlers]
25
+ keys=streamHandler,rotatingFileHandler
56
26
 
57
27
  [handler_rotatingFileHandler]
58
28
  class=logging.handlers.RotatingFileHandler
59
- level=DEBUG
60
29
  formatter=simpleFormatter
61
30
  args=('sam.log', 'a', 52428800, 10)
62
31
 
32
+ [handler_streamHandler]
33
+ class=StreamHandler
34
+ formatter=simpleFormatter
35
+ args=(sys.stdout,)
36
+
37
+ [formatters]
38
+ keys=simpleFormatter,jsonFormatter
39
+
63
40
  [formatter_simpleFormatter]
64
- format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
41
+ format=%(asctime)s | %(levelname)-5s | %(name)s | %(message)s
42
+
43
+ [formatter_jsonFormatter]
44
+ class=pythonjsonlogger.jsonlogger.JsonFormatter
45
+ format=%(asctime)s %(levelname)s %(name)s %(message)s
@@ -47,9 +47,6 @@ apps:
47
47
  gateway_id: __COMPONENT_KEBAB_CASE_NAME__-gw-01
48
48
  artifact_service: *default_artifact_service
49
49
 
50
- authorization_service:
51
- type: "none" # Or "default_rbac"
52
-
53
50
  system_purpose: >
54
51
  The system is an AI Chatbot with agentic capabilities.
55
52
  It will use the agents available to provide information,
@@ -1,16 +1,16 @@
1
+ import logging
1
2
  import asyncio
2
- import uuid
3
3
  from datetime import datetime, timezone
4
4
  from typing import Any, Dict, Optional
5
5
 
6
6
  from google.adk.tools import ToolContext
7
- from solace_ai_connector.common.log import log
8
7
  from solace_agent_mesh.agent.utils.artifact_helpers import (
9
8
  save_artifact_with_metadata,
10
9
  DEFAULT_SCHEMA_MAX_KEYS,
11
10
  )
12
11
  from solace_agent_mesh.agent.utils.context_helpers import get_original_session_id
13
12
 
13
+ log = logging.getLogger(__name__)
14
14
 
15
15
  async def example_text_processor_tool(
16
16
  text_input: str,
@@ -19,6 +19,8 @@ shared_config:
19
19
  api_key: ${LLM_SERVICE_API_KEY} # Use env var for API key
20
20
  # Enable parallel tool calls for planning model
21
21
  parallel_tool_calls: true
22
+ # Prompt Caching Strategy
23
+ cache_strategy: "5m" # none, 5m, 1h
22
24
 
23
25
  # max_tokens: ${MAX_TOKENS, 16000} # Set a reasonable max token limit for planning
24
26
  # temperature: 0.1 # Lower temperature for more deterministic planning
@@ -32,6 +34,8 @@ shared_config:
32
34
  api_base: ${LLM_SERVICE_ENDPOINT} # Use env var for endpoint URL
33
35
  # 'api_key' provides authentication.
34
36
  api_key: ${LLM_SERVICE_API_KEY} # Use env var for API key
37
+ # Prompt Caching Strategy
38
+ cache_strategy: "5m" # none, 5m, 1h
35
39
 
36
40
  image_gen: &image_generation_model
37
41
  # This dictionary structure tells ADK to use the LiteLlm wrapper.
@@ -53,6 +57,42 @@ shared_config:
53
57
 
54
58
  multimodal: &multimodal_model "gemini-2.5-flash-preview-04-17"
55
59
 
60
+ # OAuth 2.0 Client Credentials authentication example
61
+ oauth_planning: &oauth_planning_model
62
+ # This dictionary structure tells ADK to use the LiteLlm wrapper with OAuth authentication.
63
+ # 'model' uses the specific model identifier your endpoint expects.
64
+ model: ${LLM_SERVICE_OAUTH_PLANNING_MODEL_NAME} # Use env var for model name
65
+ # 'api_base' tells LiteLLM where to send the request.
66
+ api_base: ${LLM_SERVICE_OAUTH_ENDPOINT} # Use env var for endpoint URL
67
+
68
+ # OAuth 2.0 Client Credentials configuration
69
+ oauth_token_url: ${LLM_SERVICE_OAUTH_TOKEN_URL} # OAuth token endpoint URL
70
+ oauth_client_id: ${LLM_SERVICE_OAUTH_CLIENT_ID} # OAuth client identifier
71
+ oauth_client_secret: ${LLM_SERVICE_OAUTH_CLIENT_SECRET} # OAuth client secret
72
+ oauth_scope: ${LLM_SERVICE_OAUTH_SCOPE} # Optional: OAuth scope (space-separated)
73
+ # oauth_ca_cert: ${LLM_SERVICE_OAUTH_CA_CERT_PATH} # Optional: Custom CA certificate path
74
+ oauth_token_refresh_buffer_seconds: ${LLM_SERVICE_OAUTH_TOKEN_REFRESH_BUFFER_SECONDS, 300} # Refresh buffer
75
+
76
+ # Enable parallel tool calls for planning model
77
+ parallel_tool_calls: true
78
+ # max_tokens: ${MAX_TOKENS, 16000} # Set a reasonable max token limit for planning
79
+ # temperature: 0.1 # Lower temperature for more deterministic planning
80
+
81
+ oauth_general: &oauth_general_model
82
+ # This dictionary structure tells ADK to use the LiteLlm wrapper with OAuth authentication.
83
+ # 'model' uses the specific model identifier your endpoint expects.
84
+ model: ${LLM_SERVICE_OAUTH_GENERAL_MODEL_NAME} # Use env var for model name
85
+ # 'api_base' tells LiteLLM where to send the request.
86
+ api_base: ${LLM_SERVICE_OAUTH_ENDPOINT} # Use env var for endpoint URL
87
+
88
+ # OAuth 2.0 Client Credentials configuration
89
+ oauth_token_url: ${LLM_SERVICE_OAUTH_TOKEN_URL} # OAuth token endpoint URL
90
+ oauth_client_id: ${LLM_SERVICE_OAUTH_CLIENT_ID} # OAuth client identifier
91
+ oauth_client_secret: ${LLM_SERVICE_OAUTH_CLIENT_SECRET} # OAuth client secret
92
+ oauth_scope: ${LLM_SERVICE_OAUTH_SCOPE} # Optional: OAuth scope (space-separated)
93
+ # oauth_ca_cert: ${LLM_SERVICE_OAUTH_CA_CERT_PATH} # Optional: Custom CA certificate path
94
+ oauth_token_refresh_buffer_seconds: ${LLM_SERVICE_OAUTH_TOKEN_REFRESH_BUFFER_SECONDS, 300} # Refresh buffer
95
+
56
96
  - services:
57
97
  # Default session service configuration
58
98
  session_service: &default_session_service
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: solace-agent-mesh
3
- Version: 1.5.0
3
+ Version: 1.6.0
4
4
  Summary: Solace Agent Mesh is an open-source framework for building event-driven, multi-agent AI systems where specialized agents collaborate on complex tasks.
5
5
  Project-URL: Homepage, https://github.com/SolaceLabs/solace-agent-mesh
6
6
  Project-URL: Repository, https://github.com/SolaceLabs/solace-agent-mesh
@@ -249,25 +249,21 @@ Requires-Dist: python-jwt==4.1.0
249
249
  Requires-Dist: python-multipart==0.0.20
250
250
  Requires-Dist: pyyaml==6.0.2
251
251
  Requires-Dist: rouge==1.0.1
252
- Requires-Dist: solace-ai-connector==1.2.0
252
+ Requires-Dist: solace-ai-connector==1.3.0
253
253
  Requires-Dist: sqlalchemy==2.0.40
254
254
  Requires-Dist: sse-starlette==3.0.2
255
255
  Requires-Dist: toml==0.10.2
256
256
  Requires-Dist: uvicorn[standard]==0.37.0
257
- Provides-Extra: cli
258
- Requires-Dist: click>=8.0; extra == 'cli'
259
- Requires-Dist: prompt-toolkit>=3.0; extra == 'cli'
260
- Requires-Dist: rich>=13.0; extra == 'cli'
261
257
  Provides-Extra: employee-tools
262
- Requires-Dist: holidays>=0.24; extra == 'employee-tools'
258
+ Requires-Dist: holidays==0.81.0; extra == 'employee-tools'
263
259
  Provides-Extra: gcs
264
- Requires-Dist: google-cloud-storage>=2.0; extra == 'gcs'
260
+ Requires-Dist: google-cloud-storage==2.19.0; extra == 'gcs'
265
261
  Provides-Extra: postgresql
266
- Requires-Dist: psycopg2-binary>=2.9.0; extra == 'postgresql'
262
+ Requires-Dist: psycopg2-binary==2.9.10; extra == 'postgresql'
267
263
  Provides-Extra: s3
268
- Requires-Dist: boto3<2.0,>=1.35.0; extra == 's3'
264
+ Requires-Dist: boto3==1.40.37; extra == 's3'
269
265
  Provides-Extra: vertex
270
- Requires-Dist: google-cloud-aiplatform>=1.38; extra == 'vertex'
266
+ Requires-Dist: google-cloud-aiplatform==1.120.0; extra == 'vertex'
271
267
  Description-Content-Type: text/markdown
272
268
 
273
269
  <p align="center">
@@ -326,12 +322,12 @@ The result? A fully asynchronous, event-driven and decoupled AI agent architectu
326
322
  ---
327
323
 
328
324
  ## 🔑 Key Features
329
- - **[Multi-Agent Event-Driven Architecture](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/getting-started/component-overview)** – Agents communicate via the Solace Event Mesh for true scalability
330
- - **[Agent Orchestration](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/concepts/agents)** – Complex tasks are automatically broken down and delegated by the [Orchestrator](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/concepts/orchestrator) agent
331
- - **[Flexible Interfaces](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/concepts/gateways)** – Integrate with REST API, web UI, [Slack](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/tutorials/slack-integration), or build your own integration
332
- - **[Extensible](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/concepts/plugins)** – Add your own agents, gateways, or services with minimal code
333
- - **[Agent-to-Agent Communication](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/concepts/architecture)** – Agents can discover and delegate tasks to each other seamlessly using the Agent2Agent (A2A) Protocol
334
- - **[Dynamic Embeds](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/user-guide/builtin-tools/embeds)** – Embed dynamic content like real-time data, calculations and file contents in responses
325
+ - **[Multi-Agent Event-Driven Architecture](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/getting-started/architecture)** – Agents communicate via the Solace Event Mesh for true scalability
326
+ - **[Agent Orchestration](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/components/agents)** – Complex tasks are automatically broken down and delegated by the [Orchestrator](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/components/orchestrator) agent
327
+ - **[Flexible Interfaces](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/components/gateways)** – Integrate with REST API, web UI, [Slack](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/developing/tutorials/slack-integration), or build your own integration
328
+ - **[Extensible](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/components/plugins)** – Add your own agents, gateways, or services with minimal code
329
+ - **[Agent-to-Agent Communication](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/getting-started/architecture)** – Agents can discover and delegate tasks to each other seamlessly using the Agent2Agent (A2A) Protocol
330
+ - **[Dynamic Embeds](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/components/builtin-tools/embeds)** – Embed dynamic content like real-time data, calculations and file contents in responses
335
331
 
336
332
  📚 **Want to know more?** Check out the full Solace Agent Mesh [documentation](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/getting-started/introduction/).
337
333
 
@@ -432,10 +428,10 @@ Want to go further? Here are some hands-on tutorials to help you get started:
432
428
 
433
429
  | 🔧 Integration | ⏱️ Est. Time | 📘 Tutorial |
434
430
  |----------------|--------------|-------------|
435
- | 🌤️ **Weather Agent**<br>Learn how to build an agent that gives Solace Agent Mesh the ability to access real-time weather information. | **~15 min** | [Weather Agent Plugin](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/tutorials/custom-agent) |
436
- | 🗃️ **SQL Database Integration**<br>Enable Solace Agent Mesh to answer company-specific questions using a sample coffee company database.| **~10–15 min** | [SQL Database Tutorial](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/tutorials/sql-database) |
437
- | 🧠 **MCP Integration**<br>Integrating a Model Context Protocol (MCP) Servers into Solace Agent Mesh. | **~10–15 min** | [MCP Integration Tutorial](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/tutorials/mcp-integration) |
438
- | 💬 **Slack Integration**<br>Chat with Solace Agent Mesh directly from Slack. | **~20–30 min** | [Slack Integration Tutorial](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/tutorials/slack-integration) |
431
+ | 🌤️ **Weather Agent**<br>Learn how to build an agent that gives Solace Agent Mesh the ability to access real-time weather information. | **~15 min** | [Weather Agent Plugin](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/developing/tutorials/custom-agent) |
432
+ | 🗃️ **SQL Database Integration**<br>Enable Solace Agent Mesh to answer company-specific questions using a sample coffee company database.| **~10–15 min** | [SQL Database Tutorial](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/developing/tutorials/sql-database) |
433
+ | 🧠 **MCP Integration**<br>Integrating a Model Context Protocol (MCP) Servers into Solace Agent Mesh. | **~10–15 min** | [MCP Integration Tutorial](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/developing/tutorials/mcp-integration) |
434
+ | 💬 **Slack Integration**<br>Chat with Solace Agent Mesh directly from Slack. | **~20–30 min** | [Slack Integration Tutorial](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/developing/tutorials/slack-integration) |
439
435
 
440
436
  ---
441
437
 
@@ -455,6 +451,36 @@ This project is licensed under the **Apache 2.0 License**. See the full license
455
451
 
456
452
  ---
457
453
 
454
+ ## 🧪 Running Tests
455
+
456
+ This project uses `pytest` for testing. You can run tests using either `hatch` or `pytest` directly.
457
+
458
+ ### Using Hatch
459
+
460
+ The recommended way to run tests is through the `hatch` environment, which ensures all dependencies are managed correctly.
461
+
462
+ ```bash
463
+ # Run all tests
464
+ hatch test
465
+
466
+ # Run tests with tags
467
+ hatch test -m "<tag>"
468
+ ```
469
+
470
+ ### Using Pytest Directly
471
+
472
+ If you prefer to use `pytest` directly, you must first install the project with its test dependencies.
473
+
474
+ ```bash
475
+ # Install the project in editable mode with the 'test' extras
476
+ pip install -e .[test]
477
+
478
+ # Run all tests
479
+ pytest
480
+ ```
481
+
482
+ ---
483
+
458
484
  <h3 align="center">
459
485
  <img src="./docs/static/img/solace-logo-text.svg" alt="Solace Agent Mesh Logo" width="100"/>
460
486
  </h3>