solace-agent-mesh 0.2.3__py3-none-any.whl → 1.0.1__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 (518) hide show
  1. solace_agent_mesh/agent/adk/adk_llm.txt +93 -0
  2. solace_agent_mesh/agent/adk/app_llm_agent.py +26 -0
  3. solace_agent_mesh/agent/adk/callbacks.py +1694 -0
  4. solace_agent_mesh/agent/adk/filesystem_artifact_service.py +381 -0
  5. solace_agent_mesh/agent/adk/invocation_monitor.py +295 -0
  6. solace_agent_mesh/agent/adk/models/lite_llm.py +872 -0
  7. solace_agent_mesh/agent/adk/models/models_llm.txt +94 -0
  8. solace_agent_mesh/agent/adk/runner.py +353 -0
  9. solace_agent_mesh/agent/adk/services.py +240 -0
  10. solace_agent_mesh/agent/adk/setup.py +751 -0
  11. solace_agent_mesh/agent/adk/stream_parser.py +214 -0
  12. solace_agent_mesh/agent/adk/tool_wrapper.py +139 -0
  13. solace_agent_mesh/agent/agent_llm.txt +41 -0
  14. solace_agent_mesh/agent/protocol/event_handlers.py +1469 -0
  15. solace_agent_mesh/agent/protocol/protocol_llm.txt +21 -0
  16. solace_agent_mesh/agent/sac/app.py +640 -0
  17. solace_agent_mesh/agent/sac/component.py +3388 -0
  18. solace_agent_mesh/agent/sac/patch_adk.py +111 -0
  19. solace_agent_mesh/agent/sac/sac_llm.txt +105 -0
  20. solace_agent_mesh/agent/sac/task_execution_context.py +176 -0
  21. solace_agent_mesh/agent/testing/__init__.py +3 -0
  22. solace_agent_mesh/agent/testing/debug_utils.py +135 -0
  23. solace_agent_mesh/agent/testing/testing_llm.txt +90 -0
  24. solace_agent_mesh/agent/tools/__init__.py +14 -0
  25. solace_agent_mesh/agent/tools/audio_tools.py +1622 -0
  26. solace_agent_mesh/agent/tools/builtin_artifact_tools.py +1954 -0
  27. solace_agent_mesh/agent/tools/builtin_data_analysis_tools.py +238 -0
  28. solace_agent_mesh/agent/tools/general_agent_tools.py +569 -0
  29. solace_agent_mesh/agent/tools/image_tools.py +1184 -0
  30. solace_agent_mesh/agent/tools/peer_agent_tool.py +289 -0
  31. solace_agent_mesh/agent/tools/registry.py +36 -0
  32. solace_agent_mesh/agent/tools/test_tools.py +135 -0
  33. solace_agent_mesh/agent/tools/tool_definition.py +45 -0
  34. solace_agent_mesh/agent/tools/tools_llm.txt +104 -0
  35. solace_agent_mesh/agent/tools/web_tools.py +381 -0
  36. solace_agent_mesh/agent/utils/artifact_helpers.py +927 -0
  37. solace_agent_mesh/agent/utils/config_parser.py +47 -0
  38. solace_agent_mesh/agent/utils/context_helpers.py +60 -0
  39. solace_agent_mesh/agent/utils/utils_llm.txt +153 -0
  40. solace_agent_mesh/assets/docs/404.html +16 -0
  41. solace_agent_mesh/assets/docs/assets/css/styles.906a1503.css +1 -0
  42. solace_agent_mesh/assets/docs/assets/images/Solace_AI_Framework_With_Broker-85f0a306a9bcdd20b390b7a949f6d862.png +0 -0
  43. solace_agent_mesh/assets/docs/assets/images/sac-flows-80d5b603c6aafd33e87945680ce0abf3.png +0 -0
  44. solace_agent_mesh/assets/docs/assets/images/sac_parts_of_a_component-cb3d0424b1d0c17734c5435cca6b4082.png +0 -0
  45. solace_agent_mesh/assets/docs/assets/js/04989206.674a8007.js +1 -0
  46. solace_agent_mesh/assets/docs/assets/js/0e682baa.79f0ab22.js +1 -0
  47. solace_agent_mesh/assets/docs/assets/js/1001.0182a8bd.js +1 -0
  48. solace_agent_mesh/assets/docs/assets/js/1023fc19.015679ca.js +1 -0
  49. solace_agent_mesh/assets/docs/assets/js/1039.0bd46aa1.js +1 -0
  50. solace_agent_mesh/assets/docs/assets/js/149.b797a808.js +1 -0
  51. solace_agent_mesh/assets/docs/assets/js/1523c6b4.91c7bc01.js +1 -0
  52. solace_agent_mesh/assets/docs/assets/js/165.6a39807d.js +2 -0
  53. solace_agent_mesh/assets/docs/assets/js/165.6a39807d.js.LICENSE.txt +9 -0
  54. solace_agent_mesh/assets/docs/assets/js/166ab619.7d97ccaf.js +1 -0
  55. solace_agent_mesh/assets/docs/assets/js/17896441.a5e82f9b.js +2 -0
  56. solace_agent_mesh/assets/docs/assets/js/17896441.a5e82f9b.js.LICENSE.txt +7 -0
  57. solace_agent_mesh/assets/docs/assets/js/1c6e87d2.23bccffb.js +1 -0
  58. solace_agent_mesh/assets/docs/assets/js/2130.ab9fd314.js +1 -0
  59. solace_agent_mesh/assets/docs/assets/js/21ceee5f.614fa8dd.js +1 -0
  60. solace_agent_mesh/assets/docs/assets/js/2237.5e477fc6.js +1 -0
  61. solace_agent_mesh/assets/docs/assets/js/2334.622a6395.js +1 -0
  62. solace_agent_mesh/assets/docs/assets/js/2a9cab12.8909df92.js +1 -0
  63. solace_agent_mesh/assets/docs/assets/js/3219.adc1d663.js +1 -0
  64. solace_agent_mesh/assets/docs/assets/js/332e10b5.7a103f42.js +1 -0
  65. solace_agent_mesh/assets/docs/assets/js/3624.b524e433.js +1 -0
  66. solace_agent_mesh/assets/docs/assets/js/375.708d48db.js +1 -0
  67. solace_agent_mesh/assets/docs/assets/js/3834.b6cd790e.js +1 -0
  68. solace_agent_mesh/assets/docs/assets/js/3d406171.f722eaf5.js +1 -0
  69. solace_agent_mesh/assets/docs/assets/js/4250.95455b28.js +1 -0
  70. solace_agent_mesh/assets/docs/assets/js/42b3f8d8.36090198.js +1 -0
  71. solace_agent_mesh/assets/docs/assets/js/4356.d169ab5b.js +1 -0
  72. solace_agent_mesh/assets/docs/assets/js/442a8107.5ba94b65.js +1 -0
  73. solace_agent_mesh/assets/docs/assets/js/4458.518e66fa.js +1 -0
  74. solace_agent_mesh/assets/docs/assets/js/4488.c7cc3442.js +1 -0
  75. solace_agent_mesh/assets/docs/assets/js/4494.6ee23046.js +1 -0
  76. solace_agent_mesh/assets/docs/assets/js/4855.fc4444b6.js +1 -0
  77. solace_agent_mesh/assets/docs/assets/js/4866.22daefc0.js +1 -0
  78. solace_agent_mesh/assets/docs/assets/js/4950.ca4caeda.js +1 -0
  79. solace_agent_mesh/assets/docs/assets/js/4c2787c2.66ee00e9.js +1 -0
  80. solace_agent_mesh/assets/docs/assets/js/5388.7a136447.js +1 -0
  81. solace_agent_mesh/assets/docs/assets/js/55f47984.c484bf96.js +1 -0
  82. solace_agent_mesh/assets/docs/assets/js/5607.081356f8.js +1 -0
  83. solace_agent_mesh/assets/docs/assets/js/5864.b0d0e9de.js +1 -0
  84. solace_agent_mesh/assets/docs/assets/js/5b4258a4.bda20761.js +1 -0
  85. solace_agent_mesh/assets/docs/assets/js/5e95c892.558d5167.js +1 -0
  86. solace_agent_mesh/assets/docs/assets/js/6143.0a1464c9.js +1 -0
  87. solace_agent_mesh/assets/docs/assets/js/6395.e9c73649.js +1 -0
  88. solace_agent_mesh/assets/docs/assets/js/6796.51d2c9b7.js +1 -0
  89. solace_agent_mesh/assets/docs/assets/js/6976.379be23b.js +1 -0
  90. solace_agent_mesh/assets/docs/assets/js/6978.ee0b945c.js +1 -0
  91. solace_agent_mesh/assets/docs/assets/js/7040.cb436723.js +1 -0
  92. solace_agent_mesh/assets/docs/assets/js/7195.412f418a.js +1 -0
  93. solace_agent_mesh/assets/docs/assets/js/7280.3fb73bdb.js +1 -0
  94. solace_agent_mesh/assets/docs/assets/js/768e31b0.a12673db.js +1 -0
  95. solace_agent_mesh/assets/docs/assets/js/7845.e33e7c4c.js +1 -0
  96. solace_agent_mesh/assets/docs/assets/js/7900.69516146.js +1 -0
  97. solace_agent_mesh/assets/docs/assets/js/8356.8a379c04.js +1 -0
  98. solace_agent_mesh/assets/docs/assets/js/85387663.6bf41934.js +1 -0
  99. solace_agent_mesh/assets/docs/assets/js/8567.4732c6b7.js +1 -0
  100. solace_agent_mesh/assets/docs/assets/js/8573.cb04eda5.js +1 -0
  101. solace_agent_mesh/assets/docs/assets/js/8577.1d54e766.js +1 -0
  102. solace_agent_mesh/assets/docs/assets/js/8591.d7c16be6.js +2 -0
  103. solace_agent_mesh/assets/docs/assets/js/8591.d7c16be6.js.LICENSE.txt +61 -0
  104. solace_agent_mesh/assets/docs/assets/js/8709.7ecd4047.js +1 -0
  105. solace_agent_mesh/assets/docs/assets/js/8731.49e930c2.js +1 -0
  106. solace_agent_mesh/assets/docs/assets/js/8908.f9d1b506.js +1 -0
  107. solace_agent_mesh/assets/docs/assets/js/9157.b4093d07.js +1 -0
  108. solace_agent_mesh/assets/docs/assets/js/9278.a4fd875d.js +1 -0
  109. solace_agent_mesh/assets/docs/assets/js/945fb41e.74d728aa.js +1 -0
  110. solace_agent_mesh/assets/docs/assets/js/9616.b75c2f6d.js +1 -0
  111. solace_agent_mesh/assets/docs/assets/js/9793.c6d16376.js +1 -0
  112. solace_agent_mesh/assets/docs/assets/js/9eff14a2.1bf8f61c.js +1 -0
  113. solace_agent_mesh/assets/docs/assets/js/a3a92b25.26ca071f.js +1 -0
  114. solace_agent_mesh/assets/docs/assets/js/a7bd4aaa.2204d2f7.js +1 -0
  115. solace_agent_mesh/assets/docs/assets/js/a94703ab.0438dbc2.js +1 -0
  116. solace_agent_mesh/assets/docs/assets/js/aba21aa0.c42a534c.js +1 -0
  117. solace_agent_mesh/assets/docs/assets/js/aba87c2f.d3e2dcc3.js +1 -0
  118. solace_agent_mesh/assets/docs/assets/js/ae4415af.8e279b5d.js +1 -0
  119. solace_agent_mesh/assets/docs/assets/js/b7006a3a.40b10c9d.js +1 -0
  120. solace_agent_mesh/assets/docs/assets/js/bac0be12.f50d9bac.js +1 -0
  121. solace_agent_mesh/assets/docs/assets/js/bb2ef573.207e6990.js +1 -0
  122. solace_agent_mesh/assets/docs/assets/js/c2c06897.63b76e9e.js +1 -0
  123. solace_agent_mesh/assets/docs/assets/js/cc969b05.954186d4.js +1 -0
  124. solace_agent_mesh/assets/docs/assets/js/cd3d4052.ca6eed8c.js +1 -0
  125. solace_agent_mesh/assets/docs/assets/js/ced92a13.fb92e7ca.js +1 -0
  126. solace_agent_mesh/assets/docs/assets/js/cee5d587.f5b73ca1.js +1 -0
  127. solace_agent_mesh/assets/docs/assets/js/f284c35a.ecc3d195.js +1 -0
  128. solace_agent_mesh/assets/docs/assets/js/f897a61a.2c2e152c.js +1 -0
  129. solace_agent_mesh/assets/docs/assets/js/fbfa3e75.aca209c9.js +1 -0
  130. solace_agent_mesh/assets/docs/assets/js/main.7ed3319f.js +2 -0
  131. solace_agent_mesh/assets/docs/assets/js/main.7ed3319f.js.LICENSE.txt +81 -0
  132. solace_agent_mesh/assets/docs/assets/js/runtime~main.d9520ae2.js +1 -0
  133. solace_agent_mesh/assets/docs/docs/documentation/concepts/agents/index.html +128 -0
  134. solace_agent_mesh/assets/docs/docs/documentation/concepts/architecture/index.html +91 -0
  135. solace_agent_mesh/assets/docs/docs/documentation/concepts/cli/index.html +201 -0
  136. solace_agent_mesh/assets/docs/docs/documentation/concepts/gateways/index.html +91 -0
  137. solace_agent_mesh/assets/docs/docs/documentation/concepts/orchestrator/index.html +55 -0
  138. solace_agent_mesh/assets/docs/docs/documentation/concepts/plugins/index.html +82 -0
  139. solace_agent_mesh/assets/docs/docs/documentation/deployment/debugging/index.html +60 -0
  140. solace_agent_mesh/assets/docs/docs/documentation/deployment/deploy/index.html +48 -0
  141. solace_agent_mesh/assets/docs/docs/documentation/deployment/observability/index.html +54 -0
  142. solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +17 -0
  143. solace_agent_mesh/assets/docs/docs/documentation/getting-started/component-overview/index.html +45 -0
  144. solace_agent_mesh/assets/docs/docs/documentation/getting-started/installation/index.html +76 -0
  145. solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +150 -0
  146. solace_agent_mesh/assets/docs/docs/documentation/getting-started/quick-start/index.html +54 -0
  147. solace_agent_mesh/assets/docs/docs/documentation/tutorials/bedrock-agents/index.html +267 -0
  148. solace_agent_mesh/assets/docs/docs/documentation/tutorials/custom-agent/index.html +136 -0
  149. solace_agent_mesh/assets/docs/docs/documentation/tutorials/event-mesh-gateway/index.html +116 -0
  150. solace_agent_mesh/assets/docs/docs/documentation/tutorials/mcp-integration/index.html +80 -0
  151. solace_agent_mesh/assets/docs/docs/documentation/tutorials/mongodb-integration/index.html +164 -0
  152. solace_agent_mesh/assets/docs/docs/documentation/tutorials/rest-gateway/index.html +57 -0
  153. solace_agent_mesh/assets/docs/docs/documentation/tutorials/slack-integration/index.html +72 -0
  154. solace_agent_mesh/assets/docs/docs/documentation/tutorials/sql-database/index.html +102 -0
  155. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/artifact-management/index.html +99 -0
  156. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/audio-tools/index.html +90 -0
  157. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/data-analysis-tools/index.html +107 -0
  158. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/embeds/index.html +152 -0
  159. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/index.html +103 -0
  160. solace_agent_mesh/assets/docs/docs/documentation/user-guide/create-agents/index.html +170 -0
  161. solace_agent_mesh/assets/docs/docs/documentation/user-guide/create-gateways/index.html +200 -0
  162. solace_agent_mesh/assets/docs/docs/documentation/user-guide/creating-service-providers/index.html +54 -0
  163. solace_agent_mesh/assets/docs/docs/documentation/user-guide/solace-ai-connector/index.html +69 -0
  164. solace_agent_mesh/assets/docs/docs/documentation/user-guide/structure/index.html +59 -0
  165. solace_agent_mesh/assets/docs/img/Solace_AI_Framework_README.png +0 -0
  166. solace_agent_mesh/assets/docs/img/Solace_AI_Framework_With_Broker.png +0 -0
  167. solace_agent_mesh/assets/docs/img/logo.png +0 -0
  168. solace_agent_mesh/assets/docs/img/sac-flows.png +0 -0
  169. solace_agent_mesh/assets/docs/img/sac_parts_of_a_component.png +0 -0
  170. solace_agent_mesh/assets/docs/img/solace-logo.png +0 -0
  171. solace_agent_mesh/assets/docs/lunr-index-1753813536522.json +1 -0
  172. solace_agent_mesh/assets/docs/lunr-index.json +1 -0
  173. solace_agent_mesh/assets/docs/search-doc-1753813536522.json +1 -0
  174. solace_agent_mesh/assets/docs/search-doc.json +1 -0
  175. solace_agent_mesh/assets/docs/sitemap.xml +1 -0
  176. solace_agent_mesh/cli/__init__.py +1 -1
  177. solace_agent_mesh/cli/commands/add_cmd/__init__.py +15 -0
  178. solace_agent_mesh/cli/commands/add_cmd/add_cmd_llm.txt +250 -0
  179. solace_agent_mesh/cli/commands/add_cmd/agent_cmd.py +659 -0
  180. solace_agent_mesh/cli/commands/add_cmd/gateway_cmd.py +322 -0
  181. solace_agent_mesh/cli/commands/add_cmd/web_add_agent_step.py +93 -0
  182. solace_agent_mesh/cli/commands/add_cmd/web_add_gateway_step.py +118 -0
  183. solace_agent_mesh/cli/commands/docs_cmd.py +57 -0
  184. solace_agent_mesh/cli/commands/eval_cmd.py +64 -0
  185. solace_agent_mesh/cli/commands/init_cmd/__init__.py +404 -0
  186. solace_agent_mesh/cli/commands/init_cmd/broker_step.py +201 -0
  187. solace_agent_mesh/cli/commands/init_cmd/directory_step.py +28 -0
  188. solace_agent_mesh/cli/commands/init_cmd/env_step.py +197 -0
  189. solace_agent_mesh/cli/commands/init_cmd/init_cmd_llm.txt +365 -0
  190. solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +387 -0
  191. solace_agent_mesh/cli/commands/init_cmd/project_files_step.py +38 -0
  192. solace_agent_mesh/cli/commands/init_cmd/web_init_step.py +110 -0
  193. solace_agent_mesh/cli/commands/init_cmd/webui_gateway_step.py +183 -0
  194. solace_agent_mesh/cli/commands/plugin_cmd/__init__.py +18 -0
  195. solace_agent_mesh/cli/commands/plugin_cmd/add_cmd.py +372 -0
  196. solace_agent_mesh/cli/commands/plugin_cmd/build_cmd.py +86 -0
  197. solace_agent_mesh/cli/commands/plugin_cmd/catalog_cmd.py +138 -0
  198. solace_agent_mesh/cli/commands/plugin_cmd/create_cmd.py +309 -0
  199. solace_agent_mesh/cli/commands/plugin_cmd/official_registry.py +174 -0
  200. solace_agent_mesh/cli/commands/plugin_cmd/plugin_cmd_llm.txt +305 -0
  201. solace_agent_mesh/cli/commands/run_cmd.py +158 -0
  202. solace_agent_mesh/cli/main.py +17 -294
  203. solace_agent_mesh/cli/utils.py +135 -204
  204. solace_agent_mesh/client/webui/frontend/static/assets/authCallback-DvlO62me.js +1 -0
  205. solace_agent_mesh/client/webui/frontend/static/assets/client-bp6u3qVZ.js +49 -0
  206. solace_agent_mesh/client/webui/frontend/static/assets/favicon-BLgzUch9.ico +0 -0
  207. solace_agent_mesh/client/webui/frontend/static/assets/main-An0a5j5k.js +663 -0
  208. solace_agent_mesh/client/webui/frontend/static/assets/main-Bu5-4Bac.css +1 -0
  209. solace_agent_mesh/client/webui/frontend/static/auth-callback.html +14 -0
  210. solace_agent_mesh/client/webui/frontend/static/index.html +15 -0
  211. solace_agent_mesh/common/__init__.py +1 -0
  212. solace_agent_mesh/common/a2a_protocol.py +564 -0
  213. solace_agent_mesh/common/agent_registry.py +42 -0
  214. solace_agent_mesh/common/client/__init__.py +4 -0
  215. solace_agent_mesh/common/client/card_resolver.py +21 -0
  216. solace_agent_mesh/common/client/client.py +85 -0
  217. solace_agent_mesh/common/client/client_llm.txt +133 -0
  218. solace_agent_mesh/common/common_llm.txt +144 -0
  219. solace_agent_mesh/common/constants.py +1 -14
  220. solace_agent_mesh/common/middleware/__init__.py +12 -0
  221. solace_agent_mesh/common/middleware/config_resolver.py +130 -0
  222. solace_agent_mesh/common/middleware/middleware_llm.txt +174 -0
  223. solace_agent_mesh/common/middleware/registry.py +125 -0
  224. solace_agent_mesh/common/server/__init__.py +4 -0
  225. solace_agent_mesh/common/server/server.py +122 -0
  226. solace_agent_mesh/common/server/server_llm.txt +169 -0
  227. solace_agent_mesh/common/server/task_manager.py +291 -0
  228. solace_agent_mesh/common/server/utils.py +28 -0
  229. solace_agent_mesh/common/services/__init__.py +4 -0
  230. solace_agent_mesh/common/services/employee_service.py +162 -0
  231. solace_agent_mesh/common/services/identity_service.py +129 -0
  232. solace_agent_mesh/common/services/providers/__init__.py +4 -0
  233. solace_agent_mesh/common/services/providers/local_file_identity_service.py +148 -0
  234. solace_agent_mesh/common/services/providers/providers_llm.txt +113 -0
  235. solace_agent_mesh/common/services/services_llm.txt +132 -0
  236. solace_agent_mesh/common/types.py +411 -0
  237. solace_agent_mesh/common/utils/__init__.py +7 -0
  238. solace_agent_mesh/common/utils/asyncio_macos_fix.py +86 -0
  239. solace_agent_mesh/common/utils/embeds/__init__.py +33 -0
  240. solace_agent_mesh/common/utils/embeds/constants.py +55 -0
  241. solace_agent_mesh/common/utils/embeds/converter.py +452 -0
  242. solace_agent_mesh/common/utils/embeds/embeds_llm.txt +124 -0
  243. solace_agent_mesh/common/utils/embeds/evaluators.py +394 -0
  244. solace_agent_mesh/common/utils/embeds/modifiers.py +816 -0
  245. solace_agent_mesh/common/utils/embeds/resolver.py +865 -0
  246. solace_agent_mesh/common/utils/embeds/types.py +14 -0
  247. solace_agent_mesh/common/utils/in_memory_cache.py +108 -0
  248. solace_agent_mesh/common/utils/log_formatters.py +44 -0
  249. solace_agent_mesh/common/utils/mime_helpers.py +106 -0
  250. solace_agent_mesh/common/utils/push_notification_auth.py +134 -0
  251. solace_agent_mesh/common/utils/utils_llm.txt +67 -0
  252. solace_agent_mesh/config_portal/backend/common.py +66 -24
  253. solace_agent_mesh/config_portal/backend/plugin_catalog/constants.py +23 -0
  254. solace_agent_mesh/config_portal/backend/plugin_catalog/models.py +49 -0
  255. solace_agent_mesh/config_portal/backend/plugin_catalog/registry_manager.py +160 -0
  256. solace_agent_mesh/config_portal/backend/plugin_catalog/scraper.py +525 -0
  257. solace_agent_mesh/config_portal/backend/plugin_catalog_server.py +216 -0
  258. solace_agent_mesh/config_portal/backend/server.py +550 -140
  259. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-DNxCwAGB.js +48 -0
  260. solace_agent_mesh/config_portal/frontend/static/client/assets/components-B7lKcHVY.js +140 -0
  261. solace_agent_mesh/config_portal/frontend/static/client/assets/{entry.client-DX1misIU.js → entry.client-CEumGClk.js} +3 -3
  262. solace_agent_mesh/config_portal/frontend/static/client/assets/index-DSo1AH_7.js +68 -0
  263. solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-d2b54a97.js +1 -0
  264. solace_agent_mesh/config_portal/frontend/static/client/assets/{root-BApq5dPK.js → root-C4XmHinv.js} +2 -2
  265. solace_agent_mesh/config_portal/frontend/static/client/assets/root-DxRwaWiE.css +1 -0
  266. solace_agent_mesh/config_portal/frontend/static/client/index.html +3 -3
  267. solace_agent_mesh/core_a2a/__init__.py +1 -0
  268. solace_agent_mesh/core_a2a/core_a2a_llm.txt +88 -0
  269. solace_agent_mesh/core_a2a/service.py +331 -0
  270. solace_agent_mesh/evaluation/config_loader.py +657 -0
  271. solace_agent_mesh/evaluation/evaluator.py +667 -0
  272. solace_agent_mesh/evaluation/message_organizer.py +568 -0
  273. solace_agent_mesh/evaluation/report/benchmark_info.html +35 -0
  274. solace_agent_mesh/evaluation/report/chart_section.html +141 -0
  275. solace_agent_mesh/evaluation/report/detailed_breakdown.html +28 -0
  276. solace_agent_mesh/evaluation/report/modal.html +59 -0
  277. solace_agent_mesh/evaluation/report/modal_chart_functions.js +411 -0
  278. solace_agent_mesh/evaluation/report/modal_script.js +296 -0
  279. solace_agent_mesh/evaluation/report/modal_styles.css +340 -0
  280. solace_agent_mesh/evaluation/report/performance_metrics_styles.css +93 -0
  281. solace_agent_mesh/evaluation/report/templates/footer.html +2 -0
  282. solace_agent_mesh/evaluation/report/templates/header.html +340 -0
  283. solace_agent_mesh/evaluation/report_data_processor.py +972 -0
  284. solace_agent_mesh/evaluation/report_generator.py +613 -0
  285. solace_agent_mesh/evaluation/run.py +613 -0
  286. solace_agent_mesh/evaluation/subscriber.py +872 -0
  287. solace_agent_mesh/evaluation/summary_builder.py +775 -0
  288. solace_agent_mesh/evaluation/test_case_loader.py +714 -0
  289. solace_agent_mesh/gateway/base/__init__.py +1 -0
  290. solace_agent_mesh/gateway/base/app.py +266 -0
  291. solace_agent_mesh/gateway/base/base_llm.txt +119 -0
  292. solace_agent_mesh/gateway/base/component.py +1542 -0
  293. solace_agent_mesh/gateway/base/task_context.py +74 -0
  294. solace_agent_mesh/gateway/gateway_llm.txt +125 -0
  295. solace_agent_mesh/gateway/http_sse/app.py +190 -0
  296. solace_agent_mesh/gateway/http_sse/component.py +1602 -0
  297. solace_agent_mesh/gateway/http_sse/components/__init__.py +7 -0
  298. solace_agent_mesh/gateway/http_sse/components/components_llm.txt +65 -0
  299. solace_agent_mesh/gateway/http_sse/components/visualization_forwarder_component.py +108 -0
  300. solace_agent_mesh/gateway/http_sse/dependencies.py +316 -0
  301. solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +63 -0
  302. solace_agent_mesh/gateway/http_sse/main.py +442 -0
  303. solace_agent_mesh/gateway/http_sse/routers/__init__.py +4 -0
  304. solace_agent_mesh/gateway/http_sse/routers/agents.py +41 -0
  305. solace_agent_mesh/gateway/http_sse/routers/artifacts.py +821 -0
  306. solace_agent_mesh/gateway/http_sse/routers/auth.py +212 -0
  307. solace_agent_mesh/gateway/http_sse/routers/config.py +55 -0
  308. solace_agent_mesh/gateway/http_sse/routers/people.py +69 -0
  309. solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +37 -0
  310. solace_agent_mesh/gateway/http_sse/routers/sessions.py +80 -0
  311. solace_agent_mesh/gateway/http_sse/routers/sse.py +138 -0
  312. solace_agent_mesh/gateway/http_sse/routers/tasks.py +294 -0
  313. solace_agent_mesh/gateway/http_sse/routers/users.py +59 -0
  314. solace_agent_mesh/gateway/http_sse/routers/visualization.py +1131 -0
  315. solace_agent_mesh/gateway/http_sse/services/__init__.py +4 -0
  316. solace_agent_mesh/gateway/http_sse/services/agent_service.py +69 -0
  317. solace_agent_mesh/gateway/http_sse/services/people_service.py +158 -0
  318. solace_agent_mesh/gateway/http_sse/services/services_llm.txt +179 -0
  319. solace_agent_mesh/gateway/http_sse/services/task_service.py +121 -0
  320. solace_agent_mesh/gateway/http_sse/session_manager.py +187 -0
  321. solace_agent_mesh/gateway/http_sse/sse_manager.py +328 -0
  322. solace_agent_mesh/llm.txt +228 -0
  323. solace_agent_mesh/llm_detail.txt +2835 -0
  324. solace_agent_mesh/templates/agent_template.yaml +53 -0
  325. solace_agent_mesh/templates/eval_backend_template.yaml +54 -0
  326. solace_agent_mesh/templates/gateway_app_template.py +73 -0
  327. solace_agent_mesh/templates/gateway_component_template.py +400 -0
  328. solace_agent_mesh/templates/gateway_config_template.yaml +43 -0
  329. solace_agent_mesh/templates/main_orchestrator.yaml +55 -0
  330. solace_agent_mesh/templates/plugin_agent_config_template.yaml +122 -0
  331. solace_agent_mesh/templates/plugin_custom_config_template.yaml +27 -0
  332. solace_agent_mesh/templates/plugin_custom_template.py +10 -0
  333. solace_agent_mesh/templates/plugin_gateway_config_template.yaml +63 -0
  334. solace_agent_mesh/templates/plugin_pyproject_template.toml +33 -0
  335. solace_agent_mesh/templates/plugin_readme_template.md +34 -0
  336. solace_agent_mesh/templates/plugin_tools_template.py +224 -0
  337. solace_agent_mesh/templates/shared_config.yaml +66 -0
  338. solace_agent_mesh/templates/templates_llm.txt +147 -0
  339. solace_agent_mesh/templates/webui.yaml +53 -0
  340. solace_agent_mesh-1.0.1.dist-info/METADATA +432 -0
  341. solace_agent_mesh-1.0.1.dist-info/RECORD +359 -0
  342. solace_agent_mesh-1.0.1.dist-info/entry_points.txt +3 -0
  343. {solace_agent_mesh-0.2.3.dist-info → solace_agent_mesh-1.0.1.dist-info}/licenses/LICENSE +1 -1
  344. solace_agent_mesh/agents/base_agent_component.py +0 -226
  345. solace_agent_mesh/agents/global/actions/agent_state_change.py +0 -54
  346. solace_agent_mesh/agents/global/actions/clear_history.py +0 -32
  347. solace_agent_mesh/agents/global/actions/convert_file_to_markdown.py +0 -160
  348. solace_agent_mesh/agents/global/actions/create_file.py +0 -70
  349. solace_agent_mesh/agents/global/actions/error_action.py +0 -45
  350. solace_agent_mesh/agents/global/actions/plantuml_diagram.py +0 -163
  351. solace_agent_mesh/agents/global/actions/plotly_graph.py +0 -152
  352. solace_agent_mesh/agents/global/actions/retrieve_file.py +0 -51
  353. solace_agent_mesh/agents/global/global_agent_component.py +0 -38
  354. solace_agent_mesh/agents/image_processing/actions/create_image.py +0 -75
  355. solace_agent_mesh/agents/image_processing/actions/describe_image.py +0 -115
  356. solace_agent_mesh/agents/image_processing/image_processing_agent_component.py +0 -23
  357. solace_agent_mesh/agents/slack/__init__.py +0 -1
  358. solace_agent_mesh/agents/slack/actions/__init__.py +0 -1
  359. solace_agent_mesh/agents/slack/actions/post_message.py +0 -177
  360. solace_agent_mesh/agents/slack/slack_agent_component.py +0 -59
  361. solace_agent_mesh/agents/web_request/actions/do_image_search.py +0 -84
  362. solace_agent_mesh/agents/web_request/actions/do_news_search.py +0 -47
  363. solace_agent_mesh/agents/web_request/actions/do_suggestion_search.py +0 -34
  364. solace_agent_mesh/agents/web_request/actions/do_web_request.py +0 -135
  365. solace_agent_mesh/agents/web_request/actions/download_file.py +0 -69
  366. solace_agent_mesh/agents/web_request/web_request_agent_component.py +0 -33
  367. solace_agent_mesh/assets/web-visualizer/assets/index-D0qORgkg.css +0 -1
  368. solace_agent_mesh/assets/web-visualizer/assets/index-DnDr1pnu.js +0 -109
  369. solace_agent_mesh/assets/web-visualizer/index.html +0 -14
  370. solace_agent_mesh/assets/web-visualizer/vite.svg +0 -1
  371. solace_agent_mesh/cli/commands/add/__init__.py +0 -3
  372. solace_agent_mesh/cli/commands/add/add.py +0 -88
  373. solace_agent_mesh/cli/commands/add/agent.py +0 -110
  374. solace_agent_mesh/cli/commands/add/copy_from_plugin.py +0 -92
  375. solace_agent_mesh/cli/commands/add/gateway.py +0 -374
  376. solace_agent_mesh/cli/commands/build.py +0 -670
  377. solace_agent_mesh/cli/commands/chat/__init__.py +0 -3
  378. solace_agent_mesh/cli/commands/chat/chat.py +0 -361
  379. solace_agent_mesh/cli/commands/config.py +0 -29
  380. solace_agent_mesh/cli/commands/init/__init__.py +0 -3
  381. solace_agent_mesh/cli/commands/init/ai_provider_step.py +0 -93
  382. solace_agent_mesh/cli/commands/init/broker_step.py +0 -99
  383. solace_agent_mesh/cli/commands/init/builtin_agent_step.py +0 -83
  384. solace_agent_mesh/cli/commands/init/check_if_already_done.py +0 -13
  385. solace_agent_mesh/cli/commands/init/create_config_file_step.py +0 -65
  386. solace_agent_mesh/cli/commands/init/create_other_project_files_step.py +0 -147
  387. solace_agent_mesh/cli/commands/init/file_service_step.py +0 -73
  388. solace_agent_mesh/cli/commands/init/init.py +0 -92
  389. solace_agent_mesh/cli/commands/init/project_structure_step.py +0 -16
  390. solace_agent_mesh/cli/commands/init/web_init_step.py +0 -32
  391. solace_agent_mesh/cli/commands/plugin/__init__.py +0 -3
  392. solace_agent_mesh/cli/commands/plugin/add.py +0 -100
  393. solace_agent_mesh/cli/commands/plugin/build.py +0 -268
  394. solace_agent_mesh/cli/commands/plugin/create.py +0 -117
  395. solace_agent_mesh/cli/commands/plugin/plugin.py +0 -124
  396. solace_agent_mesh/cli/commands/plugin/remove.py +0 -73
  397. solace_agent_mesh/cli/commands/run.py +0 -68
  398. solace_agent_mesh/cli/commands/visualizer.py +0 -138
  399. solace_agent_mesh/cli/config.py +0 -85
  400. solace_agent_mesh/common/action.py +0 -91
  401. solace_agent_mesh/common/action_list.py +0 -37
  402. solace_agent_mesh/common/action_response.py +0 -340
  403. solace_agent_mesh/common/mysql_database.py +0 -40
  404. solace_agent_mesh/common/postgres_database.py +0 -85
  405. solace_agent_mesh/common/prompt_templates.py +0 -28
  406. solace_agent_mesh/common/stimulus_utils.py +0 -152
  407. solace_agent_mesh/common/time.py +0 -24
  408. solace_agent_mesh/common/utils.py +0 -712
  409. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-DMmCawWe.js +0 -42
  410. solace_agent_mesh/config_portal/frontend/static/client/assets/components-ZIfdTbrV.js +0 -191
  411. solace_agent_mesh/config_portal/frontend/static/client/assets/index-BJHAE5s4.js +0 -17
  412. solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-dd988f05.js +0 -1
  413. solace_agent_mesh/config_portal/frontend/static/client/assets/root-DX4gQ516.css +0 -1
  414. solace_agent_mesh/configs/agent_global.yaml +0 -74
  415. solace_agent_mesh/configs/agent_image_processing.yaml +0 -82
  416. solace_agent_mesh/configs/agent_slack.yaml +0 -64
  417. solace_agent_mesh/configs/agent_web_request.yaml +0 -75
  418. solace_agent_mesh/configs/conversation_to_file.yaml +0 -56
  419. solace_agent_mesh/configs/error_catcher.yaml +0 -56
  420. solace_agent_mesh/configs/monitor.yaml +0 -0
  421. solace_agent_mesh/configs/monitor_stim_and_errors_to_slack.yaml +0 -109
  422. solace_agent_mesh/configs/monitor_user_feedback.yaml +0 -58
  423. solace_agent_mesh/configs/orchestrator.yaml +0 -241
  424. solace_agent_mesh/configs/service_embedding.yaml +0 -81
  425. solace_agent_mesh/configs/service_llm.yaml +0 -265
  426. solace_agent_mesh/configs/visualize_websocket.yaml +0 -55
  427. solace_agent_mesh/gateway/components/gateway_base.py +0 -47
  428. solace_agent_mesh/gateway/components/gateway_input.py +0 -278
  429. solace_agent_mesh/gateway/components/gateway_output.py +0 -298
  430. solace_agent_mesh/gateway/identity/bamboohr_identity.py +0 -18
  431. solace_agent_mesh/gateway/identity/identity_base.py +0 -10
  432. solace_agent_mesh/gateway/identity/identity_provider.py +0 -60
  433. solace_agent_mesh/gateway/identity/no_identity.py +0 -9
  434. solace_agent_mesh/gateway/identity/passthru_identity.py +0 -9
  435. solace_agent_mesh/monitors/base_monitor_component.py +0 -26
  436. solace_agent_mesh/monitors/feedback/user_feedback_monitor.py +0 -75
  437. solace_agent_mesh/monitors/stim_and_errors/stim_and_error_monitor.py +0 -560
  438. solace_agent_mesh/orchestrator/__init__.py +0 -0
  439. solace_agent_mesh/orchestrator/action_manager.py +0 -237
  440. solace_agent_mesh/orchestrator/components/__init__.py +0 -0
  441. solace_agent_mesh/orchestrator/components/orchestrator_action_manager_timeout_component.py +0 -58
  442. solace_agent_mesh/orchestrator/components/orchestrator_action_response_component.py +0 -179
  443. solace_agent_mesh/orchestrator/components/orchestrator_register_component.py +0 -107
  444. solace_agent_mesh/orchestrator/components/orchestrator_stimulus_processor_component.py +0 -527
  445. solace_agent_mesh/orchestrator/components/orchestrator_streaming_output_component.py +0 -260
  446. solace_agent_mesh/orchestrator/orchestrator_main.py +0 -172
  447. solace_agent_mesh/orchestrator/orchestrator_prompt.py +0 -539
  448. solace_agent_mesh/services/__init__.py +0 -0
  449. solace_agent_mesh/services/authorization/providers/base_authorization_provider.py +0 -56
  450. solace_agent_mesh/services/bamboo_hr_service/__init__.py +0 -3
  451. solace_agent_mesh/services/bamboo_hr_service/bamboo_hr.py +0 -182
  452. solace_agent_mesh/services/common/__init__.py +0 -4
  453. solace_agent_mesh/services/common/auto_expiry.py +0 -45
  454. solace_agent_mesh/services/common/singleton.py +0 -18
  455. solace_agent_mesh/services/file_service/__init__.py +0 -14
  456. solace_agent_mesh/services/file_service/file_manager/__init__.py +0 -0
  457. solace_agent_mesh/services/file_service/file_manager/bucket_file_manager.py +0 -149
  458. solace_agent_mesh/services/file_service/file_manager/file_manager_base.py +0 -162
  459. solace_agent_mesh/services/file_service/file_manager/memory_file_manager.py +0 -64
  460. solace_agent_mesh/services/file_service/file_manager/volume_file_manager.py +0 -106
  461. solace_agent_mesh/services/file_service/file_service.py +0 -437
  462. solace_agent_mesh/services/file_service/file_service_constants.py +0 -54
  463. solace_agent_mesh/services/file_service/file_transformations.py +0 -141
  464. solace_agent_mesh/services/file_service/file_utils.py +0 -324
  465. solace_agent_mesh/services/file_service/transformers/__init__.py +0 -5
  466. solace_agent_mesh/services/history_service/__init__.py +0 -3
  467. solace_agent_mesh/services/history_service/history_providers/__init__.py +0 -0
  468. solace_agent_mesh/services/history_service/history_providers/base_history_provider.py +0 -54
  469. solace_agent_mesh/services/history_service/history_providers/file_history_provider.py +0 -74
  470. solace_agent_mesh/services/history_service/history_providers/index.py +0 -40
  471. solace_agent_mesh/services/history_service/history_providers/memory_history_provider.py +0 -33
  472. solace_agent_mesh/services/history_service/history_providers/mongodb_history_provider.py +0 -66
  473. solace_agent_mesh/services/history_service/history_providers/redis_history_provider.py +0 -66
  474. solace_agent_mesh/services/history_service/history_providers/sql_history_provider.py +0 -93
  475. solace_agent_mesh/services/history_service/history_service.py +0 -413
  476. solace_agent_mesh/services/history_service/long_term_memory/__init__.py +0 -0
  477. solace_agent_mesh/services/history_service/long_term_memory/long_term_memory.py +0 -399
  478. solace_agent_mesh/services/llm_service/components/llm_request_component.py +0 -340
  479. solace_agent_mesh/services/llm_service/components/llm_service_component_base.py +0 -152
  480. solace_agent_mesh/services/middleware_service/__init__.py +0 -0
  481. solace_agent_mesh/services/middleware_service/middleware_service.py +0 -20
  482. solace_agent_mesh/templates/action.py +0 -38
  483. solace_agent_mesh/templates/agent.py +0 -29
  484. solace_agent_mesh/templates/agent.yaml +0 -70
  485. solace_agent_mesh/templates/gateway-config-template.yaml +0 -6
  486. solace_agent_mesh/templates/gateway-default-config.yaml +0 -28
  487. solace_agent_mesh/templates/gateway-flows.yaml +0 -78
  488. solace_agent_mesh/templates/gateway-header.yaml +0 -16
  489. solace_agent_mesh/templates/gateway_base.py +0 -15
  490. solace_agent_mesh/templates/gateway_input.py +0 -98
  491. solace_agent_mesh/templates/gateway_output.py +0 -71
  492. solace_agent_mesh/templates/plugin-gateway-default-config.yaml +0 -29
  493. solace_agent_mesh/templates/plugin-pyproject.toml +0 -30
  494. solace_agent_mesh/templates/rest-api-default-config.yaml +0 -31
  495. solace_agent_mesh/templates/rest-api-flows.yaml +0 -81
  496. solace_agent_mesh/templates/slack-default-config.yaml +0 -16
  497. solace_agent_mesh/templates/slack-flows.yaml +0 -81
  498. solace_agent_mesh/templates/solace-agent-mesh-default.yaml +0 -86
  499. solace_agent_mesh/templates/solace-agent-mesh-plugin-default.yaml +0 -8
  500. solace_agent_mesh/templates/web-default-config.yaml +0 -10
  501. solace_agent_mesh/templates/web-flows.yaml +0 -76
  502. solace_agent_mesh/tools/__init__.py +0 -0
  503. solace_agent_mesh/tools/components/__init__.py +0 -0
  504. solace_agent_mesh/tools/components/conversation_formatter.py +0 -111
  505. solace_agent_mesh/tools/components/file_resolver_component.py +0 -58
  506. solace_agent_mesh/tools/config/runtime_config.py +0 -26
  507. solace_agent_mesh-0.2.3.dist-info/METADATA +0 -172
  508. solace_agent_mesh-0.2.3.dist-info/RECORD +0 -193
  509. solace_agent_mesh-0.2.3.dist-info/entry_points.txt +0 -3
  510. /solace_agent_mesh/{agents → agent}/__init__.py +0 -0
  511. /solace_agent_mesh/{agents/global → agent/adk}/__init__.py +0 -0
  512. /solace_agent_mesh/{agents/global/actions → agent/protocol}/__init__.py +0 -0
  513. /solace_agent_mesh/{agents/image_processing → agent/sac}/__init__.py +0 -0
  514. /solace_agent_mesh/{agents/image_processing/actions → agent/utils}/__init__.py +0 -0
  515. /solace_agent_mesh/{agents/web_request → config_portal/backend/plugin_catalog}/__init__.py +0 -0
  516. /solace_agent_mesh/{agents/web_request/actions → evaluation}/__init__.py +0 -0
  517. /solace_agent_mesh/gateway/{components → http_sse}/__init__.py +0 -0
  518. {solace_agent_mesh-0.2.3.dist-info → solace_agent_mesh-1.0.1.dist-info}/WHEEL +0 -0
