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
@@ -7,7 +7,7 @@ Provides database sessions, component instance access, and user authentication.
7
7
  import logging
8
8
  from typing import TYPE_CHECKING, Generator
9
9
 
10
- from fastapi import HTTPException, Request, status
10
+ from fastapi import HTTPException, status
11
11
  from sqlalchemy import create_engine, event, pool
12
12
  from sqlalchemy.engine.url import make_url
13
13
  from sqlalchemy.orm import Session, sessionmaker
@@ -124,24 +124,31 @@ def get_platform_db() -> Generator[Session, None, None]:
124
124
  db.close()
125
125
 
126
126
 
127
- def get_current_user(request: Request) -> dict:
127
+ def get_heartbeat_tracker():
128
128
  """
129
- FastAPI dependency to extract authenticated user from request state.
129
+ Get the heartbeat tracker from platform component.
130
130
 
131
- The user is set by the OAuth2 middleware during request processing.
132
-
133
- Args:
134
- request: FastAPI Request object.
131
+ Used by deployer status endpoint to check if deployer is online.
135
132
 
136
133
  Returns:
137
- Dictionary containing user information (user_id, email, name, etc.).
134
+ HeartbeatTracker instance if initialized, None otherwise.
135
+ """
136
+ if platform_component_instance is None:
137
+ log.warning("Platform component not initialized - heartbeat tracker unavailable")
138
+ return None
139
+ return platform_component_instance.get_heartbeat_tracker()
138
140
 
139
- Raises:
140
- HTTPException: 401 if user is not authenticated.
141
+
142
+ def get_agent_registry():
141
143
  """
142
- if not hasattr(request.state, "user") or not request.state.user:
143
- raise HTTPException(
144
- status_code=status.HTTP_401_UNAUTHORIZED,
145
- detail="Authentication required",
146
- )
147
- return request.state.user
144
+ Get the agent registry from platform component.
145
+
146
+ Used for deployment status monitoring.
147
+
148
+ Returns:
149
+ AgentRegistry instance if initialized, None otherwise.
150
+ """
151
+ if platform_component_instance is None:
152
+ log.warning("Platform component not initialized - agent registry unavailable")
153
+ return None
154
+ return platform_component_instance.get_agent_registry()
@@ -100,7 +100,7 @@ def _run_enterprise_migrations(database_url: str) -> None:
100
100
  database_url: Database connection string.
101
101
  """
102
102
  try:
103
- from solace_agent_mesh_enterprise.webui_backend.migration_runner import run_migrations
103
+ from solace_agent_mesh_enterprise.platform_service.migration_runner import run_migrations
104
104
 
105
105
  log.info("Starting enterprise platform migrations...")
106
106
  run_migrations(database_url)
@@ -166,15 +166,6 @@ def setup_dependencies(component: "PlatformServiceComponent", database_url: str)
166
166
 
167
167
  dependencies.set_component_instance(component)
168
168
 
169
- # ALSO set gateway dependencies to allow webui_backend routers to work
170
- # webui_backend routers use ValidatedUserConfig which expects sac_component_instance
171
- try:
172
- from solace_agent_mesh.gateway.http_sse import dependencies as gateway_deps
173
- gateway_deps.sac_component_instance = component
174
- log.info("Gateway dependencies configured to use platform component")
175
- except ImportError:
176
- log.debug("Gateway module not available - skipping gateway dependency setup")
177
-
178
169
  # Initialize database and run migrations
179
170
  if database_url:
180
171
  _setup_database(database_url)
@@ -192,18 +183,102 @@ def setup_dependencies(component: "PlatformServiceComponent", database_url: str)
192
183
  log.info("Platform Service dependencies initialized successfully")
193
184
 
194
185
 
186
+ async def _start_enterprise_platform_tasks(component: "PlatformServiceComponent") -> None:
187
+ """
188
+ Start enterprise platform background tasks if enterprise package is available.
189
+
190
+ This follows the exact same pattern as WebUI Gateway:
191
+ - Community calls enterprise function
192
+ - Enterprise owns all background task logic
193
+ - Graceful degradation if enterprise not available
194
+
195
+ Background tasks (enterprise-only):
196
+ - Heartbeat listener (deployer monitoring)
197
+ - Deployment status checker (agent deployment monitoring)
198
+ - Agent registry (tracks deployed agents)
199
+
200
+ Args:
201
+ component: PlatformServiceComponent instance
202
+ """
203
+ try:
204
+ from solace_agent_mesh_enterprise.init_enterprise import (
205
+ start_platform_background_tasks,
206
+ )
207
+
208
+ log.info("Starting enterprise platform background tasks...")
209
+ await start_platform_background_tasks(component)
210
+ log.info("Enterprise platform background tasks started successfully")
211
+
212
+ except ImportError:
213
+ log.info(
214
+ "Enterprise package not available - platform background tasks will not start. "
215
+ "Platform Service will run without deployment monitoring and deployer heartbeat tracking."
216
+ )
217
+ except RuntimeError as enterprise_err:
218
+ log.warning(
219
+ "Enterprise platform tasks disabled: %s - Platform Service will continue without deployment monitoring",
220
+ enterprise_err,
221
+ )
222
+ except Exception as enterprise_err:
223
+ log.error(
224
+ "Failed to start enterprise platform tasks: %s - Platform Service will continue",
225
+ enterprise_err,
226
+ exc_info=True,
227
+ )
228
+
229
+
195
230
  def _setup_middleware(component: "PlatformServiceComponent"):
196
231
  """
