solace-agent-mesh 1.11.2__py3-none-any.whl → 1.12.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.
Files changed (308) hide show
  1. solace_agent_mesh/agent/adk/callbacks.py +177 -10
  2. solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +3 -0
  3. solace_agent_mesh/agent/adk/models/lite_llm.py +34 -16
  4. solace_agent_mesh/agent/adk/runner.py +66 -8
  5. solace_agent_mesh/agent/adk/setup.py +61 -26
  6. solace_agent_mesh/agent/protocol/event_handlers.py +48 -0
  7. solace_agent_mesh/agent/proxies/a2a/component.py +27 -0
  8. solace_agent_mesh/agent/sac/component.py +84 -2
  9. solace_agent_mesh/agent/tools/builtin_artifact_tools.py +41 -22
  10. solace_agent_mesh/agent/tools/peer_agent_tool.py +19 -12
  11. solace_agent_mesh/agent/tools/tool_config_types.py +21 -1
  12. solace_agent_mesh/agent/utils/artifact_helpers.py +54 -0
  13. solace_agent_mesh/assets/docs/404.html +3 -3
  14. solace_agent_mesh/assets/docs/assets/js/15ba94aa.e186750d.js +1 -0
  15. solace_agent_mesh/assets/docs/assets/js/240a0364.83e37aa8.js +1 -0
  16. solace_agent_mesh/assets/docs/assets/js/2e32b5e0.2f0db237.js +1 -0
  17. solace_agent_mesh/assets/docs/assets/js/3a6c6137.7e61915d.js +1 -0
  18. solace_agent_mesh/assets/docs/assets/js/{3ac1795d.28b7c67b.js → 3ac1795d.dc006e20.js} +1 -1
  19. solace_agent_mesh/assets/docs/assets/js/3ff0015d.f08618fb.js +1 -0
  20. solace_agent_mesh/assets/docs/assets/js/4667dc50.bf2ad456.js +1 -0
  21. solace_agent_mesh/assets/docs/assets/js/547e15cc.8e6da617.js +1 -0
  22. solace_agent_mesh/assets/docs/assets/js/5b8d9c11.d4eb37b8.js +1 -0
  23. solace_agent_mesh/assets/docs/assets/js/5c2bd65f.1ee87753.js +1 -0
  24. solace_agent_mesh/assets/docs/assets/js/64195356.09dbd087.js +1 -0
  25. solace_agent_mesh/assets/docs/assets/js/66d4869e.30340bd3.js +1 -0
  26. solace_agent_mesh/assets/docs/assets/js/729898df.7249e9fd.js +1 -0
  27. solace_agent_mesh/assets/docs/assets/js/7e294c01.7c5f6906.js +1 -0
  28. solace_agent_mesh/assets/docs/assets/js/8024126c.e3467286.js +1 -0
  29. solace_agent_mesh/assets/docs/assets/js/81a99df0.95be65d4.js +1 -0
  30. solace_agent_mesh/assets/docs/assets/js/9bb13469.4523ae20.js +1 -0
  31. solace_agent_mesh/assets/docs/assets/js/a7d42657.a956689d.js +1 -0
  32. solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e563275.js +1 -0
  33. solace_agent_mesh/assets/docs/assets/js/e04b235d.06d23db6.js +1 -0
  34. solace_agent_mesh/assets/docs/assets/js/e1b6eeb4.deb2b62e.js +1 -0
  35. solace_agent_mesh/assets/docs/assets/js/e6f9706b.acc800d3.js +1 -0
  36. solace_agent_mesh/assets/docs/assets/js/e92d0134.c147a429.js +1 -0
  37. solace_agent_mesh/assets/docs/assets/js/ee0c2fe7.94d0a351.js +1 -0
  38. solace_agent_mesh/assets/docs/assets/js/f284c35a.08fab659.js +1 -0
  39. solace_agent_mesh/assets/docs/assets/js/main.b241af3e.js +2 -0
  40. solace_agent_mesh/assets/docs/assets/js/runtime~main.4ca7d2e2.js +1 -0
  41. solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +4 -4
  42. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/artifact-management/index.html +4 -4
  43. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/audio-tools/index.html +4 -4
  44. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/data-analysis-tools/index.html +4 -4
  45. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/embeds/index.html +4 -4
  46. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/image-tools/index.html +81 -0
  47. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/index.html +14 -12
  48. solace_agent_mesh/assets/docs/docs/documentation/components/cli/index.html +30 -9
  49. solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +4 -4
  50. solace_agent_mesh/assets/docs/docs/documentation/components/index.html +6 -4
  51. solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +4 -4
  52. solace_agent_mesh/assets/docs/docs/documentation/components/platform-service/index.html +33 -0
  53. solace_agent_mesh/assets/docs/docs/documentation/components/plugins/index.html +4 -4
  54. solace_agent_mesh/assets/docs/docs/documentation/components/projects/index.html +4 -4
  55. solace_agent_mesh/assets/docs/docs/documentation/components/prompts/index.html +4 -4
  56. solace_agent_mesh/assets/docs/docs/documentation/components/proxies/index.html +4 -4
  57. solace_agent_mesh/assets/docs/docs/documentation/components/speech/index.html +4 -4
  58. solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +4 -4
  59. solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +5 -5
  60. solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +4 -4
  61. solace_agent_mesh/assets/docs/docs/documentation/deploying/{kubernetes-deployment → kubernetes}/index.html +6 -6
  62. solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes/kubernetes-deployment-guide/index.html +197 -0
  63. solace_agent_mesh/assets/docs/docs/documentation/deploying/logging/index.html +11 -6
  64. solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +4 -4
  65. solace_agent_mesh/assets/docs/docs/documentation/deploying/proxy_configuration/index.html +4 -4
  66. solace_agent_mesh/assets/docs/docs/documentation/developing/create-agents/index.html +4 -4
  67. solace_agent_mesh/assets/docs/docs/documentation/developing/create-gateways/index.html +4 -4
  68. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-python-tools/index.html +23 -5
  69. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +4 -4
  70. solace_agent_mesh/assets/docs/docs/documentation/developing/evaluations/index.html +4 -4
  71. solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +4 -4
  72. solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +4 -4
  73. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/bedrock-agents/index.html +4 -4
  74. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/custom-agent/index.html +4 -4
  75. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/event-mesh-gateway/index.html +4 -4
  76. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mcp-integration/index.html +17 -8
  77. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mongodb-integration/index.html +4 -4
  78. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rag-integration/index.html +4 -4
  79. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rest-gateway/index.html +4 -4
  80. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +4 -4
  81. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/sql-database/index.html +4 -4
  82. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/teams-integration/index.html +4 -4
  83. solace_agent_mesh/assets/docs/docs/documentation/enterprise/agent-builder/index.html +5 -5
  84. solace_agent_mesh/assets/docs/docs/documentation/enterprise/connectors/index.html +4 -4
  85. solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +4 -4
  86. solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +4 -4
  87. solace_agent_mesh/assets/docs/docs/documentation/enterprise/openapi-tools/index.html +4 -4
  88. solace_agent_mesh/assets/docs/docs/documentation/enterprise/rbac-setup-guide/index.html +4 -4
  89. solace_agent_mesh/assets/docs/docs/documentation/enterprise/secure-user-delegated-access/index.html +4 -4
  90. solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +4 -4
  91. solace_agent_mesh/assets/docs/docs/documentation/enterprise/wheel-installation/index.html +4 -4
  92. solace_agent_mesh/assets/docs/docs/documentation/getting-started/architecture/index.html +4 -4
  93. solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +6 -5
  94. solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +4 -4
  95. solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +4 -4
  96. solace_agent_mesh/assets/docs/docs/documentation/getting-started/vibe_coding/index.html +62 -0
  97. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/artifact-storage/index.html +25 -4
  98. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/configurations/index.html +4 -4
  99. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +4 -4
  100. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +4 -4
  101. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +4 -4
  102. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +4 -4
  103. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/session-storage/index.html +4 -4
  104. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/user-feedback/index.html +4 -4
  105. solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-gateway-upgrade-to-0.3.0/index.html +4 -4
  106. solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-technical-migration-map/index.html +4 -4
  107. solace_agent_mesh/assets/docs/docs/documentation/migrations/platform-service-split/index.html +85 -0
  108. solace_agent_mesh/assets/docs/lunr-index-1767712284328.json +1 -0
  109. solace_agent_mesh/assets/docs/lunr-index.json +1 -1
  110. solace_agent_mesh/assets/docs/search-doc-1767712284328.json +1 -0
  111. solace_agent_mesh/assets/docs/search-doc.json +1 -1
  112. solace_agent_mesh/assets/docs/sitemap.xml +1 -1
  113. solace_agent_mesh/cli/__init__.py +1 -1
  114. solace_agent_mesh/cli/commands/init_cmd/__init__.py +15 -0
  115. solace_agent_mesh/cli/commands/init_cmd/directory_step.py +1 -1
  116. solace_agent_mesh/cli/commands/init_cmd/env_step.py +29 -2
  117. solace_agent_mesh/cli/commands/init_cmd/platform_service_step.py +85 -0
  118. solace_agent_mesh/cli/commands/tools_cmd.py +315 -0
  119. solace_agent_mesh/cli/main.py +2 -0
  120. solace_agent_mesh/client/webui/frontend/static/assets/{authCallback-Dj3JtK42.js → authCallback-8Nihi8rv.js} +1 -1
  121. solace_agent_mesh/client/webui/frontend/static/assets/{client-ZKk9kEJ5.js → client-DYtZN8p-.js} +1 -1
  122. solace_agent_mesh/client/webui/frontend/static/assets/main-BYGUHQMk.js +435 -0
  123. solace_agent_mesh/client/webui/frontend/static/assets/main-D2CSH1bp.css +1 -0
  124. solace_agent_mesh/client/webui/frontend/static/assets/{vendor-BNV4kZN0.js → vendor-XBWAmrun.js} +106 -101
  125. solace_agent_mesh/client/webui/frontend/static/auth-callback.html +3 -3
  126. solace_agent_mesh/client/webui/frontend/static/index.html +4 -4
  127. solace_agent_mesh/client/webui/frontend/static/ui-version.json +1 -1
  128. solace_agent_mesh/common/a2a/types.py +1 -1
  129. solace_agent_mesh/common/agent_registry.py +38 -11
  130. solace_agent_mesh/common/data_parts.py +28 -0
  131. solace_agent_mesh/common/error_handlers.py +83 -0
  132. solace_agent_mesh/common/sam_events/event_service.py +2 -2
  133. solace_agent_mesh/config_portal/backend/common.py +2 -0
  134. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-ZV-jX48T.js +103 -0
  135. solace_agent_mesh/config_portal/frontend/static/client/assets/{manifest-ba77705e.js → manifest-ce5bc5da.js} +1 -1
  136. solace_agent_mesh/config_portal/frontend/static/client/index.html +1 -1
  137. solace_agent_mesh/core_a2a/service.py +3 -2
  138. solace_agent_mesh/gateway/adapter/base.py +28 -1
  139. solace_agent_mesh/gateway/adapter/types.py +9 -0
  140. solace_agent_mesh/gateway/base/auth_interface.py +103 -0
  141. solace_agent_mesh/gateway/base/component.py +68 -1
  142. solace_agent_mesh/gateway/generic/component.py +195 -30
  143. solace_agent_mesh/gateway/http_sse/app.py +23 -6
  144. solace_agent_mesh/gateway/http_sse/component.py +9 -61
  145. solace_agent_mesh/gateway/http_sse/dependencies.py +9 -51
  146. solace_agent_mesh/gateway/http_sse/main.py +28 -418
  147. solace_agent_mesh/gateway/http_sse/repository/chat_task_repository.py +2 -2
  148. solace_agent_mesh/gateway/http_sse/repository/entities/project.py +1 -1
  149. solace_agent_mesh/gateway/http_sse/repository/entities/project_user.py +1 -1
  150. solace_agent_mesh/gateway/http_sse/repository/entities/session.py +2 -2
  151. solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +2 -2
  152. solace_agent_mesh/gateway/http_sse/repository/interfaces.py +2 -2
  153. solace_agent_mesh/gateway/http_sse/repository/models/prompt_model.py +1 -1
  154. solace_agent_mesh/gateway/http_sse/repository/models/session_model.py +1 -1
  155. solace_agent_mesh/gateway/http_sse/repository/project_repository.py +1 -1
  156. solace_agent_mesh/gateway/http_sse/repository/project_user_repository.py +1 -1
  157. solace_agent_mesh/gateway/http_sse/repository/session_repository.py +4 -4
  158. solace_agent_mesh/gateway/http_sse/repository/task_repository.py +2 -2
  159. solace_agent_mesh/gateway/http_sse/routers/artifacts.py +16 -15
  160. solace_agent_mesh/gateway/http_sse/routers/auth.py +61 -132
  161. solace_agent_mesh/gateway/http_sse/routers/config.py +12 -8
  162. solace_agent_mesh/gateway/http_sse/routers/dto/requests/session_requests.py +1 -1
  163. solace_agent_mesh/gateway/http_sse/routers/dto/responses/base_responses.py +1 -1
  164. solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +2 -2
  165. solace_agent_mesh/gateway/http_sse/routers/feedback.py +2 -2
  166. solace_agent_mesh/gateway/http_sse/routers/people.py +2 -2
  167. solace_agent_mesh/gateway/http_sse/routers/projects.py +2 -1
  168. solace_agent_mesh/gateway/http_sse/routers/prompts.py +2 -1
  169. solace_agent_mesh/gateway/http_sse/routers/sessions.py +3 -3
  170. solace_agent_mesh/gateway/http_sse/routers/speech.py +1 -1
  171. solace_agent_mesh/gateway/http_sse/routers/tasks.py +3 -2
  172. solace_agent_mesh/gateway/http_sse/routers/users.py +1 -1
  173. solace_agent_mesh/gateway/http_sse/routers/visualization.py +2 -1
  174. solace_agent_mesh/gateway/http_sse/services/background_task_monitor.py +1 -1
  175. solace_agent_mesh/gateway/http_sse/services/data_retention_service.py +1 -1
  176. solace_agent_mesh/gateway/http_sse/services/feedback_service.py +1 -1
  177. solace_agent_mesh/gateway/http_sse/services/session_service.py +4 -4
  178. solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +1 -1
  179. solace_agent_mesh/services/platform/__init__.py +23 -12
  180. solace_agent_mesh/services/platform/api/dependencies.py +23 -16
  181. solace_agent_mesh/services/platform/api/main.py +118 -43
  182. solace_agent_mesh/services/platform/api/routers/__init__.py +12 -3
  183. solace_agent_mesh/services/platform/api/routers/health_router.py +31 -0
  184. solace_agent_mesh/services/platform/app.py +101 -7
  185. solace_agent_mesh/services/platform/component.py +552 -33
  186. solace_agent_mesh/shared/__init__.py +14 -0
  187. solace_agent_mesh/shared/api/__init__.py +42 -0
  188. solace_agent_mesh/shared/auth/__init__.py +26 -0
  189. solace_agent_mesh/shared/auth/dependencies.py +204 -0
  190. solace_agent_mesh/shared/auth/middleware.py +291 -0
  191. solace_agent_mesh/shared/database/__init__.py +20 -0
  192. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/base_repository.py +1 -1
  193. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_exceptions.py +1 -1
  194. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_helpers.py +1 -1
  195. solace_agent_mesh/shared/exceptions/__init__.py +36 -0
  196. solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/exception_handlers.py +1 -1
  197. solace_agent_mesh/shared/utils/__init__.py +21 -0
  198. solace_agent_mesh/templates/platform.yaml +49 -0
  199. solace_agent_mesh/templates/webui.yaml +12 -3
  200. {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/METADATA +2 -1
  201. {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/RECORD +214 -258
  202. solace_agent_mesh/agent/adk/adk_llm.txt +0 -226
  203. solace_agent_mesh/agent/adk/adk_llm_detail.txt +0 -566
  204. solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt +0 -171
  205. solace_agent_mesh/agent/adk/models/models_llm.txt +0 -189
  206. solace_agent_mesh/agent/agent_llm.txt +0 -369
  207. solace_agent_mesh/agent/agent_llm_detail.txt +0 -1702
  208. solace_agent_mesh/agent/protocol/protocol_llm.txt +0 -81
  209. solace_agent_mesh/agent/protocol/protocol_llm_detail.txt +0 -92
  210. solace_agent_mesh/agent/proxies/a2a/a2a_llm.txt +0 -190
  211. solace_agent_mesh/agent/proxies/base/base_llm.txt +0 -148
  212. solace_agent_mesh/agent/proxies/proxies_llm.txt +0 -283
  213. solace_agent_mesh/agent/sac/sac_llm.txt +0 -189
  214. solace_agent_mesh/agent/sac/sac_llm_detail.txt +0 -200
  215. solace_agent_mesh/agent/testing/testing_llm.txt +0 -58
  216. solace_agent_mesh/agent/testing/testing_llm_detail.txt +0 -68
  217. solace_agent_mesh/agent/tools/tools_llm.txt +0 -276
  218. solace_agent_mesh/agent/tools/tools_llm_detail.txt +0 -275
  219. solace_agent_mesh/agent/utils/utils_llm.txt +0 -152
  220. solace_agent_mesh/agent/utils/utils_llm_detail.txt +0 -149
  221. solace_agent_mesh/assets/docs/assets/js/15ba94aa.92fea363.js +0 -1
  222. solace_agent_mesh/assets/docs/assets/js/240a0364.9ad94d1b.js +0 -1
  223. solace_agent_mesh/assets/docs/assets/js/2e32b5e0.33f5d75b.js +0 -1
  224. solace_agent_mesh/assets/docs/assets/js/3a6c6137.f5940cfa.js +0 -1
  225. solace_agent_mesh/assets/docs/assets/js/3ff0015d.2ddc75c0.js +0 -1
  226. solace_agent_mesh/assets/docs/assets/js/547e15cc.2f7790c1.js +0 -1
  227. solace_agent_mesh/assets/docs/assets/js/5c2bd65f.90a87880.js +0 -1
  228. solace_agent_mesh/assets/docs/assets/js/64195356.c498c4d0.js +0 -1
  229. solace_agent_mesh/assets/docs/assets/js/66d4869e.b77431fc.js +0 -1
  230. solace_agent_mesh/assets/docs/assets/js/8024126c.fa0e7186.js +0 -1
  231. solace_agent_mesh/assets/docs/assets/js/81a99df0.2484b8d9.js +0 -1
  232. solace_agent_mesh/assets/docs/assets/js/9bb13469.b2333011.js +0 -1
  233. solace_agent_mesh/assets/docs/assets/js/ab9708a8.245ae0ef.js +0 -1
  234. solace_agent_mesh/assets/docs/assets/js/db5d6442.3daf1696.js +0 -1
  235. solace_agent_mesh/assets/docs/assets/js/e04b235d.52cb25ed.js +0 -1
  236. solace_agent_mesh/assets/docs/assets/js/e1b6eeb4.b1068f9b.js +0 -1
  237. solace_agent_mesh/assets/docs/assets/js/e6f9706b.4488e34c.js +0 -1
  238. solace_agent_mesh/assets/docs/assets/js/e92d0134.3bda61dd.js +0 -1
  239. solace_agent_mesh/assets/docs/assets/js/f284c35a.250993bf.js +0 -1
  240. solace_agent_mesh/assets/docs/assets/js/main.7acf7ace.js +0 -2
  241. solace_agent_mesh/assets/docs/assets/js/runtime~main.9e0813a2.js +0 -1
  242. solace_agent_mesh/assets/docs/lunr-index-1765810064709.json +0 -1
  243. solace_agent_mesh/assets/docs/search-doc-1765810064709.json +0 -1
  244. solace_agent_mesh/cli/commands/add_cmd/add_cmd_llm.txt +0 -250
  245. solace_agent_mesh/cli/commands/init_cmd/init_cmd_llm.txt +0 -365
  246. solace_agent_mesh/cli/commands/plugin_cmd/plugin_cmd_llm.txt +0 -305
  247. solace_agent_mesh/client/webui/frontend/static/assets/main-BcUaNZ-Q.css +0 -1
  248. solace_agent_mesh/client/webui/frontend/static/assets/main-vjch4RYc.js +0 -435
  249. solace_agent_mesh/common/a2a/a2a_llm.txt +0 -175
  250. solace_agent_mesh/common/a2a/a2a_llm_detail.txt +0 -193
  251. solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +0 -445
  252. solace_agent_mesh/common/a2a_spec/a2a_spec_llm_detail.txt +0 -736
  253. solace_agent_mesh/common/a2a_spec/schemas/schemas_llm.txt +0 -330
  254. solace_agent_mesh/common/common_llm.txt +0 -230
  255. solace_agent_mesh/common/common_llm_detail.txt +0 -2562
  256. solace_agent_mesh/common/middleware/middleware_llm.txt +0 -174
  257. solace_agent_mesh/common/middleware/middleware_llm_detail.txt +0 -185
  258. solace_agent_mesh/common/sac/sac_llm.txt +0 -71
  259. solace_agent_mesh/common/sac/sac_llm_detail.txt +0 -82
  260. solace_agent_mesh/common/sam_events/sam_events_llm.txt +0 -104
  261. solace_agent_mesh/common/sam_events/sam_events_llm_detail.txt +0 -115
  262. solace_agent_mesh/common/services/providers/providers_llm.txt +0 -81
  263. solace_agent_mesh/common/services/services_llm.txt +0 -368
  264. solace_agent_mesh/common/services/services_llm_detail.txt +0 -459
  265. solace_agent_mesh/common/utils/embeds/embeds_llm.txt +0 -220
  266. solace_agent_mesh/common/utils/utils_llm.txt +0 -335
  267. solace_agent_mesh/common/utils/utils_llm_detail.txt +0 -572
  268. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-DiOiAjzL.js +0 -103
  269. solace_agent_mesh/core_a2a/core_a2a_llm.txt +0 -90
  270. solace_agent_mesh/core_a2a/core_a2a_llm_detail.txt +0 -101
  271. solace_agent_mesh/gateway/base/base_llm.txt +0 -226
  272. solace_agent_mesh/gateway/base/base_llm_detail.txt +0 -235
  273. solace_agent_mesh/gateway/gateway_llm.txt +0 -369
  274. solace_agent_mesh/gateway/gateway_llm_detail.txt +0 -3885
  275. solace_agent_mesh/gateway/http_sse/alembic/alembic_llm.txt +0 -345
  276. solace_agent_mesh/gateway/http_sse/alembic/versions/versions_llm.txt +0 -161
  277. solace_agent_mesh/gateway/http_sse/components/components_llm.txt +0 -105
  278. solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +0 -299
  279. solace_agent_mesh/gateway/http_sse/http_sse_llm_detail.txt +0 -3278
  280. solace_agent_mesh/gateway/http_sse/repository/entities/entities_llm.txt +0 -221
  281. solace_agent_mesh/gateway/http_sse/repository/models/models_llm.txt +0 -257
  282. solace_agent_mesh/gateway/http_sse/repository/repository_llm.txt +0 -308
  283. solace_agent_mesh/gateway/http_sse/routers/dto/dto_llm.txt +0 -450
  284. solace_agent_mesh/gateway/http_sse/routers/dto/requests/requests_llm.txt +0 -133
  285. solace_agent_mesh/gateway/http_sse/routers/dto/responses/responses_llm.txt +0 -123
  286. solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +0 -312
  287. solace_agent_mesh/gateway/http_sse/services/services_llm.txt +0 -303
  288. solace_agent_mesh/gateway/http_sse/shared/__init__.py +0 -146
  289. solace_agent_mesh/gateway/http_sse/shared/shared_llm.txt +0 -319
  290. solace_agent_mesh/gateway/http_sse/utils/utils_llm.txt +0 -47
  291. solace_agent_mesh/llm.txt +0 -228
  292. solace_agent_mesh/llm_detail.txt +0 -2835
  293. solace_agent_mesh/solace_agent_mesh_llm.txt +0 -362
  294. solace_agent_mesh/solace_agent_mesh_llm_detail.txt +0 -8599
  295. solace_agent_mesh/templates/templates_llm.txt +0 -147
  296. /solace_agent_mesh/assets/docs/assets/js/{main.7acf7ace.js.LICENSE.txt → main.b241af3e.js.LICENSE.txt} +0 -0
  297. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/auth_utils.py +0 -0
  298. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/pagination.py +0 -0
  299. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/response_utils.py +0 -0
  300. /solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/error_dto.py +0 -0
  301. /solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/exceptions.py +0 -0
  302. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/enums.py +0 -0
  303. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/timestamp_utils.py +0 -0
  304. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/types.py +0 -0
  305. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/utils.py +0 -0
  306. {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/WHEEL +0 -0
  307. {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/entry_points.txt +0 -0
  308. {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,115 +0,0 @@
1
- # LLM Summary Detail File
2
-
3
- This file is a concatenation of all individual *llm.txt files found in the 'sam_events' directory tree. Each section below corresponds to a specific directory's summary file.
4
-
5
- ================================================================================
6
-
7
- ## Section 1: solace_agent_mesh/common/sam_events/sam_events_llm.txt
8
-
9
- **Source file:** `solace_agent_mesh/common/sam_events/sam_events_llm.txt`
10
-
11
- # DEVELOPER GUIDE: sam_events
12
-
13
- ## Quick Summary
14
- The `sam_events` directory provides system-level event messaging for Solace Agent Mesh (SAM). It enables clean separation between agent-to-agent (A2A) task communication and system events like session lifecycle, agent health, and configuration changes.
15
-
16
- ## Files Overview
17
- - `__init__.py` - Package initialization and public API exports
18
- - `event_service.py` - Core event service implementation with publishing/subscription capabilities
19
-
20
- ## Developer API Reference
21
-
22
- ### __init__.py
23
- **Purpose:** Package entry point that exports the main classes for SAM event handling
24
- **Import:** `from solace_agent_mesh.common.sam_events import SamEventService, SamEvent, SessionDeletedEvent`
25
-
26
- ### event_service.py
27
- **Purpose:** Implements the core event messaging service for system-level events in SAM
28
- **Import:** `from solace_agent_mesh.common.sam_events.event_service import SamEventService, SamEvent, SessionDeletedEvent`
29
-
30
- **Classes:**
31
-
32
- - `SamEvent(event_type: str, event_id: str, timestamp: str, source_component: str, namespace: str, data: Dict[str, Any])` - Base class for all SAM system events
33
- - `create(event_type: str, source_component: str, namespace: str, data: Dict[str, Any]) -> SamEvent` - Create a new event with auto-generated ID and timestamp
34
- - `to_dict() -> Dict[str, Any]` - Convert event to dictionary for messaging
35
- - `event_type: str` - Type of event (e.g., "session.deleted")
36
- - `event_id: str` - Unique identifier for the event
37
- - `timestamp: str` - ISO format timestamp when event was created
38
- - `source_component: str` - Component that generated the event
39
- - `namespace: str` - SAM namespace
40
- - `data: Dict[str, Any]` - Event-specific data payload
41
-
42
- - `SessionDeletedEvent(SamEvent)` - Specialized event for session deletion notifications
43
- - `create(namespace: str, source_component: str, session_id: str, user_id: str, agent_id: str, gateway_id: str) -> SessionDeletedEvent` - Create a session deleted event
44
-
45
- - `SamEventService(namespace: str, component_name: str, publish_func: Callable[[str, Dict, Optional[Dict]], None])` - Service for publishing and subscribing to SAM system events
46
- - `publish_event(event: SamEvent) -> bool` - Publish a system event
47
- - `publish_session_deleted(session_id: str, user_id: str, agent_id: str, gateway_id: str) -> bool` - Convenience method to publish session deleted event
48
- - `subscribe_to_events(event_type: str, handler: Callable[[SamEvent], None]) -> bool` - Subscribe to events of a specific type
49
- - `handle_incoming_event(topic: str, payload: Dict[str, Any]) -> None` - Handle incoming events from messaging system
50
- - `namespace: str` - The SAM namespace
51
- - `component_name: str` - Name of the component using this service
52
-
53
- **Functions:**
54
-
55
- - `SamEventService.get_event_topic(namespace: str, event_type: str) -> str` - Get the topic for a specific event type
56
-
57
- **Usage Examples:**
58
-
59
- ```python
60
- # Basic event service setup
61
- from solace_agent_mesh.common.sam_events import SamEventService, SamEvent, SessionDeletedEvent
62
-
63
- # Initialize the event service
64
- def my_publish_func(topic: str, payload: dict, headers: dict = None):
65
- # Your A2A publishing implementation
66
- pass
67
-
68
- event_service = SamEventService(
69
- namespace="my_namespace",
70
- component_name="my_component",
71
- publish_func=my_publish_func
72
- )
73
-
74
- # Create and publish a custom event
75
- custom_event = SamEvent.create(
76
- event_type="agent.health_check",
77
- source_component="health_monitor",
78
- namespace="my_namespace",
79
- data={"status": "healthy", "cpu_usage": 45.2}
80
- )
81
- success = event_service.publish_event(custom_event)
82
-
83
- # Publish a session deleted event (convenience method)
84
- success = event_service.publish_session_deleted(
85
- session_id="sess_123",
86
- user_id="user_456",
87
- agent_id="agent_789",
88
- gateway_id="gateway_001"
89
- )
90
-
91
- # Subscribe to events
92
- def handle_session_deleted(event: SamEvent):
93
- session_id = event.data["session_id"]
94
- print(f"Session {session_id} was deleted")
95
-
96
- event_service.subscribe_to_events("session.deleted", handle_session_deleted)
97
-
98
- # Handle incoming events (typically called by your messaging infrastructure)
99
- incoming_payload = {
100
- "event_type": "session.deleted",
101
- "event_id": "evt_123",
102
- "timestamp": "2024-01-01T12:00:00Z",
103
- "source_component": "gateway",
104
- "namespace": "my_namespace",
105
- "data": {"session_id": "sess_123", "user_id": "user_456"}
106
- }
107
- event_service.handle_incoming_event("sam/events/session/deleted", incoming_payload)
108
-
109
- # Get topic for an event type
110
- topic = SamEventService.get_event_topic("my_namespace", "session.deleted")
111
- print(topic) # Returns the proper SAM events topic
112
- ```
113
-
114
- ================================================================================
115
-
@@ -1,81 +0,0 @@
1
- ## Quick Summary
2
- 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.
3
-
4
- ## Files Overview
5
- - `__init__.py` - Package initialization file marking the directory as a Python package
6
- - `local_file_identity_service.py` - File-based identity service implementation that reads user data from local JSON files
7
-
8
- ## Developer API Reference
9
-
10
- ### __init__.py
11
- **Purpose:** Initializes the providers package
12
- **Import:** `from solace_agent_mesh.common.services import providers`
13
-
14
- This file contains no public classes or functions - it serves only as package documentation.
15
-
16
- ### local_file_identity_service.py
17
- **Purpose:** Provides a file-based identity service that reads user profiles from a local JSON file, ideal for development, testing, or small-scale deployments
18
- **Import:** `from solace_agent_mesh.common.services.providers.local_file_identity_service import LocalFileIdentityService`
19
-
20
- **Classes:**
21
- - `LocalFileIdentityService(config: Dict[str, Any], component: Optional[SamComponentBase] = None)` - Identity service that sources user data from a local JSON file
22
- - `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
23
- - `async search_users(query: str, limit: int = 10) -> List[Dict[str, Any]]` - Performs case-insensitive search on user names and emails
24
- - `file_path: str` - Path to the JSON file containing user data
25
- - `lookup_key: str` - Key used to identify users (defaults to "id")
26
- - `all_users: List[Dict[str, Any]]` - Complete list of user profiles loaded from file
27
- - `user_index: Dict[str, Dict[str, Any]]` - In-memory index mapping lookup keys to user profiles
28
-
29
- **Usage Examples:**
30
- ```python
31
- import asyncio
32
- import json
33
- from typing import Dict, Any
34
- from solace_agent_mesh.common.services.providers.local_file_identity_service import LocalFileIdentityService
35
-
36
- # Create sample users.json file
37
- users_data = [
38
- {
39
- "id": "jdoe",
40
- "email": "jane.doe@example.com",
41
- "name": "Jane Doe",
42
- "title": "Senior Engineer",
43
- "manager_id": "ssmith"
44
- },
45
- {
46
- "id": "ssmith",
47
- "email": "sam.smith@example.com",
48
- "name": "Sam Smith",
49
- "title": "Engineering Manager"
50
- }
51
- ]
52
-
53
- with open("users.json", "w") as f:
54
- json.dump(users_data, f)
55
-
56
- async def main():
57
- # Initialize the service
58
- config = {
59
- "file_path": "users.json",
60
- "lookup_key": "id" # Optional, defaults to "id"
61
- }
62
-
63
- identity_service = LocalFileIdentityService(config)
64
-
65
- # Get user profile by ID
66
- auth_claims = {"id": "jdoe"}
67
- profile = await identity_service.get_user_profile(auth_claims)
68
- print(f"User profile: {profile}")
69
-
70
- # Search for users
71
- results = await identity_service.search_users("jane", limit=5)
72
- print(f"Search results: {results}")
73
-
74
- # Handle missing user
75
- missing = await identity_service.get_user_profile({"id": "nonexistent"})
76
- print(f"Missing user: {missing}") # Returns None
77
-
78
- asyncio.run(main())
79
- ```
80
-
81
- # content_hash: 26b677e947bf60f1e211b6e119bf6382f0a269d46c0f102751bae9faab3c8435
@@ -1,368 +0,0 @@
1
- # DEVELOPER GUIDE: services
2
-
3
- ## Quick Summary
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
-
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
-
8
- ## Files and Subdirectories Overview
9
- - **Direct files:**
10
- - `__init__.py`: Marks the directory as a Python package with shared, reusable services
11
- - `employee_service.py`: Defines the abstract contract and factory for employee data services
12
- - `identity_service.py`: Defines the abstract contract and factory for user identity services
13
- - **Subdirectories:**
14
- - `providers/`: Contains concrete implementations of the service contracts, including a file-based identity provider
15
-
16
- ## Developer API Reference
17
-
18
- ### Direct Files
19
-
20
- #### employee_service.py
21
- **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.
22
- **Import:** `from solace_agent_mesh.common.services.employee_service import BaseEmployeeService, create_employee_service`
23
-
24
- **Classes/Functions/Constants:**
25
- - **`class BaseEmployeeService(ABC)`**: The abstract base class for employee service providers.
26
- - **`__init__(self, config: Dict[str, Any])`**: Initializes the service, setting up configuration and an optional in-memory cache.
27
- - **`async def get_employee_dataframe(self) -> pd.DataFrame`**: (Abstract) Returns the entire employee directory as a pandas DataFrame.
28
- - **`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.
29
- - **`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.
30
- - **`async def get_employee_profile_picture(self, employee_id: str) -> Optional[str]`**: (Abstract) Fetches an employee's profile picture as a data URI string.
31
- - **`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.
32
-
33
- #### identity_service.py
34
- **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.
35
- **Import:** `from solace_agent_mesh.common.services.identity_service import BaseIdentityService, create_identity_service`
36
-
37
- **Classes/Functions/Constants:**
38
- - **`class BaseIdentityService(ABC)`**: The abstract base class for identity service providers.
39
- - **`__init__(self, config: Dict[str, Any], component: Optional[SamComponentBase] = None)`**: Initializes the service, setting up configuration and an optional in-memory cache.
40
- - **`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.
41
- - **`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).
42
- - **`def create_identity_service(config: Optional[Dict[str, Any]], component: Optional[SamComponentBase] = None) -> 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.
43
-
44
- ### Subdirectory APIs
45
-
46
- #### providers/
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
- **Key Exports:** `LocalFileIdentityService`
49
- **Import Examples:**
50
- ```python
51
- from solace_agent_mesh.common.services.providers.local_file_identity_service import LocalFileIdentityService
52
- ```
53
-
54
- ## Complete Usage Guide
55
-
56
- ### 1. Using Service Factories (Recommended Approach)
57
- The factories are the primary way to create and use services. They abstract away the specific implementation details and handle plugin loading.
58
-
59
- **Example: Creating Identity and Employee Services**
60
-
61
- ```python
62
- import asyncio
63
- from solace_agent_mesh.common.services.identity_service import create_identity_service
64
- from solace_agent_mesh.common.services.employee_service import create_employee_service
65
-
66
- async def main():
67
- # --- Identity Service Example (using built-in provider) ---
68
- identity_config = {
69
- "type": "local_file",
70
- "file_path": "path/to/your/users.json",
71
- "lookup_key": "email", # Key to use for lookups from auth_claims
72
- "cache_ttl_seconds": 3600
73
- }
74
- identity_service = create_identity_service(identity_config)
75
-
76
- if identity_service:
77
- print("Identity Service created.")
78
- # Fetch a user profile
79
- auth_claims = {"email": "jane.doe@example.com"}
80
- user_profile = await identity_service.get_user_profile(auth_claims)
81
- print(f"User Profile: {user_profile}")
82
-
83
- # Search for users
84
- search_results = await identity_service.search_users("Jane")
85
- print(f"Search Results: {search_results}")
86
-
87
- # --- Employee Service Example (using external plugin) ---
88
- # The 'type' must match the name of a registered plugin entry point
89
- employee_config = {
90
- "type": "bamboohr_plugin",
91
- "api_key": "your-secret-api-key",
92
- "subdomain": "your-company",
93
- "cache_ttl_seconds": 7200
94
- }
95
- employee_service = create_employee_service(employee_config)
96
-
97
- if employee_service:
98
- print("\nEmployee Service created.")
99
- # Get a detailed employee profile
100
- employee_profile = await employee_service.get_employee_profile("jane.doe@example.com")
101
- print(f"Employee Profile: {employee_profile}")
102
-
103
- # Get time off data
104
- time_off = await employee_service.get_time_off_data("jane.doe@example.com")
105
- print(f"Time Off Data: {time_off}")
106
-
107
- # Get employee directory as DataFrame
108
- df = await employee_service.get_employee_dataframe()
109
- print(f"Employee Directory Shape: {df.shape}")
110
-
111
- # Run the example
112
- asyncio.run(main())
113
- ```
114
-
115
- ### 2. Direct Provider Instantiation
116
- 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.
117
-
118
- **Example: Direct Use of LocalFileIdentityService**
119
-
120
- ```python
121
- import asyncio
122
- import json
123
- from solace_agent_mesh.common.services.providers.local_file_identity_service import LocalFileIdentityService
124
-
125
- async def main():
126
- # First, create a sample users.json file
127
- users_data = [
128
- {
129
- "id": "jdoe",
130
- "email": "jane.doe@example.com",
131
- "name": "Jane Doe",
132
- "title": "Senior Engineer",
133
- "manager_id": "ssmith"
134
- },
135
- {
136
- "id": "ssmith",
137
- "email": "sam.smith@example.com",
138
- "name": "Sam Smith",
139
- "title": "Engineering Manager"
140
- }
141
- ]
142
-
143
- with open("users.json", "w") as f:
144
- json.dump(users_data, f)
145
-
146
- # Configuration does not need a 'type' key for direct instantiation
147
- config = {
148
- "file_path": "users.json",
149
- "lookup_key": "id",
150
- "cache_ttl_seconds": 1800
151
- }
152
-
153
- # Instantiate the class directly
154
- local_service = LocalFileIdentityService(config)
155
- print("LocalFileIdentityService created directly")
156
-
157
- # Get user profile by ID
158
- auth_claims = {"id": "jdoe"}
159
- profile = await local_service.get_user_profile(auth_claims)
160
- print(f"User profile: {profile}")
161
-
162
- # Search for users
163
- results = await local_service.search_users("jane", limit=5)
164
- print(f"Search results: {results}")
165
-
166
- asyncio.run(main())
167
- ```
168
-
169
- ### 3. Creating Custom Service Providers
170
- To create your own service provider, inherit from the appropriate base class and implement all abstract methods.
171
-
172
- **Example: Custom Employee Service Provider**
173
-
174
- ```python
175
- import pandas as pd
176
- from typing import Any, Dict, List, Optional
177
- from solace_agent_mesh.common.services.employee_service import BaseEmployeeService
178
-
179
- class CustomEmployeeService(BaseEmployeeService):
180
- """Custom employee service that connects to your HR system."""
181
-
182
- def __init__(self, config: Dict[str, Any]):
183
- super().__init__(config)
184
- self.api_endpoint = config.get("api_endpoint")
185
- self.api_key = config.get("api_key")
186
-
187
- async def get_employee_dataframe(self) -> pd.DataFrame:
188
- """Fetch all employees and return as DataFrame."""
189
- # Your implementation here
190
- # This should return a DataFrame with canonical schema columns:
191
- # id, displayName, workEmail, jobTitle, department, location, supervisorId, hireDate, mobilePhone
192
- employees_data = [
193
- {
194
- "id": "jdoe@company.com",
195
- "displayName": "Jane Doe",
196
- "workEmail": "jdoe@company.com",
197
- "jobTitle": "Software Engineer",
198
- "department": "Engineering",
199
- "location": "San Francisco",
200
- "supervisorId": "manager@company.com",
201
- "hireDate": "2023-01-15",
202
- "mobilePhone": "+1-555-0123"
203
- }
204
- ]
205
- return pd.DataFrame(employees_data)
206
-
207
- async def get_employee_profile(self, employee_id: str) -> Optional[Dict[str, Any]]:
208
- """Get single employee profile."""
209
- # Your implementation here
210
- return {
211
- "id": employee_id,
212
- "displayName": "Jane Doe",
213
- "workEmail": employee_id,
214
- "jobTitle": "Software Engineer"
215
- }
216
-
217
- async def get_time_off_data(self, employee_id: str) -> List[Dict[str, Any]]:
218
- """Get employee time off data."""
219
- # Your implementation here
220
- return [
221
- {
222
- 'start': '2025-07-04',
223
- 'end': '2025-07-04',
224
- 'type': 'Holiday',
225
- 'amount': 'full_day'
226
- }
227
- ]
228
-
229
- async def get_employee_profile_picture(self, employee_id: str) -> Optional[str]:
230
- """Get employee profile picture as data URI."""
231
- # Your implementation here
232
- return None # or return "data:image/jpeg;base64,..."
233
-
234
- # Usage
235
- async def use_custom_service():
236
- config = {
237
- "api_endpoint": "https://your-hr-api.com",
238
- "api_key": "your-api-key",
239
- "cache_ttl_seconds": 3600
240
- }
241
-
242
- service = CustomEmployeeService(config)
243
- profile = await service.get_employee_profile("jdoe@company.com")
244
- print(f"Custom service profile: {profile}")
245
- ```
246
-
247
- ### 4. Working with Both Services Together
248
- Often you'll want to use both identity and employee services together for comprehensive user information.
249
-
250
- **Example: Combined Service Usage**
251
-
252
- ```python
253
- import asyncio
254
- from solace_agent_mesh.common.services.identity_service import create_identity_service
255
- from solace_agent_mesh.common.services.employee_service import create_employee_service
256
-
257
- async def get_complete_user_info(user_email: str):
258
- """Get comprehensive user information from both services."""
259
-
260
- # Configure services
261
- identity_config = {
262
- "type": "local_file",
263
- "file_path": "users.json",
264
- "lookup_key": "email"
265
- }
266
-
267
- employee_config = {
268
- "type": "your_hr_plugin",
269
- "api_key": "your-key"
270
- }
271
-
272
- # Create services
273
- identity_service = create_identity_service(identity_config)
274
- employee_service = create_employee_service(employee_config)
275
-
276
- # Gather information
277
- user_info = {}
278
-
279
- if identity_service:
280
- auth_claims = {"email": user_email}
281
- identity_profile = await identity_service.get_user_profile(auth_claims)
282
- if identity_profile:
283
- user_info.update(identity_profile)
284
-
285
- if employee_service:
286
- employee_profile = await employee_service.get_employee_profile(user_email)
287
- if employee_profile:
288
- user_info.update(employee_profile)
289
-
290
- # Get additional employee data
291
- time_off = await employee_service.get_time_off_data(user_email)
292
- user_info["time_off"] = time_off
293
-
294
- profile_pic = await employee_service.get_employee_profile_picture(user_email)
295
- if profile_pic:
296
- user_info["profile_picture"] = profile_pic
297
-
298
- return user_info
299
-
300
- # Usage
301
- async def main():
302
- complete_info = await get_complete_user_info("jane.doe@example.com")
303
- print(f"Complete user information: {complete_info}")
304
-
305
- asyncio.run(main())
306
- ```
307
-
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.
310
-
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
- ### 6. Advanced Usage: Custom Identity Service with Component Integration
362
-
363
- ```python
364
- import asyncio
365
- from typing import Any, Dict, List, Optional
366
- from solace_agent
367
-
368
- # content_hash: 4532aa73f5067694fc253bc1875f79148f7b8778d1d46680c423d2b3da8456e6