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,572 +0,0 @@
1
- # LLM Summary Detail File
2
-
3
- This file is a concatenation of all individual *llm.txt files found in the 'utils' directory tree. Each section below corresponds to a specific directory's summary file.
4
-
5
- ================================================================================
6
-
7
- ## Section 1: solace_agent_mesh/common/utils/embeds/embeds_llm.txt
8
-
9
- **Source file:** `solace_agent_mesh/common/utils/embeds/embeds_llm.txt`
10
-
11
- # DEVELOPER GUIDE: embeds
12
-
13
- ## Quick Summary
14
- The `embeds` directory provides a comprehensive system for finding, parsing, and resolving embedded expressions within strings. These expressions use `«...»` syntax and can represent dynamic values like mathematical calculations, datetimes, UUIDs, or content from stored artifacts. The system supports multi-step data transformation pipelines, recursive embed resolution, and includes safety features like depth and size limits. It's designed as a core component for dynamic content generation and data processing in agent workflows.
15
-
16
- ## Files Overview
17
- - `__init__.py` - Main public entry point exporting key functions and constants
18
- - `constants.py` - Defines embed syntax (delimiters, separators), regex patterns, and type classifications
19
- - `converter.py` - Data format conversion and serialization functions
20
- - `evaluators.py` - Specific evaluation logic for simple embed types (math, datetime, uuid, etc.)
21
- - `modifiers.py` - Data transformation functions that can be chained together (jsonpath, slice, grep, etc.)
22
- - `resolver.py` - Core orchestration engine handling embed resolution, modifier chains, and recursion
23
- - `types.py` - DataFormat enum for tracking data types during transformations
24
-
25
- ## Developer API Reference
26
-
27
- ### __init__.py
28
- **Purpose:** Main public entry point that exports the most commonly used functions and constants from other modules.
29
-
30
- **Import:** `from solace_agent_mesh.common.utils.embeds import resolve_embeds_recursively_in_string, evaluate_embed, EMBED_REGEX`
31
-
32
- **Functions:**
33
- - `evaluate_embed(embed_type: str, expression: str, format_spec: Optional[str], context: Dict[str, Any], log_identifier: str, config: Optional[Dict] = None, current_depth: int = 0, visited_artifacts: Optional[Set[Tuple[str, int]]] = None) -> Union[Tuple[str, Optional[str], int], Tuple[None, str, Any]]` - Evaluates a single parsed embed expression
34
- - `resolve_embeds_in_string(text: str, context: Any, resolver_func: Callable, types_to_resolve: Set[str], log_identifier: str = "[EmbedUtil]", config: Optional[Dict[str, Any]] = None) -> Tuple[str, int, List[Tuple[int, Any]]]` - Resolves embeds in a string for a single pass (non-recursive)
35
- - `resolve_embeds_recursively_in_string(text: str, context: Any, resolver_func: Callable, types_to_resolve: Set[str], log_identifier: str, config: Optional[Dict], max_depth: int, current_depth: int = 0, visited_artifacts: Optional[Set[Tuple[str, int]]] = None, accumulated_size: int = 0, max_total_size: int = -1) -> str` - Recursively resolves all embeds in a string with depth and size limits
36
-
37
- **Constants/Variables:**
38
- - `EMBED_DELIMITER_OPEN: str` - Opening delimiter (`«`)
39
- - `EMBED_DELIMITER_CLOSE: str` - Closing delimiter (`»`)
40
- - `EMBED_TYPE_SEPARATOR: str` - Type/expression separator (`:`)
41
- - `EMBED_FORMAT_SEPARATOR: str` - Format specifier separator (`|`)
42
- - `EMBED_CHAIN_DELIMITER: str` - Modifier chain separator (`>>>`)
43
- - `EMBED_REGEX: re.Pattern` - Compiled regex for finding embeds
44
- - `EARLY_EMBED_TYPES: Set[str]` - Types resolved in initial pass
45
- - `LATE_EMBED_TYPES: Set[str]` - Types resolved in subsequent pass
46
-
47
- **Usage Examples:**
48
- ```python
49
- from solace_agent_mesh.common.utils.embeds import resolve_embeds_recursively_in_string, evaluate_embed, EMBED_REGEX
50
-
51
- # Basic embed resolution
52
- context = {
53
- "artifact_service": my_artifact_service,
54
- "session_context": {"app_name": "myapp", "user_id": "user123", "session_id": "sess456"}
55
- }
56
-
57
- text = "The result is «math:10 * 1.15 | .2f» and ID is «uuid:new»"
58
- resolved = await resolve_embeds_recursively_in_string(
59
- text=text,
60
- context=context,
61
- resolver_func=evaluate_embed,
62
- types_to_resolve={"math", "uuid"},
63
- log_identifier="[MyApp]",
64
- config={},
65
- max_depth=5
66
- )
67
- ```
68
-
69
- ### constants.py
70
- **Purpose:** Defines all static constants governing embed syntax and classification.
71
-
72
- **Import:** `from solace_agent_mesh.common.utils.embeds.constants import EMBED_REGEX, EARLY_EMBED_TYPES`
73
-
74
- **Constants/Variables:**
75
- - `EMBED_DELIMITER_OPEN: str` - Opening delimiter (`«`)
76
- - `EMBED_DELIMITER_CLOSE: str` - Closing delimiter (`»`)
77
- - `EMBED_TYPE_SEPARATOR: str` - Type/expression separator (`:`)
78
- - `EMBED_FORMAT_SEPARATOR: str` - Format specifier separator (`|`)
79
- - `EMBED_CHAIN_DELIMITER: str` - Modifier chain separator (`>>>`)
80
- - `EMBED_REGEX: re.Pattern` - Compiled regex with capture groups for type, expression, and format
81
- - `EARLY_EMBED_TYPES: Set[str]` - Simple embed types resolved first (`math`, `datetime`, `uuid`, `artifact_meta`, `status_update`)
82
- - `LATE_EMBED_TYPES: Set[str]` - Complex embed types resolved later (`artifact_content`)
83
- - `TEXT_CONTAINER_MIME_TYPES: Set[str]` - MIME types considered text-based
84
-
85
- **Usage Examples:**
86
- ```python
87
- from solace_agent_mesh.common.utils.embeds.constants import EMBED_REGEX
88
-
89
- text = "Price: «math:10 * 1.15 | .2f» ID: «uuid:new»"
90
- for match in EMBED_REGEX.finditer(text):
91
- embed_type = match.group(1) # "math" or "uuid"
92
- expression = match.group(2) # "10 * 1.15 " or "new"
93
- format_spec = match.group(3) # " .2f" or None
94
- print(f"Type: {embed_type}, Expr: '{expression}', Format: '{format_spec}'")
95
- ```
96
-
97
- ### converter.py
98
- **Purpose:** Provides data conversion between different formats and serialization to final string representations.
99
-
100
- **Import:** `from solace_agent_mesh.common.utils.embeds.converter import convert_data, serialize_data`
101
-
102
- **Functions:**
103
- - `convert_data(current_data: Any, current_format: Optional[DataFormat], target_format: DataFormat, log_id: str = "[Converter]", original_mime_type: Optional[str] = None) -> Tuple[Any, DataFormat, Optional[str]]` - Converts data between DataFormat types using MIME type hints
104
- - `serialize_data(data: Any, data_format: Optional[DataFormat], target_string_format: Optional[str], original_mime_type: Optional[str], log_id: str = "[Serializer]") -> Tuple[str, Optional[str]]` - Serializes data to final string format (text, json, csv, datauri, or Python format specs)
105
-
106
- **Usage Examples:**
107
- ```python
108
- from solace_agent_mesh.common.utils.embeds.converter import convert_data, serialize_data
109
- from solace_agent_mesh.common.utils.embeds.types import DataFormat
110
-
111
- # Convert CSV bytes to list of dictionaries
112
- csv_bytes = b"id,name\n1,Alice\n2,Bob"
113
- list_data, new_format, err = convert_data(
114
- current_data=csv_bytes,
115
- current_format=DataFormat.BYTES,
116
- target_format=DataFormat.LIST_OF_DICTS,
117
- original_mime_type="text/csv"
118
- )
119
-
120
- # Serialize to pretty JSON
121
- json_str, err = serialize_data(
122
- data=list_data,
123
- data_format=DataFormat.LIST_OF_DICTS,
124
- target_string_format="json_pretty",
125
- original_mime_type=None
126
- )
127
- ```
128
-
129
- ### evaluators.py
130
- **Purpose:** Contains evaluation logic for simple embed types and the evaluator registry.
131
-
132
- **Import:** `from solace_agent_mesh.common.utils.embeds.evaluators import EMBED_EVALUATORS`
133
-
134
- **Functions:**
135
- - `_evaluate_math_embed(expression: str, context: Any, log_identifier: str, format_spec: Optional[str] = None) -> Tuple[str, Optional[str], int]` - Evaluates mathematical expressions using asteval
136
- - `_evaluate_datetime_embed(expression: str, context: Any, log_identifier: str, format_spec: Optional[str] = None) -> Tuple[str, Optional[str], int]` - Formats current datetime
137
- - `_evaluate_uuid_embed(expression: str, context: Any, log_identifier: str, format_spec: Optional[str] = None) -> Tuple[str, Optional[str], int]` - Generates UUID4 strings
138
- - `_evaluate_artifact_meta_embed(expression: str, context: Dict[str, Any], log_identifier: str, format_spec: Optional[str] = None) -> Tuple[str, Optional[str], int]` - Loads and formats artifact metadata
139
- - `_evaluate_artifact_content_embed(expression: str, context: Any, log_identifier: str, config: Optional[Dict] = None) -> Tuple[Optional[bytes], Optional[str], Optional[str]]` - Loads raw artifact content
140
-
141
- **Constants/Variables:**
142
- - `EMBED_EVALUATORS: Dict[str, Callable]` - Registry mapping embed types to evaluator functions
143
- - `MATH_SAFE_SYMBOLS: Dict[str, Any]` - Safe mathematical functions and constants for math embeds
144
-
145
- **Usage Examples:**
146
- ```python
147
- from solace_agent_mesh.common.utils.embeds.evaluators import EMBED_EVALUATORS
148
-
149
- # Math evaluation
150
- result, error, size = EMBED_EVALUATORS["math"]("2 + 3 * 4", {}, "[Test]", ".2f")
151
- # result: "14.00", error: None, size: 5
152
-
153
- # DateTime formatting
154
- result, error, size = EMBED_EVALUATORS["datetime"]("%Y-%m-%d", {}, "[Test]")
155
- # result: "2024-01-15", error: None, size: 10
156
- ```
157
-
158
- ### modifiers.py
159
- **Purpose:** Implements data transformation functions that can be chained together in artifact_content embeds.
160
-
161
- **Import:** `from solace_agent_mesh.common.utils.embeds.modifiers import MODIFIER_DEFINITIONS, _parse_modifier_chain`
162
-
163
- **Functions:**
164
- - `_apply_jsonpath(current_data: Any, expression: str, mime_type: Optional[str], log_id: str) -> Tuple[Any, Optional[str], Optional[str]]` - Applies JSONPath expressions to JSON data
165
- - `_apply_select_cols(current_data: List[Dict], cols_str: str, mime_type: Optional[str], log_id: str) -> Tuple[Any, Optional[str], Optional[str]]` - Selects specific columns from tabular data
166
- - `_apply_filter_rows_eq(current_data: List[Dict], filter_spec: str, mime_type: Optional[str], log_id: str) -> Tuple[Any, Optional[str], Optional[str]]` - Filters rows by column value equality
167
- - `_apply_slice_rows(current_data: List[Dict], slice_spec: str, mime_type: Optional[str], log_id: str) -> Tuple[Any, Optional[str], Optional[str]]` - Slices rows using Python slice notation
168
- - `_apply_slice_lines(current_data: str, slice_spec: str, mime_type: Optional[str], log_id: str) -> Tuple[Any, Optional[str], Optional[str]]` - Slices text lines
169
- - `_apply_grep(current_data: str, pattern: str, mime_type: Optional[str], log_id: str) -> Tuple[Any, Optional[str], Optional[str]]` - Filters lines matching regex pattern
170
- - `_apply_head(current_data: str, n_str: str, mime_type: Optional[str], log_id: str) -> Tuple[Any, Optional[str], Optional[str]]` - Returns first N lines
171
- - `_apply_tail(current_data: str, n_str: str, mime_type: Optional[str], log_id: str) -> Tuple[Any, Optional[str], Optional[str]]` - Returns last N lines
172
- - `_apply_template(current_data: Any, template_spec: str, mime_type: Optional[str], log_id: str, context: Any) -> Tuple[Any, Optional[str], Optional[str]]` - Applies Mustache templates from artifacts
173
- - `_parse_modifier_chain(expression: str) -> Tuple[str, List[Tuple[str, str]], Optional[str]]` - Parses artifact_content expression into components
174
-
175
- **Constants/Variables:**
176
- - `MODIFIER_IMPLEMENTATIONS: Dict[str, Callable]` - Registry of modifier functions
177
- - `MODIFIER_DEFINITIONS: Dict[str, Dict[str, Any]]` - Modifier metadata including accepted/produced formats
178
-
179
- **Usage Examples:**
180
- ```python
181
- from solace_agent_mesh.common.utils.embeds.modifiers import _parse_modifier_chain
182
-
183
- # Parse a complex artifact_content expression
184
- expression = "data.csv:1 >>> select_cols:name,age >>> filter_rows_eq:age:25 >>> format:json"
185
- artifact_spec, modifiers, output_format = _parse_modifier_chain(expression)
186
- # artifact_spec: "data.csv:1"
187
- # modifiers: [("select_cols", "name,age"), ("filter_rows_eq", "age:25")]
188
- # output_format: "json"
189
- ```
190
-
191
- ### resolver.py
192
- **Purpose:** Core orchestration engine that handles the complete embed resolution process including modifier chains and recursion.
193
-
194
- **Import:** `from solace_agent_mesh.common.utils.embeds.resolver import resolve_embeds_in_string, evaluate_embed`
195
-
196
- **Functions:**
197
- - `resolve_embeds_in_string(text: str, context: Any, resolver_func: Callable, types_to_resolve: Set[str], log_identifier: str = "[EmbedUtil]", config: Optional[Dict[str, Any]] = None) -> Tuple[str, int, List[Tuple[int, Any]]]` - Single-pass embed resolution with buffering support
198
- - `resolve_embeds_recursively_in_string(text: str, context: Any, resolver_func: Callable, types_to_resolve: Set[str], log_identifier: str, config: Optional[Dict], max_depth: int, current_depth: int = 0, visited_artifacts: Optional[Set[Tuple[str, int]]] = None, accumulated_size: int = 0, max_total_size: int = -1) -> str` - Recursive embed resolution with safety limits
199
- - `evaluate_embed(embed_type: str, expression: str, format_spec: Optional[str], context: Dict[str, Any], log_identifier: str, config: Optional[Dict] = None, current_depth: int = 0, visited_artifacts: Optional[Set[Tuple[str, int]]] = None) -> Union[Tuple[str, Optional[str], int], Tuple[None, str, Any]]` - Main embed evaluation dispatcher
200
-
201
- **Usage Examples:**
202
- ```python
203
- from solace_agent_mesh.common.utils.embeds.resolver import resolve_embeds_in_string, evaluate_embed
204
-
205
- # Single-pass resolution
206
- text = "Result: «math:2+3» and «uuid:new»"
207
- context = {"artifact_service": service, "session_context": session_ctx}
208
-
209
- resolved_text, processed_index, signals = await resolve_embeds_in_string(
210
- text=text,
211
- context=context,
212
- resolver_func=evaluate_embed,
213
- types_to_resolve={"math", "uuid"},
214
- log_identifier="[MyApp]",
215
- config={}
216
- )
217
-
218
- # Complex artifact content with modifiers
219
- result, error, size = await evaluate_embed(
220
- embed_type="artifact_content",
221
- expression="sales.csv >>> select_cols:product,revenue >>> format:json",
222
- format_spec=None,
223
- context=context,
224
- log_identifier="[Sales]"
225
- )
226
- ```
227
-
228
- ### types.py
229
-
230
- ================================================================================
231
-
232
- ## Section 2: solace_agent_mesh/common/utils/utils_llm.txt
233
-
234
- **Source file:** `solace_agent_mesh/common/utils/utils_llm.txt`
235
-
236
- ## Quick Summary
237
- The `utils` directory provides essential utility functions and tools for the Solace Agent Mesh system. It contains both direct utility files for common operations (MIME type handling, caching, message validation, authentication) and a sophisticated `embeds` subdirectory that implements a dynamic expression evaluation system. The utilities work together to provide platform compatibility, security features, data processing capabilities, and dynamic content generation for agent workflows.
238
-
239
- ## Files and Subdirectories Overview
240
-
241
- ### Direct Files:
242
- - **`__init__.py`** - Main entry point exporting commonly used utilities like MIME type checking
243
- - **`artifact_utils.py`** - Utilities for working with ADK artifacts, including version resolution
244
- - **`asyncio_macos_fix.py`** - Automatic fix for asyncio subprocess issues on macOS
245
- - **`in_memory_cache.py`** - Thread-safe singleton cache with TTL support
246
- - **`initializer.py`** - Enterprise feature initialization and configuration loading
247
- - **`log_formatters.py`** - Custom logging formatters for platforms like Datadog
248
- - **`message_utils.py`** - Message size calculation and validation utilities
249
- - **`mime_helpers.py`** - MIME type classification and file extension utilities
250
- - **`push_notification_auth.py`** - JWT-based authentication for push notifications
251
- - **`pydantic_utils.py`** - Pydantic BaseModel with dict-like access for configuration
252
- - **`type_utils.py`** - Robust type checking utilities for development environments
253
-
254
- ### Subdirectories:
255
- - **`embeds/`** - Dynamic expression evaluation system using `«...»` syntax for mathematical calculations, datetime formatting, UUID generation, and artifact content processing
256
-
257
- ## Developer API Reference
258
-
259
- ### Direct Files
260
-
261
- #### __init__.py
262
- **Purpose:** Main entry point for the utils package, exporting the most commonly used utility functions
263
- **Import:** `from solace_agent_mesh.common.utils import is_text_based_mime_type`
264
-
265
- **Functions:**
266
- - `is_text_based_mime_type(mime_type: Optional[str]) -> bool` - Checks if a MIME type represents text-based content
267
-
268
- #### artifact_utils.py
269
- **Purpose:** Common utility functions for working with ADK artifacts
270
- **Import:** `from solace_agent_mesh.common.utils.artifact_utils import get_latest_artifact_version`
271
-
272
- **Functions:**
273
- - `get_latest_artifact_version(artifact_service: BaseArtifactService, app_name: str, user_id: str, session_id: str, filename: str) -> Optional[int]` - Resolves the latest version number for a given artifact
274
-
275
- #### asyncio_macos_fix.py
276
- **Purpose:** Automatic fix for asyncio subprocess creation issues on macOS (imported for side effects)
277
- **Import:** `from solace_agent_mesh.common.utils import asyncio_macos_fix`
278
-
279
- **Functions:**
280
- - `apply_macos_asyncio_fix() -> bool` - Applies the asyncio fix for macOS subprocess support
281
- - `ensure_asyncio_compatibility() -> bool` - Ensures asyncio compatibility for subprocess creation
282
-
283
- #### in_memory_cache.py
284
- **Purpose:** Thread-safe singleton in-memory cache with TTL support
285
- **Import:** `from solace_agent_mesh.common.utils.in_memory_cache import InMemoryCache`
286
-
287
- **Classes:**
288
- - **`InMemoryCache`** - Singleton cache class
289
- - `set(key: str, value: Any, ttl: Optional[int] = None) -> None` - Store value with optional TTL
290
- - `get(key: str, default: Any = None) -> Any` - Retrieve value or default
291
- - `delete(key: str) -> bool` - Delete specific key
292
- - `clear() -> bool` - Clear all cached data
293
-
294
- #### initializer.py
295
- **Purpose:** Handles initialization of enterprise features if available
296
- **Import:** `from solace_agent_mesh.common.utils.initializer import initialize`
297
-
298
- **Functions:**
299
- - `initialize() -> None` - Initializes enterprise features using SAM_AUTHORIZATION_CONFIG environment variable
300
-
301
- #### log_formatters.py
302
- **Purpose:** Custom logging formatters for structured output
303
- **Import:** `from solace_agent_mesh.common.utils.log_formatters import DatadogJsonFormatter`
304
-
305
- **Classes:**
306
- - **`DatadogJsonFormatter(logging.Formatter)`** - JSON formatter with Datadog-compatible attributes including trace IDs
307
-
308
- #### message_utils.py
309
- **Purpose:** Message size calculation and validation utilities
310
- **Import:** `from solace_agent_mesh.common.utils.message_utils import calculate_message_size, validate_message_size`
311
-
312
- **Functions:**
313
- - `calculate_message_size(payload: Dict[str, Any]) -> int` - Calculate exact message size using JSON + UTF-8 encoding
314
- - `validate_message_size(payload: Dict[str, Any], max_size_bytes: int, component_identifier: str = "Unknown") -> Tuple[bool, int]` - Validate message doesn't exceed size limits
315
-
316
- **Constants:**
317
- - `MAX_UTF8_BYTES_PER_CHARACTER: int` - Maximum UTF-8 bytes per character (4)
318
-
319
- #### mime_helpers.py
320
- **Purpose:** MIME type classification and file extension utilities
321
- **Import:** `from solace_agent_mesh.common.utils.mime_helpers import is_text_based_mime_type, get_extension_for_mime_type, is_text_based_file`
322
-
323
- **Functions:**
324
- - `is_text_based_mime_type(mime_type: Optional[str]) -> bool` - Check if MIME type is text-based
325
- - `is_text_based_file(mime_type: Optional[str], content_bytes: Optional[bytes] = None) -> bool` - Determine if file is text-based using MIME type and content analysis
326
- - `get_extension_for_mime_type(mime_type: Optional[str], default_extension: str = ".dat") -> str` - Get file extension for MIME type
327
-
328
- **Constants:**
329
- - `TEXT_CONTAINER_MIME_TYPES: Set[str]` - Set of non-text/* MIME types that contain text
330
-
331
- #### push_notification_auth.py
332
- **Purpose:** JWT-based authentication for push notifications with request integrity verification
333
- **Import:** `from solace_agent_mesh.common.utils.push_notification_auth import PushNotificationSenderAuth, PushNotificationReceiverAuth`
334
-
335
- **Classes:**
336
- - **`PushNotificationSenderAuth`** - Handles sending authenticated notifications
337
- - `generate_jwk() -> None` - Generate RSA key pair for signing
338
- - `handle_jwks_endpoint(request: Request) -> JSONResponse` - Serve public keys endpoint
339
- - `send_push_notification(url: str, data: dict[str, Any]) -> None` - Send authenticated notification
340
- - `verify_push_notification_url(url: str) -> bool` - Verify notification URL
341
- - **`PushNotificationReceiverAuth`** - Handles receiving and verifying notifications
342
- - `load_jwks(jwks_url: str) -> None` - Load public keys from JWKS endpoint
343
- - `verify_push_notification(request: Request) -> bool` - Verify notification authenticity
344
-
345
- #### pydantic_utils.py
346
- **Purpose:** Provides a Pydantic BaseModel for SAM configuration with dict-like access
347
- **Import:** `from solace_agent_mesh.common.utils.pydantic_utils import SamConfigBase`
348
-
349
- **Classes:**
350
- - **`SamConfigBase(BaseModel)`** - Pydantic BaseModel with dict-like access
351
- - `model_validate_and_clean(cls: Type[T], obj: Any) -> T` - Validates dict after removing None values
352
- - `get(key: str, default: Any = None) -> Any` - Dict-like .get() method
353
- - `__getitem__(key: str) -> Any` - Dict-like ['key'] access
354
- - `__setitem__(key: str, value: Any)` - Dict-like ['key'] = value assignment
355
- - `__contains__(key: str) -> bool` - Dict-like 'in' support
356
- - `keys()`, `values()`, `items()`, `__iter__()` - Dict-like iteration methods
357
-
358
- #### type_utils.py
359
- **Purpose:** Utilities for robust type checking, especially in development environments
360
- **Import:** `from solace_agent_mesh.common.utils.type_utils import is_subclass_by_name`
361
-
362
- **Functions:**
363
- - `is_subclass_by_name(cls_to_check: type, base_class_name: str) -> bool` - Checks if a class is a subclass by looking for the base class name in the MRO
364
-
365
- ### Subdirectory APIs
366
-
367
- #### embeds/
368
- **Purpose:** Comprehensive dynamic expression evaluation system using `«...»` syntax for mathematical calculations, datetime formatting, UUID generation, and artifact content processing with transformation pipelines
369
- **Key Exports:** Main resolution functions, evaluator registry, modifier system, and type constants
370
- **Import Examples:**
371
- ```python
372
- from solace_agent_mesh.common.utils.embeds import resolve_embeds_recursively_in_string, evaluate_embed, EMBED_REGEX
373
- from solace_agent_mesh.common.utils.embeds.constants import EARLY_EMBED_TYPES, LATE_EMBED_TYPES
374
- from solace_agent_mesh.common.utils.embeds.types import DataFormat
375
- ```
376
-
377
- ## Complete Usage Guide
378
-
379
- ### 1. Basic Utility Operations
380
-
381
- ```python
382
- # Import commonly used utilities
383
- from solace_agent_mesh.common.utils import is_text_based_mime_type
384
- from solace_agent_mesh.common.utils.in_memory_cache import InMemoryCache
385
- from solace_agent_mesh.common.utils.message_utils import validate_message_size, calculate_message_size
386
- from solace_agent_mesh.common.utils.mime_helpers import get_extension_for_mime_type, is_text_based_file
387
-
388
- # MIME type checking
389
- if is_text_based_mime_type("application/json"):
390
- print("JSON is text-based")
391
-
392
- # File analysis with content
393
- with open("data.bin", "rb") as f:
394
- content = f.read()
395
- if is_text_based_file("application/octet-stream", content):
396
- print("File contains text despite binary MIME type")
397
-
398
- # Singleton cache usage
399
- cache = InMemoryCache()
400
- cache.set("user_session", {"user_id": "123", "role": "admin"}, ttl=3600) # 1 hour TTL
401
- session_data = cache.get("user_session", {})
402
-
403
- # Message size validation
404
- payload = {"message": "Hello world", "data": [1, 2, 3], "metadata": {"timestamp": "2024-01-15"}}
405
- is_valid, size = validate_message_size(payload, max_size_bytes=1024, component_identifier="MessageProcessor")
406
- if not is_valid:
407
- print(f"Message too large: {size} bytes exceeds 1024 byte limit")
408
-
409
- # Get appropriate file extension
410
- extension = get_extension_for_mime_type("image/png") # Returns ".png"
411
- filename = f"image_{uuid.uuid4()}{extension}"
412
- ```
413
-
414
- ### 2. Configuration and Type Utilities
415
-
416
- ```python
417
- from solace_agent_mesh.common.utils.pydantic_utils import SamConfigBase
418
- from solace_agent_mesh.common.utils.type_utils import is_subclass_by_name
419
- from pydantic import Field
420
- from typing import Optional
421
-
422
- # Define configuration with Pydantic validation and dict-like access
423
- class AgentConfig(SamConfigBase):
424
- name: str
425
- timeout: int = 30
426
- debug: bool = False
427
- api_key: Optional[str] = None
428
-
429
- # Load config from YAML/dict with None value cleaning
430
- config_dict = {
431
- "name": "my_agent",
432
- "timeout": None, # Will use default value of 30
433
- "debug": True,
434
- "api_key": None # Will use default value of None
435
- }
436
-
437
- config = AgentConfig.model_validate_and_clean(config_dict)
438
-
439
- # Use both Pydantic and dict-style access
440
- print(config.name) # Pydantic style: "my_agent"
441
- print(config["timeout"]) # Dict style: 30 (default applied)
442
- print(config.get("debug", False)) # Dict .get(): True
443
-
444
- # Check if field was explicitly set
445
- if "api_key" in config:
446
- print("API key was provided")
447
- else:
448
- print("API key not provided, using default")
449
-
450
- # Robust type checking for development
451
- class BaseAgent:
452
- pass
453
-
454
- class MyAgent(BaseAgent):
455
- pass
456
-
457
- # This works even if BaseAgent is loaded from different paths
458
- if is_subclass_by_name(MyAgent, "BaseAgent"):
459
- print("MyAgent is a BaseAgent subclass")
460
- ```
461
-
462
- ### 3. Platform Compatibility and System Initialization
463
-
464
- ```python
465
- # Early in application startup - import for side effects
466
- from solace_agent_mesh.common.utils import asyncio_macos_fix # Auto-applies macOS fix
467
- from solace_agent_mesh.common.utils.initializer import initialize
468
-
469
- # Initialize enterprise features if available
470
- try:
471
- initialize()
472
- print("Enterprise features initialized")
473
- except Exception as e:
474
- print(f"Running in community mode: {e}")
475
-
476
- # Now asyncio subprocess creation works reliably on macOS
477
- import asyncio
478
-
479
- async def run_command(cmd: str):
480
- process = await asyncio.create_subprocess_exec(
481
- *cmd.split(),
482
- stdout=asyncio.subprocess.PIPE,
483
- stderr=asyncio.subprocess.PIPE
484
- )
485
- stdout, stderr = await process.communicate()
486
- return stdout.decode(), stderr.decode(), process.returncode
487
-
488
- # This will work on macOS without NotImplementedError
489
- result = await run_command("echo Hello World")
490
- ```
491
-
492
- ### 4. Structured Logging Setup
493
-
494
- ```python
495
- import logging
496
- import os
497
- from solace_agent_mesh.common.utils.log_formatters import DatadogJsonFormatter
498
-
499
- # Configure structured JSON logging
500
- logger = logging.getLogger("my_application")
501
- handler = logging.StreamHandler()
502
- handler.setFormatter(DatadogJsonFormatter())
503
- logger.addHandler(handler)
504
- logger.setLevel(logging.INFO)
505
-
506
- # Set service name for Datadog
507
- os.environ["SERVICE_NAME"] = "my_agent_service"
508
-
509
- # Log with structured data - automatically includes trace IDs if available
510
- logger.info("User action completed", extra={
511
- "user_id": "user123",
512
- "action": "file_upload",
513
- "file_size": 1024,
514
- "dd.trace_id": "abc123" # Will be included in JSON output
515
- })
516
-
517
- # Output will be JSON with timestamp, level, service, code location, etc.
518
- ```
519
-
520
- ### 5. Secure Push Notification System
521
-
522
- ```python
523
- from solace_agent_mesh.common.utils.push_notification_auth import (
524
- PushNotificationSenderAuth,
525
- PushNotificationReceiverAuth
526
- )
527
- from starlette.applications import Starlette
528
- from starlette.requests import Request
529
- from starlette.responses import Response, JSONResponse
530
-
531
- # Sender setup and usage
532
- sender_auth = PushNotificationSenderAuth()
533
- sender_auth.generate_jwk() # Generate RSA key pair
534
-
535
- async def notify_clients(event_data: dict):
536
- client_urls = ["https://client1.example.com/webhook", "https://client2.example.com/webhook"]
537
-
538
- for url in client_urls:
539
- # Verify URL accepts notifications
540
- if await sender_auth.verify_push_notification_url(url):
541
- # Send authenticated notification
542
- await sender_auth.send_push_notification(url, {
543
- "event": "data_updated",
544
- "timestamp": "2024-01-15T10:30:00Z",
545
- "data": event_data
546
- })
547
- else:
548
- print(f"Failed to verify URL: {url}")
549
-
550
- # Receiver setup
551
- app = Starlette()
552
- receiver_auth = PushNotificationReceiverAuth()
553
-
554
- # Load sender's public keys
555
- await receiver_auth.load_jwks("https://sender.example.com/.well-known/jwks.json")
556
-
557
- @app.route("/webhook", methods=["POST"])
558
- async def webhook_handler(request: Request):
559
- try:
560
- # Verify JWT signature and request integrity
561
- if await receiver_auth.verify_push_notification(request):
562
- data = await request.json()
563
- # Process authenticated notification
564
- print(f"Received verified notification: {data}")
565
- return Response("OK")
566
- else:
567
- return Response("Unauthorized", status_code=401)
568
- except Exception as e:
569
- print(f"
570
-
571
- ================================================================================
572
-