solace-agent-mesh 1.7.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 (447) 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/artifacts/filesystem_artifact_service.py +164 -0
  7. solace_agent_mesh/agent/adk/artifacts/s3_artifact_service.py +163 -0
  8. solace_agent_mesh/agent/adk/callbacks.py +752 -127
  9. solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +99 -7
  10. solace_agent_mesh/agent/adk/intelligent_mcp_callbacks.py +52 -5
  11. solace_agent_mesh/agent/adk/mcp_content_processor.py +1 -1
  12. solace_agent_mesh/agent/adk/models/lite_llm.py +34 -16
  13. solace_agent_mesh/agent/adk/models/oauth2_token_manager.py +24 -137
  14. solace_agent_mesh/agent/adk/runner.py +66 -8
  15. solace_agent_mesh/agent/adk/schema_migration.py +88 -0
  16. solace_agent_mesh/agent/adk/services.py +41 -1
  17. solace_agent_mesh/agent/adk/setup.py +220 -32
  18. solace_agent_mesh/agent/adk/stream_parser.py +229 -40
  19. solace_agent_mesh/agent/protocol/event_handlers.py +219 -33
  20. solace_agent_mesh/agent/proxies/a2a/component.py +572 -75
  21. solace_agent_mesh/agent/proxies/a2a/config.py +80 -4
  22. solace_agent_mesh/agent/proxies/base/component.py +188 -22
  23. solace_agent_mesh/agent/proxies/base/proxy_task_context.py +3 -1
  24. solace_agent_mesh/agent/sac/app.py +37 -12
  25. solace_agent_mesh/agent/sac/component.py +322 -52
  26. solace_agent_mesh/agent/sac/patch_adk.py +8 -16
  27. solace_agent_mesh/agent/sac/task_execution_context.py +90 -0
  28. solace_agent_mesh/agent/tools/__init__.py +3 -0
  29. solace_agent_mesh/agent/tools/audio_tools.py +3 -3
  30. solace_agent_mesh/agent/tools/builtin_artifact_tools.py +698 -24
  31. solace_agent_mesh/agent/tools/deep_research_tools.py +2161 -0
  32. solace_agent_mesh/agent/tools/peer_agent_tool.py +82 -15
  33. solace_agent_mesh/agent/tools/time_tools.py +126 -0
  34. solace_agent_mesh/agent/tools/tool_config_types.py +54 -2
  35. solace_agent_mesh/agent/tools/web_search_tools.py +279 -0
  36. solace_agent_mesh/agent/tools/web_tools.py +125 -17
  37. solace_agent_mesh/agent/utils/artifact_helpers.py +243 -5
  38. solace_agent_mesh/agent/utils/context_helpers.py +17 -0
  39. solace_agent_mesh/assets/docs/404.html +6 -6
  40. solace_agent_mesh/assets/docs/assets/css/{styles.906a1503.css → styles.8162edfb.css} +1 -1
  41. solace_agent_mesh/assets/docs/assets/js/05749d90.19ac4f35.js +1 -0
  42. solace_agent_mesh/assets/docs/assets/js/15ba94aa.e186750d.js +1 -0
  43. solace_agent_mesh/assets/docs/assets/js/15e40e79.434bb30f.js +1 -0
  44. solace_agent_mesh/assets/docs/assets/js/17896441.e612dfb4.js +1 -0
  45. solace_agent_mesh/assets/docs/assets/js/2279.550aa580.js +2 -0
  46. solace_agent_mesh/assets/docs/assets/js/{17896441.a5e82f9b.js.LICENSE.txt → 2279.550aa580.js.LICENSE.txt} +6 -0
  47. solace_agent_mesh/assets/docs/assets/js/240a0364.83e37aa8.js +1 -0
  48. solace_agent_mesh/assets/docs/assets/js/2e32b5e0.2f0db237.js +1 -0
  49. solace_agent_mesh/assets/docs/assets/js/3a6c6137.7e61915d.js +1 -0
  50. solace_agent_mesh/assets/docs/assets/js/3ac1795d.7f7ab1c1.js +1 -0
  51. solace_agent_mesh/assets/docs/assets/js/3ff0015d.e53c9b78.js +1 -0
  52. solace_agent_mesh/assets/docs/assets/js/41adc471.0e95b87c.js +1 -0
  53. solace_agent_mesh/assets/docs/assets/js/4667dc50.bf2ad456.js +1 -0
  54. solace_agent_mesh/assets/docs/assets/js/49eed117.493d6f99.js +1 -0
  55. solace_agent_mesh/assets/docs/assets/js/{509e993c.4c7a1a6d.js → 509e993c.a1fbf45a.js} +1 -1
  56. solace_agent_mesh/assets/docs/assets/js/547e15cc.8e6da617.js +1 -0
  57. solace_agent_mesh/assets/docs/assets/js/55b7b518.29d6e75d.js +1 -0
  58. solace_agent_mesh/assets/docs/assets/js/5b8d9c11.d4eb37b8.js +1 -0
  59. solace_agent_mesh/assets/docs/assets/js/5c2bd65f.1ee87753.js +1 -0
  60. solace_agent_mesh/assets/docs/assets/js/60702c0e.a8bdd79b.js +1 -0
  61. solace_agent_mesh/assets/docs/assets/js/64195356.09dbd087.js +1 -0
  62. solace_agent_mesh/assets/docs/assets/js/66d4869e.30340bd3.js +1 -0
  63. solace_agent_mesh/assets/docs/assets/js/6aaedf65.7253541d.js +1 -0
  64. solace_agent_mesh/assets/docs/assets/js/6d84eae0.fd23ba4a.js +1 -0
  65. solace_agent_mesh/assets/docs/assets/js/729898df.7249e9fd.js +1 -0
  66. solace_agent_mesh/assets/docs/assets/js/7e294c01.7c5f6906.js +1 -0
  67. solace_agent_mesh/assets/docs/assets/js/8024126c.e3467286.js +1 -0
  68. solace_agent_mesh/assets/docs/assets/js/81a99df0.7ed65d45.js +1 -0
  69. solace_agent_mesh/assets/docs/assets/js/82fbfb93.161823a5.js +1 -0
  70. solace_agent_mesh/assets/docs/assets/js/924ffdeb.975e428a.js +1 -0
  71. solace_agent_mesh/assets/docs/assets/js/94e8668d.16083b3f.js +1 -0
  72. solace_agent_mesh/assets/docs/assets/js/9bb13469.4523ae20.js +1 -0
  73. solace_agent_mesh/assets/docs/assets/js/a7d42657.a956689d.js +1 -0
  74. solace_agent_mesh/assets/docs/assets/js/a94703ab.3e5fbcb3.js +1 -0
  75. solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e563275.js +1 -0
  76. solace_agent_mesh/assets/docs/assets/js/c93cbaa0.0e0d8baf.js +1 -0
  77. solace_agent_mesh/assets/docs/assets/js/cab03b5b.6a073091.js +1 -0
  78. solace_agent_mesh/assets/docs/assets/js/cbe2e9ea.07e170dd.js +1 -0
  79. solace_agent_mesh/assets/docs/assets/js/e04b235d.06d23db6.js +1 -0
  80. solace_agent_mesh/assets/docs/assets/js/e1b6eeb4.deb2b62e.js +1 -0
  81. solace_agent_mesh/assets/docs/assets/js/e3d9abda.1476f570.js +1 -0
  82. solace_agent_mesh/assets/docs/assets/js/e6f9706b.acc800d3.js +1 -0
  83. solace_agent_mesh/assets/docs/assets/js/e92d0134.c147a429.js +1 -0
  84. solace_agent_mesh/assets/docs/assets/js/ee0c2fe7.94d0a351.js +1 -0
  85. solace_agent_mesh/assets/docs/assets/js/f284c35a.cc97854c.js +1 -0
  86. solace_agent_mesh/assets/docs/assets/js/main.d634009f.js +2 -0
  87. solace_agent_mesh/assets/docs/assets/js/runtime~main.27bb82a7.js +1 -0
  88. solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +68 -68
  89. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/artifact-management/index.html +50 -50
  90. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/audio-tools/index.html +42 -42
  91. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/data-analysis-tools/index.html +55 -55
  92. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/embeds/index.html +75 -75
  93. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/image-tools/index.html +81 -0
  94. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/index.html +67 -50
  95. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/research-tools/index.html +136 -0
  96. solace_agent_mesh/assets/docs/docs/documentation/components/cli/index.html +178 -144
  97. solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +43 -42
  98. solace_agent_mesh/assets/docs/docs/documentation/components/index.html +20 -18
  99. solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +23 -23
  100. solace_agent_mesh/assets/docs/docs/documentation/components/platform-service/index.html +33 -0
  101. solace_agent_mesh/assets/docs/docs/documentation/components/plugins/index.html +45 -45
  102. solace_agent_mesh/assets/docs/docs/documentation/components/projects/index.html +98 -112
  103. solace_agent_mesh/assets/docs/docs/documentation/components/prompts/index.html +147 -0
  104. solace_agent_mesh/assets/docs/docs/documentation/components/proxies/index.html +208 -125
  105. solace_agent_mesh/assets/docs/docs/documentation/components/speech/index.html +52 -0
  106. solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +28 -28
  107. solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +29 -29
  108. solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +14 -14
  109. solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes/index.html +47 -0
  110. solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes/kubernetes-deployment-guide/index.html +197 -0
  111. solace_agent_mesh/assets/docs/docs/documentation/deploying/logging/index.html +67 -53
  112. solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +17 -17
  113. solace_agent_mesh/assets/docs/docs/documentation/deploying/proxy_configuration/index.html +49 -0
  114. solace_agent_mesh/assets/docs/docs/documentation/developing/create-agents/index.html +38 -38
  115. solace_agent_mesh/assets/docs/docs/documentation/developing/create-gateways/index.html +87 -87
  116. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-python-tools/index.html +67 -49
  117. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +17 -17
  118. solace_agent_mesh/assets/docs/docs/documentation/developing/evaluations/index.html +51 -51
  119. solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +22 -22
  120. solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +27 -27
  121. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/bedrock-agents/index.html +135 -135
  122. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/custom-agent/index.html +66 -66
  123. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/event-mesh-gateway/index.html +51 -51
  124. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mcp-integration/index.html +50 -38
  125. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mongodb-integration/index.html +86 -86
  126. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rag-integration/index.html +51 -51
  127. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rest-gateway/index.html +24 -24
  128. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +30 -30
  129. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/sql-database/index.html +44 -44
  130. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/teams-integration/index.html +115 -0
  131. solace_agent_mesh/assets/docs/docs/documentation/enterprise/agent-builder/index.html +50 -23
  132. solace_agent_mesh/assets/docs/docs/documentation/enterprise/connectors/index.html +29 -24
  133. solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +21 -21
  134. solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +40 -37
  135. solace_agent_mesh/assets/docs/docs/documentation/enterprise/openapi-tools/index.html +324 -0
  136. solace_agent_mesh/assets/docs/docs/documentation/enterprise/rbac-setup-guide/index.html +96 -66
  137. solace_agent_mesh/assets/docs/docs/documentation/enterprise/secure-user-delegated-access/index.html +181 -181
  138. solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +75 -75
  139. solace_agent_mesh/assets/docs/docs/documentation/enterprise/wheel-installation/index.html +27 -27
  140. solace_agent_mesh/assets/docs/docs/documentation/getting-started/architecture/index.html +44 -44
  141. solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +39 -38
  142. solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +30 -30
  143. solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +18 -18
  144. solace_agent_mesh/assets/docs/docs/documentation/getting-started/vibe_coding/index.html +62 -0
  145. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/artifact-storage/index.html +135 -114
  146. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/configurations/index.html +37 -37
  147. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +14 -14
  148. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +27 -25
  149. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +69 -69
  150. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +72 -72
  151. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/session-storage/index.html +112 -112
  152. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/user-feedback/index.html +28 -28
  153. solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-gateway-upgrade-to-0.3.0/index.html +42 -42
  154. solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-technical-migration-map/index.html +20 -20
  155. solace_agent_mesh/assets/docs/docs/documentation/migrations/platform-service-split/index.html +85 -0
  156. solace_agent_mesh/assets/docs/lunr-index-1768329217460.json +1 -0
  157. solace_agent_mesh/assets/docs/lunr-index.json +1 -1
  158. solace_agent_mesh/assets/docs/search-doc-1768329217460.json +1 -0
  159. solace_agent_mesh/assets/docs/search-doc.json +1 -1
  160. solace_agent_mesh/assets/docs/sitemap.xml +1 -1
  161. solace_agent_mesh/cli/__init__.py +1 -1
  162. solace_agent_mesh/cli/commands/add_cmd/__init__.py +3 -1
  163. solace_agent_mesh/cli/commands/add_cmd/agent_cmd.py +6 -1
  164. solace_agent_mesh/cli/commands/add_cmd/proxy_cmd.py +100 -0
  165. solace_agent_mesh/cli/commands/eval_cmd.py +1 -1
  166. solace_agent_mesh/cli/commands/init_cmd/__init__.py +15 -0
  167. solace_agent_mesh/cli/commands/init_cmd/directory_step.py +1 -1
  168. solace_agent_mesh/cli/commands/init_cmd/env_step.py +30 -3
  169. solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +3 -4
  170. solace_agent_mesh/cli/commands/init_cmd/platform_service_step.py +85 -0
  171. solace_agent_mesh/cli/commands/init_cmd/webui_gateway_step.py +16 -3
  172. solace_agent_mesh/cli/commands/plugin_cmd/add_cmd.py +2 -1
  173. solace_agent_mesh/cli/commands/plugin_cmd/catalog_cmd.py +1 -0
  174. solace_agent_mesh/cli/commands/plugin_cmd/create_cmd.py +3 -3
  175. solace_agent_mesh/cli/commands/run_cmd.py +64 -49
  176. solace_agent_mesh/cli/commands/tools_cmd.py +315 -0
  177. solace_agent_mesh/cli/main.py +15 -0
  178. solace_agent_mesh/client/webui/frontend/static/assets/{authCallback-tcIFZLis.js → authCallback-KnKMP_vb.js} +1 -1
  179. solace_agent_mesh/client/webui/frontend/static/assets/client-DpBL2stg.js +25 -0
  180. solace_agent_mesh/client/webui/frontend/static/assets/main-Cd498TV2.js +435 -0
  181. solace_agent_mesh/client/webui/frontend/static/assets/main-rSf8Vu29.css +1 -0
  182. solace_agent_mesh/client/webui/frontend/static/assets/{vendor-CINwxvwV.js → vendor-CGk8Suyh.js} +189 -94
  183. solace_agent_mesh/client/webui/frontend/static/auth-callback.html +3 -3
  184. solace_agent_mesh/client/webui/frontend/static/index.html +4 -4
  185. solace_agent_mesh/client/webui/frontend/static/mockServiceWorker.js +336 -0
  186. solace_agent_mesh/client/webui/frontend/static/ui-version.json +6 -0
  187. solace_agent_mesh/common/a2a/types.py +1 -1
  188. solace_agent_mesh/common/agent_registry.py +38 -11
  189. solace_agent_mesh/common/data_parts.py +124 -0
  190. solace_agent_mesh/common/error_handlers.py +83 -0
  191. solace_agent_mesh/common/exceptions.py +24 -0
  192. solace_agent_mesh/common/oauth/__init__.py +17 -0
  193. solace_agent_mesh/common/oauth/oauth_client.py +408 -0
  194. solace_agent_mesh/common/oauth/utils.py +50 -0
  195. solace_agent_mesh/common/rag_dto.py +156 -0
  196. solace_agent_mesh/common/sac/sam_component_base.py +73 -1
  197. solace_agent_mesh/common/sam_events/event_service.py +2 -2
  198. solace_agent_mesh/common/utils/embeds/converter.py +1 -8
  199. solace_agent_mesh/common/utils/embeds/modifiers.py +2 -27
  200. solace_agent_mesh/common/utils/embeds/resolver.py +94 -25
  201. solace_agent_mesh/common/utils/embeds/types.py +1 -0
  202. solace_agent_mesh/common/utils/log_formatters.py +20 -0
  203. solace_agent_mesh/common/utils/mime_helpers.py +12 -5
  204. solace_agent_mesh/common/utils/rbac_utils.py +69 -0
  205. solace_agent_mesh/common/utils/templates/__init__.py +8 -0
  206. solace_agent_mesh/common/utils/templates/liquid_renderer.py +210 -0
  207. solace_agent_mesh/common/utils/templates/template_resolver.py +161 -0
  208. solace_agent_mesh/config_portal/backend/common.py +12 -0
  209. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-CljP4_mv.js +103 -0
  210. solace_agent_mesh/config_portal/frontend/static/client/assets/{components-Rk0n-9cK.js → components-CaC6hG8d.js} +22 -22
  211. solace_agent_mesh/config_portal/frontend/static/client/assets/{entry.client-mvZjNKiz.js → entry.client-H_TM0YBt.js} +3 -3
  212. solace_agent_mesh/config_portal/frontend/static/client/assets/{index-DzNKzXrc.js → index-CnFykb2v.js} +16 -16
  213. solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-f8439d40.js +1 -0
  214. solace_agent_mesh/config_portal/frontend/static/client/assets/root-BIMqslJB.css +1 -0
  215. solace_agent_mesh/config_portal/frontend/static/client/assets/root-mJmTIdIk.js +10 -0
  216. solace_agent_mesh/config_portal/frontend/static/client/index.html +3 -3
  217. solace_agent_mesh/core_a2a/service.py +3 -2
  218. solace_agent_mesh/gateway/adapter/base.py +28 -1
  219. solace_agent_mesh/gateway/adapter/types.py +9 -0
  220. solace_agent_mesh/gateway/base/app.py +10 -0
  221. solace_agent_mesh/gateway/base/auth_interface.py +103 -0
  222. solace_agent_mesh/gateway/base/component.py +451 -10
  223. solace_agent_mesh/gateway/generic/component.py +274 -30
  224. solace_agent_mesh/gateway/http_sse/alembic/env.py +0 -7
  225. solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_soft_delete_and_search.py +2 -43
  226. solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_default_agent_to_projects.py +2 -2
  227. solace_agent_mesh/gateway/http_sse/alembic/versions/20251108_create_prompt_tables_with_sharing.py +154 -0
  228. solace_agent_mesh/gateway/http_sse/alembic/versions/20251115_add_parent_task_id.py +32 -0
  229. solace_agent_mesh/gateway/http_sse/alembic/versions/20251126_add_background_task_fields.py +47 -0
  230. solace_agent_mesh/gateway/http_sse/alembic/versions/20251202_add_versioned_fields_to_prompts.py +52 -0
  231. solace_agent_mesh/gateway/http_sse/alembic.ini +0 -36
  232. solace_agent_mesh/gateway/http_sse/app.py +23 -6
  233. solace_agent_mesh/gateway/http_sse/component.py +158 -73
  234. solace_agent_mesh/gateway/http_sse/dependencies.py +50 -57
  235. solace_agent_mesh/gateway/http_sse/main.py +58 -482
  236. solace_agent_mesh/gateway/http_sse/repository/chat_task_repository.py +2 -2
  237. solace_agent_mesh/gateway/http_sse/repository/entities/project.py +1 -1
  238. solace_agent_mesh/gateway/http_sse/repository/entities/project_user.py +1 -1
  239. solace_agent_mesh/gateway/http_sse/repository/entities/session.py +3 -2
  240. solace_agent_mesh/gateway/http_sse/repository/entities/task.py +7 -0
  241. solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +2 -2
  242. solace_agent_mesh/gateway/http_sse/repository/interfaces.py +2 -2
  243. solace_agent_mesh/gateway/http_sse/repository/models/__init__.py +5 -0
  244. solace_agent_mesh/gateway/http_sse/repository/models/prompt_model.py +159 -0
  245. solace_agent_mesh/gateway/http_sse/repository/models/session_model.py +1 -1
  246. solace_agent_mesh/gateway/http_sse/repository/models/task_model.py +8 -1
  247. solace_agent_mesh/gateway/http_sse/repository/project_repository.py +1 -1
  248. solace_agent_mesh/gateway/http_sse/repository/project_user_repository.py +1 -1
  249. solace_agent_mesh/gateway/http_sse/repository/session_repository.py +12 -107
  250. solace_agent_mesh/gateway/http_sse/repository/task_repository.py +86 -2
  251. solace_agent_mesh/gateway/http_sse/routers/agent_cards.py +38 -7
  252. solace_agent_mesh/gateway/http_sse/routers/artifacts.py +113 -7
  253. solace_agent_mesh/gateway/http_sse/routers/auth.py +69 -132
  254. solace_agent_mesh/gateway/http_sse/routers/config.py +235 -10
  255. solace_agent_mesh/gateway/http_sse/routers/dto/project_dto.py +69 -0
  256. solace_agent_mesh/gateway/http_sse/routers/dto/prompt_dto.py +255 -0
  257. solace_agent_mesh/gateway/http_sse/routers/dto/requests/session_requests.py +1 -1
  258. solace_agent_mesh/gateway/http_sse/routers/dto/responses/base_responses.py +1 -1
  259. solace_agent_mesh/gateway/http_sse/routers/dto/responses/project_responses.py +1 -0
  260. solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +3 -2
  261. solace_agent_mesh/gateway/http_sse/routers/dto/responses/version_responses.py +31 -0
  262. solace_agent_mesh/gateway/http_sse/routers/feedback.py +2 -2
  263. solace_agent_mesh/gateway/http_sse/routers/people.py +2 -2
  264. solace_agent_mesh/gateway/http_sse/routers/projects.py +250 -24
  265. solace_agent_mesh/gateway/http_sse/routers/prompts.py +1416 -0
  266. solace_agent_mesh/gateway/http_sse/routers/sessions.py +14 -5
  267. solace_agent_mesh/gateway/http_sse/routers/speech.py +355 -0
  268. solace_agent_mesh/gateway/http_sse/routers/sse.py +117 -4
  269. solace_agent_mesh/gateway/http_sse/routers/tasks.py +509 -149
  270. solace_agent_mesh/gateway/http_sse/routers/users.py +1 -1
  271. solace_agent_mesh/gateway/http_sse/routers/version.py +343 -0
  272. solace_agent_mesh/gateway/http_sse/routers/visualization.py +2 -1
  273. solace_agent_mesh/gateway/http_sse/services/audio_service.py +1227 -0
  274. solace_agent_mesh/gateway/http_sse/services/background_task_monitor.py +186 -0
  275. solace_agent_mesh/gateway/http_sse/services/data_retention_service.py +1 -1
  276. solace_agent_mesh/gateway/http_sse/services/feedback_service.py +1 -1
  277. solace_agent_mesh/gateway/http_sse/services/project_service.py +539 -12
  278. solace_agent_mesh/gateway/http_sse/services/prompt_builder_assistant.py +303 -0
  279. solace_agent_mesh/gateway/http_sse/services/session_service.py +198 -21
  280. solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +354 -4
  281. solace_agent_mesh/gateway/http_sse/sse_manager.py +280 -169
  282. solace_agent_mesh/gateway/http_sse/utils/artifact_copy_utils.py +370 -0
  283. solace_agent_mesh/gateway/http_sse/utils/stim_utils.py +41 -1
  284. solace_agent_mesh/services/__init__.py +0 -0
  285. solace_agent_mesh/services/platform/__init__.py +29 -0
  286. solace_agent_mesh/services/platform/alembic/env.py +85 -0
  287. solace_agent_mesh/services/platform/alembic/script.py.mako +28 -0
  288. solace_agent_mesh/services/platform/alembic.ini +109 -0
  289. solace_agent_mesh/services/platform/api/__init__.py +3 -0
  290. solace_agent_mesh/services/platform/api/dependencies.py +154 -0
  291. solace_agent_mesh/services/platform/api/main.py +314 -0
  292. solace_agent_mesh/services/platform/api/middleware.py +51 -0
  293. solace_agent_mesh/services/platform/api/routers/__init__.py +33 -0
  294. solace_agent_mesh/services/platform/api/routers/health_router.py +31 -0
  295. solace_agent_mesh/services/platform/app.py +215 -0
  296. solace_agent_mesh/services/platform/component.py +777 -0
  297. solace_agent_mesh/shared/__init__.py +14 -0
  298. solace_agent_mesh/shared/api/__init__.py +42 -0
  299. solace_agent_mesh/shared/auth/__init__.py +26 -0
  300. solace_agent_mesh/shared/auth/dependencies.py +204 -0
  301. solace_agent_mesh/shared/auth/middleware.py +347 -0
  302. solace_agent_mesh/shared/database/__init__.py +20 -0
  303. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/base_repository.py +1 -1
  304. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_exceptions.py +1 -1
  305. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_helpers.py +1 -1
  306. solace_agent_mesh/shared/exceptions/__init__.py +36 -0
  307. solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/exception_handlers.py +1 -1
  308. solace_agent_mesh/shared/utils/__init__.py +21 -0
  309. solace_agent_mesh/templates/logging_config_template.yaml +48 -0
  310. solace_agent_mesh/templates/main_orchestrator.yaml +12 -1
  311. solace_agent_mesh/templates/platform.yaml +49 -0
  312. solace_agent_mesh/templates/plugin_readme_template.md +3 -25
  313. solace_agent_mesh/templates/plugin_tool_config_template.yaml +109 -0
  314. solace_agent_mesh/templates/proxy_template.yaml +62 -0
  315. solace_agent_mesh/templates/webui.yaml +148 -6
  316. solace_agent_mesh/tools/web_search/__init__.py +18 -0
  317. solace_agent_mesh/tools/web_search/base.py +84 -0
  318. solace_agent_mesh/tools/web_search/google_search.py +247 -0
  319. solace_agent_mesh/tools/web_search/models.py +99 -0
  320. {solace_agent_mesh-1.7.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/METADATA +29 -8
  321. {solace_agent_mesh-1.7.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/RECORD +334 -313
  322. {solace_agent_mesh-1.7.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/WHEEL +1 -1
  323. solace_agent_mesh/agent/adk/adk_llm.txt +0 -226
  324. solace_agent_mesh/agent/adk/adk_llm_detail.txt +0 -566
  325. solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt +0 -171
  326. solace_agent_mesh/agent/adk/models/models_llm.txt +0 -189
  327. solace_agent_mesh/agent/agent_llm.txt +0 -369
  328. solace_agent_mesh/agent/agent_llm_detail.txt +0 -1702
  329. solace_agent_mesh/agent/protocol/protocol_llm.txt +0 -81
  330. solace_agent_mesh/agent/protocol/protocol_llm_detail.txt +0 -92
  331. solace_agent_mesh/agent/proxies/a2a/a2a_llm.txt +0 -190
  332. solace_agent_mesh/agent/proxies/base/base_llm.txt +0 -148
  333. solace_agent_mesh/agent/proxies/proxies_llm.txt +0 -283
  334. solace_agent_mesh/agent/sac/sac_llm.txt +0 -189
  335. solace_agent_mesh/agent/sac/sac_llm_detail.txt +0 -200
  336. solace_agent_mesh/agent/testing/testing_llm.txt +0 -58
  337. solace_agent_mesh/agent/testing/testing_llm_detail.txt +0 -68
  338. solace_agent_mesh/agent/tools/tools_llm.txt +0 -276
  339. solace_agent_mesh/agent/tools/tools_llm_detail.txt +0 -275
  340. solace_agent_mesh/agent/utils/utils_llm.txt +0 -152
  341. solace_agent_mesh/agent/utils/utils_llm_detail.txt +0 -149
  342. solace_agent_mesh/assets/docs/assets/js/05749d90.c70b2be9.js +0 -1
  343. solace_agent_mesh/assets/docs/assets/js/15ba94aa.92fea363.js +0 -1
  344. solace_agent_mesh/assets/docs/assets/js/15e40e79.36003774.js +0 -1
  345. solace_agent_mesh/assets/docs/assets/js/17896441.a5e82f9b.js +0 -2
  346. solace_agent_mesh/assets/docs/assets/js/240a0364.c39f8388.js +0 -1
  347. solace_agent_mesh/assets/docs/assets/js/2e32b5e0.33f5d75b.js +0 -1
  348. solace_agent_mesh/assets/docs/assets/js/3a6c6137.f5940cfa.js +0 -1
  349. solace_agent_mesh/assets/docs/assets/js/3ac1795d.e4870a49.js +0 -1
  350. solace_agent_mesh/assets/docs/assets/js/3ff0015d.b63ee53a.js +0 -1
  351. solace_agent_mesh/assets/docs/assets/js/547e15cc.2f7790c1.js +0 -1
  352. solace_agent_mesh/assets/docs/assets/js/55b7b518.f2b1d1ba.js +0 -1
  353. solace_agent_mesh/assets/docs/assets/js/5c2bd65f.45b32c2b.js +0 -1
  354. solace_agent_mesh/assets/docs/assets/js/64195356.c498c4d0.js +0 -1
  355. solace_agent_mesh/assets/docs/assets/js/66d4869e.830d443f.js +0 -1
  356. solace_agent_mesh/assets/docs/assets/js/6d84eae0.4a5fbf39.js +0 -1
  357. solace_agent_mesh/assets/docs/assets/js/8024126c.fa0e7186.js +0 -1
  358. solace_agent_mesh/assets/docs/assets/js/81a99df0.07034dd9.js +0 -1
  359. solace_agent_mesh/assets/docs/assets/js/82fbfb93.139a1a1f.js +0 -1
  360. solace_agent_mesh/assets/docs/assets/js/924ffdeb.8095e148.js +0 -1
  361. solace_agent_mesh/assets/docs/assets/js/94e8668d.09ed9234.js +0 -1
  362. solace_agent_mesh/assets/docs/assets/js/9bb13469.dd1c9b54.js +0 -1
  363. solace_agent_mesh/assets/docs/assets/js/a94703ab.0438dbc2.js +0 -1
  364. solace_agent_mesh/assets/docs/assets/js/ab9708a8.245ae0ef.js +0 -1
  365. solace_agent_mesh/assets/docs/assets/js/c93cbaa0.eaff365e.js +0 -1
  366. solace_agent_mesh/assets/docs/assets/js/cbe2e9ea.f902fad8.js +0 -1
  367. solace_agent_mesh/assets/docs/assets/js/db5d6442.3daf1696.js +0 -1
  368. solace_agent_mesh/assets/docs/assets/js/e04b235d.c9c50c7b.js +0 -1
  369. solace_agent_mesh/assets/docs/assets/js/e3d9abda.d11c67a7.js +0 -1
  370. solace_agent_mesh/assets/docs/assets/js/e6f9706b.045d0fa1.js +0 -1
  371. solace_agent_mesh/assets/docs/assets/js/e92d0134.3bda61dd.js +0 -1
  372. solace_agent_mesh/assets/docs/assets/js/f284c35a.5099c51e.js +0 -1
  373. solace_agent_mesh/assets/docs/assets/js/main.f213fe0c.js +0 -2
  374. solace_agent_mesh/assets/docs/assets/js/runtime~main.d9606d6a.js +0 -1
  375. solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes-deployment/index.html +0 -47
  376. solace_agent_mesh/assets/docs/lunr-index-1762283454666.json +0 -1
  377. solace_agent_mesh/assets/docs/search-doc-1762283454666.json +0 -1
  378. solace_agent_mesh/cli/commands/add_cmd/add_cmd_llm.txt +0 -250
  379. solace_agent_mesh/cli/commands/init_cmd/init_cmd_llm.txt +0 -365
  380. solace_agent_mesh/cli/commands/plugin_cmd/plugin_cmd_llm.txt +0 -305
  381. solace_agent_mesh/client/webui/frontend/static/assets/client-CRYdKo2Q.js +0 -25
  382. solace_agent_mesh/client/webui/frontend/static/assets/main-CojeY_1w.css +0 -1
  383. solace_agent_mesh/client/webui/frontend/static/assets/main-ILja9MCG.js +0 -353
  384. solace_agent_mesh/common/a2a/a2a_llm.txt +0 -175
  385. solace_agent_mesh/common/a2a/a2a_llm_detail.txt +0 -193
  386. solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +0 -445
  387. solace_agent_mesh/common/a2a_spec/a2a_spec_llm_detail.txt +0 -736
  388. solace_agent_mesh/common/a2a_spec/schemas/schemas_llm.txt +0 -330
  389. solace_agent_mesh/common/common_llm.txt +0 -230
  390. solace_agent_mesh/common/common_llm_detail.txt +0 -2562
  391. solace_agent_mesh/common/middleware/middleware_llm.txt +0 -174
  392. solace_agent_mesh/common/middleware/middleware_llm_detail.txt +0 -185
  393. solace_agent_mesh/common/sac/sac_llm.txt +0 -71
  394. solace_agent_mesh/common/sac/sac_llm_detail.txt +0 -82
  395. solace_agent_mesh/common/sam_events/sam_events_llm.txt +0 -104
  396. solace_agent_mesh/common/sam_events/sam_events_llm_detail.txt +0 -115
  397. solace_agent_mesh/common/services/providers/providers_llm.txt +0 -81
  398. solace_agent_mesh/common/services/services_llm.txt +0 -368
  399. solace_agent_mesh/common/services/services_llm_detail.txt +0 -459
  400. solace_agent_mesh/common/utils/embeds/embeds_llm.txt +0 -220
  401. solace_agent_mesh/common/utils/utils_llm.txt +0 -335
  402. solace_agent_mesh/common/utils/utils_llm_detail.txt +0 -572
  403. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-ByU1X1HD.js +0 -98
  404. solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-61038fc6.js +0 -1
  405. solace_agent_mesh/config_portal/frontend/static/client/assets/root-BWvk5-gF.js +0 -10
  406. solace_agent_mesh/config_portal/frontend/static/client/assets/root-DxRwaWiE.css +0 -1
  407. solace_agent_mesh/core_a2a/core_a2a_llm.txt +0 -90
  408. solace_agent_mesh/core_a2a/core_a2a_llm_detail.txt +0 -101
  409. solace_agent_mesh/gateway/base/base_llm.txt +0 -226
  410. solace_agent_mesh/gateway/base/base_llm_detail.txt +0 -235
  411. solace_agent_mesh/gateway/gateway_llm.txt +0 -369
  412. solace_agent_mesh/gateway/gateway_llm_detail.txt +0 -3885
  413. solace_agent_mesh/gateway/http_sse/alembic/alembic_llm.txt +0 -345
  414. solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_fulltext_search_indexes.py +0 -92
  415. solace_agent_mesh/gateway/http_sse/alembic/versions/versions_llm.txt +0 -161
  416. solace_agent_mesh/gateway/http_sse/components/components_llm.txt +0 -105
  417. solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +0 -299
  418. solace_agent_mesh/gateway/http_sse/http_sse_llm_detail.txt +0 -3278
  419. solace_agent_mesh/gateway/http_sse/repository/entities/entities_llm.txt +0 -221
  420. solace_agent_mesh/gateway/http_sse/repository/models/models_llm.txt +0 -257
  421. solace_agent_mesh/gateway/http_sse/repository/repository_llm.txt +0 -308
  422. solace_agent_mesh/gateway/http_sse/routers/dto/dto_llm.txt +0 -450
  423. solace_agent_mesh/gateway/http_sse/routers/dto/requests/requests_llm.txt +0 -133
  424. solace_agent_mesh/gateway/http_sse/routers/dto/responses/responses_llm.txt +0 -123
  425. solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +0 -312
  426. solace_agent_mesh/gateway/http_sse/services/services_llm.txt +0 -303
  427. solace_agent_mesh/gateway/http_sse/shared/__init__.py +0 -146
  428. solace_agent_mesh/gateway/http_sse/shared/shared_llm.txt +0 -319
  429. solace_agent_mesh/gateway/http_sse/utils/utils_llm.txt +0 -47
  430. solace_agent_mesh/llm.txt +0 -228
  431. solace_agent_mesh/llm_detail.txt +0 -2835
  432. solace_agent_mesh/solace_agent_mesh_llm.txt +0 -362
  433. solace_agent_mesh/solace_agent_mesh_llm_detail.txt +0 -8599
  434. solace_agent_mesh/templates/logging_config_template.ini +0 -45
  435. solace_agent_mesh/templates/templates_llm.txt +0 -147
  436. /solace_agent_mesh/assets/docs/assets/js/{main.f213fe0c.js.LICENSE.txt → main.d634009f.js.LICENSE.txt} +0 -0
  437. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/auth_utils.py +0 -0
  438. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/pagination.py +0 -0
  439. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/response_utils.py +0 -0
  440. /solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/error_dto.py +0 -0
  441. /solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/exceptions.py +0 -0
  442. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/enums.py +0 -0
  443. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/timestamp_utils.py +0 -0
  444. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/types.py +0 -0
  445. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/utils.py +0 -0
  446. {solace_agent_mesh-1.7.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/entry_points.txt +0 -0
  447. {solace_agent_mesh-1.7.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,36 @@
1
+ """
2
+ Exception types and handlers for consistent error handling.
3
+
4
+ Provides:
5
+ - Business exception types (ValidationError, EntityNotFoundError, etc.)
6
+ - FastAPI exception handlers
7
+ - Error DTOs for API responses
8
+ """
9
+
10
+ from .exceptions import (
11
+ WebUIBackendException,
12
+ ValidationError,
13
+ EntityNotFoundError,
14
+ EntityAlreadyExistsError,
15
+ BusinessRuleViolationError,
16
+ ConfigurationError,
17
+ DataIntegrityError,
18
+ ExternalServiceError,
19
+ EntityOperation,
20
+ )
21
+ from .exception_handlers import register_exception_handlers
22
+ from .error_dto import EventErrorDTO
23
+
24
+ __all__ = [
25
+ "WebUIBackendException",
26
+ "ValidationError",
27
+ "EntityNotFoundError",
28
+ "EntityAlreadyExistsError",
29
+ "BusinessRuleViolationError",
30
+ "ConfigurationError",
31
+ "DataIntegrityError",
32
+ "ExternalServiceError",
33
+ "EntityOperation",
34
+ "register_exception_handlers",
35
+ "EventErrorDTO",
36
+ ]
@@ -193,7 +193,7 @@ def register_exception_handlers(app):
193
193
 
194
194
  Example:
195
195
  from fastapi import FastAPI
196
- from solace_agent_mesh.gateway.http_sse.shared.exception_handlers import register_exception_handlers
196
+ from solace_agent_mesh.shared.exceptions.exception_handlers import register_exception_handlers
197
197
 
198
198
  app = FastAPI()
199
199
  register_exception_handlers(app)
@@ -0,0 +1,21 @@
1
+ """
2
+ General utilities for common operations.
3
+
4
+ Provides:
5
+ - Timestamp utilities (epoch conversions, ISO8601 formatting)
6
+ - Enums
7
+ - Type definitions
8
+ - Generic helper functions
9
+ """
10
+
11
+ from .timestamp_utils import (
12
+ now_epoch_ms,
13
+ epoch_ms_to_iso8601,
14
+ iso8601_to_epoch_ms,
15
+ )
16
+
17
+ __all__ = [
18
+ "now_epoch_ms",
19
+ "epoch_ms_to_iso8601",
20
+ "iso8601_to_epoch_ms",
21
+ ]
@@ -0,0 +1,48 @@
1
+ version: 1
2
+ disable_existing_loggers: false
3
+
4
+ formatters:
5
+ simpleFormatter:
6
+ format: "%(asctime)s | %(levelname)-5s | %(threadName)s | %(name)s | %(message)s"
7
+
8
+ coloredFormatter:
9
+ class: solace_ai_connector.logging.ColoredFormatter
10
+ format: "%(asctime)s | %(levelname)-5s | %(threadName)s | %(name)s | %(message)s"
11
+
12
+ jsonFormatter:
13
+ "()": pythonjsonlogger.json.JsonFormatter
14
+ format: "%(timestamp)s %(levelname)s %(threadName)s %(name)s %(message)s"
15
+ timestamp: "timestamp"
16
+
17
+ handlers:
18
+ streamHandler:
19
+ class: logging.StreamHandler
20
+ formatter: coloredFormatter
21
+ stream: ext://sys.stdout
22
+
23
+ rotatingFileHandler:
24
+ class: logging.handlers.RotatingFileHandler
25
+ formatter: simpleFormatter
26
+ filename: ${LOGGING_FILE_NAME, sam.log}
27
+ mode: a
28
+ maxBytes: 52428800
29
+ backupCount: 10
30
+
31
+ loggers:
32
+ solace_ai_connector:
33
+ level: ${LOGGING_SAC_LEVEL, INFO}
34
+ handlers: []
35
+
36
+ solace_agent_mesh:
37
+ level: ${LOGGING_SAM_LEVEL, INFO}
38
+ handlers: []
39
+
40
+ sam_trace:
41
+ level: ${LOGGING_SAM_TRACE_LEVEL, INFO}
42
+ handlers: []
43
+
44
+ root:
45
+ level: ${LOGGING_ROOT_LEVEL, WARNING}
46
+ handlers:
47
+ - streamHandler
48
+ - rotatingFileHandler
@@ -43,7 +43,18 @@ apps:
43
43
  description: "__AGENT_CARD_DESCRIPTION__"
44
44
  defaultInputModes: __DEFAULT_INPUT_MODES__
45
45
  defaultOutputModes: __DEFAULT_OUTPUT_MODES__
46
- skills: []
46
+ skills:
47
+ - id: strategic_planning
48
+ name: Strategic Planning
49
+ description: Analyzes complex requests and creates structured execution plans, breaking down multi-step goals into logical sequences with clear checkpoints and progress tracking.
50
+
51
+ - id: agent_coordination
52
+ name: Agent Coordination
53
+ description: Identifies the most suitable specialized agents for specific tasks and coordinates multi-agent workflows, managing data handoffs and execution sequences to achieve complex objectives efficiently.
54
+
55
+ - id: artifact_management
56
+ name: Artifact Management
57
+ description: Creates, transforms, and manages various artifact types including documents, reports, and data files, with capabilities for content generation, formatting, embedding dynamic data, and applying sophisticated data transformations.
47
58
 
48
59
  agent_card_publishing:
49
60
  interval_seconds: __AGENT_CARD_PUBLISHING_INTERVAL__
@@ -0,0 +1,49 @@
1
+ # Platform Service Template for Solace Agent Mesh
2
+ # Provides agent management, deployments, connectors, and toolsets
3
+
4
+ log:
5
+ stdout_log_level: INFO
6
+ log_file_level: DEBUG
7
+ log_file: platform_service.log
8
+
9
+ # Shared SAM config (broker, models, etc.)
10
+ !include ../shared_config.yaml
11
+
12
+ apps:
13
+ - name: platform_service_app
14
+ app_base_path: .
15
+ app_module: solace_agent_mesh.services.platform.app
16
+
17
+ broker:
18
+ <<: *broker_connection
19
+
20
+ app_config:
21
+ # --- Required ---
22
+ namespace: ${NAMESPACE}
23
+ database_url: "${PLATFORM_DATABASE_URL, sqlite:///platform.db}"
24
+
25
+ # --- FastAPI Server Configuration ---
26
+ fastapi_host: ${PLATFORM_API_HOST, localhost}
27
+ fastapi_port: ${PLATFORM_API_PORT, 8001}
28
+ cors_allowed_origins:
29
+ - "http://localhost:3000"
30
+ - "http://127.0.0.1:3000"
31
+ - "http://localhost:8000"
32
+
33
+ # --- Message Size Configuration ---
34
+ max_message_size_bytes: ${MAX_MESSAGE_SIZE_BYTES, 10000000}
35
+
36
+ # --- OAuth2 Authentication ---
37
+ # Community mode: frontend_use_authorization=false (dev user)
38
+ # Enterprise mode: frontend_use_authorization=true (OAuth validation)
39
+ external_auth_service_url: ${EXTERNAL_AUTH_SERVICE_URL}
40
+ external_auth_provider: ${EXTERNAL_AUTH_PROVIDER, generic}
41
+ frontend_use_authorization: ${FRONTEND_USE_AUTHORIZATION, false}
42
+
43
+ # --- Background Task Configuration ---
44
+ # Deployment monitoring (enterprise feature)
45
+ deployment_timeout_minutes: ${DEPLOYMENT_TIMEOUT_MINUTES, 5}
46
+ deployment_check_interval_seconds: ${DEPLOYMENT_CHECK_INTERVAL, 60}
47
+
48
+ # Deployer heartbeat monitoring (enterprise feature)
49
+ heartbeat_timeout_seconds: ${HEARTBEAT_TIMEOUT_SECONDS, 90}
@@ -1,34 +1,12 @@
1
- # __PLUGIN_KEBAB_CASE_NAME__ SAM Plugin
1
+ # __PLUGIN_PASCAL_CASE_NAME__ SAM Plugin
2
2
 
3
3
  __PLUGIN_DESCRIPTION__
4
4
 
5
5
  This is a plugin for Solace Agent Mesh (SAM).
6
6
 
7
- ## Configuration (`config.yaml`)
8
-
9
- The `config.yaml` in this plugin serves as a template. When you use `sam plugin add <component_name> --plugin __PLUGIN_KEBAB_CASE_NAME__`, the following placeholders in the YAML structure will be replaced with variations of `<component_name>`:
10
- - `__COMPONENT_UPPER_SNAKE_CASE_NAME__`
11
- - `__COMPONENT_KEBAB_CASE_NAME__`
12
- - `__COMPONENT_PASCAL_CASE_NAME__`
13
-
14
- Customize the `config.yaml` in this plugin directory to define the base configuration for components created from it.
15
-
16
- ## Source Code (`src/`)
17
- The `src/` directory contains the Python source code for your plugin.
18
-
19
- ## Installation (as a developer of this plugin)
20
-
21
- To build and install this plugin locally for testing:
22
- ```bash
23
- sam plugin build
24
- pip install dist/*.whl
25
- ```
26
- (Or `pip install .` if preferred, `sam plugin build` is for creating the distributable wheel)
27
-
28
- ## Usage (as a user of this plugin)
7
+ ## Installation
29
8
 
30
9
  Once the plugin is installed (e.g., from PyPI or a local wheel file):
31
10
  ```bash
32
11
  sam plugin add <your-new-component-name> --plugin __PLUGIN_KEBAB_CASE_NAME__
33
- ```
34
- This will create a new component configuration at `configs/plugins/<your-new-component-name-kebab-case>.yaml`.
12
+ ```
@@ -0,0 +1,109 @@
1
+ # Plugin Metadata:
2
+ # Name: __PLUGIN_KEBAB_CASE_NAME__
3
+ # Version: __PLUGIN_VERSION__
4
+ # Description: __PLUGIN_DESCRIPTION__
5
+ # Author: __PLUGIN_AUTHOR_NAME__ <__PLUGIN_AUTHOR_EMAIL__>
6
+ #
7
+ # --- Start of Agent Configuration Template ---
8
+ # Solace Agent Mesh: Plugin Configuration Template
9
+ #
10
+ # This file serves as a template for creating new agent configurations from this plugin.
11
+ # Use placeholders like __COMPONENT_KEBAB_CASE_NAME__, __COMPONENT_PASCAL_CASE_NAME__,
12
+ # and __COMPONENT_UPPER_SNAKE_CASE_NAME__ where the specific component name should be inserted.
13
+
14
+ log:
15
+ stdout_log_level: INFO
16
+ log_file_level: DEBUG
17
+ log_file: __COMPONENT_KEBAB_CASE_NAME__.log
18
+
19
+ # To use the `shared_config.yaml` file, uncomment the following line and remove the `shared_config` section below.
20
+ # !include ../shared_config.yaml
21
+ shared_config:
22
+ - broker_connection: &broker_connection
23
+ dev_mode: ${SOLACE_DEV_MODE, false}
24
+ broker_url: ${SOLACE_BROKER_URL, ws://localhost:8008}
25
+ broker_username: ${SOLACE_BROKER_USERNAME, default}
26
+ broker_password: ${SOLACE_BROKER_PASSWORD, default}
27
+ broker_vpn: ${SOLACE_BROKER_VPN, default}
28
+ temporary_queue: ${USE_TEMPORARY_QUEUES, true}
29
+
30
+ - models:
31
+ general: &general_model
32
+ # This dictionary structure tells ADK to use the LiteLlm wrapper.
33
+ # 'model' uses the specific model identifier your endpoint expects.
34
+ model: ${LLM_SERVICE_GENERAL_MODEL_NAME} # Use env var for model name
35
+ # 'api_base' tells LiteLLM where to send the request.
36
+ api_base: ${LLM_SERVICE_ENDPOINT} # Use env var for endpoint URL
37
+ # 'api_key' provides authentication.
38
+ api_key: ${LLM_SERVICE_API_KEY} # Use env var for API key
39
+
40
+ - services:
41
+ # Default session service configuration
42
+ session_service: &default_session_service
43
+ type: "memory"
44
+ default_behavior: "PERSISTENT"
45
+
46
+ # Default artifact service configuration
47
+ artifact_service: &default_artifact_service
48
+ type: "filesystem"
49
+ base_path: "/tmp/samv2"
50
+ artifact_scope: namespace # Or "namespace", "app", "custom"
51
+
52
+ apps:
53
+ - name: __COMPONENT_KEBAB_CASE_NAME__-app
54
+ app_base_path: .
55
+ app_module: solace_agent_mesh.agent.sac.app
56
+ broker:
57
+ <<: *broker_connection
58
+
59
+ # App Level Config
60
+ app_config:
61
+ namespace: ${NAMESPACE}
62
+ supports_streaming: true
63
+ agent_name: "__COMPONENT_PASCAL_CASE_NAME__"
64
+ display_name: "__COMPONENT_SPACED_CAPITALIZED_NAME__ Agent"
65
+ model: *general_model
66
+
67
+ instruction: |
68
+ You're __COMPONENT_SPACED_CAPITALIZED_NAME__ agent.
69
+ Configure its specific instructions here.
70
+
71
+ tools:
72
+ - group_name: artifact_management
73
+ tool_type: builtin-group
74
+
75
+ # --- Example Python Tools (defined in tools.py) ---
76
+ # - tool_type: python
77
+ # component_module: __PLUGIN_SNAKE_CASE_NAME__.tools
78
+ # component_base_path: . # Relative to where the agent runs
79
+ # function_name: example_text_processor_tool
80
+ # tool_config:
81
+ # prefix: "PluginProcessed: "
82
+
83
+ # - tool_type: python
84
+ # component_module: __PLUGIN_SNAKE_CASE_NAME__.tools
85
+ # component_base_path: .
86
+ # function_name: example_file_creator_tool
87
+ # tool_config: {} # Add specific config if needed by the tool
88
+
89
+ session_service: *default_session_service
90
+ artifact_service: *default_artifact_service
91
+
92
+ artifact_handling_mode: "reference"
93
+ enable_embed_resolution: true
94
+ enable_artifact_content_instruction: true
95
+
96
+ agent_card:
97
+ description: "__PLUGIN_DESCRIPTION__"
98
+ defaultInputModes: ["text"]
99
+ defaultOutputModes: ["text"]
100
+ skills: [] # Remove brackets after adding entries
101
+ # - id: "example_tool"
102
+ # name: "Example Tool"
103
+ # description: "An example tool provided by the __PLUGIN_PASCAL_CASE_NAME__ plugin."
104
+
105
+ agent_card_publishing: { interval_seconds: 10 }
106
+ agent_discovery: { enabled: false }
107
+ inter_agent_communication:
108
+ allow_list: []
109
+ request_timeout_seconds: 30
@@ -0,0 +1,62 @@
1
+ # A2A Proxy Configuration File
2
+
3
+ log:
4
+ stdout_log_level: INFO
5
+ log_file_level: DEBUG
6
+ log_file: a2a_proxy.log
7
+
8
+ # Shared SAM config (includes broker connection details)
9
+ !include ../shared_config.yaml
10
+
11
+ apps:
12
+ - name: "__PROXY_NAME____app"
13
+ app_base_path: .
14
+ app_module: solace_agent_mesh.agent.proxies.a2a.app
15
+ broker:
16
+ <<: *broker_connection
17
+
18
+ # --- App Level Config for the Proxy ---
19
+ app_config:
20
+ namespace: ${NAMESPACE}
21
+
22
+ # Configuration for the artifact service used by the proxy itself.
23
+ # When the proxy receives an artifact from a downstream agent, it will
24
+ # store it here before forwarding it on the Solace mesh.
25
+ artifact_service:
26
+ type: "filesystem"
27
+ base_path: "/tmp/samv2"
28
+ artifact_scope: namespace # Default scope, shares artifacts within the NAMESPACE
29
+
30
+ # How the proxy should handle artifacts it sends over Solace.
31
+ # 'reference': Sends an artifact:// URI.
32
+ # 'embed': Sends the full content base64 encoded.
33
+ artifact_handling_mode: "reference"
34
+
35
+ # Interval in seconds for the proxy to re-fetch agent cards from
36
+ # downstream agents. Set to 0 to disable periodic checks.
37
+ discovery_interval_seconds: 5
38
+ tools:
39
+ - group_name: artifact_management
40
+ tool_type: builtin-group
41
+
42
+ # --- List of Downstream Agents to Proxy ---
43
+ # A single proxy can manage multiple external agents.
44
+ # Each agent can have its own URL, authentication, and timeout settings.
45
+ proxied_agents:
46
+ # Example 1: A simple agent without authentication
47
+ - name: "HelloWorld" # The name this agent will have on the Solace mesh
48
+ url: "http://localhost:9999" # The real HTTP endpoint of the agent
49
+
50
+ # Example 2: Another agent without authentication
51
+ - name: "AnalysisAgent"
52
+ url: "http://127.0.0.1:10001"
53
+
54
+ # You can add more agents here with different configurations:
55
+ # - name: "SecureAgent"
56
+ # url: "https://api.example.com/agent"
57
+ # authentication:
58
+ # type: "static_bearer"
59
+ # token: "${SECURE_AGENT_TOKEN}"
60
+ # request_timeout_seconds: 180
61
+ # # use_agent_card_url: false # If true (default), uses URL from agent card for tasks.
62
+ # # If false, uses configured URL directly for all calls.
@@ -20,15 +20,25 @@ apps:
20
20
  namespace: ${NAMESPACE}
21
21
  session_secret_key: "${SESSION_SECRET_KEY}"
22
22
 
23
+ model: *general_model
23
24
  artifact_service: *default_artifact_service
24
25
  session_service: __SESSION_SERVICE__
25
26
  gateway_id: ${WEBUI_GATEWAY_ID}
26
27
  fastapi_host: ${FASTAPI_HOST}
27
- fastapi_port: ${FASTAPI_PORT}
28
- cors_allowed_origins:
29
- - "http://localhost:3000"
28
+ fastapi_port: ${FASTAPI_PORT, 8000}
29
+ cors_allowed_origins:
30
+ - "http://localhost:3000"
30
31
  - "http://127.0.0.1:3000"
31
32
 
33
+ # Platform Service Configuration (runs as second app in this template)
34
+ platform_service:
35
+ url: "${PLATFORM_SERVICE_URL, http://localhost:8001}"
36
+
37
+ # OAuth2 Authentication (Community: false, Enterprise: true)
38
+ external_auth_service_url: ${EXTERNAL_AUTH_SERVICE_URL}
39
+ external_auth_provider: ${EXTERNAL_AUTH_PROVIDER, generic}
40
+ frontend_use_authorization: ${FRONTEND_USE_AUTHORIZATION, false}
41
+
32
42
  enable_embed_resolution: ${ENABLE_EMBED_RESOLUTION} # Enable late-stage resolution
33
43
  gateway_artifact_content_limit_bytes: ${GATEWAY_ARTIFACT_LIMIT_BYTES, 10000000} # Max size for late-stage embeds
34
44
  sse_max_queue_size: ${SSE_MAX_QUEUE_SIZE, 200} # Max size of SSE connection queues
@@ -46,6 +56,138 @@ apps:
46
56
  Format responses to the user in Markdown using appropriate formatting.
47
57
 
48
58
  # --- Frontend Config Passthrough ---
49
- frontend_welcome_message: ${FRONTEND_WELCOME_MESSAGE}
50
- frontend_bot_name: ${FRONTEND_BOT_NAME}
51
- frontend_collect_feedback: ${FRONTEND_COLLECT_FEEDBACK}
59
+ frontend_welcome_message: __FRONTEND_WELCOME_MESSAGE__
60
+ frontend_bot_name: __FRONTEND_BOT_NAME__
61
+ frontend_collect_feedback: __FRONTEND_COLLECT_FEEDBACK__
62
+ frontend_logo_url: __FRONTEND_LOGO_URL__
63
+
64
+ task_logging:
65
+ enabled: true
66
+ log_status_updates: true
67
+ log_artifact_events: true
68
+ log_file_parts: true
69
+ max_file_part_size_bytes: 10240
70
+
71
+ # --- Frontend Feature Flags ---
72
+ # Uncomment to control speech features in the UI
73
+ frontend_feature_enablement:
74
+ # speechToText: true # Set to false to hide Speech-to-Text settings & microphone
75
+ # textToSpeech: true # Set to false to hide Text-to-Speech settings & speaker button
76
+ # projects: true
77
+ # promptLibrary: true
78
+ background_tasks: true # NOTE: task_logging must also be enabled for background tasks to work
79
+
80
+ # --- Background Tasks Configuration ---
81
+ background_tasks:
82
+ default_timeout_ms: 3600000 # Default: 1 hour (3600000ms)
83
+
84
+ # --- Speech Configuration (STT/TTS) ---
85
+ speech:
86
+ # stt:
87
+ # provider: openai
88
+ # url: "https://api.openai.com/v1/audio/transcriptions"
89
+ # api_key: "${OPENAI_API_KEY}"
90
+ # model: "whisper-1"
91
+ stt:
92
+ provider: azure
93
+ azure:
94
+ api_key: "${AZURE_SPEECH_KEY}"
95
+ region: "${AZURE_SPEECH_REGION}"
96
+ language: en-US
97
+
98
+ # Text-to-Speech Configuration
99
+ tts:
100
+ provider: ${TTS_PROVIDER, gemini} # "gemini", "azure", or "polly" (can be overridden by UI)
101
+
102
+ # Azure Neural Voices Configuration
103
+ azure:
104
+ api_key: "${AZURE_SPEECH_KEY}"
105
+ region: "${AZURE_SPEECH_REGION}"
106
+ default_voice: "en-US-Andrew:DragonHDLatestNeural"
107
+ voices:
108
+ # DragonHD Latest Neural Voices (Highest Quality)
109
+ - "en-US-Ava:DragonHDLatestNeural"
110
+ - "en-US-Ava3:DragonHDLatestNeural"
111
+ - "en-US-Adam:DragonHDLatestNeural"
112
+ - "en-US-Alloy:DragonHDLatestNeural"
113
+ - "en-US-Andrew:DragonHDLatestNeural"
114
+ - "en-US-Andrew2:DragonHDLatestNeural"
115
+ - "en-US-Andrew3:DragonHDLatestNeural"
116
+ - "en-US-Aria:DragonHDLatestNeural"
117
+ - "en-US-Brian:DragonHDLatestNeural"
118
+ - "en-US-Davis:DragonHDLatestNeural"
119
+ - "en-US-Emma:DragonHDLatestNeural"
120
+ - "en-US-Emma2:DragonHDLatestNeural"
121
+ - "en-US-Jenny:DragonHDLatestNeural"
122
+ - "en-US-MultiTalker-Ava-Andrew:DragonHDLatestNeural"
123
+ - "en-US-Nova:DragonHDLatestNeural"
124
+ - "en-US-Phoebe:DragonHDLatestNeural"
125
+ - "en-US-Serena:DragonHDLatestNeural"
126
+ - "en-US-Steffan:DragonHDLatestNeural"
127
+ # Standard Neural Voices
128
+ - "en-US-JennyNeural"
129
+ - "en-US-GuyNeural"
130
+ - "en-US-AriaNeural"
131
+ - "en-US-DavisNeural"
132
+ - "en-US-JaneNeural"
133
+ - "en-US-JasonNeural"
134
+ - "en-US-NancyNeural"
135
+ - "en-US-TonyNeural"
136
+ - "en-GB-LibbyNeural"
137
+ - "en-GB-RyanNeural"
138
+ - "en-GB-SoniaNeural"
139
+ - "en-AU-NatashaNeural"
140
+ - "en-AU-WilliamNeural"
141
+
142
+ # Google Gemini Configuration
143
+ gemini:
144
+ api_key: "${GEMINI_API_KEY}"
145
+ model: "gemini-2.5-flash-preview-tts"
146
+ default_voice: "Kore"
147
+ language: "en-US"
148
+ voices:
149
+ - "Kore"
150
+ - "Puck"
151
+ - "Zephyr"
152
+ - "Charon"
153
+ - "Fenrir"
154
+ - "Leda"
155
+ - "Aoede"
156
+ - "Callirhoe"
157
+ - "Umbriel"
158
+ - "Enceladus"
159
+ - "Iapetus"
160
+ - "Erinome"
161
+ - "Algieba"
162
+ - "Despina"
163
+ - "Algenib"
164
+ - "Achernar"
165
+ - "Schedar"
166
+ - "Gacrux"
167
+ - "Pulcherrima"
168
+ - "Achird"
169
+ - "Zubenelgenubi"
170
+ - "Vindemiatrix"
171
+ - "Sadachbia"
172
+ - "Sadaltager"
173
+ - "Sulafat"
174
+ - "Autonoe"
175
+ - "Laomedeia"
176
+ - "Orus"
177
+ - "Rasalgethi"
178
+ - "Alnilam"
179
+
180
+ # Frontend Speech Tab Default Settings (optional)
181
+ speechTab:
182
+ advancedMode: false
183
+ speechToText:
184
+ speechToText: true
185
+ engineSTT: "external" # Use external for better quality
186
+ languageSTT: "en-US"
187
+ textToSpeech:
188
+ textToSpeech: true
189
+ engineTTS: "external" # Use external for better quality
190
+ voice: "Kore"
191
+ playbackRate: 1.0
192
+ cacheTTS: true
193
+
@@ -0,0 +1,18 @@
1
+ """Web search tools for Solace Agent Mesh.
2
+
3
+ This module provides Google Search integration. For other search providers
4
+ (Exa, Brave, Tavily), please use the corresponding plugins from
5
+ solace-agent-mesh-plugins repository.
6
+ """
7
+
8
+ from .models import SearchSource, SearchResult, ImageResult
9
+ from .base import WebSearchTool
10
+ from .google_search import GoogleSearchTool
11
+
12
+ __all__ = [
13
+ "SearchSource",
14
+ "SearchResult",
15
+ "ImageResult",
16
+ "WebSearchTool",
17
+ "GoogleSearchTool",
18
+ ]
@@ -0,0 +1,84 @@
1
+ """Base web search tool interface."""
2
+
3
+ from abc import ABC, abstractmethod
4
+ from typing import Literal, Optional
5
+ from .models import SearchResult
6
+
7
+
8
+ class WebSearchTool(ABC):
9
+ """Base class for web search tools."""
10
+
11
+ def __init__(self, api_key: Optional[str] = None, **kwargs):
12
+ """Initialize the search tool.
13
+
14
+ Args:
15
+ api_key: API key for the search provider (if required)
16
+ **kwargs: Additional provider-specific configuration
17
+ """
18
+ self.api_key = api_key
19
+ self.config = kwargs
20
+
21
+ @abstractmethod
22
+ async def search(
23
+ self,
24
+ query: str,
25
+ max_results: int = 5,
26
+ search_depth: Literal["basic", "advanced"] = "basic",
27
+ **kwargs
28
+ ) -> SearchResult:
29
+ """Execute a search query.
30
+
31
+ Args:
32
+ query: The search query string
33
+ max_results: Maximum number of results to return (1-10)
34
+ search_depth: Search depth - 'basic' for quick results, 'advanced' for comprehensive
35
+ **kwargs: Additional provider-specific parameters
36
+
37
+ Returns:
38
+ SearchResult object containing the search results
39
+
40
+ Raises:
41
+ Exception: If the search fails
42
+ """
43
+ raise NotImplementedError("Subclasses must implement search()")
44
+
45
+ def get_tool_definition(self) -> dict:
46
+ """Get the tool definition for LLM function calling.
47
+
48
+ Returns:
49
+ Dictionary containing the tool definition
50
+ """
51
+ return {
52
+ "type": "function",
53
+ "function": {
54
+ "name": "web_search",
55
+ "description": (
56
+ "Search the web for current information. Use this when you need "
57
+ "up-to-date information, facts, news, or data that may not be in "
58
+ "your training data. Always cite sources using the citation format."
59
+ ),
60
+ "parameters": {
61
+ "type": "object",
62
+ "properties": {
63
+ "query": {
64
+ "type": "string",
65
+ "description": "The search query"
66
+ },
67
+ "max_results": {
68
+ "type": "integer",
69
+ "description": "Maximum number of results (1-10)",
70
+ "minimum": 1,
71
+ "maximum": 10,
72
+ "default": 5
73
+ },
74
+ "search_depth": {
75
+ "type": "string",
76
+ "enum": ["basic", "advanced"],
77
+ "description": "Search depth: 'basic' for quick results, 'advanced' for comprehensive",
78
+ "default": "basic"
79
+ }
80
+ },
81
+ "required": ["query"]
82
+ }
83
+ }
84
+ }