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,51 +0,0 @@
1
- """Retrieve File content action"""
2
-
3
- from solace_ai_connector.common.log import log
4
- import re
5
- import json
6
-
7
- from ....common.action import Action
8
- from ....common.action_response import ActionResponse, InlineFile
9
- from ....services.file_service import FS_PROTOCOL, FS_URL_REGEX, FileService
10
-
11
-
12
- class RetrieveFile(Action):
13
- def __init__(self, **kwargs):
14
- super().__init__(
15
- {
16
- "name": "retrieve_file",
17
- "prompt_directive": f"Retrieve the content of a text based file form a {FS_PROTOCOL} URL",
18
- "params": [
19
- {
20
- "name": "url",
21
- "desc": f'The "{FS_PROTOCOL}://" url of the file (Optionally with query parameters - Without "resolve" parameter)',
22
- "type": "string",
23
- }
24
- ],
25
- "required_scopes": ["global:retrieve_file:read"],
26
- },
27
- **kwargs,
28
- )
29
-
30
- def invoke(self, params, meta={}) -> ActionResponse:
31
- # Extract the URL from the text
32
- url = params.get("url")
33
- # validate the URL
34
- if not url or not re.match(FS_URL_REGEX, url):
35
- return ActionResponse(message=f"Invalid {FS_PROTOCOL} URL provided.")
36
-
37
- try:
38
- # Download the file
39
- file_service = FileService()
40
- file, _, file_meta = file_service.resolve_url(url, meta.get("session_id"), return_extra=True)
41
- file = file.decode("utf-8", errors="ignore") if type(file) == bytes else file
42
- except Exception as e:
43
- log.error("Failed to download file from the url %s: %s", url, str(e))
44
- return ActionResponse(message=f"Failed to download the file from the URL: {url}")
45
-
46
- max_allowed_size = self.get_config("max_allowed_file_retrieve_size", None)
47
- if max_allowed_size and len(file) > max_allowed_size:
48
- return ActionResponse(message=f"Error: File too large. File size exceeds the maximum allowed size of {max_allowed_size} bytes.")
49
-
50
- inline_file = InlineFile(content=file, name=file_meta.get("name", "unknown.txt"))
51
- return ActionResponse(message=f"Returning content of the file {url}.", inline_files=[inline_file])
@@ -1,38 +0,0 @@
1
- """The agent component for the global actions"""
2
-
3
- import copy
4
-
5
- from ..base_agent_component import (
6
- agent_info,
7
- BaseAgentComponent,
8
- )
9
-
10
- from .actions.agent_state_change import AgentStateChangeAction
11
- from .actions.clear_history import ClearHistory
12
- from .actions.error_action import ErrorAction
13
- from .actions.plantuml_diagram import PlantUmlDiagram
14
- from .actions.plotly_graph import PlotlyGraph
15
- from .actions.retrieve_file import RetrieveFile
16
- from .actions.create_file import CreateFile
17
- from .actions.convert_file_to_markdown import ConvertFileToMarkdown
18
-
19
-
20
- info = copy.deepcopy(agent_info)
21
- info["agent_name"] = "global"
22
- info["class_name"] = "GlobalAgentComponent"
23
- info["description"] = "Global agent."
24
- info["always_open"] = True
25
-
26
-
27
- class GlobalAgentComponent(BaseAgentComponent):
28
- info = info
29
- actions = [
30
- AgentStateChangeAction,
31
- ClearHistory,
32
- ErrorAction,
33
- PlantUmlDiagram,
34
- PlotlyGraph,
35
- RetrieveFile,
36
- CreateFile,
37
- ConvertFileToMarkdown
38
- ]
@@ -1,75 +0,0 @@
1
- """Image Creation action"""
2
-
3
- from solace_ai_connector.common.log import log
4
- import random
5
- import requests
6
- import base64
7
-
8
- from litellm import image_generation
9
-
10
- from ....common.action import Action
11
- from ....common.action_response import ActionResponse
12
- from ....services.file_service import FileService
13
-
14
-
15
- class ImageCreation(Action):
16
-
17
- def __init__(self, **kwargs):
18
- super().__init__(
19
- {
20
- "name": "create_image",
21
- "prompt_directive": "Create an image",
22
- "params": [
23
- {
24
- "name": "image_description",
25
- "desc": "The prompt to use to create the image",
26
- "type": "string",
27
- }
28
- ],
29
- "required_scopes": ["image_processing:create_image:create"],
30
- },
31
- **kwargs,
32
- )
33
-
34
- def _get_image_content(self, image_data):
35
- """Helper function to extract image content from response data"""
36
- if 'url' in image_data and image_data['url'] is not None:
37
- return requests.get(image_data['url'], timeout=10).content
38
- elif 'b64_json' in image_data and image_data['b64_json'] is not None:
39
- return base64.b64decode(image_data['b64_json'])
40
- else:
41
- raise ValueError("No valid image data found in response")
42
-
43
- def invoke(self, params, meta={}) -> ActionResponse:
44
- prompt = params.get("image_description")
45
- if not prompt:
46
- return ActionResponse(message="Image description is required")
47
- try:
48
- response = image_generation(
49
- model=self.get_config("image_gen_model") or None,
50
- api_base=self.get_config("image_gen_endpoint") or None,
51
- api_key=self.get_config("image_gen_api_key") or None,
52
- prompt=prompt,
53
- n=1,
54
- **self.get_config("image_gen_litellm_config", {}),
55
- )
56
- except Exception as e:
57
- log.error(f"Error generating image:", e)
58
- return ActionResponse(message=f"Error generating image, {str(e)}")
59
-
60
- try:
61
- generated_image = self._get_image_content(response.get("data")[0])
62
- except Exception as e:
63
- log.error(f"Error retrieving image content:", e)
64
- return ActionResponse(message=f"Error retrieving image content: {str(e)}")
65
-
66
- file_service = FileService()
67
- image_name = "generated_image_" + str(random.randint(100000, 999999)) + ".png"
68
- image_meta = file_service.upload_from_buffer(
69
- generated_image,
70
- image_name,
71
- meta.get("session_id"),
72
- data_source="Image Processing Agent - Image Creation Action",
73
- )
74
-
75
- return ActionResponse(files=[image_meta])
@@ -1,115 +0,0 @@
1
- """Image Description action"""
2
-
3
- from solace_ai_connector.common.log import log
4
- import re
5
- import random
6
- import requests
7
- from io import BytesIO
8
-
9
-
10
- from ....common.action import Action
11
- from ....common.action_response import ActionResponse
12
- from ....services.file_service import FS_PROTOCOL, FileService
13
- from ....services.file_service.file_utils import starts_with_fs_url
14
-
15
-
16
- class DescribeImage(Action):
17
-
18
- def __init__(self, **kwargs):
19
- super().__init__(
20
- {
21
- "name": "describe_image",
22
- "prompt_directive": "Describe an image",
23
- "params": [
24
- {
25
- "name": "image_url",
26
- "desc": f'The "{FS_PROTOCOL}://" or "https://" url of the image to describe',
27
- "type": "string",
28
- }
29
- ],
30
- "required_scopes": ["image_processing:describe_image:create"],
31
- },
32
- **kwargs,
33
- )
34
-
35
- def extract_url_from_text(self, text: str) -> str:
36
- """
37
- Extracts the first URL from a given text.
38
- """
39
- url = None
40
- # URL Regex pattern
41
- # Starts with https:// or http:// or FS_PROTOCOL://
42
- # ends with space or newline or end of string
43
- url_pattern = r"(https?|{}):\/\/\S+".format(FS_PROTOCOL)
44
- match = re.search(url_pattern, text)
45
- if match:
46
- url = match.group()
47
- return url
48
-
49
- def download_image(self, image_url: str, session_id: str) -> str:
50
- """
51
- Download the image using the provided image URL.
52
- """
53
- url = image_url
54
- if not starts_with_fs_url(url):
55
- # Download the image and upload to the file service
56
- file_service = FileService()
57
- byte_buffer = BytesIO(requests.get(image_url).content)
58
- metadata = file_service.upload_from_buffer(
59
- byte_buffer.read(),
60
- str(random.randint(100000, 999999)) + "_image.png",
61
- session_id,
62
- data_source="Image Processing Agent - Describe Image Action",
63
- )
64
- url = metadata.get("url")
65
-
66
- base64_image_url = f"{url}?encoding=datauri&resolve=true"
67
- return base64_image_url
68
-
69
- def get_image_description(self, base64_image_url: str) -> str:
70
- """
71
- Get the description of the image using the provided image URL.
72
- """
73
- agent = self.get_agent()
74
- content = agent.do_llm_service_request(
75
- [
76
- {
77
- "role": "user",
78
- "content": [
79
- {
80
- "type": "text",
81
- "text": "describe the content of this image in detail",
82
- },
83
- {
84
- "type": "image_url",
85
- "image_url": {"url": base64_image_url},
86
- },
87
- ],
88
- }
89
- ],
90
- resolve_files=True,
91
- ).get("content")
92
-
93
- return content
94
-
95
- def invoke(self, params, meta={}) -> ActionResponse:
96
- log.debug("Describing image: %s", params.get("image_url"))
97
- # Extract the URL from the text
98
- url = self.extract_url_from_text(params.get("image_url", ""))
99
- if not url:
100
- return ActionResponse(message="No image URL found in the query.")
101
-
102
- try:
103
- # Download the image
104
- image_url = self.download_image(url, meta.get("session_id"))
105
- except Exception as e:
106
- log.error("Failed to download image from the url %s: %s", url, str(e))
107
- return ActionResponse(message=f"Failed to download the image from the URL: {url}")
108
-
109
- try:
110
- # Get the image description
111
- description = self.get_image_description(image_url)
112
- return ActionResponse(message=description)
113
- except Exception as e:
114
- log.error("Failed to describe image in %s: %s", url, str(e))
115
- return ActionResponse(message=f"Failed to describe the image in {url}.")
@@ -1,23 +0,0 @@
1
- """Responsible for processing the actions from the Image Processing Agent"""
2
-
3
- import copy
4
-
5
- from ..base_agent_component import (
6
- agent_info,
7
- BaseAgentComponent,
8
- )
9
-
10
- from .actions.create_image import ImageCreation
11
- from .actions.describe_image import DescribeImage
12
-
13
- info = copy.deepcopy(agent_info)
14
- info["agent_name"] = "image_processing"
15
- info["class_name"] = "ImageProcessingAgentComponent"
16
- info["description"] = "Image Processing agent. This can generate images from text or describe images to text"
17
-
18
-
19
- class ImageProcessingAgentComponent(
20
- BaseAgentComponent
21
- ):
22
- info = info
23
- actions = [ImageCreation, DescribeImage]
@@ -1 +0,0 @@
1
- """Slack agent package."""
@@ -1 +0,0 @@
1
- """Slack agent actions."""
@@ -1,177 +0,0 @@
1
- """Slack Post Message action."""
2
-
3
- from typing import Dict, List, Union
4
-
5
- from solace_ai_connector.common.log import log
6
- from ....common.action import Action
7
- from ....common.time import FIVE_MINUTES
8
- from ....common.action_response import ActionResponse
9
- from ....services.file_service import FileService, FS_PROTOCOL
10
-
11
-
12
- class PostMessage(Action):
13
- """Action for posting messages to Slack channels."""
14
-
15
- def __init__(self, **kwargs):
16
- """Initialize the action with its configuration."""
17
- super().__init__(
18
- {
19
- "name": "post_message",
20
- "prompt_directive": "Post a message to a Slack channel",
21
- "params": [
22
- {
23
- "name": "channel",
24
- "desc": "The Slack channel to post to (include # prefix)",
25
- "type": "string",
26
- },
27
- {
28
- "name": "thread_correlation_id",
29
- "desc": "Optional correlation ID to group messages in a thread",
30
- "type": "string",
31
- },
32
- {
33
- "name": "text",
34
- "desc": "Text message to post",
35
- "type": "string",
36
- },
37
- {
38
- "name": "blocks",
39
- "desc": "Slack blocks for formatted message",
40
- "type": "array",
41
- },
42
- {
43
- "name": "files",
44
- "desc": f"Array of file URLs ({FS_PROTOCOL}:// or inline files with <file><data/></file> tags)",
45
- "type": "array",
46
- },
47
- {
48
- "name": "last_post_to_thread",
49
- "desc": "If True, clears the thread correlation cache after posting",
50
- "type": "bool",
51
- },
52
- ],
53
- "required_scopes": ["slack:post_message:create"],
54
- },
55
- **kwargs,
56
- )
57
-
58
- def _process_files(
59
- self, files: List[str], session_id: str
60
- ) -> List[Dict[str, Union[str, bytes]]]:
61
- """Process file URLs into uploadable content.
62
-
63
- Args:
64
- files: List of file URLs to process
65
- session_id: Current session ID for file service
66
-
67
- Returns:
68
- List of dicts containing file data and titles
69
- """
70
- if not files:
71
- return []
72
-
73
- file_service = FileService()
74
- processed_files = []
75
-
76
- for file_url in files:
77
- try:
78
- # Download file content
79
- content = file_service.download_to_buffer(file_url, session_id)
80
-
81
- # Extract filename from URL
82
- filename = file_url.split("/")[-1]
83
- processed_files.append(
84
- {
85
- "content": content,
86
- "title": filename,
87
- }
88
- )
89
- except Exception as e:
90
- log.error("Failed to process file %s: %s", file_url, str(e))
91
-
92
- return processed_files
93
-
94
- def invoke(self, params: Dict, meta: Dict = {}) -> ActionResponse:
95
- """Post message to Slack channel.
96
-
97
- Args:
98
- params: Action parameters including channel, message, etc.
99
- meta: Additional metadata including session_id
100
-
101
- Returns:
102
- ActionResponse with success/error message
103
- """
104
- try:
105
- # Get Slack client from agent
106
- slack_client = self.get_agent().slack_client
107
-
108
- channel = params.get("channel", "").strip()
109
-
110
- # Remove the # prefix if present
111
- if channel.startswith("#"):
112
- channel = channel[1:]
113
-
114
- # Get thread_ts from correlation id if provided
115
- thread_correlation_id = params.get("thread_correlation_id")
116
- thread_ts = None
117
- if thread_correlation_id:
118
- cache_key = f"slack_agent:thread_correlation:{thread_correlation_id}"
119
- thread_ts = self.get_agent().cache_service.get_data(cache_key)
120
-
121
- # Prepare message arguments
122
- msg_args = {
123
- "channel": channel,
124
- "text": params.get("text", ""),
125
- "blocks": params.get("blocks"),
126
- "thread_ts": thread_ts,
127
- }
128
-
129
- # Send message
130
- response = slack_client.chat_postMessage(**msg_args)
131
-
132
- # Handle thread correlation caching
133
- if thread_correlation_id:
134
- cache_key = f"slack_agent:thread_correlation:{thread_correlation_id}"
135
-
136
- # Clear cache if this is the last post
137
- if params.get("last_post_to_thread"):
138
- self.get_agent().cache_service.remove_data(cache_key)
139
- # Store thread_ts if this is a new thread
140
- elif not thread_ts:
141
- thread_cache_ttl = self.get_agent().get_config("thread_cache_ttl")
142
- self.get_agent().cache_service.add_data(
143
- cache_key,
144
- response["ts"],
145
- expiry=thread_cache_ttl,
146
- component=self.get_agent(),
147
- )
148
- msg_args["thread_ts"] = response["ts"]
149
-
150
- # Process any files
151
- files = params.get("files", [])
152
- if files:
153
- processed_files = self._process_files(files, meta.get("session_id"))
154
- for file_data in processed_files:
155
- slack_client.files_upload_v2(
156
- channel=channel,
157
- content=file_data["content"],
158
- title=file_data["title"],
159
- thread_ts=msg_args["thread_ts"],
160
- )
161
-
162
- # Return thread_correlation_id in message for reference
163
- return ActionResponse(
164
- message=(
165
- f"Successfully posted message to {channel}. "
166
- f"Thread correlation ID: {thread_correlation_id or 'none'}"
167
- + (
168
- f" (thread_ts: {response['ts']})"
169
- if not thread_ts
170
- else f" (replied to existing thread)"
171
- )
172
- )
173
- )
174
-
175
- except Exception as e:
176
- log.error("Failed to post Slack message: %s", str(e))
177
- return ActionResponse(message=f"Failed to post message to Slack: {str(e)}")
@@ -1,59 +0,0 @@
1
- """Slack agent for posting messages to Slack channels."""
2
-
3
- import copy
4
- from slack_sdk import WebClient
5
-
6
- from ..base_agent_component import agent_info, BaseAgentComponent
7
- from .actions.post_message import PostMessage
8
- from ...common.time import FIVE_MINUTES
9
-
10
- info = copy.deepcopy(agent_info)
11
- info.update(
12
- {
13
- "agent_name": "slack",
14
- "class_name": "SlackAgentComponent",
15
- "description": "Slack messaging agent for posting messages and files to channels",
16
- "config_parameters": [
17
- {
18
- "name": "slack_bot_token",
19
- "required": True,
20
- "description": "Slack bot user OAuth token",
21
- "type": "string",
22
- },
23
- {
24
- "name": "thread_cache_ttl",
25
- "required": False,
26
- "description": f"Time-to-live in seconds for thread correlation cache (default: {FIVE_MINUTES} seconds)",
27
- "type": "integer",
28
- "default": FIVE_MINUTES,
29
- },
30
- ],
31
- }
32
- )
33
-
34
-
35
- class SlackAgentComponent(BaseAgentComponent):
36
- """Component for handling Slack messaging operations."""
37
-
38
- info = info
39
- actions = [PostMessage]
40
-
41
- def __init__(self, module_info={}, **kwargs):
42
- """Initialize the Slack agent component.
43
-
44
- Args:
45
- module_info: Optional module configuration.
46
- **kwargs: Additional keyword arguments.
47
-
48
- Raises:
49
- ValueError: If required Slack configuration is missing.
50
- """
51
- super().__init__(module_info, **kwargs)
52
-
53
- # Get Slack configuration
54
- self.slack_bot_token = self.get_config("slack_bot_token")
55
- if not self.slack_bot_token:
56
- raise ValueError("Slack bot token is required")
57
-
58
- # Initialize Slack client
59
- self.slack_client = WebClient(token=self.slack_bot_token)
@@ -1,84 +0,0 @@
1
- """Web Search action"""
2
-
3
- from solace_ai_connector.common.log import log
4
- import requests
5
- from duckduckgo_search import DDGS
6
-
7
-
8
- from ....common.action import Action
9
- from ....common.action_response import ActionResponse
10
- from ....services.file_service import FileService
11
-
12
-
13
- class DoImageSearch(Action):
14
- def __init__(self, **kwargs):
15
- super().__init__(
16
- {
17
- "name": "do_image_search",
18
- "prompt_directive": "Search the web for images using a search engine.",
19
- "params": [
20
- {
21
- "name": "query",
22
- "desc": "The search query to use",
23
- "type": "string",
24
- },
25
- {
26
- "name": "max_results",
27
- "desc": "Maximum number of results to show, defaults to 3 if not present",
28
- "type": "int",
29
- },
30
- {
31
- "name": "size",
32
- "desc": (
33
- "Size of the image to search for. ",
34
- "Can be one of: small, medium, large, wallpaper or None. Defaults to None if not present",
35
- ),
36
- "type": "string",
37
- },
38
- ],
39
- "required_scopes": ["web_request:do_image_search:read"],
40
- },
41
- **kwargs,
42
- )
43
-
44
- def image_search(self, keyword, size, max_results) -> list:
45
- """
46
- Returns a list of dictionaries that represent image results
47
- """
48
- return DDGS().images(
49
- keywords=keyword,
50
- region="wt-wt",
51
- safesearch="off",
52
- size=str(size) or None,
53
- color=None,
54
- type_image=None,
55
- layout=None,
56
- license_image=None,
57
- max_results=int(max_results),
58
- )
59
-
60
- def invoke(self, params, meta={}) -> ActionResponse:
61
- query = params.get("query")
62
- max_results = params.get("max_results", 3)
63
- size = params.get("size")
64
- results = []
65
- if not query:
66
- return ActionResponse(message="ERROR: Query not found!")
67
- results = self.image_search(query, size, max_results) # append text results to results
68
- file_service = FileService()
69
- image_metas = []
70
- for result in results:
71
- try:
72
- received_image = requests.get(result.get("image"), timeout=10).content
73
- log.debug(f"Received image: {result.get('image')}")
74
- image_metas.append(
75
- file_service.upload_from_buffer(
76
- received_image,
77
- result.get("title"),
78
- meta.get("session_id"),
79
- data_source="Web Request Agent - Image Search Action",
80
- )
81
- )
82
- except Exception as e:
83
- log.error(f"Failed to download image: {result.get('image')} because {e}")
84
- return ActionResponse(files=image_metas)
@@ -1,47 +0,0 @@
1
- """Web Search action"""
2
-
3
- from duckduckgo_search import DDGS
4
-
5
-
6
- from ....common.action import Action
7
- from ....common.action_response import ActionResponse
8
-
9
-
10
- class DoNewsSearch(Action):
11
- def __init__(self, **kwargs):
12
- super().__init__(
13
- {
14
- "name": "do_news_search",
15
- "prompt_directive": "Search the web for news and current events using a search engine.",
16
- "params": [
17
- {
18
- "name": "query",
19
- "desc": "The search query to use",
20
- "type": "string",
21
- },
22
- {
23
- "name": "max_results",
24
- "desc": "Maximum number of results to show, defaults to 5 if not present",
25
- "type": "int",
26
- },
27
- ],
28
- "required_scopes": ["web_request:do_news_search:read"],
29
- },
30
- **kwargs,
31
- )
32
-
33
- def news_search(self, keyword, max_results) -> list:
34
- """
35
- Returns a list of dictionaries that represent news results
36
- """
37
- return DDGS().news(keywords=keyword, region="wt-wt", max_results=int(max_results))
38
-
39
- def invoke(self, params, meta={}) -> ActionResponse:
40
- query = params.get("query")
41
- max_results = params.get("max_results", 5)
42
- results = []
43
- if not query:
44
- return ActionResponse(message="ERROR: Query not found!")
45
- results = self.news_search(query, max_results) # append text results to results
46
-
47
- return ActionResponse(message=results)