solace-agent-mesh 1.4.12__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 (359) hide show
  1. solace_agent_mesh/agent/adk/adk_llm.txt +3 -4
  2. solace_agent_mesh/agent/adk/adk_llm_detail.txt +566 -0
  3. solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt +1 -1
  4. solace_agent_mesh/agent/adk/callbacks.py +56 -5
  5. solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +3 -1
  6. solace_agent_mesh/agent/adk/intelligent_mcp_callbacks.py +2 -1
  7. solace_agent_mesh/agent/adk/mcp_content_processor.py +2 -1
  8. solace_agent_mesh/agent/adk/models/lite_llm.py +1 -0
  9. solace_agent_mesh/agent/adk/models/models_llm.txt +1 -2
  10. solace_agent_mesh/agent/adk/runner.py +3 -1
  11. solace_agent_mesh/agent/adk/services.py +4 -1
  12. solace_agent_mesh/agent/adk/setup.py +3 -1
  13. solace_agent_mesh/agent/adk/tool_wrapper.py +2 -2
  14. solace_agent_mesh/agent/agent_llm.txt +1 -1
  15. solace_agent_mesh/agent/agent_llm_detail.txt +1702 -0
  16. solace_agent_mesh/agent/protocol/event_handlers.py +4 -14
  17. solace_agent_mesh/agent/protocol/protocol_llm.txt +15 -2
  18. solace_agent_mesh/agent/protocol/protocol_llm_detail.txt +92 -0
  19. solace_agent_mesh/agent/sac/app.py +3 -1
  20. solace_agent_mesh/agent/sac/component.py +55 -22
  21. solace_agent_mesh/agent/sac/sac_llm.txt +15 -1
  22. solace_agent_mesh/agent/sac/sac_llm_detail.txt +200 -0
  23. solace_agent_mesh/agent/sac/task_execution_context.py +73 -0
  24. solace_agent_mesh/agent/testing/testing_llm_detail.txt +68 -0
  25. solace_agent_mesh/agent/tools/audio_tools.py +2 -1
  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/tools_llm.txt +148 -154
  35. solace_agent_mesh/agent/tools/tools_llm_detail.txt +274 -0
  36. solace_agent_mesh/agent/tools/web_tools.py +2 -1
  37. solace_agent_mesh/agent/utils/artifact_helpers.py +3 -1
  38. solace_agent_mesh/agent/utils/config_parser.py +3 -1
  39. solace_agent_mesh/agent/utils/utils_llm.txt +1 -1
  40. solace_agent_mesh/agent/utils/utils_llm_detail.txt +149 -0
  41. solace_agent_mesh/assets/docs/404.html +3 -3
  42. solace_agent_mesh/assets/docs/assets/js/{b7006a3a.73a79653.js → 032c2d61.f3d37824.js} +1 -1
  43. solace_agent_mesh/assets/docs/assets/js/0bcf40b7.c019ad46.js +1 -0
  44. solace_agent_mesh/assets/docs/assets/js/15ba94aa.932dd2db.js +1 -0
  45. solace_agent_mesh/assets/docs/assets/js/2131ec11.5c7a1f6e.js +1 -0
  46. solace_agent_mesh/assets/docs/assets/js/{2334.622a6395.js → 2334.1cf50a20.js} +1 -1
  47. solace_agent_mesh/assets/docs/assets/js/240a0364.7eac6021.js +1 -0
  48. solace_agent_mesh/assets/docs/assets/js/2e32b5e0.33f5d75b.js +1 -0
  49. solace_agent_mesh/assets/docs/assets/js/341393d4.0fac2613.js +1 -0
  50. solace_agent_mesh/assets/docs/assets/js/{3624.b524e433.js → 3624.0eaa1fd0.js} +1 -1
  51. solace_agent_mesh/assets/docs/assets/js/3a6c6137.f5940cfa.js +1 -0
  52. solace_agent_mesh/assets/docs/assets/js/3ac1795d.76654dd9.js +1 -0
  53. solace_agent_mesh/assets/docs/assets/js/3ff0015d.2be20244.js +1 -0
  54. solace_agent_mesh/assets/docs/assets/js/509e993c.4c7a1a6d.js +1 -0
  55. solace_agent_mesh/assets/docs/assets/js/547e15cc.2cbb060a.js +1 -0
  56. solace_agent_mesh/assets/docs/assets/js/55b7b518.f2b1d1ba.js +1 -0
  57. solace_agent_mesh/assets/docs/assets/js/5c2bd65f.e49689dd.js +1 -0
  58. solace_agent_mesh/assets/docs/assets/js/6063ff4c.ef84f702.js +1 -0
  59. solace_agent_mesh/assets/docs/assets/js/631738c7.a8b1ef8b.js +1 -0
  60. solace_agent_mesh/assets/docs/assets/js/6a520c9d.ba015d81.js +1 -0
  61. solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.39d5851d.js +1 -0
  62. solace_agent_mesh/assets/docs/assets/js/6d84eae0.4a5fbf39.js +1 -0
  63. solace_agent_mesh/assets/docs/assets/js/6fdfefc7.99de744e.js +1 -0
  64. solace_agent_mesh/assets/docs/assets/js/71da7b71.804d6567.js +1 -0
  65. solace_agent_mesh/assets/docs/assets/js/722f809d.965da774.js +1 -0
  66. solace_agent_mesh/assets/docs/assets/js/742f027b.46c07808.js +1 -0
  67. solace_agent_mesh/assets/docs/assets/js/77cf947d.64c9bd6c.js +1 -0
  68. solace_agent_mesh/assets/docs/assets/js/8024126c.56e59919.js +1 -0
  69. solace_agent_mesh/assets/docs/assets/js/81a99df0.07034dd9.js +1 -0
  70. solace_agent_mesh/assets/docs/assets/js/82fbfb93.139a1a1f.js +1 -0
  71. solace_agent_mesh/assets/docs/assets/js/{8591.d7c16be6.js → 8591.5d015485.js} +2 -2
  72. solace_agent_mesh/assets/docs/assets/js/{8731.49e930c2.js → 8731.6c1dbf0c.js} +1 -1
  73. solace_agent_mesh/assets/docs/assets/js/945fb41e.6f4cdffd.js +1 -0
  74. solace_agent_mesh/assets/docs/assets/js/94e8668d.b5ddb7a1.js +1 -0
  75. solace_agent_mesh/assets/docs/assets/js/9bb13469.dd1c9b54.js +1 -0
  76. solace_agent_mesh/assets/docs/assets/js/9e9d0a82.dd810042.js +1 -0
  77. solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e6dd091.js +1 -0
  78. solace_agent_mesh/assets/docs/assets/js/ad71b5ed.60668e9e.js +1 -0
  79. solace_agent_mesh/assets/docs/assets/js/c198a0dc.8f31f867.js +1 -0
  80. solace_agent_mesh/assets/docs/assets/js/c93cbaa0.eaff365e.js +1 -0
  81. solace_agent_mesh/assets/docs/assets/js/da0b5bad.9d369087.js +1 -0
  82. solace_agent_mesh/assets/docs/assets/js/db924877.cbc66f02.js +1 -0
  83. solace_agent_mesh/assets/docs/assets/js/dd817ffc.0aa9630a.js +1 -0
  84. solace_agent_mesh/assets/docs/assets/js/dd81e2b8.d590bc9e.js +1 -0
  85. solace_agent_mesh/assets/docs/assets/js/de5f4c65.e8241890.js +1 -0
  86. solace_agent_mesh/assets/docs/assets/js/de915948.139b4b9c.js +1 -0
  87. solace_agent_mesh/assets/docs/assets/js/e3d9abda.2b916f9e.js +1 -0
  88. solace_agent_mesh/assets/docs/assets/js/e6f9706b.582a78ca.js +1 -0
  89. solace_agent_mesh/assets/docs/assets/js/e92d0134.cf6d6522.js +1 -0
  90. solace_agent_mesh/assets/docs/assets/js/f284c35a.5766a13d.js +1 -0
  91. solace_agent_mesh/assets/docs/assets/js/ff4d71f2.9c0297a6.js +1 -0
  92. solace_agent_mesh/assets/docs/assets/js/main.bd3c34f3.js +2 -0
  93. solace_agent_mesh/assets/docs/assets/js/runtime~main.18dc45dd.js +1 -0
  94. solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +143 -0
  95. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/artifact-management/index.html +7 -7
  96. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/audio-tools/index.html +7 -7
  97. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/data-analysis-tools/index.html +8 -8
  98. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/embeds/index.html +6 -6
  99. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/index.html +11 -11
  100. solace_agent_mesh/assets/docs/docs/documentation/{concepts → components}/cli/index.html +25 -25
  101. solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +91 -0
  102. solace_agent_mesh/assets/docs/docs/documentation/components/index.html +29 -0
  103. solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +55 -0
  104. solace_agent_mesh/assets/docs/docs/documentation/components/plugins/index.html +110 -0
  105. solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +104 -0
  106. solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +57 -0
  107. solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +25 -0
  108. solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +59 -0
  109. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → developing}/create-agents/index.html +113 -152
  110. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → developing}/create-gateways/index.html +9 -9
  111. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → developing}/creating-python-tools/index.html +12 -12
  112. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +54 -0
  113. solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +32 -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 +11 -11
  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/{getting-started → installing-and-configuring}/configurations/index.html +56 -50
  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 +63 -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-1760121512891.json +1 -0
  141. solace_agent_mesh/assets/docs/lunr-index.json +1 -1
  142. solace_agent_mesh/assets/docs/search-doc-1760121512891.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/client/webui/frontend/static/assets/{authCallback-j1LW-wlq.js → authCallback-DwrxZE0E.js} +1 -1
  147. solace_agent_mesh/client/webui/frontend/static/assets/{client-B9p_nFNA.js → client-DarGQzyw.js} +1 -1
  148. solace_agent_mesh/client/webui/frontend/static/assets/main-2nd1gbaH.js +339 -0
  149. solace_agent_mesh/client/webui/frontend/static/assets/main-DoKXctCM.css +1 -0
  150. solace_agent_mesh/client/webui/frontend/static/assets/{vendor-CS5YMf8a.js → vendor-BKIeiHj_.js} +80 -70
  151. solace_agent_mesh/client/webui/frontend/static/auth-callback.html +3 -3
  152. solace_agent_mesh/client/webui/frontend/static/index.html +4 -4
  153. solace_agent_mesh/common/a2a/a2a_llm.txt +1 -1
  154. solace_agent_mesh/common/a2a/a2a_llm_detail.txt +193 -0
  155. solace_agent_mesh/common/a2a/artifact.py +2 -1
  156. solace_agent_mesh/common/a2a/protocol.py +3 -2
  157. solace_agent_mesh/common/a2a/translation.py +3 -1
  158. solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +1 -1
  159. solace_agent_mesh/common/a2a_spec/a2a_spec_llm_detail.txt +736 -0
  160. solace_agent_mesh/common/a2a_spec/schemas/llm_invocation.json +23 -0
  161. solace_agent_mesh/common/a2a_spec/schemas/schemas_llm.txt +93 -15
  162. solace_agent_mesh/common/a2a_spec/schemas/tool_result.json +23 -0
  163. solace_agent_mesh/common/common_llm.txt +24 -39
  164. solace_agent_mesh/common/common_llm_detail.txt +2562 -0
  165. solace_agent_mesh/common/data_parts.py +9 -1
  166. solace_agent_mesh/common/middleware/config_resolver.py +3 -1
  167. solace_agent_mesh/common/middleware/middleware_llm_detail.txt +185 -0
  168. solace_agent_mesh/common/middleware/registry.py +3 -1
  169. solace_agent_mesh/common/sac/sac_llm.txt +1 -1
  170. solace_agent_mesh/common/sac/sac_llm_detail.txt +82 -0
  171. solace_agent_mesh/common/sac/sam_component_base.py +2 -1
  172. solace_agent_mesh/common/sam_events/event_service.py +3 -2
  173. solace_agent_mesh/common/sam_events/sam_events_llm.txt +104 -0
  174. solace_agent_mesh/common/sam_events/sam_events_llm_detail.txt +115 -0
  175. solace_agent_mesh/common/services/employee_service.py +3 -1
  176. solace_agent_mesh/common/services/identity_service.py +2 -1
  177. solace_agent_mesh/common/services/providers/local_file_identity_service.py +2 -1
  178. solace_agent_mesh/common/services/services_llm.txt +57 -6
  179. solace_agent_mesh/common/services/services_llm_detail.txt +459 -0
  180. solace_agent_mesh/common/utils/artifact_utils.py +3 -1
  181. solace_agent_mesh/common/utils/asyncio_macos_fix.py +3 -1
  182. solace_agent_mesh/common/utils/embeds/converter.py +3 -1
  183. solace_agent_mesh/common/utils/embeds/embeds_llm.txt +1 -1
  184. solace_agent_mesh/common/utils/embeds/evaluators.py +2 -1
  185. solace_agent_mesh/common/utils/embeds/modifiers.py +3 -2
  186. solace_agent_mesh/common/utils/embeds/resolver.py +2 -1
  187. solace_agent_mesh/common/utils/initializer.py +3 -1
  188. solace_agent_mesh/common/utils/message_utils.py +2 -1
  189. solace_agent_mesh/common/utils/push_notification_auth.py +3 -2
  190. solace_agent_mesh/common/utils/utils_llm.txt +75 -87
  191. solace_agent_mesh/common/utils/utils_llm_detail.txt +572 -0
  192. solace_agent_mesh/core_a2a/core_a2a_llm_detail.txt +101 -0
  193. solace_agent_mesh/core_a2a/service.py +2 -2
  194. solace_agent_mesh/gateway/base/app.py +3 -2
  195. solace_agent_mesh/gateway/base/base_llm.txt +1 -1
  196. solace_agent_mesh/gateway/base/base_llm_detail.txt +235 -0
  197. solace_agent_mesh/gateway/base/component.py +3 -1
  198. solace_agent_mesh/gateway/base/task_context.py +2 -1
  199. solace_agent_mesh/gateway/gateway_llm.txt +242 -235
  200. solace_agent_mesh/gateway/gateway_llm_detail.txt +3885 -0
  201. solace_agent_mesh/gateway/http_sse/alembic/alembic_llm.txt +295 -0
  202. solace_agent_mesh/gateway/http_sse/alembic/env.py +10 -1
  203. solace_agent_mesh/gateway/http_sse/alembic/versions/20251006_98882922fa59_add_tasks_events_feedback_chat_tasks.py +190 -0
  204. solace_agent_mesh/gateway/http_sse/alembic/versions/versions_llm.txt +155 -0
  205. solace_agent_mesh/gateway/http_sse/alembic.ini +1 -1
  206. solace_agent_mesh/gateway/http_sse/app.py +150 -3
  207. solace_agent_mesh/gateway/http_sse/component.py +372 -61
  208. solace_agent_mesh/gateway/http_sse/components/components_llm.txt +46 -6
  209. solace_agent_mesh/gateway/http_sse/components/task_logger_forwarder.py +109 -0
  210. solace_agent_mesh/gateway/http_sse/components/visualization_forwarder_component.py +4 -2
  211. solace_agent_mesh/gateway/http_sse/dependencies.py +119 -27
  212. solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +172 -172
  213. solace_agent_mesh/gateway/http_sse/http_sse_llm_detail.txt +3278 -0
  214. solace_agent_mesh/gateway/http_sse/main.py +149 -42
  215. solace_agent_mesh/gateway/http_sse/repository/__init__.py +3 -12
  216. solace_agent_mesh/gateway/http_sse/repository/chat_task_repository.py +103 -0
  217. solace_agent_mesh/gateway/http_sse/repository/entities/__init__.py +5 -3
  218. solace_agent_mesh/gateway/http_sse/repository/entities/chat_task.py +75 -0
  219. solace_agent_mesh/gateway/http_sse/repository/entities/entities_llm.txt +263 -0
  220. solace_agent_mesh/gateway/http_sse/repository/entities/feedback.py +20 -0
  221. solace_agent_mesh/gateway/http_sse/repository/entities/session_history.py +0 -16
  222. solace_agent_mesh/gateway/http_sse/repository/entities/task.py +25 -0
  223. solace_agent_mesh/gateway/http_sse/repository/entities/task_event.py +21 -0
  224. solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +81 -0
  225. solace_agent_mesh/gateway/http_sse/repository/interfaces.py +73 -18
  226. solace_agent_mesh/gateway/http_sse/repository/models/__init__.py +9 -5
  227. solace_agent_mesh/gateway/http_sse/repository/models/chat_task_model.py +31 -0
  228. solace_agent_mesh/gateway/http_sse/repository/models/feedback_model.py +21 -0
  229. solace_agent_mesh/gateway/http_sse/repository/models/models_llm.txt +266 -0
  230. solace_agent_mesh/gateway/http_sse/repository/models/session_model.py +3 -3
  231. solace_agent_mesh/gateway/http_sse/repository/models/task_event_model.py +25 -0
  232. solace_agent_mesh/gateway/http_sse/repository/models/task_model.py +32 -0
  233. solace_agent_mesh/gateway/http_sse/repository/repository_llm.txt +340 -0
  234. solace_agent_mesh/gateway/http_sse/repository/session_repository.py +4 -53
  235. solace_agent_mesh/gateway/http_sse/repository/task_repository.py +173 -0
  236. solace_agent_mesh/gateway/http_sse/routers/agent_cards.py +3 -2
  237. solace_agent_mesh/gateway/http_sse/routers/artifacts.py +3 -3
  238. solace_agent_mesh/gateway/http_sse/routers/auth.py +3 -1
  239. solace_agent_mesh/gateway/http_sse/routers/config.py +29 -6
  240. solace_agent_mesh/gateway/http_sse/routers/dto/dto_llm.txt +346 -0
  241. solace_agent_mesh/gateway/http_sse/routers/dto/requests/__init__.py +3 -3
  242. solace_agent_mesh/gateway/http_sse/routers/dto/requests/requests_llm.txt +83 -0
  243. solace_agent_mesh/gateway/http_sse/routers/dto/requests/session_requests.py +2 -10
  244. solace_agent_mesh/gateway/http_sse/routers/dto/requests/task_requests.py +58 -0
  245. solace_agent_mesh/gateway/http_sse/routers/dto/responses/__init__.py +5 -3
  246. solace_agent_mesh/gateway/http_sse/routers/dto/responses/responses_llm.txt +107 -0
  247. solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +1 -15
  248. solace_agent_mesh/gateway/http_sse/routers/dto/responses/task_responses.py +30 -0
  249. solace_agent_mesh/gateway/http_sse/routers/feedback.py +37 -0
  250. solace_agent_mesh/gateway/http_sse/routers/people.py +3 -1
  251. solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +255 -204
  252. solace_agent_mesh/gateway/http_sse/routers/sessions.py +223 -41
  253. solace_agent_mesh/gateway/http_sse/routers/sse.py +3 -2
  254. solace_agent_mesh/gateway/http_sse/routers/tasks.py +170 -43
  255. solace_agent_mesh/gateway/http_sse/routers/users.py +3 -1
  256. solace_agent_mesh/gateway/http_sse/routers/visualization.py +2 -1
  257. solace_agent_mesh/gateway/http_sse/services/agent_card_service.py +3 -1
  258. solace_agent_mesh/gateway/http_sse/services/data_retention_service.py +273 -0
  259. solace_agent_mesh/gateway/http_sse/services/feedback_service.py +242 -0
  260. solace_agent_mesh/gateway/http_sse/services/people_service.py +2 -82
  261. solace_agent_mesh/gateway/http_sse/services/services_llm.txt +177 -13
  262. solace_agent_mesh/gateway/http_sse/services/session_service.py +154 -85
  263. solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +318 -0
  264. solace_agent_mesh/gateway/http_sse/services/task_service.py +3 -2
  265. solace_agent_mesh/gateway/http_sse/session_manager.py +2 -1
  266. solace_agent_mesh/gateway/http_sse/shared/exception_handlers.py +25 -14
  267. solace_agent_mesh/gateway/http_sse/shared/shared_llm.txt +285 -0
  268. solace_agent_mesh/gateway/http_sse/shared/types.py +7 -0
  269. solace_agent_mesh/gateway/http_sse/sse_event_buffer.py +2 -1
  270. solace_agent_mesh/gateway/http_sse/sse_manager.py +2 -2
  271. solace_agent_mesh/gateway/http_sse/utils/__init__.py +1 -0
  272. solace_agent_mesh/gateway/http_sse/utils/stim_utils.py +32 -0
  273. solace_agent_mesh/gateway/http_sse/utils/utils_llm.txt +47 -0
  274. solace_agent_mesh/solace_agent_mesh_llm.txt +1 -1
  275. solace_agent_mesh/solace_agent_mesh_llm_detail.txt +8599 -0
  276. solace_agent_mesh/templates/gateway_app_template.py +4 -2
  277. solace_agent_mesh/templates/gateway_component_template.py +3 -1
  278. solace_agent_mesh/templates/logging_config_template.ini +22 -45
  279. solace_agent_mesh/templates/plugin_tools_template.py +2 -2
  280. {solace_agent_mesh-1.4.12.dist-info → solace_agent_mesh-1.5.1.dist-info}/METADATA +2 -2
  281. solace_agent_mesh-1.5.1.dist-info/RECORD +504 -0
  282. solace_agent_mesh/agent/adk/invocation_monitor.py +0 -295
  283. solace_agent_mesh/assets/docs/assets/images/sac-flows-80d5b603c6aafd33e87945680ce0abf3.png +0 -0
  284. solace_agent_mesh/assets/docs/assets/images/sac_parts_of_a_component-cb3d0424b1d0c17734c5435cca6b4082.png +0 -0
  285. solace_agent_mesh/assets/docs/assets/js/04989206.a248f00c.js +0 -1
  286. solace_agent_mesh/assets/docs/assets/js/0e682baa.d54b8668.js +0 -1
  287. solace_agent_mesh/assets/docs/assets/js/1023fc19.8a8a9309.js +0 -1
  288. solace_agent_mesh/assets/docs/assets/js/1523c6b4.2645ef68.js +0 -1
  289. solace_agent_mesh/assets/docs/assets/js/166ab619.e27886d9.js +0 -1
  290. solace_agent_mesh/assets/docs/assets/js/1c6e87d2.e056b7e0.js +0 -1
  291. solace_agent_mesh/assets/docs/assets/js/21ceee5f.3bf39250.js +0 -1
  292. solace_agent_mesh/assets/docs/assets/js/2a9cab12.2afaee76.js +0 -1
  293. solace_agent_mesh/assets/docs/assets/js/332e10b5.f7629851.js +0 -1
  294. solace_agent_mesh/assets/docs/assets/js/3d406171.5560fdf9.js +0 -1
  295. solace_agent_mesh/assets/docs/assets/js/42b3f8d8.508ae8db.js +0 -1
  296. solace_agent_mesh/assets/docs/assets/js/442a8107.b5c2532a.js +0 -1
  297. solace_agent_mesh/assets/docs/assets/js/453a82a6.3c6bb61d.js +0 -1
  298. solace_agent_mesh/assets/docs/assets/js/483cef9a.4736f2d8.js +0 -1
  299. solace_agent_mesh/assets/docs/assets/js/4c2787c2.c1290a40.js +0 -1
  300. solace_agent_mesh/assets/docs/assets/js/55f47984.bcd00a86.js +0 -1
  301. solace_agent_mesh/assets/docs/assets/js/5b4258a4.fdfd2325.js +0 -1
  302. solace_agent_mesh/assets/docs/assets/js/664b740a.ba305a89.js +0 -1
  303. solace_agent_mesh/assets/docs/assets/js/75384d09.c19e8b51.js +0 -1
  304. solace_agent_mesh/assets/docs/assets/js/768e31b0.9abcdc48.js +0 -1
  305. solace_agent_mesh/assets/docs/assets/js/85387663.be2bc838.js +0 -1
  306. solace_agent_mesh/assets/docs/assets/js/945fb41e.16e00776.js +0 -1
  307. solace_agent_mesh/assets/docs/assets/js/9a09e75d.92de8cf5.js +0 -1
  308. solace_agent_mesh/assets/docs/assets/js/9eff14a2.d62aad71.js +0 -1
  309. solace_agent_mesh/assets/docs/assets/js/a12a4955.25fbed32.js +0 -1
  310. solace_agent_mesh/assets/docs/assets/js/a3a92b25.af35e313.js +0 -1
  311. solace_agent_mesh/assets/docs/assets/js/aba87c2f.4ddf32f2.js +0 -1
  312. solace_agent_mesh/assets/docs/assets/js/ae0e903d.5fe5203f.js +0 -1
  313. solace_agent_mesh/assets/docs/assets/js/ae4415af.16cc58d3.js +0 -1
  314. solace_agent_mesh/assets/docs/assets/js/bac0be12.17de4316.js +0 -1
  315. solace_agent_mesh/assets/docs/assets/js/c2c06897.87cb1f47.js +0 -1
  316. solace_agent_mesh/assets/docs/assets/js/c835a94d.ce21f0bf.js +0 -1
  317. solace_agent_mesh/assets/docs/assets/js/cc969b05.feef7dcc.js +0 -1
  318. solace_agent_mesh/assets/docs/assets/js/cd3d4052.a19e7d78.js +0 -1
  319. solace_agent_mesh/assets/docs/assets/js/ced92a13.fb92e7ca.js +0 -1
  320. solace_agent_mesh/assets/docs/assets/js/cee5d587.47904f5e.js +0 -1
  321. solace_agent_mesh/assets/docs/assets/js/d6a81ee7.829198f1.js +0 -1
  322. solace_agent_mesh/assets/docs/assets/js/f284c35a.ed8dd236.js +0 -1
  323. solace_agent_mesh/assets/docs/assets/js/f897a61a.126663fe.js +0 -1
  324. solace_agent_mesh/assets/docs/assets/js/fbfa3e75.e144b16c.js +0 -1
  325. solace_agent_mesh/assets/docs/assets/js/main.f67fc9f4.js +0 -2
  326. solace_agent_mesh/assets/docs/assets/js/runtime~main.40527046.js +0 -1
  327. solace_agent_mesh/assets/docs/docs/documentation/Enterprise/installation/index.html +0 -46
  328. solace_agent_mesh/assets/docs/docs/documentation/Enterprise/rbac-setup-guilde/index.html +0 -201
  329. solace_agent_mesh/assets/docs/docs/documentation/Enterprise/single-sign-on/index.html +0 -25
  330. 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
  331. solace_agent_mesh/assets/docs/docs/documentation/concepts/agents/index.html +0 -144
  332. solace_agent_mesh/assets/docs/docs/documentation/concepts/architecture/index.html +0 -91
  333. solace_agent_mesh/assets/docs/docs/documentation/concepts/gateways/index.html +0 -91
  334. solace_agent_mesh/assets/docs/docs/documentation/concepts/orchestrator/index.html +0 -55
  335. solace_agent_mesh/assets/docs/docs/documentation/concepts/plugins/index.html +0 -111
  336. solace_agent_mesh/assets/docs/docs/documentation/deployment/debugging/index.html +0 -77
  337. solace_agent_mesh/assets/docs/docs/documentation/deployment/deploy/index.html +0 -48
  338. solace_agent_mesh/assets/docs/docs/documentation/deployment/observability/index.html +0 -54
  339. solace_agent_mesh/assets/docs/docs/documentation/getting-started/component-overview/index.html +0 -45
  340. solace_agent_mesh/assets/docs/docs/documentation/getting-started/configurations/litellm_models/index.html +0 -49
  341. solace_agent_mesh/assets/docs/docs/documentation/getting-started/installation/index.html +0 -76
  342. solace_agent_mesh/assets/docs/docs/documentation/getting-started/quick-start/index.html +0 -73
  343. solace_agent_mesh/assets/docs/docs/documentation/tutorials/slack-integration/index.html +0 -72
  344. solace_agent_mesh/assets/docs/docs/documentation/user-guide/creating-service-providers/index.html +0 -54
  345. solace_agent_mesh/assets/docs/docs/documentation/user-guide/solace-ai-connector/index.html +0 -69
  346. solace_agent_mesh/assets/docs/docs/documentation/user-guide/structure/index.html +0 -59
  347. solace_agent_mesh/assets/docs/lunr-index-1759936913198.json +0 -1
  348. solace_agent_mesh/assets/docs/search-doc-1759936913198.json +0 -1
  349. solace_agent_mesh/client/webui/frontend/static/assets/main-ChRwcV89.css +0 -1
  350. solace_agent_mesh/client/webui/frontend/static/assets/main-DnnE01OM.js +0 -339
  351. solace_agent_mesh/gateway/http_sse/repository/entities/message.py +0 -41
  352. solace_agent_mesh/gateway/http_sse/repository/message_repository.py +0 -84
  353. solace_agent_mesh/gateway/http_sse/repository/models/message_model.py +0 -45
  354. solace_agent_mesh-1.4.12.dist-info/RECORD +0 -448
  355. /solace_agent_mesh/assets/docs/assets/js/{8591.d7c16be6.js.LICENSE.txt → 8591.5d015485.js.LICENSE.txt} +0 -0
  356. /solace_agent_mesh/assets/docs/assets/js/{main.f67fc9f4.js.LICENSE.txt → main.bd3c34f3.js.LICENSE.txt} +0 -0
  357. {solace_agent_mesh-1.4.12.dist-info → solace_agent_mesh-1.5.1.dist-info}/WHEEL +0 -0
  358. {solace_agent_mesh-1.4.12.dist-info → solace_agent_mesh-1.5.1.dist-info}/entry_points.txt +0 -0
  359. {solace_agent_mesh-1.4.12.dist-info → solace_agent_mesh-1.5.1.dist-info}/licenses/LICENSE +0 -0