@@ -1,340 +0,0 @@
1
- """LLM Request Component for performing LLM service requests."""
2
-
3
- import uuid
4
- from typing import Dict, Any
5
-
6
- from solace_ai_connector.components.component_base import ComponentBase
7
- from solace_ai_connector.common.log import log
8
- from solace_ai_connector.common.message import Message
9
- from solace_ai_connector.common.utils import ensure_slash_on_end
10
-
11
- info = {
12
- "class_name": "LLMRequestComponent",
13
- "description": "Component that performs LLM service requests",
14
- "config_parameters": [
15
- {
16
- "name": "llm_service_topic",
17
- "required": True,
18
- "description": "The topic for the LLM service",
19
- },
20
- {
21
- "name": "stream_to_flow",
22
- "required": False,
23
- "description": (
24
- "Name the flow to stream the output to - this must be configured for "
25
- "llm_mode='stream'. This is mutually exclusive with stream_to_next_component."
26
- ),
27
- "default": "",
28
- },
29
- {
30
- "name": "stream_to_next_component",
31
- "required": False,
32
- "description": (
33
- "Whether to stream the output to the next component in the flow. "
34
- "This is mutually exclusive with stream_to_flow."
35
- ),
36
- "default": False,
37
- },
38
- {
39
- "name": "llm_mode",
40
- "required": False,
41
- "description": (
42
- "The mode for streaming results: 'sync' or 'stream'. 'stream' "
43
- "will just stream the results to the named flow. 'none' will "
44
- "wait for the full response."
45
- ),
46
- "default": "none",
47
- },
48
- {
49
- "name": "stream_batch_size",
50
- "required": False,
51
- "description": "The minimum number of words in a single streaming result.",
52
- "default": 15,
53
- },
54
- ],
55
- "input_schema": {
56
- "type": "object",
57
- "properties": {
58
- "messages": {
59
- "type": "array",
60
- "items": {
61
- "type": "object",
62
- "properties": {
63
- "role": {
64
- "type": "string",
65
- "enum": ["system", "user", "assistant"],
66
- },
67
- "content": {"type": "string"},
68
- },
69
- "required": ["role", "content"],
70
- },
71
- },
72
- "source_info": {
73
- "type": "object",
74
- "properties": {
75
- "type": {"type": "string"},
76
- },
77
- "required": ["type"],
78
- },
79
- },
80
- "required": ["messages"],
81
- },
82
- "output_schema": {
83
- "type": "object",
84
- "properties": {
85
- "content": {
86
- "type": "string",
87
- "description": "The generated response from the model",
88
- },
89
- "chunk": {
90
- "type": "string",
91
- "description": "The current chunk of the response",
92
- },
93
- "response_uuid": {
94
- "type": "string",
95
- "description": "The UUID of the response",
96
- },
97
- "first_chunk": {
98
- "type": "boolean",
99
- "description": "Whether this is the first chunk of the response",
100
- },
101
- "last_chunk": {
102
- "type": "boolean",
103
- "description": "Whether this is the last chunk of the response",
104
- },
105
- "streaming": {
106
- "type": "boolean",
107
- "description": "Whether this is a streaming response",
108
- },
109
- },
110
- "required": ["content"],
111
- },
112
- }
113
-
114
-
115
- class LLMRequestComponent(ComponentBase):
116
- """Component that performs LLM service requests."""
117
-
118
- def __init__(self, child_info=None, **kwargs):
119
- super().__init__(child_info or info, **kwargs)
120
- self.init()
121
-
122
- def init(self):
123
- """Initialize the component with configuration parameters."""
124
- self.llm_service_topic = ensure_slash_on_end(
125
- self.get_config("llm_service_topic")
126
- )
127
- self.stream_to_flow = self.get_config("stream_to_flow")
128
- self.stream_to_next_component = self.get_config("stream_to_next_component")
129
- self.llm_mode = self.get_config("llm_mode")
130
- self.stream_batch_size = self.get_config("stream_batch_size")
131
-
132
- if self.stream_to_flow and self.stream_to_next_component:
133
- raise ValueError(
134
- "stream_to_flow and stream_to_next_component are mutually exclusive"
135
- )
136
-
137
- if not self.is_broker_request_response_enabled():
138
- raise ValueError(
139
- "LLM service topic is set, but the component does not "
140
- f"have its broker request/response enabled, {self.__class__.__name__}"
141
- )
142
-
143
- def invoke(self, message: Message, data: Dict[str, Any]) -> Dict[str, Any]:
144
- """
145
- Invoke the LLM service request.
146
-
147
- Args:
148
- message (Message): The input message.
149
- data (Dict[str, Any]): The input data containing the messages.
150
-
151
- Returns:
152
- Dict[str, Any]: The response from the LLM service.
153
- """
154
- messages = data.get("messages", [])
155
- source_info = data.get("source_info", {})
156
- llm_message = self._create_llm_message(message, messages, source_info)
157
- response_uuid = str(uuid.uuid4())
158
-
159
- try:
160
- if self.llm_mode == "stream":
161
- return self._handle_streaming(message, llm_message, response_uuid)
162
- else:
163
- return self._handle_sync(llm_message)
164
- except Exception as e:
165
- log.error("Error invoking LLM service: %s", e, exc_info=True)
166
- raise
167
-
168
- def _handle_sync(self, llm_message: Message) -> Dict[str, Any]:
169
- """
170
- Handle synchronous LLM service request.
171
-
172
- Args:
173
- llm_message (Message): The message to send to the LLM service.
174
-
175
- Returns:
176
- Dict[str, Any]: The response from the LLM service.
177
- """
178
- response = self.do_broker_request_response(llm_message)
179
- return response.get_payload()
180
-
181
- def _handle_streaming(
182
- self, input_message: Message, llm_message: Message, response_uuid: str
183
- ) -> Dict[str, Any]:
184
- """
185
- Handle streaming LLM service request.
186
-
187
- Args:
188
- input_message (Message): The original input message.
189
- llm_message (Message): The message to send to the LLM service.
190
- response_uuid (str): The UUID for the response.
191
-
192
- Returns:
193
- Dict[str, Any]: The final response from the LLM service.
194
- """
195
- aggregate_result = ""
196
- current_batch = ""
197
- first_chunk = True
198
- error = False
199
-
200
- try:
201
- for response_message, last_message in self.do_broker_request_response(
202
- llm_message,
203
- stream=True,
204
- streaming_complete_expression="input.payload:last_chunk",
205
- ):
206
- # Only process if the stimulus UUIDs correlate
207
- if not self._correlate_request_and_response(input_message, response_message):
208
- log.error("Mismatched request and response stimulus UUIDs: %s %s",
209
- self._get_user_propery(input_message, "stimulus_uuid"),
210
- self._get_user_propery(response_message, "stimulus_uuid"))
211
- raise ValueError("Mismatched request and response stimulus UUIDs")
212
-
213
- payload = response_message.get_payload()
214
- content = payload.get("chunk", "")
215
- aggregate_result += content
216
- current_batch += content
217
-
218
- if payload.get("handle_error", False):
219
- log.error("Error invoking LLM service: %s", payload.get("content", ""), exc_info=True)
220
- aggregate_result = payload.get("content", None)
221
- last_message = True
222
- error = True
223
-
224
- if len(current_batch.split()) >= self.stream_batch_size or last_message:
225
- self._send_streaming_chunk(
226
- input_message,
227
- current_batch,
228
- aggregate_result,
229
- response_uuid,
230
- first_chunk,
231
- last_message,
232
- )
233
- current_batch = ""
234
- first_chunk = False
235
-
236
- if last_message:
237
- break
238
- except TimeoutError as e:
239
- log.error("Timeout error during streaming: %s", e, exc_info=True)
240
- aggregate_result = "That request took too long to process. Try again with a more focused request or by breaking it in smaller parts."
241
- error = True
242
- except Exception as e:
243
- log.error("Error during streaming: %s", e, exc_info=True)
244
- aggregate_result = f"I apologize, but I encountered an error while processing your request: {str(e)}"
245
- error = True
246
- finally:
247
- # Send a final error chunk if there was an error
248
- if error:
249
- self._send_streaming_chunk(
250
- input_message,
251
- aggregate_result,
252
- aggregate_result,
253
- response_uuid,
254
- first_chunk,
255
- True,
256
- )
257
- # Return the final result
258
- return {
259
- "content": aggregate_result,
260
- "response_uuid": response_uuid,
261
- "streaming": True,
262
- "last_chunk": True,
263
- "error": error
264
- }
265
-
266
- def _create_llm_message(self, message: Message, messages: list, source_info: dict) -> Message:
267
- """
268
- Create a message for the LLM service request.
269
-
270
- Args:
271
- message (Message): The original input message.
272
- messages (list): The list of messages to send to the LLM service.
273
- source_info (dict): Information about the caller to help montoring LLM requests.
274
-
275
- Returns:
276
- Message: The created message for the LLM service.
277
- """
278
- user_properties = message.get_user_properties().copy()
279
- stimulus_uuid = user_properties.get("stimulus_uuid", str(uuid.uuid4()))
280
- session_id = user_properties.get("session_id", "x")
281
- originator_id = user_properties.get("originator_id", "x")
282
- user_properties["llm_request_source_info"] = source_info
283
-
284
- topic = f"{self.llm_service_topic}{stimulus_uuid}/{session_id}/{originator_id}"
285
-
286
- return Message(
287
- topic=topic,
288
- payload={"messages": messages, "stream": True},
289
- user_properties=user_properties,
290
- )
291
-
292
- def _send_streaming_chunk(
293
- self,
294
- input_message: Message,
295
- chunk: str,
296
- aggregate_result: str,
297
- response_uuid: str,
298
- first_chunk: bool,
299
- last_chunk: bool,
300
- ):
301
- """
302
- Send a streaming chunk to the specified flow or next component.
303
-
304
- Args:
305
- input_message (Message): The original input message.
306
- chunk (str): The current chunk of the response.
307
- aggregate_result (str): The aggregated result so far.
308
- response_uuid (str): The UUID of the response.
309
- first_chunk (bool): Whether this is the first chunk.
310
- last_chunk (bool): Whether this is the last chunk.
311
- """
312
- payload = {
313
- "chunk": chunk,
314
- "content": aggregate_result,
315
- "response_uuid": response_uuid,
316
- "first_chunk": first_chunk,
317
- "last_chunk": last_chunk,
318
- "streaming": True,
319
- }
320
- message = Message(
321
- payload=payload,
322
- user_properties=input_message.get_user_properties(),
323
- )
324
-
325
- if self.stream_to_flow:
326
- self.send_to_flow(self.stream_to_flow, message)
327
- elif self.stream_to_next_component:
328
- self.send_message(message)
329
-
330
- @staticmethod
331
- def _get_user_propery(message, user_property_key):
332
- message_props = message.get_user_properties()
333
- return message_props.get(user_property_key, "unknown")
334
-
335
- # Define a helper function to check if response matches request
336
- @staticmethod
337
- def _correlate_request_and_response(request_msg, response_msg, correlation_key="stimulus_uuid"):
338
- return (LLMRequestComponent._get_user_propery(request_msg, correlation_key) ==
339
- LLMRequestComponent._get_user_propery(response_msg, correlation_key))
340
-
@@ -1,152 +0,0 @@
1
- """This is the base class that provides LLM and Embedding service access"""
2
-
3
- from abc import ABC , abstractmethod
4
- from solace_ai_connector.components.component_base import ComponentBase
5
- from solace_ai_connector.common.message import Message
6
- from solace_ai_connector.common.utils import ensure_slash_on_end
7
-
8
-
9
-
10
- agent_info = {
11
- "class_name": "LLMServiceComponentBase",
12
- "description": "This is the base class that provides LLM and Embedding service access",
13
- "config_parameters": [
14
- {
15
- "name": "llm_service_topic",
16
- "required": False,
17
- "description": "The topic to use for the LLM service",
18
- },
19
- {
20
- "name": "embedding_service_topic",
21
- "required": False,
22
- "description": "The topic to use for the Embedding service",
23
- },
24
- ]
25
- }
26
-
27
-
28
- class LLMServiceComponentBase(ComponentBase, ABC):
29
-
30
- def __init__(self, module_info={}, **kwargs):
31
- super().__init__(module_info, **kwargs)
32
- self.current_message = None
33
- self.current_request_data = None
34
-
35
- self.llm_service_topic = self.get_config("llm_service_topic")
36
- if self.llm_service_topic:
37
- self.llm_service_topic = ensure_slash_on_end(self.llm_service_topic)
38
- # Check that the component's broker request/response is enabled
39
- if not self.is_broker_request_response_enabled():
40
- raise ValueError(
41
- "LLM service topic is set, but the component does not "
42
- f"have its broker request/response enabled, {self.__class__.__name__}"
43
- )
44
-
45
- self.embedding_service_topic = self.get_config("embedding_service_topic")
46
- if self.embedding_service_topic:
47
- self.embedding_service_topic = ensure_slash_on_end(
48
- self.embedding_service_topic
49
- )
50
- # Check that the component's broker request/response is enabled
51
- if not self.is_broker_request_response_enabled():
52
- raise ValueError(
53
- "Embedding service topic is set, but the component does not "
54
- f"have its broker request/response enabled, {self.__class__.__name__}"
55
- )
56
-
57
- def process_pre_invoke(self, message):
58
- self.current_request_data = super().process_pre_invoke(message)
59
- return self.current_request_data
60
-
61
- def process_post_invoke(self, result, message):
62
- super().process_post_invoke(result, message)
63
- self.current_request_data = None
64
-
65
- @abstractmethod
66
- def invoke(self, message, data):
67
- pass
68
-
69
- def do_llm_service_request_stream(self, message):
70
- for response_message, last_message in self.do_broker_request_response(
71
- message,
72
- stream=True,
73
- streaming_complete_expression="input.payload:last_chunk",
74
- ):
75
- yield response_message.get_payload(), last_message
76
- return
77
-
78
- def do_llm_service_request(self, messages, stream=False, resolve_files=False):
79
- """Send a message to the LLM service"""
80
- if not self.llm_service_topic:
81
- raise ValueError(f"LLM service topic not set on {self.__class__.__name__}")
82
-
83
- user_properties = self.current_message.get_user_properties().copy()
84
-
85
- # Add the topic suffix
86
- stimulus_uuid = user_properties.get("stimulus_uuid", "x")
87
- session_id = user_properties.get("session_id", "x")
88
- originator_id = user_properties.get("originator_id", "x")
89
-
90
- topic = f"{self.llm_service_topic}{stimulus_uuid}/{session_id}/{originator_id}"
91
- user_properties["resolve_files"] = resolve_files
92
-
93
- if self.current_request_data:
94
- action_list_id = self.current_request_data.get("action_list_id")
95
- action_idx = self.current_request_data.get("action_idx")
96
- action_name = self.current_request_data.get("action_name")
97
-
98
- source_info = {
99
- "type": "agent",
100
- "agent_name": self.info.get("agent_name"),
101
- "action_list_id": action_list_id,
102
- "action_idx": action_idx,
103
- "action_name": action_name,
104
- }
105
- else:
106
- source_info = {
107
- "type": "agent",
108
- "agent_name": self.info.get("agent_name"),
109
- }
110
-
111
- user_properties["llm_request_source_info"] = source_info
112
-
113
- message = Message(
114
- topic=topic,
115
- payload={"messages": messages, "stream": stream},
116
- user_properties=user_properties,
117
- )
118
-
119
- if stream:
120
- return self.do_llm_service_request_stream(message)
121
- else:
122
- return self.do_broker_request_response(message).get_payload()
123
-
124
- def do_embedding_service_request(self, items, resolve_files=False):
125
- """Send a message to the Embedding service"""
126
- if not self.embedding_service_topic:
127
- raise ValueError(
128
- f"Embedding service topic not set on {self.__class__.__name__}"
129
- )
130
-
131
- user_properties = self.current_message.get_user_properties().copy()
132
-
133
- # Add the topic suffix
134
- stimulus_uuid = user_properties.get("stimulus_uuid", "x")
135
- session_id = user_properties.get("session_id", "x")
136
- originator_id = user_properties.get("originator_id", "x")
137
-
138
- topic = f"{self.embedding_service_topic}{stimulus_uuid}/{session_id}/{originator_id}"
139
- user_properties["resolve_files"] = resolve_files
140
-
141
- message = Message(
142
- topic=topic,
143
- payload={
144
- "items": items,
145
- },
146
- user_properties=user_properties,
147
- )
148
-
149
- return (
150
- self.do_broker_request_response(message).get_payload().get("embeddings", [])
151
- )
152
-
File without changes
@@ -1,20 +0,0 @@
1
- from ..common.singleton import SingletonMeta
2
-
3
- class MiddlewareService(metaclass=SingletonMeta):
4
- def __init__(self):
5
- self._middleware = {}
6
- self._register_defaults()
7
-
8
- def _register_defaults(self):
9
- # Default middleware that just returns actions unchanged
10
- self.register("filter_action", lambda user_properties, actions: actions)
11
- # Default middleware that allows all actions
12
- self.register("base_agent_filter", lambda user_properties, action: True)
13
- # Default middleware that allows all action requests
14
- self.register("validate_action_request", lambda user_properties, action_details: True)
15
-
16
- def register(self, name: str, middleware_fn):
17
- self._middleware[name] = middleware_fn
18
-
19
- def get(self, name: str):
20
- return self._middleware.get(name, lambda *args, **kwargs: args[0] if len(args) == 1 else args)
@@ -1,38 +0,0 @@
1
- """Action description"""
2
-
3
- from solace_ai_connector.common.log import log
4
-
5
-
6
- from solace_agent_mesh.common.action import Action
7
- from solace_agent_mesh.common.action_response import ActionResponse
8
-
9
- # To import from a local file, like this file, use a relative path from the {{SNAKE_CASE_NAME}}
10
- # For example, to load this class, use:
11
- # from {{SNAKE_CASE_NAME}}.actions.sample_action import SampleAction
12
-
13
-
14
- class SampleAction(Action):
15
- def __init__(self, **kwargs):
16
- super().__init__(
17
- {
18
- "name": "sample_action",
19
- "prompt_directive": ("detailed description of the action. " "examples, chain of thought, etc." "details for parameters"),
20
- "params": [
21
- {
22
- "name": "sampleParam",
23
- "desc": "Description of the parameter",
24
- "type": "type of parameter (string, int, etc.)",
25
- }
26
- ],
27
- "required_scopes": ["{{SNAKE_CASE_NAME}}:sample_action:read"],
28
- },
29
- **kwargs,
30
- )
31
-
32
- def invoke(self, params, meta={}) -> ActionResponse:
33
- log.debug("Doing sample action: %s", params["sampleParam"])
34
- return self.do_action(params["sampleParam"])
35
-
36
- def do_action(self, sample) -> ActionResponse:
37
- sample += " Action performed"
38
- return ActionResponse(message=sample)
@@ -1,29 +0,0 @@
1
- """The agent component for the {{SPACED_NAME}}"""
2
-
3
- import os
4
- import copy
5
- import sys
6
-
7
- SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
8
- sys.path.append(os.path.dirname(SCRIPT_DIR))
9
-
10
- from solace_agent_mesh.agents.base_agent_component import (
11
- agent_info,
12
- BaseAgentComponent,
13
- )
14
-
15
- # Sample action import
16
- from {{SNAKE_CASE_NAME}}.actions.sample_action import SampleAction
17
-
18
- info = copy.deepcopy(agent_info)
19
- info["agent_name"] = "{{SNAKE_CASE_NAME}}"
20
- info["class_name"] = "{{CAMEL_CASE_NAME}}AgentComponent"
21
- info["description"] = (
22
- "This agent handles ... It should be used "
23
- "when an user explicitly requests information ... "
24
- )
25
-
26
- class {{CAMEL_CASE_NAME}}AgentComponent(BaseAgentComponent):
27
- info = info
28
- # sample action
29
- actions = [SampleAction]
@@ -1,70 +0,0 @@
1
- # This is the configuration file for the {{SPACED_NAME}} agent
2
- #
3
- # It fulfills a few functions:
4
- # 1. A flow to do periodic registration of this agent with the orchestrator
5
- # 2. A flow to process action requests and produce action responses
6
- # This requires a custom component to process the action requests
7
-
8
- ---
9
- log:
10
- stdout_log_level: INFO
11
- log_file_level: INFO
12
- log_file: solace_ai_connector.log
13
-
14
- shared_config:
15
- - broker_config: &broker_connection
16
- dev_mode: ${SOLACE_DEV_MODE, false}
17
- broker_url: ${SOLACE_BROKER_URL}
18
- broker_username: ${SOLACE_BROKER_USERNAME}
19
- broker_password: ${SOLACE_BROKER_PASSWORD}
20
- broker_vpn: ${SOLACE_BROKER_VPN}
21
- temporary_queue: ${USE_TEMPORARY_QUEUES, false}
22
-
23
- flows:
24
-
25
- # Flow to handle action requests
26
- - name: {{SNAKE_CASE_NAME}}_action_request_processor
27
- components:
28
- # Input from a Solace broker
29
- - component_name: broker_input
30
- component_module: broker_input
31
- component_config:
32
- <<: *broker_connection
33
- payload_encoding: utf-8
34
- payload_format: json
35
- broker_queue_name: ${SOLACE_AGENT_MESH_NAMESPACE}agent_{{SNAKE_CASE_NAME}}_action_request
36
- broker_subscriptions:
37
- # Subscribe to all {{SNAKE_CASE_NAME}} actions - note that if we
38
- # wanted to handle some {{SNAKE_CASE_NAME}} actions elsewhere, we would
39
- # need to be more specific here
40
- - topic: ${SOLACE_AGENT_MESH_NAMESPACE}solace-agent-mesh/v1/actionRequest/*/*/{{SNAKE_CASE_NAME}}/>
41
- qos: 1
42
-
43
- # Custom component to process the action request
44
- - component_name: action_request_processor
45
- component_base_path: .
46
- # path is completed at build time
47
- component_module: {{MODULE_DIRECTORY}}.agents.{{SNAKE_CASE_NAME}}.{{SNAKE_CASE_NAME}}_agent_component
48
- component_config:
49
- llm_service_topic: ${SOLACE_AGENT_MESH_NAMESPACE}solace-agent-mesh/v1/llm-service/request/general-good/
50
- embedding_service_topic: ${SOLACE_AGENT_MESH_NAMESPACE}solace-agent-mesh/v1/embedding-service/request/text/
51
- # Pass required configuration to the component
52
- broker_request_response:
53
- enabled: true
54
- broker_config: *broker_connection
55
- request_expiry_ms: 120000
56
- payload_encoding: utf-8
57
- payload_format: json
58
- response_topic_prefix: ${SOLACE_AGENT_MESH_NAMESPACE}solace-agent-mesh/v1
59
- response_queue_prefix: ${SOLACE_AGENT_MESH_NAMESPACE}solace-agent-mesh/v1
60
- component_input:
61
- source_expression: input.payload
62
-
63
- # Output to a Solace broker
64
- - component_name: broker_output
65
- component_module: broker_output
66
- component_config:
67
- <<: *broker_connection
68
- payload_encoding: utf-8
69
- payload_format: json
70
- copy_user_properties: true
@@ -1,6 +0,0 @@
1
- - {{SNAKE_CASE_NAME}}_config: &gateway_interface_config
2
- key: "value" # Add your configuration here
3
-
4
- - response_format_prompt: &response_format_prompt >
5
- Return all responses in markdown format. When returning files or images, use the <{{tag_prefix}}file> tags.
6
- Do not return files as links or with generic <file> tags.