197
232
  Add middleware to the FastAPI application.
198
233
 
199
234
  1. CORS middleware - allows cross-origin requests
200
- 2. OAuth2 middleware - authentication (uses enterprise implementation if available)
235
+ 2. OAuth2 middleware - authentication (real token validation)
201
236
 
202
237
  Args:
203
238
  component: PlatformServiceComponent instance for configuration access.
204
239
  """
205
- # CORS middleware
206
- allowed_origins = component.get_cors_origins()
240
+ # CORS middleware - automatically trust configured UI origins
241
+ configured_origins = component.get_cors_origins().copy()
242
+
243
+ # Automatically add frontend and platform service URLs as trusted origins
244
+ # These are admin-controlled values that should always be trusted
245
+ frontend_url = os.getenv("FRONTEND_SERVER_URL", "").strip()
246
+ platform_url = os.getenv("PLATFORM_SERVICE_URL", "").strip()
247
+
248
+ # Auto-construct frontend URL if not provided
249
+ if not frontend_url:
250
+ # Read WebUI Gateway configuration from environment variables
251
+ fastapi_host = os.getenv("FASTAPI_HOST", "127.0.0.1").strip()
252
+ fastapi_port = os.getenv("FASTAPI_PORT", "8000").strip()
253
+ ssl_keyfile = os.getenv("SSL_KEYFILE", "").strip()
254
+ ssl_certfile = os.getenv("SSL_CERTFILE", "").strip()
255
+
256
+ # Determine protocol and port based on SSL configuration
257
+ if ssl_keyfile and ssl_certfile:
258
+ protocol = "https"
259
+ port = os.getenv("FASTAPI_HTTPS_PORT", "8443").strip()
260
+ else:
261
+ protocol = "http"
262
+ port = fastapi_port
263
+
264
+ # Use 'localhost' if host is 127.0.0.1 for better compatibility
265
+ host = "localhost" if fastapi_host == "127.0.0.1" else fastapi_host
266
+ frontend_url = f"{protocol}://{host}:{port}"
267
+
268
+ log.info(
269
+ "FRONTEND_SERVER_URL not configured, auto-constructed from WebUI Gateway settings: %s",
270
+ frontend_url
271
+ )
272
+
273
+ auto_trusted_origins = []
274
+ if frontend_url:
275
+ auto_trusted_origins.append(frontend_url)
276
+ if platform_url:
277
+ auto_trusted_origins.append(platform_url)
278
+
279
+ # Combine and deduplicate
280
+ allowed_origins = list(set(auto_trusted_origins + configured_origins))
281
+
207
282
  app.add_middleware(
208
283
  CORSMiddleware,
209
284
  allow_origins=allowed_origins,
@@ -212,53 +287,61 @@ def _setup_middleware(component: "PlatformServiceComponent"):
212
287
  allow_headers=["*"],
213
288
  )
214
289
  log.info(f"CORS middleware added with origins: {allowed_origins}")
290
+ if auto_trusted_origins:
291
+ log.info(f" Auto-added trusted origins: {auto_trusted_origins}")
215
292
 
216
- # OAuth2 middleware - try enterprise implementation first, fall back to stub
217
- # try:
218
- # from solace_agent_mesh_enterprise.platform_service.middleware import create_oauth2_middleware
219
- #
220
- # oauth2_middleware_class = create_oauth2_middleware(component)
221
- # app.add_middleware(oauth2_middleware_class)
222
- # log.info("Enterprise OAuth2 middleware added (real token validation)")
223
- # except ImportError:
224
- # # Fall back to stub middleware if enterprise package not available
225
- # from .middleware import oauth2_stub_middleware
226
- #
227
- # app.middleware("http")(oauth2_stub_middleware)
228
- # log.info("OAuth2 stub middleware added (development mode - no enterprise package)")
293
+ # OAuth2 authentication middleware
294
+ from solace_agent_mesh.shared.auth.middleware import create_oauth_middleware
295
+
296
+ oauth_middleware_class = create_oauth_middleware(component)
297
+ app.add_middleware(oauth_middleware_class, component=component)
298
+
299
+ use_auth = component.get_config("frontend_use_authorization", False)
300
+ if use_auth:
301
+ log.info("OAuth2 middleware added (real token validation enabled)")
302
+ else:
303
+ log.info("OAuth2 middleware added (development mode - frontend_use_authorization=false)")
229
304
 
230
305
 
231
306
  def _setup_routers():
232
307
  """
