solace-agent-mesh 1.6.1__py3-none-any.whl → 1.13.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of solace-agent-mesh might be problematic. Click here for more details.

Files changed (481) hide show
  1. solace_agent_mesh/agent/adk/alembic/README +74 -0
  2. solace_agent_mesh/agent/adk/alembic/env.py +77 -0
  3. solace_agent_mesh/agent/adk/alembic/script.py.mako +28 -0
  4. solace_agent_mesh/agent/adk/alembic/versions/e2902798564d_adk_session_db_upgrade.py +52 -0
  5. solace_agent_mesh/agent/adk/alembic.ini +112 -0
  6. solace_agent_mesh/agent/adk/app_llm_agent.py +26 -0
  7. solace_agent_mesh/agent/adk/artifacts/filesystem_artifact_service.py +165 -1
  8. solace_agent_mesh/agent/adk/artifacts/s3_artifact_service.py +163 -0
  9. solace_agent_mesh/agent/adk/callbacks.py +852 -109
  10. solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +234 -36
  11. solace_agent_mesh/agent/adk/intelligent_mcp_callbacks.py +52 -5
  12. solace_agent_mesh/agent/adk/mcp_content_processor.py +1 -1
  13. solace_agent_mesh/agent/adk/models/lite_llm.py +77 -21
  14. solace_agent_mesh/agent/adk/models/oauth2_token_manager.py +24 -137
  15. solace_agent_mesh/agent/adk/runner.py +85 -20
  16. solace_agent_mesh/agent/adk/schema_migration.py +88 -0
  17. solace_agent_mesh/agent/adk/services.py +94 -18
  18. solace_agent_mesh/agent/adk/setup.py +281 -65
  19. solace_agent_mesh/agent/adk/stream_parser.py +231 -37
  20. solace_agent_mesh/agent/adk/tool_wrapper.py +3 -0
  21. solace_agent_mesh/agent/protocol/event_handlers.py +472 -137
  22. solace_agent_mesh/agent/proxies/a2a/app.py +3 -2
  23. solace_agent_mesh/agent/proxies/a2a/component.py +572 -75
  24. solace_agent_mesh/agent/proxies/a2a/config.py +80 -4
  25. solace_agent_mesh/agent/proxies/base/app.py +3 -2
  26. solace_agent_mesh/agent/proxies/base/component.py +188 -22
  27. solace_agent_mesh/agent/proxies/base/proxy_task_context.py +3 -1
  28. solace_agent_mesh/agent/sac/app.py +91 -3
  29. solace_agent_mesh/agent/sac/component.py +591 -157
  30. solace_agent_mesh/agent/sac/patch_adk.py +8 -16
  31. solace_agent_mesh/agent/sac/task_execution_context.py +146 -4
  32. solace_agent_mesh/agent/tools/__init__.py +3 -0
  33. solace_agent_mesh/agent/tools/audio_tools.py +3 -3
  34. solace_agent_mesh/agent/tools/builtin_artifact_tools.py +710 -171
  35. solace_agent_mesh/agent/tools/deep_research_tools.py +2161 -0
  36. solace_agent_mesh/agent/tools/dynamic_tool.py +2 -0
  37. solace_agent_mesh/agent/tools/peer_agent_tool.py +82 -15
  38. solace_agent_mesh/agent/tools/time_tools.py +126 -0
  39. solace_agent_mesh/agent/tools/tool_config_types.py +57 -2
  40. solace_agent_mesh/agent/tools/web_search_tools.py +279 -0
  41. solace_agent_mesh/agent/tools/web_tools.py +125 -17
  42. solace_agent_mesh/agent/utils/artifact_helpers.py +248 -6
  43. solace_agent_mesh/agent/utils/context_helpers.py +17 -0
  44. solace_agent_mesh/assets/docs/404.html +6 -6
  45. solace_agent_mesh/assets/docs/assets/css/{styles.906a1503.css → styles.8162edfb.css} +1 -1
  46. solace_agent_mesh/assets/docs/assets/js/05749d90.19ac4f35.js +1 -0
  47. solace_agent_mesh/assets/docs/assets/js/15ba94aa.e186750d.js +1 -0
  48. solace_agent_mesh/assets/docs/assets/js/15e40e79.434bb30f.js +1 -0
  49. solace_agent_mesh/assets/docs/assets/js/17896441.e612dfb4.js +1 -0
  50. solace_agent_mesh/assets/docs/assets/js/2279.550aa580.js +2 -0
  51. solace_agent_mesh/assets/docs/assets/js/{17896441.a5e82f9b.js.LICENSE.txt → 2279.550aa580.js.LICENSE.txt} +6 -0
  52. solace_agent_mesh/assets/docs/assets/js/240a0364.83e37aa8.js +1 -0
  53. solace_agent_mesh/assets/docs/assets/js/2987107d.a80604f9.js +1 -0
  54. solace_agent_mesh/assets/docs/assets/js/2e32b5e0.2f0db237.js +1 -0
  55. solace_agent_mesh/assets/docs/assets/js/3a6c6137.7e61915d.js +1 -0
  56. solace_agent_mesh/assets/docs/assets/js/3ac1795d.7f7ab1c1.js +1 -0
  57. solace_agent_mesh/assets/docs/assets/js/3ff0015d.e53c9b78.js +1 -0
  58. solace_agent_mesh/assets/docs/assets/js/41adc471.0e95b87c.js +1 -0
  59. solace_agent_mesh/assets/docs/assets/js/4667dc50.bf2ad456.js +1 -0
  60. solace_agent_mesh/assets/docs/assets/js/49eed117.493d6f99.js +1 -0
  61. solace_agent_mesh/assets/docs/assets/js/{509e993c.4c7a1a6d.js → 509e993c.a1fbf45a.js} +1 -1
  62. solace_agent_mesh/assets/docs/assets/js/547e15cc.8e6da617.js +1 -0
  63. solace_agent_mesh/assets/docs/assets/js/55b7b518.29d6e75d.js +1 -0
  64. solace_agent_mesh/assets/docs/assets/js/5b8d9c11.d4eb37b8.js +1 -0
  65. solace_agent_mesh/assets/docs/assets/js/5c2bd65f.1ee87753.js +1 -0
  66. solace_agent_mesh/assets/docs/assets/js/60702c0e.a8bdd79b.js +1 -0
  67. solace_agent_mesh/assets/docs/assets/js/631738c7.fa471607.js +1 -0
  68. solace_agent_mesh/assets/docs/assets/js/64195356.09dbd087.js +1 -0
  69. solace_agent_mesh/assets/docs/assets/js/66d4869e.30340bd3.js +1 -0
  70. solace_agent_mesh/assets/docs/assets/js/6a520c9d.b6e3f2ce.js +1 -0
  71. solace_agent_mesh/assets/docs/assets/js/6aaedf65.7253541d.js +1 -0
  72. solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.a5b36a60.js +1 -0
  73. solace_agent_mesh/assets/docs/assets/js/6d84eae0.fd23ba4a.js +1 -0
  74. solace_agent_mesh/assets/docs/assets/js/71da7b71.374b9d54.js +1 -0
  75. solace_agent_mesh/assets/docs/assets/js/729898df.7249e9fd.js +1 -0
  76. solace_agent_mesh/assets/docs/assets/js/7e294c01.7c5f6906.js +1 -0
  77. solace_agent_mesh/assets/docs/assets/js/8024126c.e3467286.js +1 -0
  78. solace_agent_mesh/assets/docs/assets/js/81a99df0.7ed65d45.js +1 -0
  79. solace_agent_mesh/assets/docs/assets/js/82fbfb93.161823a5.js +1 -0
  80. solace_agent_mesh/assets/docs/assets/js/8b032486.91a91afc.js +1 -0
  81. solace_agent_mesh/assets/docs/assets/js/924ffdeb.975e428a.js +1 -0
  82. solace_agent_mesh/assets/docs/assets/js/94e8668d.16083b3f.js +1 -0
  83. solace_agent_mesh/assets/docs/assets/js/9bb13469.4523ae20.js +1 -0
  84. solace_agent_mesh/assets/docs/assets/js/a7d42657.a956689d.js +1 -0
  85. solace_agent_mesh/assets/docs/assets/js/a94703ab.3e5fbcb3.js +1 -0
  86. solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e563275.js +1 -0
  87. solace_agent_mesh/assets/docs/assets/js/ad87452a.9d73dad6.js +1 -0
  88. solace_agent_mesh/assets/docs/assets/js/c93cbaa0.0e0d8baf.js +1 -0
  89. solace_agent_mesh/assets/docs/assets/js/cab03b5b.6a073091.js +1 -0
  90. solace_agent_mesh/assets/docs/assets/js/cbe2e9ea.07e170dd.js +1 -0
  91. solace_agent_mesh/assets/docs/assets/js/da0b5bad.b62f7b08.js +1 -0
  92. solace_agent_mesh/assets/docs/assets/js/dd817ffc.c37a755e.js +1 -0
  93. solace_agent_mesh/assets/docs/assets/js/dd81e2b8.b682e9c2.js +1 -0
  94. solace_agent_mesh/assets/docs/assets/js/de915948.44a432bc.js +1 -0
  95. solace_agent_mesh/assets/docs/assets/js/e04b235d.06d23db6.js +1 -0
  96. solace_agent_mesh/assets/docs/assets/js/e1b6eeb4.deb2b62e.js +1 -0
  97. solace_agent_mesh/assets/docs/assets/js/e3d9abda.1476f570.js +1 -0
  98. solace_agent_mesh/assets/docs/assets/js/e6f9706b.acc800d3.js +1 -0
  99. solace_agent_mesh/assets/docs/assets/js/e92d0134.c147a429.js +1 -0
  100. solace_agent_mesh/assets/docs/assets/js/ee0c2fe7.94d0a351.js +1 -0
  101. solace_agent_mesh/assets/docs/assets/js/f284c35a.cc97854c.js +1 -0
  102. solace_agent_mesh/assets/docs/assets/js/ff4d71f2.74710fc1.js +1 -0
  103. solace_agent_mesh/assets/docs/assets/js/main.d634009f.js +2 -0
  104. solace_agent_mesh/assets/docs/assets/js/runtime~main.27bb82a7.js +1 -0
  105. solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +68 -68
  106. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/artifact-management/index.html +50 -50
  107. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/audio-tools/index.html +42 -42
  108. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/data-analysis-tools/index.html +55 -55
  109. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/embeds/index.html +82 -68
  110. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/image-tools/index.html +81 -0
  111. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/index.html +67 -50
  112. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/research-tools/index.html +136 -0
  113. solace_agent_mesh/assets/docs/docs/documentation/components/cli/index.html +178 -144
  114. solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +43 -42
  115. solace_agent_mesh/assets/docs/docs/documentation/components/index.html +20 -18
  116. solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +23 -23
  117. solace_agent_mesh/assets/docs/docs/documentation/components/platform-service/index.html +33 -0
  118. solace_agent_mesh/assets/docs/docs/documentation/components/plugins/index.html +45 -45
  119. solace_agent_mesh/assets/docs/docs/documentation/components/projects/index.html +182 -0
  120. solace_agent_mesh/assets/docs/docs/documentation/components/prompts/index.html +147 -0
  121. solace_agent_mesh/assets/docs/docs/documentation/components/proxies/index.html +208 -125
  122. solace_agent_mesh/assets/docs/docs/documentation/components/speech/index.html +52 -0
  123. solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +28 -49
  124. solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +29 -30
  125. solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +14 -14
  126. solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes/index.html +47 -0
  127. solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes/kubernetes-deployment-guide/index.html +197 -0
  128. solace_agent_mesh/assets/docs/docs/documentation/deploying/logging/index.html +90 -0
  129. solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +17 -16
  130. solace_agent_mesh/assets/docs/docs/documentation/deploying/proxy_configuration/index.html +49 -0
  131. solace_agent_mesh/assets/docs/docs/documentation/developing/create-agents/index.html +38 -38
  132. solace_agent_mesh/assets/docs/docs/documentation/developing/create-gateways/index.html +162 -171
  133. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-python-tools/index.html +67 -49
  134. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +17 -17
  135. solace_agent_mesh/assets/docs/docs/documentation/developing/evaluations/index.html +51 -51
  136. solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +22 -22
  137. solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +27 -27
  138. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/bedrock-agents/index.html +135 -135
  139. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/custom-agent/index.html +66 -66
  140. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/event-mesh-gateway/index.html +51 -51
  141. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mcp-integration/index.html +50 -38
  142. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mongodb-integration/index.html +86 -86
  143. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rag-integration/index.html +51 -51
  144. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rest-gateway/index.html +24 -24
  145. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +30 -30
  146. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/sql-database/index.html +44 -44
  147. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/teams-integration/index.html +115 -0
  148. solace_agent_mesh/assets/docs/docs/documentation/enterprise/agent-builder/index.html +86 -0
  149. solace_agent_mesh/assets/docs/docs/documentation/enterprise/connectors/index.html +67 -0
  150. solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +23 -19
  151. solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +40 -37
  152. solace_agent_mesh/assets/docs/docs/documentation/enterprise/openapi-tools/index.html +324 -0
  153. solace_agent_mesh/assets/docs/docs/documentation/enterprise/rbac-setup-guide/index.html +112 -87
  154. solace_agent_mesh/assets/docs/docs/documentation/enterprise/secure-user-delegated-access/index.html +440 -0
  155. solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +87 -64
  156. solace_agent_mesh/assets/docs/docs/documentation/enterprise/wheel-installation/index.html +62 -0
  157. solace_agent_mesh/assets/docs/docs/documentation/getting-started/architecture/index.html +44 -44
  158. solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +39 -37
  159. solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +30 -30
  160. solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +18 -18
  161. solace_agent_mesh/assets/docs/docs/documentation/getting-started/vibe_coding/index.html +62 -0
  162. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/artifact-storage/index.html +311 -0
  163. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/configurations/index.html +39 -42
  164. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +14 -14
  165. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +27 -25
  166. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +69 -69
  167. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +72 -72
  168. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/session-storage/index.html +251 -0
  169. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/user-feedback/index.html +88 -0
  170. solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-gateway-upgrade-to-0.3.0/index.html +42 -42
  171. solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-technical-migration-map/index.html +20 -20
  172. solace_agent_mesh/assets/docs/docs/documentation/migrations/platform-service-split/index.html +85 -0
  173. solace_agent_mesh/assets/docs/lunr-index-1768329217460.json +1 -0
  174. solace_agent_mesh/assets/docs/lunr-index.json +1 -1
  175. solace_agent_mesh/assets/docs/search-doc-1768329217460.json +1 -0
  176. solace_agent_mesh/assets/docs/search-doc.json +1 -1
  177. solace_agent_mesh/assets/docs/sitemap.xml +1 -1
  178. solace_agent_mesh/cli/__init__.py +1 -1
  179. solace_agent_mesh/cli/commands/add_cmd/__init__.py +3 -1
  180. solace_agent_mesh/cli/commands/add_cmd/agent_cmd.py +6 -1
  181. solace_agent_mesh/cli/commands/add_cmd/proxy_cmd.py +100 -0
  182. solace_agent_mesh/cli/commands/docs_cmd.py +4 -1
  183. solace_agent_mesh/cli/commands/eval_cmd.py +1 -1
  184. solace_agent_mesh/cli/commands/init_cmd/__init__.py +15 -0
  185. solace_agent_mesh/cli/commands/init_cmd/directory_step.py +1 -1
  186. solace_agent_mesh/cli/commands/init_cmd/env_step.py +30 -3
  187. solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +3 -4
  188. solace_agent_mesh/cli/commands/init_cmd/platform_service_step.py +85 -0
  189. solace_agent_mesh/cli/commands/init_cmd/webui_gateway_step.py +16 -3
  190. solace_agent_mesh/cli/commands/plugin_cmd/add_cmd.py +2 -1
  191. solace_agent_mesh/cli/commands/plugin_cmd/catalog_cmd.py +1 -0
  192. solace_agent_mesh/cli/commands/plugin_cmd/create_cmd.py +3 -3
  193. solace_agent_mesh/cli/commands/run_cmd.py +64 -49
  194. solace_agent_mesh/cli/commands/tools_cmd.py +315 -0
  195. solace_agent_mesh/cli/main.py +15 -0
  196. solace_agent_mesh/client/webui/frontend/static/assets/{authCallback-BTf6dqwp.js → authCallback-KnKMP_vb.js} +1 -1
  197. solace_agent_mesh/client/webui/frontend/static/assets/client-DpBL2stg.js +25 -0
  198. solace_agent_mesh/client/webui/frontend/static/assets/main-Cd498TV2.js +435 -0
  199. solace_agent_mesh/client/webui/frontend/static/assets/main-rSf8Vu29.css +1 -0
  200. solace_agent_mesh/client/webui/frontend/static/assets/vendor-CGk8Suyh.js +565 -0
  201. solace_agent_mesh/client/webui/frontend/static/auth-callback.html +3 -3
  202. solace_agent_mesh/client/webui/frontend/static/index.html +4 -4
  203. solace_agent_mesh/client/webui/frontend/static/mockServiceWorker.js +336 -0
  204. solace_agent_mesh/client/webui/frontend/static/ui-version.json +6 -0
  205. solace_agent_mesh/common/a2a/events.py +2 -1
  206. solace_agent_mesh/common/a2a/protocol.py +5 -0
  207. solace_agent_mesh/common/a2a/types.py +2 -1
  208. solace_agent_mesh/common/a2a_spec/schemas/artifact_creation_progress.json +23 -6
  209. solace_agent_mesh/common/a2a_spec/schemas/feedback_event.json +51 -0
  210. solace_agent_mesh/common/agent_registry.py +38 -11
  211. solace_agent_mesh/common/data_parts.py +144 -4
  212. solace_agent_mesh/common/error_handlers.py +83 -0
  213. solace_agent_mesh/common/exceptions.py +24 -0
  214. solace_agent_mesh/common/oauth/__init__.py +17 -0
  215. solace_agent_mesh/common/oauth/oauth_client.py +408 -0
  216. solace_agent_mesh/common/oauth/utils.py +50 -0
  217. solace_agent_mesh/common/rag_dto.py +156 -0
  218. solace_agent_mesh/common/sac/sam_component_base.py +97 -19
  219. solace_agent_mesh/common/sam_events/event_service.py +2 -2
  220. solace_agent_mesh/common/services/employee_service.py +1 -1
  221. solace_agent_mesh/common/utils/embeds/constants.py +1 -0
  222. solace_agent_mesh/common/utils/embeds/converter.py +1 -8
  223. solace_agent_mesh/common/utils/embeds/modifiers.py +4 -28
  224. solace_agent_mesh/common/utils/embeds/resolver.py +152 -31
  225. solace_agent_mesh/common/utils/embeds/types.py +9 -0
  226. solace_agent_mesh/common/utils/log_formatters.py +20 -0
  227. solace_agent_mesh/common/utils/mime_helpers.py +12 -5
  228. solace_agent_mesh/common/utils/pydantic_utils.py +90 -3
  229. solace_agent_mesh/common/utils/rbac_utils.py +69 -0
  230. solace_agent_mesh/common/utils/templates/__init__.py +8 -0
  231. solace_agent_mesh/common/utils/templates/liquid_renderer.py +210 -0
  232. solace_agent_mesh/common/utils/templates/template_resolver.py +161 -0
  233. solace_agent_mesh/config_portal/backend/common.py +12 -0
  234. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-CljP4_mv.js +103 -0
  235. solace_agent_mesh/config_portal/frontend/static/client/assets/{components-Rk0n-9cK.js → components-CaC6hG8d.js} +22 -22
  236. solace_agent_mesh/config_portal/frontend/static/client/assets/{entry.client-mvZjNKiz.js → entry.client-H_TM0YBt.js} +3 -3
  237. solace_agent_mesh/config_portal/frontend/static/client/assets/{index-DzNKzXrc.js → index-CnFykb2v.js} +16 -16
  238. solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-f8439d40.js +1 -0
  239. solace_agent_mesh/config_portal/frontend/static/client/assets/root-BIMqslJB.css +1 -0
  240. solace_agent_mesh/config_portal/frontend/static/client/assets/root-mJmTIdIk.js +10 -0
  241. solace_agent_mesh/config_portal/frontend/static/client/index.html +3 -3
  242. solace_agent_mesh/core_a2a/service.py +3 -2
  243. solace_agent_mesh/gateway/adapter/__init__.py +1 -0
  244. solace_agent_mesh/gateway/adapter/base.py +170 -0
  245. solace_agent_mesh/gateway/adapter/types.py +230 -0
  246. solace_agent_mesh/gateway/base/app.py +39 -2
  247. solace_agent_mesh/gateway/base/auth_interface.py +103 -0
  248. solace_agent_mesh/gateway/base/component.py +1027 -151
  249. solace_agent_mesh/gateway/generic/__init__.py +1 -0
  250. solace_agent_mesh/gateway/generic/app.py +50 -0
  251. solace_agent_mesh/gateway/generic/component.py +894 -0
  252. solace_agent_mesh/gateway/http_sse/alembic/env.py +0 -7
  253. solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_project_users_table.py +72 -0
  254. solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_soft_delete_and_search.py +109 -0
  255. solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_default_agent_to_projects.py +26 -0
  256. solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_projects_table.py +135 -0
  257. solace_agent_mesh/gateway/http_sse/alembic/versions/20251108_create_prompt_tables_with_sharing.py +154 -0
  258. solace_agent_mesh/gateway/http_sse/alembic/versions/20251115_add_parent_task_id.py +32 -0
  259. solace_agent_mesh/gateway/http_sse/alembic/versions/20251126_add_background_task_fields.py +47 -0
  260. solace_agent_mesh/gateway/http_sse/alembic/versions/20251202_add_versioned_fields_to_prompts.py +52 -0
  261. solace_agent_mesh/gateway/http_sse/alembic.ini +0 -36
  262. solace_agent_mesh/gateway/http_sse/app.py +40 -11
  263. solace_agent_mesh/gateway/http_sse/component.py +285 -160
  264. solace_agent_mesh/gateway/http_sse/dependencies.py +149 -114
  265. solace_agent_mesh/gateway/http_sse/main.py +68 -450
  266. solace_agent_mesh/gateway/http_sse/repository/__init__.py +19 -1
  267. solace_agent_mesh/gateway/http_sse/repository/chat_task_repository.py +2 -2
  268. solace_agent_mesh/gateway/http_sse/repository/entities/project.py +81 -0
  269. solace_agent_mesh/gateway/http_sse/repository/entities/project_user.py +47 -0
  270. solace_agent_mesh/gateway/http_sse/repository/entities/session.py +26 -3
  271. solace_agent_mesh/gateway/http_sse/repository/entities/task.py +7 -0
  272. solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +47 -0
  273. solace_agent_mesh/gateway/http_sse/repository/interfaces.py +114 -6
  274. solace_agent_mesh/gateway/http_sse/repository/models/__init__.py +13 -0
  275. solace_agent_mesh/gateway/http_sse/repository/models/project_model.py +51 -0
  276. solace_agent_mesh/gateway/http_sse/repository/models/project_user_model.py +75 -0
  277. solace_agent_mesh/gateway/http_sse/repository/models/prompt_model.py +159 -0
  278. solace_agent_mesh/gateway/http_sse/repository/models/session_model.py +8 -2
  279. solace_agent_mesh/gateway/http_sse/repository/models/task_model.py +8 -1
  280. solace_agent_mesh/gateway/http_sse/repository/project_repository.py +172 -0
  281. solace_agent_mesh/gateway/http_sse/repository/project_user_repository.py +186 -0
  282. solace_agent_mesh/gateway/http_sse/repository/session_repository.py +177 -11
  283. solace_agent_mesh/gateway/http_sse/repository/task_repository.py +86 -2
  284. solace_agent_mesh/gateway/http_sse/routers/agent_cards.py +38 -7
  285. solace_agent_mesh/gateway/http_sse/routers/artifacts.py +256 -58
  286. solace_agent_mesh/gateway/http_sse/routers/auth.py +168 -134
  287. solace_agent_mesh/gateway/http_sse/routers/config.py +302 -8
  288. solace_agent_mesh/gateway/http_sse/routers/dto/project_dto.py +69 -0
  289. solace_agent_mesh/gateway/http_sse/routers/dto/prompt_dto.py +255 -0
  290. solace_agent_mesh/gateway/http_sse/routers/dto/requests/project_requests.py +48 -0
  291. solace_agent_mesh/gateway/http_sse/routers/dto/requests/session_requests.py +14 -1
  292. solace_agent_mesh/gateway/http_sse/routers/dto/responses/base_responses.py +1 -1
  293. solace_agent_mesh/gateway/http_sse/routers/dto/responses/project_responses.py +31 -0
  294. solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +5 -2
  295. solace_agent_mesh/gateway/http_sse/routers/dto/responses/version_responses.py +31 -0
  296. solace_agent_mesh/gateway/http_sse/routers/feedback.py +133 -2
  297. solace_agent_mesh/gateway/http_sse/routers/people.py +2 -2
  298. solace_agent_mesh/gateway/http_sse/routers/projects.py +768 -0
  299. solace_agent_mesh/gateway/http_sse/routers/prompts.py +1416 -0
  300. solace_agent_mesh/gateway/http_sse/routers/sessions.py +167 -7
  301. solace_agent_mesh/gateway/http_sse/routers/speech.py +355 -0
  302. solace_agent_mesh/gateway/http_sse/routers/sse.py +131 -8
  303. solace_agent_mesh/gateway/http_sse/routers/tasks.py +670 -18
  304. solace_agent_mesh/gateway/http_sse/routers/users.py +1 -1
  305. solace_agent_mesh/gateway/http_sse/routers/version.py +343 -0
  306. solace_agent_mesh/gateway/http_sse/routers/visualization.py +92 -9
  307. solace_agent_mesh/gateway/http_sse/services/audio_service.py +1227 -0
  308. solace_agent_mesh/gateway/http_sse/services/background_task_monitor.py +186 -0
  309. solace_agent_mesh/gateway/http_sse/services/data_retention_service.py +1 -1
  310. solace_agent_mesh/gateway/http_sse/services/feedback_service.py +1 -1
  311. solace_agent_mesh/gateway/http_sse/services/project_service.py +930 -0
  312. solace_agent_mesh/gateway/http_sse/services/prompt_builder_assistant.py +303 -0
  313. solace_agent_mesh/gateway/http_sse/services/session_service.py +361 -12
  314. solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +354 -4
  315. solace_agent_mesh/gateway/http_sse/session_manager.py +15 -15
  316. solace_agent_mesh/gateway/http_sse/sse_manager.py +286 -166
  317. solace_agent_mesh/gateway/http_sse/utils/artifact_copy_utils.py +370 -0
  318. solace_agent_mesh/gateway/http_sse/utils/stim_utils.py +41 -1
  319. solace_agent_mesh/services/__init__.py +0 -0
  320. solace_agent_mesh/services/platform/__init__.py +29 -0
  321. solace_agent_mesh/services/platform/alembic/env.py +85 -0
  322. solace_agent_mesh/services/platform/alembic/script.py.mako +28 -0
  323. solace_agent_mesh/services/platform/alembic.ini +109 -0
  324. solace_agent_mesh/services/platform/api/__init__.py +3 -0
  325. solace_agent_mesh/services/platform/api/dependencies.py +154 -0
  326. solace_agent_mesh/services/platform/api/main.py +314 -0
  327. solace_agent_mesh/services/platform/api/middleware.py +51 -0
  328. solace_agent_mesh/services/platform/api/routers/__init__.py +33 -0
  329. solace_agent_mesh/services/platform/api/routers/health_router.py +31 -0
  330. solace_agent_mesh/services/platform/app.py +215 -0
  331. solace_agent_mesh/services/platform/component.py +777 -0
  332. solace_agent_mesh/shared/__init__.py +14 -0
  333. solace_agent_mesh/shared/api/__init__.py +42 -0
  334. solace_agent_mesh/shared/auth/__init__.py +26 -0
  335. solace_agent_mesh/shared/auth/dependencies.py +204 -0
  336. solace_agent_mesh/shared/auth/middleware.py +347 -0
  337. solace_agent_mesh/shared/database/__init__.py +20 -0
  338. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/base_repository.py +1 -1
  339. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_exceptions.py +1 -1
  340. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_helpers.py +1 -1
  341. solace_agent_mesh/shared/exceptions/__init__.py +36 -0
  342. solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/exception_handlers.py +19 -5
  343. solace_agent_mesh/shared/utils/__init__.py +21 -0
  344. solace_agent_mesh/templates/logging_config_template.yaml +48 -0
  345. solace_agent_mesh/templates/main_orchestrator.yaml +12 -1
  346. solace_agent_mesh/templates/platform.yaml +49 -0
  347. solace_agent_mesh/templates/plugin_readme_template.md +3 -25
  348. solace_agent_mesh/templates/plugin_tool_config_template.yaml +109 -0
  349. solace_agent_mesh/templates/proxy_template.yaml +62 -0
  350. solace_agent_mesh/templates/webui.yaml +148 -6
  351. solace_agent_mesh/tools/web_search/__init__.py +18 -0
  352. solace_agent_mesh/tools/web_search/base.py +84 -0
  353. solace_agent_mesh/tools/web_search/google_search.py +247 -0
  354. solace_agent_mesh/tools/web_search/models.py +99 -0
  355. {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/METADATA +31 -12
  356. solace_agent_mesh-1.13.2.dist-info/RECORD +591 -0
  357. {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/WHEEL +1 -1
  358. solace_agent_mesh/agent/adk/adk_llm.txt +0 -232
  359. solace_agent_mesh/agent/adk/adk_llm_detail.txt +0 -566
  360. solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt +0 -171
  361. solace_agent_mesh/agent/adk/models/models_llm.txt +0 -142
  362. solace_agent_mesh/agent/agent_llm.txt +0 -378
  363. solace_agent_mesh/agent/agent_llm_detail.txt +0 -1702
  364. solace_agent_mesh/agent/protocol/protocol_llm.txt +0 -81
  365. solace_agent_mesh/agent/protocol/protocol_llm_detail.txt +0 -92
  366. solace_agent_mesh/agent/sac/sac_llm.txt +0 -189
  367. solace_agent_mesh/agent/sac/sac_llm_detail.txt +0 -200
  368. solace_agent_mesh/agent/testing/testing_llm.txt +0 -57
  369. solace_agent_mesh/agent/testing/testing_llm_detail.txt +0 -68
  370. solace_agent_mesh/agent/tools/tools_llm.txt +0 -263
  371. solace_agent_mesh/agent/tools/tools_llm_detail.txt +0 -274
  372. solace_agent_mesh/agent/utils/utils_llm.txt +0 -138
  373. solace_agent_mesh/agent/utils/utils_llm_detail.txt +0 -149
  374. solace_agent_mesh/assets/docs/assets/js/15ba94aa.932dd2db.js +0 -1
  375. solace_agent_mesh/assets/docs/assets/js/17896441.a5e82f9b.js +0 -2
  376. solace_agent_mesh/assets/docs/assets/js/240a0364.7eac6021.js +0 -1
  377. solace_agent_mesh/assets/docs/assets/js/2e32b5e0.33f5d75b.js +0 -1
  378. solace_agent_mesh/assets/docs/assets/js/3a6c6137.f5940cfa.js +0 -1
  379. solace_agent_mesh/assets/docs/assets/js/3ac1795d.76654dd9.js +0 -1
  380. solace_agent_mesh/assets/docs/assets/js/3ff0015d.2be20244.js +0 -1
  381. solace_agent_mesh/assets/docs/assets/js/547e15cc.2cbb060a.js +0 -1
  382. solace_agent_mesh/assets/docs/assets/js/55b7b518.f2b1d1ba.js +0 -1
  383. solace_agent_mesh/assets/docs/assets/js/5c2bd65f.eda4bcb2.js +0 -1
  384. solace_agent_mesh/assets/docs/assets/js/631738c7.a8b1ef8b.js +0 -1
  385. solace_agent_mesh/assets/docs/assets/js/6a520c9d.ba015d81.js +0 -1
  386. solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.f4b15f3b.js +0 -1
  387. solace_agent_mesh/assets/docs/assets/js/6d84eae0.4a5fbf39.js +0 -1
  388. solace_agent_mesh/assets/docs/assets/js/71da7b71.38583438.js +0 -1
  389. solace_agent_mesh/assets/docs/assets/js/8024126c.56e59919.js +0 -1
  390. solace_agent_mesh/assets/docs/assets/js/81a99df0.07034dd9.js +0 -1
  391. solace_agent_mesh/assets/docs/assets/js/82fbfb93.139a1a1f.js +0 -1
  392. solace_agent_mesh/assets/docs/assets/js/924ffdeb.8095e148.js +0 -1
  393. solace_agent_mesh/assets/docs/assets/js/94e8668d.b5ddb7a1.js +0 -1
  394. solace_agent_mesh/assets/docs/assets/js/9bb13469.dd1c9b54.js +0 -1
  395. solace_agent_mesh/assets/docs/assets/js/a94703ab.0438dbc2.js +0 -1
  396. solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e6dd091.js +0 -1
  397. solace_agent_mesh/assets/docs/assets/js/c93cbaa0.eaff365e.js +0 -1
  398. solace_agent_mesh/assets/docs/assets/js/da0b5bad.d08a9466.js +0 -1
  399. solace_agent_mesh/assets/docs/assets/js/dd817ffc.0aa9630a.js +0 -1
  400. solace_agent_mesh/assets/docs/assets/js/dd81e2b8.d590bc9e.js +0 -1
  401. solace_agent_mesh/assets/docs/assets/js/de915948.27d6b065.js +0 -1
  402. solace_agent_mesh/assets/docs/assets/js/e3d9abda.6b9493d0.js +0 -1
  403. solace_agent_mesh/assets/docs/assets/js/e6f9706b.e74a984d.js +0 -1
  404. solace_agent_mesh/assets/docs/assets/js/e92d0134.cf6d6522.js +0 -1
  405. solace_agent_mesh/assets/docs/assets/js/f284c35a.42f59cdd.js +0 -1
  406. solace_agent_mesh/assets/docs/assets/js/ff4d71f2.15b02f97.js +0 -1
  407. solace_agent_mesh/assets/docs/assets/js/main.b12eac43.js +0 -2
  408. solace_agent_mesh/assets/docs/assets/js/runtime~main.e268214e.js +0 -1
  409. solace_agent_mesh/assets/docs/lunr-index-1761248203150.json +0 -1
  410. solace_agent_mesh/assets/docs/search-doc-1761248203150.json +0 -1
  411. solace_agent_mesh/cli/commands/add_cmd/add_cmd_llm.txt +0 -250
  412. solace_agent_mesh/cli/commands/init_cmd/init_cmd_llm.txt +0 -365
  413. solace_agent_mesh/cli/commands/plugin_cmd/plugin_cmd_llm.txt +0 -305
  414. solace_agent_mesh/client/webui/frontend/static/assets/client-CaY59VuC.js +0 -25
  415. solace_agent_mesh/client/webui/frontend/static/assets/main-B32noGmR.js +0 -342
  416. solace_agent_mesh/client/webui/frontend/static/assets/main-DHJKSW1S.css +0 -1
  417. solace_agent_mesh/client/webui/frontend/static/assets/vendor-BEmvJSYz.js +0 -405
  418. solace_agent_mesh/common/a2a/a2a_llm.txt +0 -182
  419. solace_agent_mesh/common/a2a/a2a_llm_detail.txt +0 -193
  420. solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +0 -407
  421. solace_agent_mesh/common/a2a_spec/a2a_spec_llm_detail.txt +0 -736
  422. solace_agent_mesh/common/a2a_spec/schemas/schemas_llm.txt +0 -313
  423. solace_agent_mesh/common/common_llm.txt +0 -251
  424. solace_agent_mesh/common/common_llm_detail.txt +0 -2562
  425. solace_agent_mesh/common/middleware/middleware_llm.txt +0 -174
  426. solace_agent_mesh/common/middleware/middleware_llm_detail.txt +0 -185
  427. solace_agent_mesh/common/sac/sac_llm.txt +0 -71
  428. solace_agent_mesh/common/sac/sac_llm_detail.txt +0 -82
  429. solace_agent_mesh/common/sam_events/sam_events_llm.txt +0 -104
  430. solace_agent_mesh/common/sam_events/sam_events_llm_detail.txt +0 -115
  431. solace_agent_mesh/common/services/providers/providers_llm.txt +0 -80
  432. solace_agent_mesh/common/services/services_llm.txt +0 -363
  433. solace_agent_mesh/common/services/services_llm_detail.txt +0 -459
  434. solace_agent_mesh/common/utils/embeds/embeds_llm.txt +0 -220
  435. solace_agent_mesh/common/utils/utils_llm.txt +0 -336
  436. solace_agent_mesh/common/utils/utils_llm_detail.txt +0 -572
  437. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-ByU1X1HD.js +0 -98
  438. solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-61038fc6.js +0 -1
  439. solace_agent_mesh/config_portal/frontend/static/client/assets/root-BWvk5-gF.js +0 -10
  440. solace_agent_mesh/config_portal/frontend/static/client/assets/root-DxRwaWiE.css +0 -1
  441. solace_agent_mesh/core_a2a/core_a2a_llm.txt +0 -90
  442. solace_agent_mesh/core_a2a/core_a2a_llm_detail.txt +0 -101
  443. solace_agent_mesh/gateway/base/base_llm.txt +0 -224
  444. solace_agent_mesh/gateway/base/base_llm_detail.txt +0 -235
  445. solace_agent_mesh/gateway/gateway_llm.txt +0 -373
  446. solace_agent_mesh/gateway/gateway_llm_detail.txt +0 -3885
  447. solace_agent_mesh/gateway/http_sse/alembic/alembic_llm.txt +0 -295
  448. solace_agent_mesh/gateway/http_sse/alembic/versions/versions_llm.txt +0 -155
  449. solace_agent_mesh/gateway/http_sse/components/components_llm.txt +0 -105
  450. solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +0 -299
  451. solace_agent_mesh/gateway/http_sse/http_sse_llm_detail.txt +0 -3278
  452. solace_agent_mesh/gateway/http_sse/repository/entities/entities_llm.txt +0 -263
  453. solace_agent_mesh/gateway/http_sse/repository/models/models_llm.txt +0 -266
  454. solace_agent_mesh/gateway/http_sse/repository/repository_llm.txt +0 -340
  455. solace_agent_mesh/gateway/http_sse/routers/dto/dto_llm.txt +0 -346
  456. solace_agent_mesh/gateway/http_sse/routers/dto/requests/requests_llm.txt +0 -83
  457. solace_agent_mesh/gateway/http_sse/routers/dto/responses/responses_llm.txt +0 -107
  458. solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +0 -314
  459. solace_agent_mesh/gateway/http_sse/services/services_llm.txt +0 -297
  460. solace_agent_mesh/gateway/http_sse/shared/__init__.py +0 -146
  461. solace_agent_mesh/gateway/http_sse/shared/shared_llm.txt +0 -285
  462. solace_agent_mesh/gateway/http_sse/utils/utils_llm.txt +0 -47
  463. solace_agent_mesh/llm.txt +0 -228
  464. solace_agent_mesh/llm_detail.txt +0 -2835
  465. solace_agent_mesh/solace_agent_mesh_llm.txt +0 -362
  466. solace_agent_mesh/solace_agent_mesh_llm_detail.txt +0 -8599
  467. solace_agent_mesh/templates/logging_config_template.ini +0 -45
  468. solace_agent_mesh/templates/templates_llm.txt +0 -147
  469. solace_agent_mesh-1.6.1.dist-info/RECORD +0 -525
  470. /solace_agent_mesh/assets/docs/assets/js/{main.b12eac43.js.LICENSE.txt → main.d634009f.js.LICENSE.txt} +0 -0
  471. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/auth_utils.py +0 -0
  472. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/pagination.py +0 -0
  473. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/response_utils.py +0 -0
  474. /solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/error_dto.py +0 -0
  475. /solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/exceptions.py +0 -0
  476. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/enums.py +0 -0
  477. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/timestamp_utils.py +0 -0
  478. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/types.py +0 -0
  479. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/utils.py +0 -0
  480. {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/entry_points.txt +0 -0
  481. {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/licenses/LICENSE +0 -0
@@ -2,50 +2,58 @@
2
2
  Handles ADK Agent and Runner initialization, including tool loading and callback assignment.
3
3
  """
4
4
 
5
- import logging
6
- from typing import Dict, List, Optional, Union, Callable, Tuple, Set, Any, TYPE_CHECKING, Type
7
5
  import functools
8
6
  import inspect
9
- from solace_ai_connector.common.utils import import_module
10
- from ...common.utils.type_utils import is_subclass_by_name
11
-
7
+ import logging
8
+ import os
9
+ from typing import (
10
+ TYPE_CHECKING,
11
+ Any,
12
+ Callable,
13
+ Dict,
14
+ List,
15
+ Optional,
16
+ Set,
17
+ Tuple,
18
+ Type,
19
+ Union,
20
+ )
12
21
 
13
- from .app_llm_agent import AppLlmAgent
14
- from .tool_wrapper import ADKToolWrapper
15
- from .embed_resolving_mcp_toolset import EmbedResolvingMCPToolset
16
- from google.adk.runners import Runner
17
- from google.adk.models import BaseLlm
18
- from google.adk.tools import BaseTool, ToolContext
19
22
  from google.adk import tools as adk_tools_module
20
23
  from google.adk.agents.callback_context import CallbackContext
24
+ from google.adk.models import BaseLlm
21
25
  from google.adk.models.llm_request import LlmRequest
22
26
  from google.adk.models.llm_response import LlmResponse
27
+ from google.adk.runners import Runner
28
+ from google.adk.tools import BaseTool, ToolContext
29
+ from google.adk.tools.mcp_tool import MCPTool
23
30
  from google.adk.tools.mcp_tool.mcp_session_manager import (
24
31
  SseServerParams,
25
32
  StdioConnectionParams,
26
33
  StreamableHTTPServerParams,
27
-
28
34
  )
29
-
30
35
  from mcp import StdioServerParameters
36
+ from solace_ai_connector.common.utils import import_module
31
37
 
32
- if TYPE_CHECKING:
33
- from ..sac.component import SamAgentComponent
34
-
35
- from ..tools.registry import tool_registry
36
- from ..tools.tool_definition import BuiltinTool
38
+ from ...agent.adk import callbacks as adk_callbacks
39
+ from ...agent.adk.models.lite_llm import LiteLlm
40
+ from ...common.utils.type_utils import is_subclass_by_name
37
41
  from ..tools.dynamic_tool import DynamicTool, DynamicToolProvider
42
+ from ..tools.registry import tool_registry
38
43
  from ..tools.tool_config_types import (
39
44
  AnyToolConfig,
40
- BuiltinToolConfig,
41
45
  BuiltinGroupToolConfig,
46
+ BuiltinToolConfig,
42
47
  McpToolConfig,
43
48
  PythonToolConfig,
44
49
  )
50
+ from ..tools.tool_definition import BuiltinTool
51
+ from .app_llm_agent import AppLlmAgent
52
+ from .embed_resolving_mcp_toolset import EmbedResolvingMCPToolset
53
+ from .tool_wrapper import ADKToolWrapper
45
54
 
46
-
47
- from ...agent.adk import callbacks as adk_callbacks
48
- from ...agent.adk.models.lite_llm import LiteLlm
55
+ if TYPE_CHECKING:
56
+ from ..sac.component import SamAgentComponent
49
57
 
50
58
  log = logging.getLogger(__name__)
51
59
 
@@ -488,7 +496,16 @@ async def _load_builtin_group_tool(component: "SamAgentComponent", tool_config:
488
496
  loaded_tools: List[Union[BaseTool, Callable]] = []
489
497
  enabled_builtin_tools: List[BuiltinTool] = []
490
498
  for tool_def in tools_in_group:
499
+ # Try to get tool-specific config, but fall back to the entire tool_config
500
+ # This allows both patterns:
501
+ # 1. tool_config with keys at top level (e.g., api_key: "xxx")
502
+ # 2. tool_config with nested configs per tool (e.g., tool_name: {api_key: "xxx"})
491
503
  specific_tool_config = tool_config_model.tool_config.get(tool_def.name)
504
+ if specific_tool_config is None:
505
+ # No tool-specific config found, use the entire tool_config
506
+ # This is the common case for groups where all tools share the same config
507
+ specific_tool_config = tool_config_model.tool_config
508
+
492
509
  tool_callable = ADKToolWrapper(
493
510
  tool_def.implementation,
494
511
  specific_tool_config,
@@ -506,6 +523,35 @@ async def _load_builtin_group_tool(component: "SamAgentComponent", tool_config:
506
523
  )
507
524
  return loaded_tools, enabled_builtin_tools, []
508
525
 
526
+ def validate_filesystem_path(path, log_identifier=""):
527
+ """
528
+ Validates that a filesystem path exists and is accessible.
529
+
530
+ Args:
531
+ path: The filesystem path to validate
532
+ log_identifier: Optional identifier for logging
533
+
534
+ Returns:
535
+ bool: True if the path exists and is accessible, False otherwise
536
+
537
+ Raises:
538
+ ValueError: If the path doesn't exist or isn't accessible
539
+ """
540
+ if not path:
541
+ raise ValueError(f"{log_identifier} Filesystem path is empty or None")
542
+
543
+ if not os.path.exists(path):
544
+ raise ValueError(f"{log_identifier} Filesystem path does not exist: {path}")
545
+
546
+ if not os.path.isdir(path):
547
+ raise ValueError(f"{log_identifier} Filesystem path is not a directory: {path}")
548
+
549
+ # Check if the directory is readable and writable
550
+ if not os.access(path, os.R_OK | os.W_OK):
551
+ raise ValueError(f"{log_identifier} Filesystem path is not readable and writable: {path}")
552
+
553
+ return True
554
+
509
555
  async def _load_mcp_tool(component: "SamAgentComponent", tool_config: Dict) -> ToolLoadingResult:
510
556
  """Loads an MCP toolset based on connection parameters."""
511
557
  from pydantic import TypeAdapter
@@ -553,6 +599,31 @@ async def _load_mcp_tool(component: "SamAgentComponent", tool_config: Dict) -> T
553
599
  raise ValueError(
554
600
  f"MCP tool 'args' parameter must be a list, got {type(args_list)}"
555
601
  )
602
+
603
+ # Check if this is the filesystem MCP server
604
+ if args_list and any("@modelcontextprotocol/server-filesystem" in arg for arg in args_list):
605
+ # Find the index of the server-filesystem argument
606
+ server_fs_index = -1
607
+ for i, arg in enumerate(args_list):
608
+ if "@modelcontextprotocol/server-filesystem" in arg:
609
+ server_fs_index = i
610
+ break
611
+
612
+ # All arguments after server-filesystem are directory paths
613
+ if server_fs_index >= 0 and server_fs_index + 1 < len(args_list):
614
+ directory_paths = args_list[server_fs_index + 1:]
615
+
616
+ for path in directory_paths:
617
+ try:
618
+ validate_filesystem_path(path, log_identifier=component.log_identifier)
619
+ log.info(
620
+ "%s Validated filesystem path for MCP server: %s",
621
+ component.log_identifier,
622
+ path
623
+ )
624
+ except ValueError as e:
625
+ log.error("%s", str(e))
626
+ raise ValueError(f"MCP filesystem server path validation failed: {e}")
556
627
  final_connection_args = {
557
628
  k: v
558
629
  for k, v in connection_args.items()
@@ -575,32 +646,153 @@ async def _load_mcp_tool(component: "SamAgentComponent", tool_config: Dict) -> T
575
646
  else:
576
647
  raise ValueError(f"Unsupported MCP connection type: {connection_type}")
577
648
 
578
- tool_filter_list = (
579
- [tool_config_model.tool_name] if tool_config_model.tool_name else None
580
- )
581
- if tool_filter_list:
649
+ # Determine tool filter based on configuration
650
+ # tool_name, allow_list, and deny_list are mutually exclusive (validated by pydantic)
651
+ tool_filter = None
652
+ filter_description = "none (all tools)"
653
+
654
+ if tool_config_model.tool_name:
655
+ # Backward compatible: single tool name becomes a list
656
+ tool_filter = [tool_config_model.tool_name]
657
+ filter_description = f"tool_name='{tool_config_model.tool_name}'"
658
+ elif tool_config_model.allow_list:
659
+ # Allow list: pass directly as list of tool names
660
+ tool_filter = tool_config_model.allow_list
661
+ filter_description = f"allow_list={tool_config_model.allow_list}"
662
+ elif tool_config_model.deny_list:
663
+ # Deny list: create a ToolPredicate that excludes these tools
664
+ deny_set = set(tool_config_model.deny_list)
665
+ tool_filter = lambda tool, ctx=None, _deny=deny_set: tool.name not in _deny
666
+ filter_description = f"deny_list={tool_config_model.deny_list}"
667
+
668
+ if tool_filter:
582
669
  log.info(
583
- "%s MCP tool config specifies tool_name: '%s'. Applying as tool_filter.",
670
+ "%s MCP tool config specifies filter: %s",
584
671
  component.log_identifier,
585
- tool_config_model.tool_name,
672
+ filter_description,
586
673
  )
587
674
 
588
- mcp_toolset_instance = EmbedResolvingMCPToolset(
589
- connection_params=connection_params,
590
- tool_filter=tool_filter_list,
591
- tool_config=tool_config,
592
- )
675
+ additional_params = {}
676
+ try:
677
+ from solace_agent_mesh_enterprise.auth.tool_configurator import (
678
+ configure_mcp_tool,
679
+ )
680
+
681
+ try:
682
+ # Call the tool configurator with MCP-specific context
683
+ additional_params = configure_mcp_tool(
684
+ tool_type="mcp",
685
+ tool_config=tool_config,
686
+ connection_params=connection_params,
687
+ tool_filter=tool_filter,
688
+ )
689
+ except Exception as e:
690
+ log.error(
691
+ "%s Tool configurator failed for %s: %s",
692
+ component.log_identifier,
693
+ tool_config.get("name", "unknown"),
694
+ e,
695
+ )
696
+ # Continue with normal tool creation if configurator fails
697
+ additional_params = {}
698
+ except ImportError:
699
+ pass
700
+
701
+ # Create the EmbedResolvingMCPToolset with base parameters
702
+ toolset_params = {
703
+ "connection_params": connection_params,
704
+ "tool_filter": tool_filter,
705
+ "tool_name_prefix": tool_config_model.tool_name_prefix,
706
+ "tool_config": tool_config,
707
+ }
708
+
709
+ # Merge additional parameters from configurator
710
+ toolset_params.update(additional_params)
711
+
712
+ mcp_toolset_instance = EmbedResolvingMCPToolset(**toolset_params)
593
713
  mcp_toolset_instance.origin = "mcp"
594
714
 
595
715
  log.info(
596
- "%s Initialized MCPToolset (filter: %s) for server: %s",
597
- component.log_identifier,
598
- (tool_filter_list if tool_filter_list else "none (all tools)"),
599
- connection_params,
716
+ "%s Initialized MCPToolset (filter: %s) for server: %s",
717
+ component.log_identifier,
718
+ filter_description,
719
+ connection_params,
600
720
  )
601
721
 
602
722
  return [mcp_toolset_instance], [], []
603
723
 
724
+
725
+ async def _load_openapi_tool(component: "SamAgentComponent", tool_config: Dict) -> ToolLoadingResult:
726
+ """
727
+ Loads an OpenAPI toolset by delegating to the enterprise configurator.
728
+
729
+ This function validates the tool configuration and attempts to load the OpenAPI tool
730
+ using the enterprise package. If the enterprise package is not available, it logs a
731
+ warning and returns empty results.
732
+
733
+ Args:
734
+ component: The SamAgentComponent instance
735
+ tool_config: Dictionary containing the tool's configuration
736
+
737
+ Returns:
738
+ ToolLoadingResult: Tuple of (tools, builtins, cleanup_hooks)
739
+ Returns ([], [], []) if enterprise package not available
740
+ """
741
+ from pydantic import TypeAdapter
742
+
743
+ from ..tools.tool_config_types import OpenApiToolConfig
744
+
745
+ # Validate basic tool configuration structure
746
+ openapi_tool_adapter = TypeAdapter(OpenApiToolConfig)
747
+ try:
748
+ tool_config_model = openapi_tool_adapter.validate_python(tool_config)
749
+ except Exception as e:
750
+ log.error(
751
+ "%s Invalid OpenAPI tool configuration: %s",
752
+ component.log_identifier,
753
+ e,
754
+ )
755
+ raise
756
+
757
+ # Try to load the tool using the enterprise configurator
758
+ try:
759
+ from solace_agent_mesh_enterprise.auth.tool_configurator import (
760
+ configure_openapi_tool,
761
+ )
762
+
763
+ try:
764
+ openapi_toolset = configure_openapi_tool(
765
+ tool_type="openapi",
766
+ tool_config=tool_config,
767
+ )
768
+ openapi_toolset.origin = "openapi"
769
+
770
+ log.info(
771
+ "%s Loaded OpenAPI toolset via enterprise configurator",
772
+ component.log_identifier,
773
+ )
774
+
775
+ return [openapi_toolset], [], []
776
+
777
+ except Exception as e:
778
+ log.error(
779
+ "%s Failed to create OpenAPI tool %s: %s",
780
+ component.log_identifier,
781
+ tool_config.get("name", "unknown"),
782
+ e,
783
+ )
784
+ raise
785
+
786
+ except ImportError:
787
+ log.warning(
788
+ "%s OpenAPI tools require the solace-agent-mesh-enterprise package. "
789
+ "Skipping tool configuration: %s",
790
+ component.log_identifier,
791
+ tool_config.get("name", "unknown"),
792
+ )
793
+ return [], [], []
794
+
795
+
604
796
  def _load_internal_tools(component: "SamAgentComponent", loaded_tool_names: Set[str]) -> ToolLoadingResult:
605
797
  """Loads internal framework tools that are not explicitly configured by the user."""
606
798
  loaded_tools: List[Union[BaseTool, Callable]] = []
@@ -722,6 +914,12 @@ async def load_adk_tools(
722
914
  new_builtins,
723
915
  new_cleanups,
724
916
  ) = await _load_mcp_tool(component, tool_config)
917
+ elif tool_type == "openapi":
918
+ (
919
+ new_tools,
920
+ new_builtins,
921
+ new_cleanups,
922
+ ) = await _load_openapi_tool(component, tool_config)
725
923
  else:
726
924
  log.warning(
727
925
  "%s Unknown tool type '%s' in config: %s",
@@ -734,19 +932,7 @@ async def load_adk_tools(
734
932
  for tool in new_tools:
735
933
  if isinstance(tool, EmbedResolvingMCPToolset):
736
934
  # Special handling for MCPToolset which can load multiple tools
737
- try:
738
- mcp_tools = await tool.get_tools()
739
- for mcp_tool in mcp_tools:
740
- _check_and_register_tool_name(
741
- mcp_tool.name, "mcp", loaded_tool_names
742
- )
743
- except Exception as e:
744
- log.error(
745
- "%s Failed to discover tools from MCP server for name registration: %s",
746
- component.log_identifier,
747
- str(e),
748
- )
749
- raise
935
+ await _check_and_register_tool_name_mcp(component, loaded_tool_names, tool)
750
936
  else:
751
937
  tool_name = getattr(
752
938
  tool, "name", getattr(tool, "__name__", None)
@@ -790,6 +976,25 @@ async def load_adk_tools(
790
976
  return loaded_tools, enabled_builtin_tools, cleanup_hooks
791
977
 
792
978
 
979
+ async def _check_and_register_tool_name_mcp(component, loaded_tool_names: set[str], tool: EmbedResolvingMCPToolset):
980
+ try:
981
+ mcp_tools: list[MCPTool] = await tool.get_tools()
982
+ for mcp_tool in mcp_tools:
983
+ toolname = mcp_tool.name
984
+ if tool.tool_name_prefix != None:
985
+ toolname = f"{tool.tool_name_prefix}_{toolname}"
986
+ _check_and_register_tool_name(
987
+ toolname, "mcp", loaded_tool_names
988
+ )
989
+ except Exception as e:
990
+ log.error(
991
+ "%s Failed to discover tools from MCP server for name registration: %s",
992
+ component.log_identifier,
993
+ str(e),
994
+ )
995
+ raise
996
+
997
+
793
998
  def initialize_adk_agent(
794
999
  component,
795
1000
  loaded_explicit_tools: List[Union[BaseTool, Callable]],
@@ -891,7 +1096,7 @@ def initialize_adk_agent(
891
1096
  callbacks_in_order_for_before_model.append(
892
1097
  adk_callbacks.repair_history_callback
893
1098
  )
894
- log.info(
1099
+ log.debug(
895
1100
  "%s Added repair_history_callback to before_model chain.",
896
1101
  component.log_identifier,
897
1102
  )
@@ -900,7 +1105,7 @@ def initialize_adk_agent(
900
1105
  callbacks_in_order_for_before_model.append(
901
1106
  component._inject_peer_tools_callback
902
1107
  )
903
- log.info(
1108
+ log.debug(
904
1109
  "%s Added _inject_peer_tools_callback to before_model chain.",
905
1110
  component.log_identifier,
906
1111
  )
@@ -909,7 +1114,7 @@ def initialize_adk_agent(
909
1114
  callbacks_in_order_for_before_model.append(
910
1115
  component._filter_tools_by_capability_callback
911
1116
  )
912
- log.info(
1117
+ log.debug(
913
1118
  "%s Added _filter_tools_by_capability_callback to before_model chain.",
914
1119
  component.log_identifier,
915
1120
  )
@@ -917,7 +1122,7 @@ def initialize_adk_agent(
917
1122
  callbacks_in_order_for_before_model.append(
918
1123
  component._inject_gateway_instructions_callback
919
1124
  )
920
- log.info(
1125
+ log.debug(
921
1126
  "%s Added _inject_gateway_instructions_callback to before_model chain.",
922
1127
  component.log_identifier,
923
1128
  )
@@ -930,7 +1135,7 @@ def initialize_adk_agent(
930
1135
  callbacks_in_order_for_before_model.append(
931
1136
  dynamic_instruction_callback_with_component
932
1137
  )
933
- log.info(
1138
+ log.debug(
934
1139
  "%s Added inject_dynamic_instructions_callback to before_model chain.",
935
1140
  component.log_identifier,
936
1141
  )
@@ -957,7 +1162,7 @@ def initialize_adk_agent(
957
1162
  return None
958
1163
 
959
1164
  agent.before_model_callback = final_before_model_wrapper
960
- log.info(
1165
+ log.debug(
961
1166
  "%s Final before_model_callback chain (Solace logging now occurs last) assigned to agent.",
962
1167
  component.log_identifier,
963
1168
  )
@@ -967,7 +1172,7 @@ def initialize_adk_agent(
967
1172
  host_component=component,
968
1173
  )
969
1174
  agent.before_tool_callback = tool_invocation_start_cb_with_component
970
- log.info(
1175
+ log.debug(
971
1176
  "%s Assigned notify_tool_invocation_start_callback as before_tool_callback.",
972
1177
  component.log_identifier,
973
1178
  )
@@ -1053,7 +1258,7 @@ def initialize_adk_agent(
1053
1258
  return tool_response
1054
1259
 
1055
1260
  agent.after_tool_callback = chained_after_tool_callback
1056
- log.info(
1261
+ log.debug(
1057
1262
  "%s Chained 'manage_large_mcp_tool_responses_callback' and 'after_tool_callback_inject_metadata' as after_tool_callback.",
1058
1263
  component.log_identifier,
1059
1264
  )
@@ -1062,33 +1267,43 @@ def initialize_adk_agent(
1062
1267
  # The callbacks are executed in the order they are added to this list.
1063
1268
  callbacks_in_order_for_after_model = []
1064
1269
 
1065
- # 1. Fenced Artifact Block Processing (must run before auto-continue)
1270
+ # 1. Pre-register long-running tools (must run BEFORE tool execution)
1271
+ preregister_cb = functools.partial(
1272
+ adk_callbacks.preregister_long_running_tools_callback, host_component=component
1273
+ )
1274
+ callbacks_in_order_for_after_model.append(preregister_cb)
1275
+ log.debug(
1276
+ "%s Added preregister_long_running_tools_callback to after_model chain.",
1277
+ component.log_identifier,
1278
+ )
1279
+
1280
+ # 2. Fenced Artifact Block Processing (must run before auto-continue)
1066
1281
  artifact_block_cb = functools.partial(
1067
1282
  adk_callbacks.process_artifact_blocks_callback, host_component=component
1068
1283
  )
1069
1284
  callbacks_in_order_for_after_model.append(artifact_block_cb)
1070
- log.info(
1285
+ log.debug(
1071
1286
  "%s Added process_artifact_blocks_callback to after_model chain.",
1072
1287
  component.log_identifier,
1073
1288
  )
1074
1289
 
1075
- # 2. Auto-Continuation (may short-circuit the chain)
1290
+ # 3. Auto-Continuation (may short-circuit the chain)
1076
1291
  auto_continue_cb = functools.partial(
1077
1292
  adk_callbacks.auto_continue_on_max_tokens_callback, host_component=component
1078
1293
  )
1079
1294
  callbacks_in_order_for_after_model.append(auto_continue_cb)
1080
- log.info(
1295
+ log.debug(
1081
1296
  "%s Added auto_continue_on_max_tokens_callback to after_model chain.",
1082
1297
  component.log_identifier,
1083
1298
  )
1084
1299
 
1085
- # 3. Solace LLM Response Logging
1300
+ # 4. Solace LLM Response Logging
1086
1301
  solace_llm_response_cb = functools.partial(
1087
1302
  adk_callbacks.solace_llm_response_callback, host_component=component
1088
1303
  )
1089
1304
  callbacks_in_order_for_after_model.append(solace_llm_response_cb)
1090
1305
 
1091
- # 4. Chunk Logging
1306
+ # 5. Chunk Logging
1092
1307
  log_chunk_cb = functools.partial(
1093
1308
  adk_callbacks.log_streaming_chunk_callback, host_component=component
1094
1309
  )
@@ -1110,7 +1325,7 @@ def initialize_adk_agent(
1110
1325
  return None
1111
1326
 
1112
1327
  agent.after_model_callback = final_after_model_wrapper
1113
- log.info(
1328
+ log.debug(
1114
1329
  "%s Chained all after_model_callbacks and assigned to agent.",
1115
1330
  component.log_identifier,
1116
1331
  )
@@ -1157,6 +1372,7 @@ def initialize_adk_runner(component) -> Runner:
1157
1372
  session_service=component.session_service,
1158
1373
  artifact_service=component.artifact_service,
1159
1374
  memory_service=component.memory_service,
1375
+ credential_service=component.credential_service,
1160
1376
  )
1161
1377
  log.info("%s ADK Runner created successfully.", component.log_identifier)
1162
1378
  return runner