@@ -3,7 +3,7 @@
3
3
  ## Quick Summary
4
4
  The `services` directory provides a modular and extensible framework for integrating external data sources related to identity and employee information into the Solace AI Connector. It is built on a provider pattern, defining abstract base classes (`BaseIdentityService`, `BaseEmployeeService`) that establish a clear contract for what data and functionality a service must provide.
5
5
 
6
- The core architecture revolves around factory functions (`create_identity_service`, `create_employee_service`) that instantiate specific service providers based on a configuration dictionary. This allows the application to remain decoupled from the concrete implementations. Providers can be either built-in (like the file-based identity service located in the `providers/` subdirectory) or dynamically loaded as external plugins, making the system highly flexible and easy to extend.
6
+ The core architecture revolves around factory functions (`create_identity_service`, `create_employee_service`) that instantiate specific service providers based on a configuration dictionary. This allows the application to remain decoupled from the concrete implementations. The `providers/` subdirectory contains concrete implementations, including a built-in file-based identity service, while external providers can be dynamically loaded as plugins through Python's entry points system.
7
7
 
8
8
  ## Files and Subdirectories Overview
9
9
  - **Direct files:**
@@ -44,12 +44,10 @@ The core architecture revolves around factory functions (`create_identity_servic
44
44
  ### Subdirectory APIs
45
45
 
46
46
  #### providers/
47
- **Purpose:** This subdirectory contains concrete implementations of the abstract service classes. It ships with a built-in provider for the `IdentityService` that is useful for development and testing.
47
+ **Purpose:** Contains concrete implementations of the abstract service classes, providing specific ways to fulfill service contracts such as sourcing user identity information from local files
48
48
  **Key Exports:** `LocalFileIdentityService`
49
49
  **Import Examples:**
50
50
  ```python
51
- # Typically, you would use the factory function.
52
- # But for direct instantiation (e.g., in tests), you can do this:
53
51
  from solace_agent_mesh.common.services.providers.local_file_identity_service import LocalFileIdentityService
54
52
  ```
55
53
 
@@ -307,6 +305,59 @@ async def main():
307
305
  asyncio.run(main())
308
306
  ```
309
307
 
310
- This comprehensive guide shows how the services framework provides a clean, extensible way to integrate various data sources while maintaining consistent interfaces and supporting both built-in providers and external plugins.
308
+ ### 5. Using the Built-in LocalFileIdentityService
309
+ The `providers/` subdirectory includes a ready-to-use file-based identity service that's perfect for development and testing.
311
310
 
312
- # content_hash: 63457e2c72256810f713e62325c1601a675951fe47c1121a647c404690179206
311
+ **Example: Setting up LocalFileIdentityService with Factory**
312
+
313
+ ```python
314
+ import asyncio
315
+ import json
316
+ from solace_agent_mesh.common.services.identity_service import create_identity_service
317
+
318
+ async def setup_file_based_identity():
319
+ # Create sample users.json file
320
+ users_data = [
321
+ {
322
+ "id": "jdoe",
323
+ "email": "jane.doe@example.com",
324
+ "name": "Jane Doe",
325
+ "title": "Senior Engineer",
326
+ "manager_id": "ssmith"
327
+ },
328
+ {
329
+ "id": "ssmith",
330
+ "email": "sam.smith@example.com",
331
+ "name": "Sam Smith",
332
+ "title": "Engineering Manager"
333
+ }
334
+ ]
335
+
336
+ with open("users.json", "w") as f:
337
+ json.dump(users_data, f)
338
+
339
+ # Use factory to create the service
340
+ config = {
341
+ "type": "local_file", # This triggers the built-in provider
342
+ "file_path": "users.json",
343
+ "lookup_key": "email", # Use email for lookups
344
+ "cache_ttl_seconds": 3600
345
+ }
346
+
347
+ identity_service = create_identity_service(config)
348
+
349
+ # Test the service
350
+ auth_claims = {"email": "jane.doe@example.com"}
351
+ profile = await identity_service.get_user_profile(auth_claims)
352
+ print(f"Profile found: {profile}")
353
+
354
+ # Search functionality
355
+ search_results = await identity_service.search_users("jane")
356
+ print(f"Search results: {search_results}")
357
+
358
+ asyncio.run(setup_file_based_identity())
359
+ ```
360
+
361
+ This comprehensive guide shows how the services framework provides a clean, extensible way to integrate various data sources while maintaining consistent interfaces and supporting both built-in providers and external plugins through the factory pattern and plugin system.
362
+
363
+ # content_hash: 879562926a7d3b7c6782ae395159d6c1f8a55663ce052a93eea8966e69b04444
@@ -0,0 +1,459 @@
1
+ # LLM Summary Detail File
2
+
3
+ This file is a concatenation of all individual *llm.txt files found in the 'services' directory tree. Each section below corresponds to a specific directory's summary file.
4
+
5
+ ================================================================================
6
+
7
+ ## Section 1: solace_agent_mesh/common/services/providers/providers_llm.txt
8
+
9
+ **Source file:** `solace_agent_mesh/common/services/providers/providers_llm.txt`
10
+
11
+ ## Quick Summary
12
+ This directory contains concrete implementations (providers) for the abstract services defined in the parent `services` package. These providers offer specific ways to fulfill service contracts, such as sourcing user identity information from a local file.
13
+
14
+ ## Files Overview
15
+ - `__init__.py` - Package initialization file marking the directory as a Python package
16
+ - `local_file_identity_service.py` - File-based identity service implementation that reads user data from local JSON files
17
+
18
+ ## Developer API Reference
19
+
20
+ ### __init__.py
21
+ **Purpose:** Initializes the providers package
22
+ **Import:** `from solace_agent_mesh.common.services import providers`
23
+
24
+ This file contains no public classes or functions - it serves only as package documentation.
25
+
26
+ ### local_file_identity_service.py
27
+ **Purpose:** Provides a file-based identity service that reads user profiles from a local JSON file, ideal for development, testing, or small-scale deployments
28
+ **Import:** `from solace_agent_mesh.common.services.providers.local_file_identity_service import LocalFileIdentityService`
29
+
30
+ **Classes:**
31
+ - `LocalFileIdentityService(config: Dict[str, Any])` - Identity service that sources user data from a local JSON file
32
+ - `async get_user_profile(auth_claims: Dict[str, Any]) -> Optional[Dict[str, Any]]` - Looks up a user profile using the lookup key from auth claims
33
+ - `async search_users(query: str, limit: int = 10) -> List[Dict[str, Any]]` - Performs case-insensitive search on user names and emails
34
+ - `file_path: str` - Path to the JSON file containing user data
35
+ - `lookup_key: str` - Key used to identify users (defaults to "id")
36
+ - `all_users: List[Dict[str, Any]]` - Complete list of user profiles loaded from file
37
+ - `user_index: Dict[str, Dict[str, Any]]` - In-memory index mapping lookup keys to user profiles
38
+
39
+ **Usage Examples:**
40
+ ```python
41
+ import asyncio
42
+ import json
43
+ from solace_agent_mesh.common.services.providers.local_file_identity_service import LocalFileIdentityService
44
+
45
+ # Create sample users.json file
46
+ users_data = [
47
+ {
48
+ "id": "jdoe",
49
+ "email": "jane.doe@example.com",
50
+ "name": "Jane Doe",
51
+ "title": "Senior Engineer",
52
+ "manager_id": "ssmith"
53
+ },
54
+ {
55
+ "id": "ssmith",
56
+ "email": "sam.smith@example.com",
57
+ "name": "Sam Smith",
58
+ "title": "Engineering Manager"
59
+ }
60
+ ]
61
+
62
+ with open("users.json", "w") as f:
63
+ json.dump(users_data, f)
64
+
65
+ async def main():
66
+ # Initialize the service
67
+ config = {
68
+ "file_path": "users.json",
69
+ "lookup_key": "id" # Optional, defaults to "id"
70
+ }
71
+
72
+ identity_service = LocalFileIdentityService(config)
73
+
74
+ # Get user profile by ID
75
+ auth_claims = {"id": "jdoe"}
76
+ profile = await identity_service.get_user_profile(auth_claims)
77
+ print(f"User profile: {profile}")
78
+
79
+ # Search for users
80
+ results = await identity_service.search_users("jane", limit=5)
81
+ print(f"Search results: {results}")
82
+
83
+ # Handle missing user
84
+ missing = await identity_service.get_user_profile({"id": "nonexistent"})
85
+ print(f"Missing user: {missing}") # Returns None
86
+
87
+ asyncio.run(main())
88
+ ```
89
+
90
+ ================================================================================
91
+
92
+ ## Section 2: solace_agent_mesh/common/services/services_llm.txt
93
+
94
+ **Source file:** `solace_agent_mesh/common/services/services_llm.txt`
95
+
96
+ # DEVELOPER GUIDE: services
97
+
98
+ ## Quick Summary
99
+ The `services` directory provides a modular and extensible framework for integrating external data sources related to identity and employee information into the Solace AI Connector. It is built on a provider pattern, defining abstract base classes (`BaseIdentityService`, `BaseEmployeeService`) that establish a clear contract for what data and functionality a service must provide.
100
+
101
+ The core architecture revolves around factory functions (`create_identity_service`, `create_employee_service`) that instantiate specific service providers based on a configuration dictionary. This allows the application to remain decoupled from the concrete implementations. The `providers/` subdirectory contains concrete implementations, including a built-in file-based identity service, while external providers can be dynamically loaded as plugins through Python's entry points system.
102
+
103
+ ## Files and Subdirectories Overview
104
+ - **Direct files:**
105
+ - `__init__.py`: Marks the directory as a Python package with shared, reusable services
106
+ - `employee_service.py`: Defines the abstract contract and factory for employee data services
107
+ - `identity_service.py`: Defines the abstract contract and factory for user identity services
108
+ - **Subdirectories:**
109
+ - `providers/`: Contains concrete implementations of the service contracts, including a file-based identity provider
110
+
111
+ ## Developer API Reference
112
+
113
+ ### Direct Files
114
+
115
+ #### employee_service.py
116
+ **Purpose:** Defines the abstract base class (`BaseEmployeeService`) that all employee service providers must implement, and a factory function (`create_employee_service`) to instantiate them. It enforces a canonical schema for employee data to ensure consistency across different providers.
117
+ **Import:** `from solace_agent_mesh.common.services.employee_service import BaseEmployeeService, create_employee_service`
118
+
119
+ **Classes/Functions/Constants:**
120
+ - **`class BaseEmployeeService(ABC)`**: The abstract base class for employee service providers.
121
+ - **`__init__(self, config: Dict[str, Any])`**: Initializes the service, setting up configuration and an optional in-memory cache.
122
+ - **`async def get_employee_dataframe(self) -> pd.DataFrame`**: (Abstract) Returns the entire employee directory as a pandas DataFrame.
123
+ - **`async def get_employee_profile(self, employee_id: str) -> Optional[Dict[str, Any]]`**: (Abstract) Fetches the profile for a single employee, conforming to the canonical schema.
124
+ - **`async def get_time_off_data(self, employee_id: str) -> List[Dict[str, Any]]`**: (Abstract) Retrieves a list of time-off entries for an employee.
125
+ - **`async def get_employee_profile_picture(self, employee_id: str) -> Optional[str]`**: (Abstract) Fetches an employee's profile picture as a data URI string.
126
+ - **`def create_employee_service(config: Optional[Dict[str, Any]]) -> Optional[BaseEmployeeService]`**: A factory function that dynamically loads and instantiates an employee service provider based on the `type` specified in the configuration. It primarily uses Python's entry points to find and load external plugins.
127
+
128
+ #### identity_service.py
129
+ **Purpose:** Defines the abstract base class (`BaseIdentityService`) for identity providers and a factory function (`create_identity_service`) to create instances of them. This service is used for user lookups and profile enrichment.
130
+ **Import:** `from solace_agent_mesh.common.services.identity_service import BaseIdentityService, create_identity_service`
131
+
132
+ **Classes/Functions/Constants:**
133
+ - **`class BaseIdentityService(ABC)`**: The abstract base class for identity service providers.
134
+ - **`__init__(self, config: Dict[str, Any])`**: Initializes the service, setting up configuration and an optional in-memory cache.
135
+ - **`async def get_user_profile(self, auth_claims: Dict[str, Any]) -> Optional[Dict[str, Any]]`**: (Abstract) Fetches additional profile details for an authenticated user based on claims.
136
+ - **`async def search_users(self, query: str, limit: int = 10) -> List[Dict[str, Any]]`**: (Abstract) Searches for users based on a query string (e.g., for autocomplete).
137
+ - **`def create_identity_service(config: Optional[Dict[str, Any]]) -> Optional[BaseIdentityService]`**: A factory function that instantiates an identity service provider. It has special handling for the built-in `local_file` provider and uses Python entry points for all other provider types.
138
+
139
+ ### Subdirectory APIs
140
+
141
+ #### providers/
142
+ **Purpose:** Contains concrete implementations of the abstract service classes, providing specific ways to fulfill service contracts such as sourcing user identity information from local files
143
+ **Key Exports:** `LocalFileIdentityService`
144
+ **Import Examples:**
145
+ ```python
146
+ from solace_agent_mesh.common.services.providers.local_file_identity_service import LocalFileIdentityService
147
+ ```
148
+
149
+ ## Complete Usage Guide
150
+
151
+ ### 1. Using Service Factories (Recommended Approach)
152
+ The factories are the primary way to create and use services. They abstract away the specific implementation details and handle plugin loading.
153
+
154
+ **Example: Creating Identity and Employee Services**
155
+
156
+ ```python
157
+ import asyncio
158
+ from solace_agent_mesh.common.services.identity_service import create_identity_service
159
+ from solace_agent_mesh.common.services.employee_service import create_employee_service
160
+
161
+ async def main():
162
+ # --- Identity Service Example (using built-in provider) ---
163
+ identity_config = {
164
+ "type": "local_file",
165
+ "file_path": "path/to/your/users.json",
166
+ "lookup_key": "email", # Key to use for lookups from auth_claims
167
+ "cache_ttl_seconds": 3600
168
+ }
169
+ identity_service = create_identity_service(identity_config)
170
+
171
+ if identity_service:
172
+ print("Identity Service created.")
173
+ # Fetch a user profile
174
+ auth_claims = {"email": "jane.doe@example.com"}
175
+ user_profile = await identity_service.get_user_profile(auth_claims)
176
+ print(f"User Profile: {user_profile}")
177
+
178
+ # Search for users
179
+ search_results = await identity_service.search_users("Jane")
180
+ print(f"Search Results: {search_results}")
181
+
182
+ # --- Employee Service Example (using external plugin) ---
183
+ # The 'type' must match the name of a registered plugin entry point
184
+ employee_config = {
185
+ "type": "bamboohr_plugin",
186
+ "api_key": "your-secret-api-key",
187
+ "subdomain": "your-company",
188
+ "cache_ttl_seconds": 7200
189
+ }
190
+ employee_service = create_employee_service(employee_config)
191
+
192
+ if employee_service:
193
+ print("\nEmployee Service created.")
194
+ # Get a detailed employee profile
195
+ employee_profile = await employee_service.get_employee_profile("jane.doe@example.com")
196
+ print(f"Employee Profile: {employee_profile}")
197
+
198
+ # Get time off data
199
+ time_off = await employee_service.get_time_off_data("jane.doe@example.com")
200
+ print(f"Time Off Data: {time_off}")
201
+
202
+ # Get employee directory as DataFrame
203
+ df = await employee_service.get_employee_dataframe()
204
+ print(f"Employee Directory Shape: {df.shape}")
205
+
206
+ # Run the example
207
+ asyncio.run(main())
208
+ ```
209
+
210
+ ### 2. Direct Provider Instantiation
211
+ While factories are preferred, you can instantiate providers from the `providers/` directory directly. This is useful for testing or when you know you will always use a specific built-in provider.
212
+
213
+ **Example: Direct Use of LocalFileIdentityService**
214
+
215
+ ```python
216
+ import asyncio
217
+ import json
218
+ from solace_agent_mesh.common.services.providers.local_file_identity_service import LocalFileIdentityService
219
+
220
+ async def main():
221
+ # First, create a sample users.json file
222
+ users_data = [
223
+ {
224
+ "id": "jdoe",
225
+ "email": "jane.doe@example.com",
226
+ "name": "Jane Doe",
227
+ "title": "Senior Engineer",
228
+ "manager_id": "ssmith"
229
+ },
230
+ {
231
+ "id": "ssmith",
232
+ "email": "sam.smith@example.com",
233
+ "name": "Sam Smith",
234
+ "title": "Engineering Manager"
235
+ }
236
+ ]
237
+
238
+ with open("users.json", "w") as f:
239
+ json.dump(users_data, f)
240
+
241
+ # Configuration does not need a 'type' key for direct instantiation
242
+ config = {
243
+ "file_path": "users.json",
244
+ "lookup_key": "id",
245
+ "cache_ttl_seconds": 1800
246
+ }
247
+
248
+ # Instantiate the class directly
249
+ local_service = LocalFileIdentityService(config)
250
+ print("LocalFileIdentityService created directly")
251
+
252
+ # Get user profile by ID
253
+ auth_claims = {"id": "jdoe"}
254
+ profile = await local_service.get_user_profile(auth_claims)
255
+ print(f"User profile: {profile}")
256
+
257
+ # Search for users
258
+ results = await local_service.search_users("jane", limit=5)
259
+ print(f"Search results: {results}")
260
+
261
+ asyncio.run(main())
262
+ ```
263
+
264
+ ### 3. Creating Custom Service Providers
265
+ To create your own service provider, inherit from the appropriate base class and implement all abstract methods.
266
+
267
+ **Example: Custom Employee Service Provider**
268
+
269
+ ```python
270
+ import pandas as pd
271
+ from typing import Any, Dict, List, Optional
272
+ from solace_agent_mesh.common.services.employee_service import BaseEmployeeService
273
+
274
+ class CustomEmployeeService(BaseEmployeeService):
275
+ """Custom employee service that connects to your HR system."""
276
+
277
+ def __init__(self, config: Dict[str, Any]):
278
+ super().__init__(config)
279
+ self.api_endpoint = config.get("api_endpoint")
280
+ self.api_key = config.get("api_key")
281
+
282
+ async def get_employee_dataframe(self) -> pd.DataFrame:
283
+ """Fetch all employees and return as DataFrame."""
284
+ # Your implementation here
285
+ # This should return a DataFrame with canonical schema columns:
286
+ # id, displayName, workEmail, jobTitle, department, location, supervisorId, hireDate, mobilePhone
287
+ employees_data = [
288
+ {
289
+ "id": "jdoe@company.com",
290
+ "displayName": "Jane Doe",
291
+ "workEmail": "jdoe@company.com",
292
+ "jobTitle": "Software Engineer",
293
+ "department": "Engineering",
294
+ "location": "San Francisco",
295
+ "supervisorId": "manager@company.com",
296
+ "hireDate": "2023-01-15",
297
+ "mobilePhone": "+1-555-0123"
298
+ }
299
+ ]
300
+ return pd.DataFrame(employees_data)
301
+
302
+ async def get_employee_profile(self, employee_id: str) -> Optional[Dict[str, Any]]:
303
+ """Get single employee profile."""
304
+ # Your implementation here
305
+ return {
306
+ "id": employee_id,
307
+ "displayName": "Jane Doe",
308
+ "workEmail": employee_id,
309
+ "jobTitle": "Software Engineer"
310
+ }
311
+
312
+ async def get_time_off_data(self, employee_id: str) -> List[Dict[str, Any]]:
313
+ """Get employee time off data."""
314
+ # Your implementation here
315
+ return [
316
+ {
317
+ 'start': '2025-07-04',
318
+ 'end': '2025-07-04',
319
+ 'type': 'Holiday',
320
+ 'amount': 'full_day'
321
+ }
322
+ ]
323
+
324
+ async def get_employee_profile_picture(self, employee_id: str) -> Optional[str]:
325
+ """Get employee profile picture as data URI."""
326
+ # Your implementation here
327
+ return None # or return "data:image/jpeg;base64,..."
328
+
329
+ # Usage
330
+ async def use_custom_service():
331
+ config = {
332
+ "api_endpoint": "https://your-hr-api.com",
333
+ "api_key": "your-api-key",
334
+ "cache_ttl_seconds": 3600
335
+ }
336
+
337
+ service = CustomEmployeeService(config)
338
+ profile = await service.get_employee_profile("jdoe@company.com")
339
+ print(f"Custom service profile: {profile}")
340
+ ```
341
+
342
+ ### 4. Working with Both Services Together
343
+ Often you'll want to use both identity and employee services together for comprehensive user information.
344
+
345
+ **Example: Combined Service Usage**
346
+
347
+ ```python
348
+ import asyncio
349
+ from solace_agent_mesh.common.services.identity_service import create_identity_service
350
+ from solace_agent_mesh.common.services.employee_service import create_employee_service
351
+
352
+ async def get_complete_user_info(user_email: str):
353
+ """Get comprehensive user information from both services."""
354
+
355
+ # Configure services
356
+ identity_config = {
357
+ "type": "local_file",
358
+ "file_path": "users.json",
359
+ "lookup_key": "email"
360
+ }
361
+
362
+ employee_config = {
363
+ "type": "your_hr_plugin",
364
+ "api_key": "your-key"
365
+ }
366
+
367
+ # Create services
368
+ identity_service = create_identity_service(identity_config)
369
+ employee_service = create_employee_service(employee_config)
370
+
371
+ # Gather information
372
+ user_info = {}
373
+
374
+ if identity_service:
375
+ auth_claims = {"email": user_email}
376
+ identity_profile = await identity_service.get_user_profile(auth_claims)
377
+ if identity_profile:
378
+ user_info.update(identity_profile)
379
+
380
+ if employee_service:
381
+ employee_profile = await employee_service.get_employee_profile(user_email)
382
+ if employee_profile:
383
+ user_info.update(employee_profile)
384
+
385
+ # Get additional employee data
386
+ time_off = await employee_service.get_time_off_data(user_email)
387
+ user_info["time_off"] = time_off
388
+
389
+ profile_pic = await employee_service.get_employee_profile_picture(user_email)
390
+ if profile_pic:
391
+ user_info["profile_picture"] = profile_pic
392
+
393
+ return user_info
394
+
395
+ # Usage
396
+ async def main():
397
+ complete_info = await get_complete_user_info("jane.doe@example.com")
398
+ print(f"Complete user information: {complete_info}")
399
+
400
+ asyncio.run(main())
401
+ ```
402
+
403
+ ### 5. Using the Built-in LocalFileIdentityService
404
+ The `providers/` subdirectory includes a ready-to-use file-based identity service that's perfect for development and testing.
405
+
406
+ **Example: Setting up LocalFileIdentityService with Factory**
407
+
408
+ ```python
409
+ import asyncio
410
+ import json
411
+ from solace_agent_mesh.common.services.identity_service import create_identity_service
412
+
413
+ async def setup_file_based_identity():
414
+ # Create sample users.json file
415
+ users_data = [
416
+ {
417
+ "id": "jdoe",
418
+ "email": "jane.doe@example.com",
419
+ "name": "Jane Doe",
420
+ "title": "Senior Engineer",
421
+ "manager_id": "ssmith"
422
+ },
423
+ {
424
+ "id": "ssmith",
425
+ "email": "sam.smith@example.com",
426
+ "name": "Sam Smith",
427
+ "title": "Engineering Manager"
428
+ }
429
+ ]
430
+
431
+ with open("users.json", "w") as f:
432
+ json.dump(users_data, f)
433
+
434
+ # Use factory to create the service
435
+ config = {
436
+ "type": "local_file", # This triggers the built-in provider
437
+ "file_path": "users.json",
438
+ "lookup_key": "email", # Use email for lookups
439
+ "cache_ttl_seconds": 3600
440
+ }
441
+
442
+ identity_service = create_identity_service(config)
443
+
444
+ # Test the service
445
+ auth_claims = {"email": "jane.doe@example.com"}
446
+ profile = await identity_service.get_user_profile(auth_claims)
447
+ print(f"Profile found: {profile}")
448
+
449
+ # Search functionality
450
+ search_results = await identity_service.search_users("jane")
451
+ print(f"Search results: {search_results}")
452
+
453
+ asyncio.run(setup_file_based_identity())
454
+ ```
455
+
456
+ This comprehensive guide shows how the services framework provides a clean, extensible way to integrate various data sources while maintaining consistent interfaces and supporting both built-in providers and external plugins through the factory pattern and plugin system.
457
+
458
+ ================================================================================
459
+
@@ -2,9 +2,11 @@
2
2
  Common utility functions for working with ADK artifacts.
3
3
  """
4
4
 
5
+ import logging
5
6
  from typing import Optional
6
7
  from google.adk.artifacts import BaseArtifactService
7
- from solace_ai_connector.common.log import log
8
+
9
+ log = logging.getLogger(__name__)
8
10
 
9
11
 
10
12
  async def get_latest_artifact_version(
@@ -8,8 +8,10 @@ The issue occurs because the default event loop policy on macOS doesn't implemen
8
8
  get_child_watcher(), which is required for subprocess creation.
9
9
  """
10
10
 
11
+ import logging
11
12
  import sys
12
- from solace_ai_connector.common.log import log
13
+
14
+ log = logging.getLogger(__name__)
13
15
 
14
16
 
15
17
  def apply_macos_asyncio_fix() -> bool:
@@ -2,16 +2,18 @@
2
2
  Contains the Central Data Converter and Serializer functions.
3
3
  """
4
4
 
5
+ import logging
5
6
  import json
6
7
  import csv
7
8
  import io
8
9
  import base64
9
10
  from typing import Any, Tuple, Optional, List, Dict
10
- from solace_ai_connector.common.log import log
11
11
 
12
12
  from .types import DataFormat
13
13
  from ..mime_helpers import is_text_based_mime_type
14
14
 
15
+ log = logging.getLogger(__name__)
16
+
15
17
  try:
16
18
  import yaml
17
19
 
@@ -217,4 +217,4 @@ result, error, size = await evaluate_embed(
217
217
 
218
218
  ### types.py
219
219
 
220
- # content_hash: cbca48790a6e817c5bf49ddd8212cbbc663e920e9dd4dbece95bcf57d79c1837
220
+ # content_hash: 2f31c6289fe46fe2ebb4c490574d6d030547346221337f730f315f7b3cac572f
@@ -3,17 +3,18 @@ Contains individual evaluator functions for different embed types
3
3
  and the mapping dictionary.
4
4
  """
5
5
 
6
+ import logging
6
7
  import json
7
8
  from datetime import datetime
8
9
  import uuid
9
10
  from typing import Any, Callable, Dict, Optional, Tuple
10
- from solace_ai_connector.common.log import log
11
11
  from asteval import Interpreter
12
12
  import math, random
13
13
 
14
14
  from ....agent.utils.artifact_helpers import format_metadata_for_llm
15
15
  from .constants import EMBED_CHAIN_DELIMITER
16
16
 
17
+ log = logging.getLogger(__name__)
17
18
 
18
19
  MATH_SAFE_SYMBOLS = {
19
20
  # Basic math operations
@@ -2,13 +2,14 @@
2
2
  Defines modifier implementation functions and their contracts.
3
3
  """
4
4
 
5
+ import logging
5
6
  import re
6
7
  from typing import Any, Callable, Dict, Optional, Tuple, List
7
8
 
8
- from solace_ai_connector.common.log import log
9
-
10
9
  from .constants import EARLY_EMBED_TYPES, LATE_EMBED_TYPES
11
10
 
11
+ log = logging.getLogger(__name__)
12
+
12
13
  try:
13
14
  from jsonpath_ng.ext import parse as jsonpath_parse
14
15
 
@@ -2,9 +2,9 @@
2
2
  Contains the main embed resolution functions, including the chain executor.
3
3
  """
4
4
 
5
+ import logging
5
6
  import asyncio
6
7
  import json
7
- from solace_ai_connector.common.log import log
8
8
  from typing import Any, Callable, Dict, Optional, Set, Tuple, List, Union
9
9
  from .constants import (
10
10
  EMBED_REGEX,
@@ -23,6 +23,7 @@ from .converter import (
23
23
  from .types import DataFormat
24
24
  from ..mime_helpers import is_text_based_mime_type
25
25
 
26
+ log = logging.getLogger(__name__)
26
27
 
27
28
  try:
28
29
  import yaml
@@ -1,8 +1,10 @@
1
+ import logging
1
2
  import os
2
3
  import json
3
- from solace_ai_connector.common.log import log
4
4
  from solace_ai_connector.main import load_config
5
5
 
6
+ log = logging.getLogger(__name__)
7
+
6
8
  _has_initialized_system = False
7
9
 
8
10
  def initialize():