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,17 +1,11 @@
1
+ from __future__ import annotations
2
+
1
3
  import logging
2
4
  import os
3
5
  from pathlib import Path
4
6
 
5
7
  import httpx
6
8
  import sqlalchemy as sa
7
- from fastapi import FastAPI, HTTPException
8
- from fastapi import Request as FastAPIRequest
9
- from fastapi import status
10
- from typing import TYPE_CHECKING
11
-
12
- import sqlalchemy as sa
13
- from a2a.types import InternalError, JSONRPCError
14
- from a2a.types import JSONRPCResponse as A2AJSONRPCResponse
15
9
  from alembic import command
16
10
  from alembic.config import Config
17
11
  from fastapi import FastAPI, HTTPException
@@ -22,12 +16,14 @@ from fastapi.middleware.cors import CORSMiddleware
22
16
  from fastapi.responses import JSONResponse
23
17
  from starlette.middleware.sessions import SessionMiddleware
24
18
  from starlette.staticfiles import StaticFiles
19
+ from typing import TYPE_CHECKING
20
+
21
+ from a2a.types import InternalError, InvalidRequestError, JSONRPCError
22
+ from a2a.types import JSONRPCResponse as A2AJSONRPCResponse
25
23
 
26
- from .routers.sessions import router as session_router
27
- from .routers.tasks import router as task_router
28
- from .routers.users import router as user_router
29
24
  from ...common import a2a
30
25
  from ...gateway.http_sse import dependencies