233
308
  Mount community and enterprise routers to the FastAPI application.
234
309
 
235
- Community routers: Loaded from .routers (empty in Phase 1)
310
+ All platform service routers (both community and enterprise) are mounted
311
+ under the PLATFORM_SERVICE_PREFIX. This ensures a consistent API structure
312
+ where /api/v1/platform/* contains all platform management endpoints.
313
+
314
+ Community routers: Loaded from .routers
236
315
  Enterprise routers: Dynamically loaded from enterprise package if available
237
316
  """
238
- # Load community platform routers (empty in Phase 1)
317
+ # Define the platform service API prefix
318
+ # This is the single source of truth for all platform service endpoints
319
+ PLATFORM_SERVICE_PREFIX = "/api/v1/platform"
320
+
321
+ # Load community platform routers
239
322
  from .routers import get_community_platform_routers
240
323
 
241
324
  community_routers = get_community_platform_routers()
242
325
  for router_config in community_routers:
243
326
  app.include_router(
244
327
  router_config["router"],
245
- prefix=router_config["prefix"],
328
+ prefix=PLATFORM_SERVICE_PREFIX,
246
329
  tags=router_config["tags"],
247
330
  )
248
331
  log.info(f"Mounted {len(community_routers)} community platform routers")
249
332
 
250
333
  # Try to load enterprise platform routers
251
334
  try:
252
- from solace_agent_mesh_enterprise.webui_backend.routers import get_enterprise_routers
335
+ from solace_agent_mesh_enterprise.platform_service.routers import get_enterprise_routers
253
336
 
254
337
  enterprise_routers = get_enterprise_routers()
255
338
  for router_config in enterprise_routers:
256
339
  app.include_router(
257
340
  router_config["router"],
258
- prefix=router_config["prefix"],
341
+ prefix=PLATFORM_SERVICE_PREFIX,
259
342
  tags=router_config["tags"],
260
343
  )
261
- log.info(f"Mounted {len(enterprise_routers)} enterprise platform routers")
344
+ log.info(f"Mounted {len(enterprise_routers)} enterprise platform routers under {PLATFORM_SERVICE_PREFIX}")
262
345
 
263
346
  except ImportError:
264
347
  log.info(
@@ -267,14 +350,6 @@ def _setup_routers():
267
350
  except Exception as e:
268
351
  log.warning(f"Failed to load enterprise platform routers: {e}")
269
352
 
270
-
271
- @app.get("/health", tags=["Health"])
272
- async def health_check():
273
- """
274
- Platform Service health check endpoint.
275
-
276
- Returns:
277
- Dictionary with status and service name.
278
- """
279
- log.debug("Health check endpoint '/health' called")
280
- return {"status": "healthy", "service": "Platform Service"}
353
+ from solace_agent_mesh.shared.exceptions.exception_handlers import register_exception_handlers
354
+ register_exception_handlers(app)
355
+ log.info("Registered shared exception handlers")
@@ -1,7 +1,7 @@
1
1
  """
2
2
  Community platform routers for Platform Service.
3
3
 
4
- Currently empty - no community endpoints yet.
4
+ Provides foundational platform service endpoints available to all deployments.
5
5
  """
6
6
 
7
7
 
@@ -9,16 +9,25 @@ def get_community_platform_routers() -> list:
9
9
  """
10
10
  Return list of community platform routers.
11
11
 
12
+ Format:
12
13
  [
13
14
  {
14
15
  "router": router_instance,
15
- "prefix": "/api/v1/platform",
16
16
  "tags": ["Platform"]
17
17
  },
18
18
  ...
19
19
  ]
20
20
 
21
+ Note: The prefix "/api/v1/platform" is applied by main.py when mounting these routers.
22
+
21
23
  Returns:
22
24
  Community platform routers list.
23
25
  """
24
- return []
26
+ from .health_router import router as health_router
27
+
28
+ return [
29
+ {
30
+ "router": health_router,
31
+ "tags": ["Health"],
32
+ }
33
+ ]
@@ -0,0 +1,31 @@
1
+ """
2
+ Platform Service health check router.
3
+
4
+ Provides health status endpoint for monitoring and load balancer health checks.
5
+ """
6
+
7
+ import logging
8
+ from fastapi import APIRouter
9
+
10
+ log = logging.getLogger(__name__)
11
+
12
+ router = APIRouter()
13
+
14
+
15
+ @router.get("/health", tags=["Health"])
16
+ async def health_check():
17
+ """
18
+ Platform Service health check endpoint.
19
+
20
+ This endpoint is used by:
21
+ - Kubernetes liveness/readiness probes
22
+ - Load balancer health checks (ALB, NGINX)
23
+ - External monitoring systems
24
+
25
+ Returns:
26
+ dict: Health status with service name.
27
+ - status (str): "healthy" if service is operational
28
+ - service (str): Service identifier
29
+ """
30
+ log.debug("Health check endpoint '/api/v1/platform/health' called")
31
+ return {"status": "healthy", "service": "Platform Service"}
@@ -9,6 +9,7 @@ from typing import Any, Dict, List
9
9
  from solace_ai_connector.flow.app import App
10
10
 
11
11
  from .component import PlatformServiceComponent
12
+ from ...common.a2a import get_discovery_topic
12
13
 
13
14
  log = logging.getLogger(__name__)
14
15
 
@@ -53,6 +54,34 @@ class PlatformServiceApp(App):
53
54
  "default": 8001,
54
55
  "description": "Port for the embedded FastAPI server.",
55
56
  },
57
+ {
58
+ "name": "fastapi_https_port",
59
+ "required": False,
60
+ "type": "integer",
61
+ "default": 8444,
62
+ "description": "Port for the embedded FastAPI server when SSL is enabled.",
63
+ },
64
+ {
65
+ "name": "ssl_keyfile",
66
+ "required": False,
67
+ "type": "string",
68
+ "default": "",
69
+ "description": "The file path to the SSL private key.",
70
+ },
71
+ {
72
+ "name": "ssl_certfile",
73
+ "required": False,
74
+ "type": "string",
75
+ "default": "",
76
+ "description": "The file path to the SSL certificate.",
77
+ },
78
+ {
79
+ "name": "ssl_keyfile_password",
80
+ "required": False,
81
+ "type": "string",
82
+ "default": "",
83
+ "description": "The passphrase for the SSL private key.",
84
+ },
56
85
  {
57
86
  "name": "cors_allowed_origins",
58
87
  "required": False,
@@ -70,28 +99,93 @@ class PlatformServiceApp(App):
70
99
  "name": "external_auth_provider",
71
100
  "required": False,
72
101
  "type": "string",
73
- "default": "azure",
74
- "description": "OAuth2 provider name (e.g., 'azure', 'google', 'okta').",
102
+ "default": "",
103
+ "description": "The external authentication provider.",
75
104
  },
76
105
  {
77
- "name": "use_authorization",
106
+ "name": "frontend_use_authorization",
78
107
  "required": False,
79
108
  "type": "boolean",
80
- "default": True,
81
- "description": "Enable OAuth2 token validation. Set to false for development mode.",
109
+ "default": False,
110
+ "description": "Enable OAuth2 token validation. When true, all API requests must include valid OAuth2 bearer tokens.",
111
+ },
112
+ {
113
+ "name": "max_message_size_bytes",
114
+ "required": False,
115
+ "type": "integer",
116
+ "default": 10000000,
117
+ "description": "Maximum message size in bytes for A2A messages (default: 10MB).",
118
+ },
119
+ {
120
+ "name": "deployment_timeout_minutes",
121
+ "required": False,
122
+ "type": "integer",
123
+ "default": 5,
124
+ "description": "Timeout for agent deployments (default: 5 minutes).",
125
+ },
126
+ {
127
+ "name": "heartbeat_timeout_seconds",
128
+ "required": False,
129
+ "type": "integer",
130
+ "default": 90,
131
+ "description": "Deployer heartbeat timeout in seconds (default: 90 seconds).",
132
+ },
133
+ {
134
+ "name": "deployment_check_interval_seconds",
135
+ "required": False,
136
+ "type": "integer",
137
+ "default": 60,
138
+ "description": "Interval for checking deployment status in seconds (default: 60 seconds).",
82
139
  },
83
140
  ]
84
141
 
85
142
  def __init__(self, app_info: Dict[str, Any], **kwargs):
86
143
  """
87
144
  Initialize the PlatformServiceApp.
88
- Most setup is handled by the base App class.
145
+ Programmatically creates the component and configures broker before calling parent App.__init__().
89
146
  """
90
147
  log.debug(
91
148
  "%s Initializing PlatformServiceApp...",
92
149
  app_info.get("name", "PlatformServiceApp"),
93
150
  )
94
- super().__init__(app_info, **kwargs)
151
+
152
+ modified_app_info = app_info.copy()
153
+ app_config = modified_app_info.get("app_config", {})
154
+
155
+ # Get namespace from config
156
+ namespace = app_config.get("namespace", "")
157
+ if not namespace:
158
+ raise ValueError("Namespace is required in app_config for PlatformServiceApp")
159
+
160
+ # Create subscriptions for agent discovery
161
+ subscriptions = [
162
+ {"topic": get_discovery_topic(namespace)},
163
+ ]
164
+
165
+ # Create component definition with subscriptions
166
+ # (SAC framework looks for subscriptions in component definition for simplified apps)
167
+ component_definition = {
168
+ "name": f"{app_info.get('name', 'platform_service')}_component",
169
+ "component_class": PlatformServiceComponent,
170
+ "component_config": {"app_config": app_config},
171
+ "subscriptions": subscriptions,
172
+ }
173
+
174
+ modified_app_info["components"] = [component_definition]
175
+
176
+ # Configure broker connection
177
+ broker_config = modified_app_info.setdefault("broker", {})
178
+ broker_config["input_enabled"] = True
179
+ broker_config["output_enabled"] = True
180
+
181
+ log.info(
182
+ "Configured broker for Platform Service with namespace: %s and %d subscription(s): %s",
183
+ namespace,
184
+ len(subscriptions),
185
+ subscriptions
186
+ )
187
+
188
+ super().__init__(modified_app_info, **kwargs)
95
189
  log.debug("%s PlatformServiceApp initialization complete.", self.name)
96
190
 
97
191
  def get_component(self) -> PlatformServiceComponent | None: