solace-agent-mesh 0.2.4__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 -181
  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.4.dist-info → solace_agent_mesh-1.0.1.dist-info}/licenses/LICENSE +1 -1
  344. solace_agent_mesh/agents/base_agent_component.py +0 -256
  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-a-zJ6rLx.js +0 -46
  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-44c41103.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.4.dist-info/METADATA +0 -176
  508. solace_agent_mesh-0.2.4.dist-info/RECORD +0 -193
  509. solace_agent_mesh-0.2.4.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.4.dist-info → solace_agent_mesh-1.0.1.dist-info}/WHEEL +0 -0
@@ -1,163 +0,0 @@
1
- """PlantUML diagram"""
2
-
3
- import platform
4
- import os
5
- import tempfile
6
- import uuid
7
- import shutil
8
- import subprocess
9
-
10
- from solace_ai_connector.common.log import log
11
- from ....common.action import Action
12
- from ....common.action_response import ActionResponse
13
- from ....services.file_service import FileService
14
-
15
- PLANTUML_PROMPT = """Generate a PlantUML markup language for the given description by the user. Supports sequence diagrams, class diagrams, use case diagrams, activity diagrams, component diagrams, state diagrams, and timing diagrams. Newlines must be escaped with a backslash and put quotes around participants names. Respond only with PlantUML markup, do not include any other text, symbols or quotes.
16
-
17
- Rules to follow for all diagrams:
18
- - Always include @startuml at the beginning and @enduml at the end
19
- - Use simple quotes for names, not double quotes
20
- - Avoid using <<stereotype>> syntax in state diagrams unless absolutely necessary
21
- - For state diagrams, use simple state names without spaces (like LoginScreen instead of "Login Screen")
22
- - If you need descriptive names, use the 'as' keyword (e.g., [*] --> LoginScreen as "Login Screen")
23
- - Don't use variables if they are not declared
24
- - Never skip lines
25
- - For notes in all diagrams:
26
- - Use the simple syntax: `note over Participant: Text` without any positioning numbers
27
- - Do not use positioning numbers (like `at 25`) in note commands
28
- - Never combine multiple participants in a single note
29
-
30
- Rules for sequence diagrams:
31
- - Only use notes to cover one or two participants per line
32
- - Do not use the `activate` or `deactivate` commands directly after a delay notation (`...`), whether directly or with a note in between
33
- - Do not use the `activate` or `deactivate` commands twice in a row, whether directly or with a note in between
34
-
35
- Rules for activity diagrams:
36
- - Do not use the `backward:` keyword for loops or returning to previous steps
37
- - Instead, use the label and goto pattern:
38
- 1. Add a label to the target activity: `label label_name`
39
- 2. Use goto to reference that label: `goto label_name`
40
- - Always place labels immediately after the activity they refer to
41
- - Labels should use lowercase with underscores for readability (e.g., `label browse_products`)
42
-
43
- Rules for state diagrams:
44
- - Use simple state names without spaces and without quotes
45
- - When stereotypes are absolutely necessary, use the correct syntax:
46
- - For existing states: `state StateName <<stereotype>>`
47
- - For new states with descriptions: `state "Description" as StateName <<stereotype>>`
48
- - Always place stereotypes after the state name, not before
49
- - If using skinparam for stereotype styling, ensure it's properly defined: `skinparam state \{ BackgroundColor<<stereotype>> Color\}
50
- - For notes in state diagrams:
51
- - Do NOT use `note over StateName` syntax (this is for sequence diagrams)
52
- - Instead use directional positioning: `note left of StateName`, `note right of StateName`, `note top of StateName`, or `note bottom of StateName`
53
- - Example: `note left of OrderCreated : Initial customer order`
54
-
55
- Rules for timing diagrams:
56
- - Never include notes
57
- - For 'robust' participants, use named states instead of symbolic states
58
- - CORRECT: `PS is "ON"` or `PS is ON`
59
- - INCORRECT: `PS is {+}` or `PS is {-}`
60
- - For 'concise' participants, use numeric values (e.g., `BP is 10`)
61
- """
62
-
63
-
64
- class PlantUmlDiagram(Action):
65
-
66
- def __init__(self, **kwargs):
67
- super().__init__(
68
- {
69
- "name": "plantuml",
70
- "prompt_directive": (
71
- "Generate PlantUML diagrams using description. Supports sequence diagrams, class diagrams, "
72
- "use case diagrams, activity diagrams, component diagrams, state diagrams, and timing diagrams."
73
- ),
74
- "params": [
75
- {
76
- "name": "diagram_description",
77
- "desc": "The detailed description of the diagram to be generated in natural English language.",
78
- "type": "string",
79
- }
80
- ],
81
- "required_scopes": ["global:plantuml:read"],
82
- },
83
- **kwargs,
84
- )
85
-
86
- def invoke(self, params, meta={}) -> ActionResponse:
87
- # Do a local command to run plantuml -tpng
88
- description = params.get("diagram_description")
89
- agent = self.get_agent()
90
- messages = [
91
- {"role": "system", "content": PLANTUML_PROMPT},
92
- {"role": "user", "content": description},
93
- ]
94
- agent = self.get_agent()
95
- try:
96
- response = agent.do_llm_service_request(messages=messages)
97
- expression = response.get("content")
98
- except TimeoutError as e:
99
- log.error("LLM request timed out: %s", str(e))
100
- return ActionResponse(message="LLM request timed out")
101
- except Exception as e:
102
- log.error("Failed to process content with LLM: %s", str(e))
103
- return ActionResponse(message="Failed to process content with LLM")
104
-
105
- # Surround expression with @startuml and @enduml if missing
106
- if not expression.startswith("@startuml"):
107
- expression = f"@startuml\n{expression}"
108
- if not expression.endswith("@enduml"):
109
- expression = f"{expression}\n@enduml"
110
- log.debug("PlantUML expression: %s", expression)
111
- files = []
112
-
113
- try:
114
- temp_dir = tempfile.mkdtemp()
115
- # Create a unique filename with .puml extension
116
- diagram_id = str(uuid.uuid4())
117
- puml_filename = f"diagram_{diagram_id}.puml"
118
- puml_path = os.path.join(temp_dir, puml_filename)
119
- png_path = os.path.join(temp_dir, f"diagram_{diagram_id}.png")
120
-
121
- # Write PlantUML content to input file
122
- with open(puml_path, 'w', encoding='utf-8') as f:
123
- f.write(expression)
124
-
125
- # Run PlantUML
126
- subprocess.run(
127
- ["plantuml", "-tpng", puml_path, "-o", temp_dir],
128
- shell=platform.system() == "Windows",
129
- check=True,
130
- capture_output=True,
131
- text=True,
132
- )
133
-
134
- # Upload the generated image
135
- file_service = FileService()
136
- file_meta = file_service.upload_from_file(
137
- png_path,
138
- meta.get("session_id"),
139
- data_source="Global Agent - PlantUML Action",
140
- )
141
- files.append(file_meta)
142
-
143
- except FileNotFoundError as e:
144
- log.error("PlantUML executable not found: %s", str(e))
145
- return ActionResponse(
146
- message="PlantUML executable not found. Please ensure PlantUML is installed and available in PATH.",
147
- )
148
- except subprocess.CalledProcessError as e:
149
- log.error("Subprocess failed with stderr: %s", str(e))
150
- return ActionResponse(
151
- message=f"Failed to create diagram: {str(e)}",
152
- )
153
- finally:
154
- if 'temp_dir' in locals() and os.path.exists(temp_dir):
155
- try:
156
- shutil.rmtree(temp_dir) # Remove directory and all contents
157
- except:
158
- pass
159
-
160
- return ActionResponse(
161
- message=f"diagram created with the plantUML: \n```\n{expression}\n```",
162
- files=files,
163
- )
@@ -1,152 +0,0 @@
1
- """Plotly graph generation"""
2
-
3
- import platform
4
- import os
5
- import random
6
- import tempfile
7
- import json
8
- import yaml
9
- from importlib.metadata import version
10
- from io import BytesIO
11
- from packaging.version import parse
12
- from solace_ai_connector.common.log import log
13
-
14
- import plotly.graph_objects as go
15
- import plotly.io as pio
16
-
17
- from ....common.action import Action
18
- from ....common.action_response import ActionResponse
19
- from ....services.file_service import FileService
20
-
21
-
22
- class PlotlyGraph(Action):
23
-
24
- def __init__(self, **kwargs):
25
- super().__init__(
26
- {
27
- "name": "plotly",
28
- "prompt_directive": (
29
- "Create a plotly graph from the given plotly figure configuration. Note that this will be rendered as a static image that can't be interacted with."
30
- ),
31
- "params": [
32
- {
33
- "name": "plotly_figure_config",
34
- "desc": "The plotly figure configuration as a yaml object (do not give python code, just the yaml object)",
35
- "type": "object",
36
- }
37
- ],
38
- "required_scopes": ["global:plotly:read"],
39
- "examples": [
40
- {
41
- "docstring": "This is an example of a user asking for a bar graph. The plotly action from the global agent is invoked to generate the graph.",
42
- "tag_prefix_placeholder": "{tp}",
43
- "starting_id": "12",
44
- "user_input": "Please generate a random bar graph for me",
45
- "metadata": [
46
- "local_time: 2024-09-04 15:59:02 EDT-0400 (Wednesday)"
47
- ],
48
- "reasoning": [
49
- "- user has requested a random bar graph",
50
- "- invoke the plotly action from the global agent to generate a bar graph with random data",
51
- ],
52
- "response_text": "Certainly! I'd be happy to generate a random bar graph for you.",
53
- "status_update": "I'll use our plotting tool to create this for you right away.",
54
- "action": {
55
- "agent": "global",
56
- "name": "plotly",
57
- "parameter_name": "plotly_figure_config",
58
- "parameters": {
59
- "plotly_figure_config": [
60
- "{",
61
- ' "data": [',
62
- " {",
63
- ' "x": ["A", "B", "C", "D", "E"],',
64
- ' "y": [23, 45, 56, 78, 90],',
65
- ' "type": "bar"',
66
- " }",
67
- " ],",
68
- ' "layout": {',
69
- ' "title": "Random Bar Graph",',
70
- ' "xaxis": {"title": "Categories"},',
71
- ' "yaxis": {"title": "Values"}',
72
- " }",
73
- "}",
74
- ]
75
- },
76
- },
77
- }
78
- ],
79
- },
80
- **kwargs,
81
- )
82
-
83
- def invoke(self, params, meta={}) -> ActionResponse:
84
- if platform.system() == "Windows":
85
- kaleido_version = version("kaleido")
86
- min_version = parse("0.1.0.post1")
87
- max_version = parse("0.2.0")
88
- if (
89
- parse(kaleido_version) < min_version
90
- or parse(kaleido_version) >= max_version
91
- ):
92
- return ActionResponse(
93
- message="For Windows users, the plotting functionality requires a specific version of Kaleido. Please refer to the documentation."
94
- )
95
- obj = params["plotly_figure_config"]
96
- if isinstance(obj, str):
97
- # First remove any leading/trailing whitespace
98
- obj = obj.strip()
99
-
100
- # Next remove ```yaml or ```json
101
- if obj.startswith("```yaml") or obj.startswith("```json"):
102
- obj = obj[7:]
103
- elif obj.startswith("```"):
104
- obj = obj[3:]
105
- # Remove any trailing ``` characters
106
- if obj.endswith("```"):
107
- obj = obj[:-3]
108
- # Remove any leading/trailing whitespace again
109
- obj = obj.strip()
110
-
111
- # If the string starts with a quote and ends with that same quote, remove them
112
- if obj.startswith("'") and obj.endswith("'"):
113
- obj = obj[1:-1]
114
- elif obj.startswith('"') and obj.endswith('"'):
115
- obj = obj[1:-1]
116
-
117
- # Remove any leading/trailing quote characters
118
- obj = obj.strip("'\" ")
119
- try:
120
- obj = json.loads(obj)
121
- except: # pylint: disable=bare-except
122
- try:
123
- obj = yaml.safe_load(obj)
124
- except Exception: # pylint: disable=broad-except
125
- return ActionResponse(
126
- message=f"Could not parse plotly figure configuration: {obj}\n\nNOTE that this action expects a config object, not code.",
127
- )
128
-
129
- files = []
130
- try:
131
- fig = go.Figure(obj)
132
- byte_io = BytesIO()
133
- pio.write_image(fig, byte_io)
134
- byte_io.seek(0)
135
- file_service = FileService()
136
- image_name = (
137
- "generated_graph_" + str(random.randint(100000, 999999)) + ".png"
138
- )
139
- image_meta = file_service.upload_from_buffer(
140
- byte_io.read(),
141
- image_name,
142
- meta.get("session_id"),
143
- data_source="Global Agent - PlotlyGraph Action",
144
- )
145
- files.append(image_meta)
146
- except Exception as e:
147
- return ActionResponse(
148
- message="Could not create plotly graph. Please check the plotly figure configuration. plotly error: "
149
- + str(e),
150
- )
151
-
152
- return ActionResponse(files=files)
@@ -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."""