26
+ from ...shared.auth.middleware import create_oauth_middleware
31
27
  from .routers import (
32
28
  agent_cards,
33
29
  artifacts,
@@ -46,17 +42,9 @@ from .routers.sessions import router as session_router
46
42
  from .routers.tasks import router as task_router
47
43
  from .routers.users import router as user_router
48
44
 
49
- from alembic import command
50
- from alembic.config import Config
51
-
52
- from a2a.types import InternalError, InvalidRequestError, JSONRPCError
53
- from a2a.types import JSONRPCResponse as A2AJSONRPCResponse
54
- from ...common import a2a
55
- from ...gateway.http_sse import dependencies
56
-
57
45
 
58
46
  if TYPE_CHECKING:
59
- from gateway.http_sse.component import WebUIBackendComponent
47
+ from .component import WebUIBackendComponent
60
48
 
61
49
  log = logging.getLogger(__name__)
62
50
 
@@ -70,333 +58,6 @@ app = FastAPI(
70
58
  _dependencies_initialized = False
71
59
 
72
60
 
73
- def _extract_access_token(request: FastAPIRequest) -> str:
74
- auth_header = request.headers.get("Authorization")
75
- if auth_header and auth_header.startswith("Bearer "):
76
- return auth_header[7:]
77
-
78
- try:
79
- if "access_token" in request.session:
80
- log.debug("AuthMiddleware: Found token in session.")
81
- return request.session["access_token"]
82
- except AssertionError:
83
- log.debug("AuthMiddleware: Could not access request.session.")
84
-
85
- if "token" in request.query_params:
86
- return request.query_params["token"]
87
-
88
- return None
89
-
90
-
91
- async def _validate_token(
92
- auth_service_url: str, auth_provider: str, access_token: str
93
- ) -> bool:
94
- async with httpx.AsyncClient() as client:
95
- validation_response = await client.post(
96
- f"{auth_service_url}/is_token_valid",
97
- json={"provider": auth_provider},
98
- headers={"Authorization": f"Bearer {access_token}"},
99
- )
100
- return validation_response.status_code == 200
101
-
102
-
103
- async def _get_user_info(
104
- auth_service_url: str, auth_provider: str, access_token: str
105
- ) -> dict:
106
- async with httpx.AsyncClient() as client:
107
- userinfo_response = await client.get(
108
- f"{auth_service_url}/user_info?provider={auth_provider}",
109
- headers={"Authorization": f"Bearer {access_token}"},
110
- )
111
-
112
- if userinfo_response.status_code != 200:
113
- return None
114
-
115
- return userinfo_response.json()
116
-
117
-
118
- def _extract_user_identifier(user_info: dict) -> str:
119
- user_identifier = (
120
- user_info.get("sub")
121
- or user_info.get("client_id")
122
- or user_info.get("username")
123
- or user_info.get("oid")
124
- or user_info.get("preferred_username")
125
- or user_info.get("upn")
126
- or user_info.get("unique_name")
127
- or user_info.get("email")
128
- or user_info.get("name")
129
- or user_info.get("azp")
130
- or user_info.get("user_id") # internal /user_info endpoint format maps identifier to user_id
131
- )
132
-
133
- if user_identifier and user_identifier.lower() == "unknown":
134
- log.warning(
135
- "AuthMiddleware: IDP returned 'Unknown' as user identifier. Using fallback."
136
- )
137
- return "sam_dev_user"
138
-
139
- return user_identifier
140
-
141
-
142
- def _extract_user_details(user_info: dict, user_identifier: str) -> tuple:
143
- email_from_auth = (
144
- user_info.get("email")
145
- or user_info.get("preferred_username")
146
- or user_info.get("upn")
147
- or user_identifier
148
- )
149
-
150
- display_name = (
151
- user_info.get("name")
152
- or user_info.get("given_name", "") + " " + user_info.get("family_name", "")
153
- or user_info.get("preferred_username")
154
- or user_identifier
155
- ).strip()
156
-
157
- return email_from_auth, display_name
158
-
159
-
160
- async def _create_user_state_without_identity_service(
161
- user_identifier: str, email_from_auth: str, display_name: str
162
- ) -> dict:
163
- final_user_id = user_identifier or email_from_auth or "sam_dev_user"
164
- if not final_user_id or final_user_id.lower() in ["unknown", "null", "none", ""]:
165
- final_user_id = "sam_dev_user"
166
- log.warning(
167
- "AuthMiddleware: Had to use fallback user ID due to invalid identifier: %s",
168
- user_identifier,
169
- )
170
-
171
- log.debug(
172
- "AuthMiddleware: Internal IdentityService not configured on component. Using user ID: %s",
173
- final_user_id,
174
- )
175
- return {
176
- "id": final_user_id,
177
- "email": email_from_auth or final_user_id,
178
- "name": display_name or final_user_id,
179
- "authenticated": True,
180
- "auth_method": "oidc",
181
- }
182
-
183
-
184
- async def _create_user_state_with_identity_service(
185
- identity_service,
186
- user_identifier: str,
187
- email_from_auth: str,
188
- display_name: str,
189
- user_info: dict,
190
- ) -> dict:
191
- lookup_value = email_from_auth if "@" in email_from_auth else user_identifier
192
- user_profile = await identity_service.get_user_profile(
193
- {identity_service.lookup_key: lookup_value, "user_info": user_info}
194
- )
195
-
196
- if not user_profile:
197
- return None
198
-
199
- user_state = user_profile.copy()
200
- if not user_state.get("id"):
201
- user_state["id"] = user_identifier
202
- if not user_state.get("email"):
203
- user_state["email"] = email_from_auth
204
- if not user_state.get("name"):
205
- user_state["name"] = display_name
206
- user_state["authenticated"] = True
207
- user_state["auth_method"] = "oidc"
208
-
209
- return user_state
210
-
211
-
212
- def _create_auth_middleware(component):
213
- class AuthMiddleware:
214
- def __init__(self, app, component):
215
- self.app = app
216
- self.component = component
217
-
218
- async def __call__(self, scope, receive, send):
219
- if scope["type"] != "http":
220
- await self.app(scope, receive, send)
221
- return
222
-
223
- request = FastAPIRequest(scope, receive)
224
-
225
- if not request.url.path.startswith("/api"):
226
- await self.app(scope, receive, send)
227
- return
228
-
229
- skip_paths = [
230
- "/api/v1/config",
231
- "/api/v1/auth/callback",
232
- "/api/v1/auth/tool/callback",
233
- "/api/v1/auth/login",
234
- "/api/v1/auth/refresh",
235
- "/api/v1/csrf-token",
236
- "/health",
237
- ]
238
-
239
- if any(request.url.path.startswith(path) for path in skip_paths):
240
- await self.app(scope, receive, send)
241
- return
242
-
243
- use_auth = dependencies.api_config and dependencies.api_config.get(
244
- "frontend_use_authorization"
245
- )
246
-
247
- if use_auth:
248
- await self._handle_authenticated_request(request, scope, receive, send)
249
- else:
250
- request.state.user = {
251
- "id": "sam_dev_user",
252
- "name": "Sam Dev User",
253
- "email": "sam@dev.local",
254
- "authenticated": True,
255
- "auth_method": "development",
256
- }
257
- log.debug(
258
- "AuthMiddleware: Set development user state with id: sam_dev_user"
259
- )
260
-
261
- await self.app(scope, receive, send)
262
-
263
- async def _handle_authenticated_request(self, request, scope, receive, send):
264
- access_token = _extract_access_token(request)
265
-
266
- if not access_token:
267
- log.warning("AuthMiddleware: No access token found. Returning 401.")
268
- response = JSONResponse(
269
- status_code=status.HTTP_401_UNAUTHORIZED,
270
- content={
271
- "detail": "Not authenticated",
272
- "error_type": "authentication_required",
273
- },
274
- )
275
- await response(scope, receive, send)
276
- return
277
-
278
- try:
279
- auth_service_url = dependencies.api_config.get(
280
- "external_auth_service_url"
281
- )
282
- auth_provider = dependencies.api_config.get("external_auth_provider")
283
-
284
- if not auth_service_url:
285
- log.error("Auth service URL not configured.")
286
- response = JSONResponse(
287
- status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
288
- content={"detail": "Auth service not configured"},
289
- )
290
- await response(scope, receive, send)
291
- return
292
-
293
- if not await _validate_token(
294
- auth_service_url, auth_provider, access_token
295
- ):
296
- log.warning("AuthMiddleware: Token validation failed")
297
- response = JSONResponse(
298
- status_code=status.HTTP_401_UNAUTHORIZED,
299
- content={
300
- "detail": "Invalid token",
301
- "error_type": "invalid_token",
302
- },
303
- )
304
- await response(scope, receive, send)
305
- return
306
-
307
- user_info = await _get_user_info(
308
- auth_service_url, auth_provider, access_token
309
- )
310
- if not user_info:
311
- log.warning(
312
- "AuthMiddleware: Failed to get user info from external auth service"
313
- )
314
- response = JSONResponse(
315
- status_code=status.HTTP_401_UNAUTHORIZED,
316
- content={
317
- "detail": "Could not retrieve user info from auth provider",
318
- "error_type": "user_info_failed",
319
- },
320
- )
321
- await response(scope, receive, send)
322
- return
323
-
324
- user_identifier = _extract_user_identifier(user_info)
325
- if not user_identifier or user_identifier.lower() in [
326
- "null",
327
- "none",
328
- "",
329
- ]:
330
- log.error(
331
- "AuthMiddleware: No valid user identifier from OAuth provider"
332
- )
333
- response = JSONResponse(
334
- status_code=status.HTTP_401_UNAUTHORIZED,
335
- content={
336
- "detail": "OAuth provider returned no valid user identifier",
337
- "error_type": "invalid_user_identifier_from_provider",
338
- },
339
- )
340
- await response(scope, receive, send)
341
- return
342
-
343
- email_from_auth, display_name = _extract_user_details(
344
- user_info, user_identifier
345
- )
346
-
347
- identity_service = self.component.identity_service
348
- if not identity_service:
349
- request.state.user = (
350
- await _create_user_state_without_identity_service(
351
- user_identifier, email_from_auth, display_name
352
- )
353
- )
354
- else:
355
- user_state = await _create_user_state_with_identity_service(
356
- identity_service,
357
- user_identifier,
358
- email_from_auth,
359
- display_name,
360
- user_info,
361
- )
362
- if not user_state:
363
- log.error(
364
- "AuthMiddleware: User authenticated but not found in internal IdentityService"
365
- )
366
- response = JSONResponse(
367
- status_code=status.HTTP_403_FORBIDDEN,
368
- content={
369
- "detail": "User not authorized for this application",
370
- "error_type": "not_authorized",
371
- },
372
- )
373
- await response(scope, receive, send)
374
- return
375
- request.state.user = user_state
376
-
377
- except httpx.RequestError as exc:
378
- log.error("Error calling auth service: %s", exc)
379
- response = JSONResponse(
380
- status_code=status.HTTP_503_SERVICE_UNAVAILABLE,
381
- content={"detail": "Auth service is unavailable"},
382
- )
383
- await response(scope, receive, send)
384
- return
385
- except Exception as exc:
386
- log.error(
387
- "An unexpected error occurred during token validation: %s", exc
388
- )
389
- response = JSONResponse(
390
- status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
391
- content={
392
- "detail": "An internal error occurred during authentication"
393
- },
394
- )
395
- await response(scope, receive, send)
396
- return
397
-
398
- return AuthMiddleware
399
-
400
61
 
401
62
  def _setup_alembic_config(database_url: str) -> Config:
402
63
  alembic_cfg = Config()
@@ -448,45 +109,21 @@ def _run_community_migrations(database_url: str) -> None:
448
109
  ) from migration_error
449
110
 
450
111
 
451
- def _run_enterprise_migrations(
452
- component: "WebUIBackendComponent", database_url: str
453
- ) -> None:
454
- """
455
- Run migrations for enterprise features like advanced analytics, audit logs, etc.
456
- This is optional and only runs if the enterprise package is available.
457
- """
458
- try:
459
- from solace_agent_mesh_enterprise.webui_backend.migration_runner import (
460
- run_migrations,
461
- )
462
-
463
- webui_app = component.get_app()
464
- app_config = getattr(webui_app, "app_config", {}) if webui_app else {}
465
- log.info("Starting enterprise migrations...")
466
- run_migrations(database_url, app_config)
467
- log.info("Enterprise migrations completed")
468
- except (ImportError, ModuleNotFoundError):
469
- log.debug("Enterprise module not found - skipping enterprise migrations")
470
- except Exception as e:
471
- log.error("Enterprise migration failed: %s", e)
472
- log.error("Advanced features may be unavailable")
473
- raise RuntimeError(f"Enterprise database migration failed: {e}") from e
474
112
 
475
113
 
476
114
  def _setup_database(
477
115
  component: "WebUIBackendComponent",
478
116
  database_url: str,
479
- platform_database_url: str = None
480
117
  ) -> None:
481
118
  """
482
- Initialize database connections and run all required migrations.
483
- Sets up both runtime and platform database schemas.
119
+ Initialize database and run migrations for WebUI Gateway (chat only).
120
+
121
+ Platform database is no longer used by WebUI Gateway.
122
+ Platform migrations are handled by Platform Service.
484
123
 
485
124
  Args:
486
125
  component: WebUIBackendComponent instance
487
- database_url: Runtime database URL (sessions, tasks, chat) - REQUIRED
488
- platform_database_url: Platform database URL (agents, connectors, deployments).
489
- If None, platform features will be unavailable.
126
+ database_url: Chat database URL (sessions, tasks, feedback) - REQUIRED
490
127
  """
491
128
  dependencies.init_database(database_url)
492
129
  log.info("Persistence enabled - sessions will be stored in database")
@@ -494,12 +131,6 @@ def _setup_database(
494
131
 
495
132
  _run_community_migrations(database_url)
496
133
 
497
- if platform_database_url:
498
- log.info("Platform database configured - running migrations")
499
- _run_enterprise_migrations(component, platform_database_url)
500
- else:
501
- log.info("No platform database configured - skipping platform migrations")
502
-
503
134
 
504
135
  def _get_app_config(component: "WebUIBackendComponent") -> dict:
505
136
  webui_app = component.get_app()
@@ -536,17 +167,14 @@ def _create_api_config(app_config: dict, database_url: str) -> dict:
536
167
  def setup_dependencies(
537
168
  component: "WebUIBackendComponent",
538
169
  database_url: str = None,
539
- platform_database_url: str = None
540
170
  ):
541
171
  """
542
- Initialize dependencies for both runtime and platform databases.
172
+ Initialize dependencies for WebUI Gateway (chat only).
543
173
 
544
174
  Args:
545
175
  component: WebUIBackendComponent instance
546
- database_url: Runtime database URL (sessions, tasks, chat).
176
+ database_url: Chat database URL (sessions, tasks, feedback).
547
177
  If None, runs in compatibility mode with in-memory sessions.
548
- platform_database_url: Platform database URL (agents, connectors, deployments).
549
- If None, platform features will be unavailable (returns 501).
550
178
 
551
179
  This function is idempotent and safe to call multiple times.
552
180
  """
@@ -559,7 +187,7 @@ def setup_dependencies(
559
187
  dependencies.set_component_instance(component)
560
188
 
561
189
  if database_url:
562
- _setup_database(component, database_url, platform_database_url)
190
+ _setup_database(component, database_url)
563
191
  else:
564
192
  log.warning(
565
193
  "No database URL provided - using in-memory session storage (data not persisted across restarts)"
@@ -595,9 +223,15 @@ def _setup_middleware(component: "WebUIBackendComponent") -> None:
595
223
  app.add_middleware(SessionMiddleware, secret_key=session_manager.secret_key)
596
224
  log.info("SessionMiddleware added.")
597
225
 
598
- auth_middleware_class = _create_auth_middleware(component)
226
+ auth_middleware_class = create_oauth_middleware(component)
599
227
  app.add_middleware(auth_middleware_class, component=component)
600
- log.info("AuthMiddleware added.")
228
+
229
+ api_config = dependencies.get_api_config()
230
+ use_auth = api_config.get("frontend_use_authorization", False) if api_config else False
231
+ if use_auth:
232
+ log.info("OAuth middleware added (real token validation enabled)")
233
+ else:
234
+ log.info("OAuth middleware added (development mode - community/dev user)")
601
235
 
602
236
 
603
237
  def _setup_routers() -> None:
@@ -626,35 +260,11 @@ def _setup_routers() -> None:
626
260
  app.include_router(speech.router, prefix=f"{api_prefix}/speech", tags=["Speech"])
627
261
  log.info("Legacy routers mounted for endpoints not yet migrated")
628
262
 
629
- # Register shared exception handlers from community repo
630
- from .shared.exception_handlers import register_exception_handlers
263
+ # Register shared exception handlers
264
+ from solace_agent_mesh.shared.exceptions.exception_handlers import register_exception_handlers
631
265
 
632
266
  register_exception_handlers(app)
633
- log.info("Registered shared exception handlers from community repo")
634
-
635
- # Mount enterprise routers if available
636
- try:
637
- from solace_agent_mesh_enterprise.webui_backend.routers import (
638
- get_enterprise_routers,
639
- )
640
-
641
- enterprise_routers = get_enterprise_routers()
642
- for router_config in enterprise_routers:
643
- app.include_router(
644
- router_config["router"],
645
- prefix=router_config["prefix"],
646
- tags=router_config["tags"],
647
- )
648
- log.info("Mounted %d enterprise routers", len(enterprise_routers))
649
-
650
- except ImportError:
651
- log.debug("No enterprise package detected - skipping enterprise routers")
652
- except ModuleNotFoundError:
653
- log.debug(
654
- "Enterprise module not found - skipping enterprise routers and exception handlers"
655
- )
656
- except Exception as e:
657
- log.warning("Failed to load enterprise routers and exception handlers: %s", e)
267
+ log.info("Registered shared exception handlers")
658
268
 
659
269
 
660
270
  def _setup_static_files() -> None:
@@ -786,4 +396,4 @@ async def generic_exception_handler(request: FastAPIRequest, exc: Exception):
786
396
  async def read_root():
787
397
  """Basic health check endpoint."""
788
398
  log.debug("Health check endpoint '/health' called")
789
- return {"status": "A2A Web UI Backend is running"}
399
+ return {"status": "A2A Web UI Backend is running"}
@@ -6,8 +6,8 @@ from typing import List, Optional
6
6
 
7
7
  from sqlalchemy.orm import Session as DBSession
8
8
 
9
- from ..shared import now_epoch_ms
10
- from ..shared.types import SessionId, UserId
9
+ from solace_agent_mesh.shared.utils.timestamp_utils import now_epoch_ms
10
+ from solace_agent_mesh.shared.utils.types import SessionId, UserId
11
11
  from .entities import ChatTask
12
12
  from .interfaces import IChatTaskRepository
13
13
  from .models import ChatTaskModel
@@ -5,7 +5,7 @@ Project domain entity.
5
5
  from typing import Optional
6
6
  from pydantic import BaseModel, Field
7
7
 
8
- from ...shared import now_epoch_ms
8
+ from solace_agent_mesh.shared.utils.timestamp_utils import now_epoch_ms
9
9
 
10
10
 
11
11
  class Project(BaseModel):
@@ -5,7 +5,7 @@ Project user access domain entity.
5
5
  from typing import Optional
6
6
  from pydantic import BaseModel, Field
7
7
 
8
- from ...shared import now_epoch_ms
8
+ from solace_agent_mesh.shared.utils.timestamp_utils import now_epoch_ms
9
9
 
10
10
 
11
11
  class ProjectUser(BaseModel):
@@ -4,8 +4,8 @@ Session domain entity.
4
4
 
5
5
  from pydantic import BaseModel, ConfigDict
6
6
 
7
- from ...shared import now_epoch_ms
8
- from ...shared.types import AgentId, SessionId, UserId
7
+ from solace_agent_mesh.shared.utils.timestamp_utils import now_epoch_ms
8
+ from solace_agent_mesh.shared.utils.types import AgentId, SessionId, UserId
9
9
 
10
10
 
11
11
  class Session(BaseModel):
@@ -4,8 +4,8 @@ Feedback repository implementation using SQLAlchemy.
4
4
 
5
5
  from sqlalchemy.orm import Session as DBSession
6
6
 
7
- from ..shared.pagination import PaginationParams
8
- from ..shared.types import UserId
7
+ from solace_agent_mesh.shared.api.pagination import PaginationParams
8
+ from solace_agent_mesh.shared.utils.types import UserId
9
9
  from .entities import Feedback
10
10
  from .interfaces import IFeedbackRepository
11
11
  from .models import FeedbackModel
@@ -6,8 +6,8 @@ from abc import ABC, abstractmethod
6
6
  from typing import TYPE_CHECKING, Optional
7
7
  from sqlalchemy.orm import Session as DBSession
8
8
 
9
- from ..shared.pagination import PaginationParams
10
- from ..shared.types import SessionId, UserId
9
+ from solace_agent_mesh.shared.api.pagination import PaginationParams
10
+ from solace_agent_mesh.shared.utils.types import SessionId, UserId
11
11
  from .entities import Feedback, Session, Task, TaskEvent
12
12
  from .entities.project import Project
13
13
  from ..routers.dto.requests.project_requests import ProjectFilter
@@ -6,7 +6,7 @@ from enum import Enum
6
6
  from sqlalchemy import BigInteger, Column, String, Text, Integer, Boolean, ForeignKey, UniqueConstraint, Enum as SQLEnum
7
7
  from sqlalchemy.orm import relationship
8
8
 
9
- from ...shared import now_epoch_ms
9
+ from solace_agent_mesh.shared.utils.timestamp_utils import now_epoch_ms
10
10
  from .base import Base
11
11
 
12
12
 
@@ -6,7 +6,7 @@ from sqlalchemy import BigInteger, Column, String, ForeignKey
6
6
  from pydantic import BaseModel
7
7
  from sqlalchemy.orm import relationship
8
8
 
9
- from ...shared import now_epoch_ms
9
+ from solace_agent_mesh.shared.utils.timestamp_utils import now_epoch_ms
10
10
  from .base import Base
11
11
 
12
12
 
@@ -11,7 +11,7 @@ from .interfaces import IProjectRepository
11
11
  from .models import ProjectModel, ProjectUserModel
12
12
  from .entities.project import Project
13
13
  from ..routers.dto.requests.project_requests import ProjectFilter
14
- from ..shared import now_epoch_ms
14
+ from solace_agent_mesh.shared.utils.timestamp_utils import now_epoch_ms
15
15
 
16
16
 
17
17
  class ProjectRepository(IProjectRepository):
@@ -8,7 +8,7 @@ from sqlalchemy.orm import Session as DBSession
8
8
 
9
9
  from .models import ProjectUserModel
10
10
  from .entities.project_user import ProjectUser
11
- from ..shared import now_epoch_ms
11
+ from solace_agent_mesh.shared.utils.timestamp_utils import now_epoch_ms
12
12
 
13
13
 
14
14
  class ProjectUserRepository:
@@ -5,10 +5,10 @@ Session repository implementation using SQLAlchemy.
5
5
  from sqlalchemy import or_, func
6
6
  from sqlalchemy.orm import Session as DBSession, joinedload
7
7
 
8
- from ..shared.base_repository import PaginatedRepository
9
- from ..shared.pagination import PaginationParams
10
- from ..shared.types import SessionId, UserId
11
- from ..shared import now_epoch_ms
8
+ from solace_agent_mesh.shared.database.base_repository import PaginatedRepository
9
+ from solace_agent_mesh.shared.api.pagination import PaginationParams
10
+ from solace_agent_mesh.shared.utils.types import SessionId, UserId
11
+ from solace_agent_mesh.shared.utils.timestamp_utils import now_epoch_ms
12
12
  from .entities import Session
13
13
  from .interfaces import ISessionRepository
14
14
  from .models import CreateSessionModel, SessionModel, UpdateSessionModel
@@ -4,8 +4,8 @@ Task repository implementation using SQLAlchemy.
4
4
 
5
5
  from sqlalchemy.orm import Session as DBSession
6
6
 
7
- from ..shared.pagination import PaginationParams
8
- from ..shared.types import UserId
7
+ from solace_agent_mesh.shared.api.pagination import PaginationParams
8
+ from solace_agent_mesh.shared.utils.types import UserId
9
9
  from .entities import Task, TaskEvent
10
10
  from .interfaces import ITaskRepository
11
11
  from .models import TaskEventModel, TaskModel