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,256 +0,0 @@
1
- """This is the base class for all custom agent components"""
2
-
3
- import json
4
- import traceback
5
-
6
- import os
7
- from abc import ABC
8
- from solace_ai_connector.common.log import log
9
- from solace_ai_connector.common.message import Message
10
- from solace_ai_connector.common.utils import ensure_slash_on_end
11
-
12
- from ..services.llm_service.components.llm_service_component_base import LLMServiceComponentBase
13
- from ..common.action_list import ActionList
14
- from ..common.action_response import ActionResponse, ErrorInfo
15
- from ..common.constants import ORCHESTRATOR_COMPONENT_NAME
16
- from ..services.file_service import FileService
17
- from ..services.file_service.file_utils import recursive_file_resolver
18
- from ..services.middleware_service.middleware_service import MiddlewareService
19
-
20
- agent_info = {
21
- "class_name": "BaseAgentComponent",
22
- "description": "This component handles action requests",
23
- "config_parameters": [
24
- {
25
- "name": "llm_service_topic",
26
- "required": False,
27
- "description": "The topic to use for the LLM service",
28
- },
29
- {
30
- "name": "embedding_service_topic",
31
- "required": False,
32
- "description": "The topic to use for the Embedding service",
33
- },
34
- {
35
- "name": "registration_interval",
36
- "required": False,
37
- "description": "The interval in seconds for agent registration",
38
- "default": 30,
39
- },
40
- ],
41
- "input_schema": {
42
- "type": "object",
43
- "properties": {
44
- "agent_name": {"type": "string"},
45
- "action_name": {"type": "string"},
46
- "params": {"type": "object", "additionalProperties": True},
47
- },
48
- "required": ["agent_name", "action_name", "params"],
49
- },
50
- }
51
-
52
-
53
- class BaseAgentComponent(LLMServiceComponentBase, ABC):
54
-
55
- @classmethod
56
- def get_actions_list(cls, **kwargs):
57
- return ActionList(cls.actions, **kwargs)
58
-
59
-
60
- def __init__(self, module_info={}, **kwargs):
61
- super().__init__(module_info, **kwargs)
62
- self.kwargs = kwargs
63
- self.action_config = kwargs.get("action_config", {})
64
- self.registration_interval = int(self.get_config("registration_interval", 30))
65
-
66
- self.llm_service_topic = self.get_config("llm_service_topic")
67
- if self.llm_service_topic:
68
- self.llm_service_topic = ensure_slash_on_end(self.llm_service_topic)
69
- # Check that the component's broker request/response is enabled
70
- if not self.is_broker_request_response_enabled():
71
- raise ValueError(
72
- "LLM service topic is set, but the component does not "
73
- f"have its broker request/response enabled, {self.__class__.__name__}"
74
- )
75
-
76
- self.embedding_service_topic = self.get_config("embedding_service_topic")
77
- if self.embedding_service_topic:
78
- self.embedding_service_topic = ensure_slash_on_end(
79
- self.embedding_service_topic
80
- )
81
- # Check that the component's broker request/response is enabled
82
- if not self.is_broker_request_response_enabled():
83
- raise ValueError(
84
- "Embedding service topic is set, but the component does not "
85
- f"have its broker request/response enabled, {self.__class__.__name__}"
86
- )
87
-
88
- self.action_list = self.get_actions_list(agent=self, config_fn=self.get_config)
89
-
90
- def run(self):
91
- # This is called when the component is started - we will use this to send the first registration message
92
- # Only do this for the first of the agent components
93
- if self.component_index == 0:
94
- # Send the registration message immediately - this will also schedule the timer
95
- self.handle_timer_event(None)
96
-
97
- # Call the base class run method
98
- super().run()
99
-
100
- def get_actions_summary(self):
101
- action_list = self.action_list
102
- return action_list.get_prompt_summary(prefix=self.info.get("agent_name"))
103
-
104
- def get_agent_summary(self):
105
- return {
106
- "agent_name": self.info["agent_name"],
107
- "description": self.info["description"],
108
- "always_open": self.info.get("always_open", False),
109
- "actions": self.get_actions_summary(),
110
- }
111
-
112
- def _handle_action_validation(self, action_name, data):
113
- if not action_name:
114
- log.error("Action name not provided. Data: %s", json.dumps(data))
115
- return ActionResponse(
116
- message="Internal error: Action name not provided. Please try again",
117
- )
118
- action = self.action_list.get_action(action_name)
119
- if not action:
120
- log.error(
121
- "Action not found: %s. Data: %s", action_name, json.dumps(data)
122
- )
123
- return ActionResponse(
124
- message="Internal error: Action not found. Please try again",
125
- )
126
- return action
127
-
128
- def _resolve_action_parameters(self, params, session_id, data, file_service):
129
- try:
130
- resolved_params = recursive_file_resolver(
131
- params,
132
- resolver=file_service.resolve_all_resolvable_urls,
133
- session_id=session_id,
134
- )
135
- return resolved_params, None
136
- except Exception as e:
137
- log.error(
138
- "Error resolving file service URLs: %s. Data: %s",
139
- str(e),
140
- json.dumps(data),
141
- exc_info=True,
142
- )
143
- return params, ActionResponse(
144
- message=f"Error resolving file URLs. Details: {str(e)}",
145
- )
146
-
147
- def _execute_action(self, action, resolved_params, user_properties, action_name, data):
148
- session_id = user_properties.get("session_id")
149
- identity = user_properties.get("identity")
150
- middleware_service = MiddlewareService()
151
-
152
- if not middleware_service.get("base_agent_filter")(user_properties, action):
153
- log.warning(
154
- "Unauthorized access attempt for action %s. Data: %s",
155
- action_name,
156
- json.dumps(data),
157
- )
158
- return ActionResponse(
159
- message="Unauthorized: You don't have permission to perform this action.",
160
- )
161
- try:
162
- meta = {
163
- "session_id": session_id,
164
- "identity": identity,
165
- }
166
- return action.invoke(resolved_params, meta)
167
- except Exception as e:
168
- error_message = (
169
- f"Error invoking action {action_name} "
170
- f"in agent {self.info.get('agent_name', 'Unknown')}: \n\n"
171
- f"Exception name: {type(e).__name__}\n"
172
- f"Exception info: {str(e)}\n"
173
- f"Stack trace: {traceback.format_exc()}\n\n"
174
- f"Data: {json.dumps(data)}"
175
- )
176
- log.error(error_message)
177
- return ActionResponse(
178
- message=f"Internal error: {type(e).__name__} - Error invoking action. Details: {str(e)}",
179
- error_info=ErrorInfo(
180
- error_message=error_message,
181
- ),
182
- )
183
-
184
- def _prepare_response_payload(self, action_response, action_name, data):
185
- action_response.action_list_id = data.get("action_list_id")
186
- action_response.action_idx = data.get("action_idx")
187
- action_response.action_name = action_name
188
- action_response.action_params = data.get("action_params", {})
189
- action_response.originator = data.get("originator", ORCHESTRATOR_COMPONENT_NAME)
190
- try:
191
- return action_response.to_dict()
192
- except Exception as e:
193
- log.error(
194
- "Error after action %s in converting action response to dict: %s. Data: %s",
195
- action_name,
196
- str(e),
197
- json.dumps(data),
198
- exc_info=True,
199
- )
200
- return {
201
- "message": "Internal error: Error converting action response to dict",
202
- }
203
-
204
- def invoke(self, message, data):
205
- """Invoke the component"""
206
- action_name = data.get("action_name")
207
- file_service = FileService()
208
-
209
- validation_result = self._handle_action_validation(action_name, data)
210
- if isinstance(validation_result, ActionResponse):
211
- action_response_dict = self._prepare_response_payload(validation_result, action_name, data)
212
- response_topic = f"{os.getenv('SOLACE_AGENT_MESH_NAMESPACE')}solace-agent-mesh/v1/actionResponse/agent/{self.info['agent_name']}/{action_name or 'unknown'}"
213
- return {"payload": action_response_dict, "topic": response_topic}
214
-
215
- action = validation_result
216
-
217
- resolved_params = data.get("action_params", {}).copy()
218
- user_properties = message.get_user_properties() or {}
219
- session_id = user_properties.get("session_id")
220
-
221
- resolved_params, file_error_response = self._resolve_action_parameters(
222
- resolved_params, session_id, data, file_service
223
- )
224
- if file_error_response:
225
- action_response_dict = self._prepare_response_payload(file_error_response, action_name, data)
226
- response_topic = f"{os.getenv('SOLACE_AGENT_MESH_NAMESPACE')}solace-agent-mesh/v1/actionResponse/agent/{self.info['agent_name']}/{action_name}"
227
- return {"payload": action_response_dict, "topic": response_topic}
228
-
229
- action_response = self._execute_action(
230
- action, resolved_params, user_properties, action_name, data
231
- )
232
-
233
- action_response_dict = self._prepare_response_payload(action_response, action_name, data)
234
-
235
- # Construct the response topic
236
- response_topic = f"{os.getenv('SOLACE_AGENT_MESH_NAMESPACE')}solace-agent-mesh/v1/actionResponse/agent/{self.info['agent_name']}/{action_name}"
237
- return {"payload": action_response_dict, "topic": response_topic}
238
-
239
- def handle_timer_event(self, timer_data):
240
- """Handle the timer event for agent registration."""
241
- registration_message = self.get_agent_summary()
242
- registration_topic = f"{os.getenv('SOLACE_AGENT_MESH_NAMESPACE')}solace-agent-mesh/v1/register/agent/{self.info['agent_name']}"
243
-
244
- message = Message(
245
- topic=registration_topic,
246
- payload=registration_message,
247
- )
248
-
249
- message.set_previous(
250
- {"topic": registration_topic, "payload": registration_message}
251
- )
252
-
253
- self.send_message(message)
254
-
255
- # Re-schedule the timer
256
- self.add_timer(self.registration_interval * 1000, "agent_registration")
@@ -1,54 +0,0 @@
1
- """Agent state change action"""
2
-
3
- from solace_ai_connector.common.log import log
4
- from ....common.action import Action
5
- from ....common.action_response import (
6
- ActionResponse,
7
- AgentStateChange,
8
- ErrorInfo,
9
- )
10
-
11
-
12
- class AgentStateChangeAction(Action):
13
-
14
- def __init__(self, **kwargs):
15
- super().__init__(
16
- {
17
- "name": "change_agent_status",
18
- "prompt_directive": "Handle agent state change",
19
- "params": [
20
- {
21
- "name": "agent_name",
22
- "desc": "Name of the agent",
23
- "type": "string",
24
- },
25
- {
26
- "name": "new_state",
27
- "desc": "New state of the agent: open or closed",
28
- "type": "string",
29
- },
30
- ],
31
- "required_scopes": ["*:*:*"],
32
- },
33
- **kwargs,
34
- )
35
-
36
- def invoke(self, params, meta={}) -> ActionResponse:
37
- agent_name = params["agent_name"]
38
- new_state = params["new_state"]
39
- log.debug("Handling agent state change: %s -> %s", agent_name, new_state)
40
-
41
- if new_state == "open":
42
- return ActionResponse(
43
- message=f"_Opening agent {agent_name}..._",
44
- agent_state_change=AgentStateChange(agent_name, "open"),
45
- )
46
- elif new_state == "closed":
47
- return ActionResponse(
48
- agent_state_change=AgentStateChange(agent_name, "closed"),
49
- )
50
- else:
51
- log.error("Invalid agent state: %s", new_state)
52
- return ActionResponse(
53
- error_info=ErrorInfo(error_message=f"Invalid agent state for {agent_name}: {new_state}"),
54
- )
@@ -1,32 +0,0 @@
1
- """Clear history action"""
2
-
3
- from solace_ai_connector.common.log import log
4
- from ....common.action import Action
5
- from ....common.action_response import ActionResponse
6
-
7
-
8
- class ClearHistory(Action):
9
- def __init__(self, **kwargs):
10
- super().__init__(
11
- {
12
- "name": "clear_history",
13
- "prompt_directive": "Clear the chat history",
14
- "params": [
15
- {
16
- "name": "depth_to_keep",
17
- "desc": "The number of messages to keep in the chat history. If 0, clear all history. ",
18
- "type": "integer",
19
- }
20
- ],
21
- "required_scopes": ["*:*:*"],
22
- },
23
- **kwargs,
24
- )
25
-
26
- def invoke(self, params, meta={}) -> ActionResponse:
27
- log.debug("Clearing chat history")
28
- depth_to_keep = params.get("depth_to_keep", 0)
29
- return ActionResponse(
30
- clear_history=True,
31
- history_depth_to_keep=depth_to_keep,
32
- )
@@ -1,160 +0,0 @@
1
- """Action description"""
2
-
3
- from solace_ai_connector.common.log import log
4
- from markitdown import MarkItDown
5
- from markitdown import UnsupportedFormatException
6
- import json
7
- import os
8
- import mimetypes
9
- import tempfile
10
- from ....common.action import Action
11
- from ....common.action_response import ActionResponse
12
- from ....services.file_service import FS_PROTOCOL, FileService
13
-
14
- STRIP_LENGTH = len(FS_PROTOCOL) + len("://") + 36 + 1 # 36 is uuid, 1 is underscore
15
-
16
-
17
- class ConvertFileToMarkdown(Action):
18
-
19
- def __init__(self, **kwargs):
20
- super().__init__(
21
- {
22
- "name": "convert_file_to_markdown",
23
- "prompt_directive": (
24
- "Convert various file formats to Markdown using the MarkItDown utility. "
25
- "Supported file types include PDF, Word, Excel, HTML, CSV and PPTX "
26
- "and ZIP files. Files are provided in "
27
- + f"{FS_PROTOCOL}://"
28
- + " format. "
29
- "JSON and XML files are not supported. "
30
- "This action will return Markdown files."
31
- ),
32
- "params": [
33
- {
34
- "name": "files",
35
- "desc": (
36
- f"List of {FS_PROTOCOL}:// URLs to the files to convert to Markdown. "
37
- f"For example: ['{FS_PROTOCOL}://file1.pdf', '{FS_PROTOCOL}://file2.docx']"
38
- ),
39
- "type": "array",
40
- }
41
- ],
42
- "required_scopes": ["global:markitdown:execute"],
43
- },
44
- **kwargs,
45
- )
46
-
47
- def invoke(self, params, meta={}) -> ActionResponse:
48
- files = params.get("files", [])
49
- session_id = meta.get("session_id")
50
- log.debug("Doing markitdown convert action: %s", params["files"])
51
-
52
- if isinstance(files, str):
53
- try:
54
- files = json.loads(files)
55
- except json.JSONDecodeError:
56
- log.error("Failed to decode files string as JSON")
57
- return ActionResponse(message="Error: File URL list is not valid.")
58
-
59
- return self.do_action(files, session_id)
60
-
61
- def extract_file_format(self, file_path: str) -> str:
62
- """
63
- Extracts the file format from a file path or guesses it using mimetypes if not present.
64
- """
65
- file_extension = os.path.splitext(file_path)[1]
66
- if file_extension:
67
- return file_extension.lower()
68
-
69
- mime_type, _ = mimetypes.guess_type(file_path)
70
- if mime_type:
71
- guessed_extension = mimetypes.guess_extension(mime_type)
72
- if guessed_extension:
73
- return guessed_extension.lower()
74
-
75
- raise ValueError(f"Unable to determine file format for path: {file_path}")
76
-
77
- def do_action(self, files, session_id) -> ActionResponse:
78
- markitdown_client = MarkItDown()
79
- file_service = FileService()
80
-
81
- response_messages = []
82
- uploaded_files = []
83
-
84
- # Iterate over each file URL
85
- for file_url in files:
86
- try:
87
- file_buffer = file_service.download_to_buffer(file_url, session_id)
88
- except Exception as e:
89
- log.error(
90
- "Failed to download file from the url %s: %s", file_url, str(e)
91
- )
92
- response_messages.append(
93
- f"Failed to download file from the url {file_url}"
94
- )
95
- continue
96
-
97
- # Find the file extension
98
- try:
99
- file_extension = self.extract_file_format(file_url)
100
- except ValueError:
101
- response_messages.append(
102
- f"Could not determine file format for: {file_url}"
103
- )
104
- continue
105
-
106
- # strip first {STRIP LENGTH} characters of the url to get the original name
107
- original_name = file_url[STRIP_LENGTH:]
108
-
109
- with tempfile.NamedTemporaryFile(
110
- delete=True, suffix=file_extension
111
- ) as temporary_file:
112
- try:
113
- # Write to temp file
114
- temporary_file.write(file_buffer)
115
- temporary_file.flush()
116
-
117
- # Convert the file to Markdown
118
- try:
119
- conversion_result = markitdown_client.convert(
120
- temporary_file.name
121
- )
122
- # Empty content
123
- if not conversion_result.text_content:
124
- log.error("Error converting file %s: Conversion resulted in empty content", file_url)
125
- response_messages.append(f"Could not convert file: {file_url} - conversion resulted in empty content")
126
- continue
127
- except UnsupportedFormatException as e:
128
- log.error("Error converting file %s: %s", file_url, str(e))
129
- response_messages.append(
130
- f"Could not convert file: {file_url} as this format is not supported: {str(e)}"
131
- )
132
- continue
133
-
134
- # Use the original file name + "_converted" affix + .md extension
135
- converted_filename = f"{original_name}_converted.md"
136
-
137
- # Upload the converted content
138
- file_obj = file_service.upload_from_buffer(
139
- conversion_result.text_content.encode("utf-8"),
140
- converted_filename,
141
- session_id,
142
- data_source="Global Agent - MarkItDown Action",
143
- )
144
-
145
- filename = file_obj["name"]
146
- uploaded_files.append(file_obj)
147
- response_messages.append(f"File converted successfully: {filename}")
148
-
149
- except Exception as e:
150
- log.error(
151
- "Failed to upload file %s: %s", converted_filename, str(e)
152
- )
153
- response_messages.append(
154
- f"Failed to upload file {converted_filename}"
155
- )
156
- continue
157
-
158
- return ActionResponse(
159
- message="\n".join(response_messages), files=uploaded_files
160
- )
@@ -1,70 +0,0 @@
1
- """Create a new file in file service"""
2
-
3
- from solace_ai_connector.common.log import log
4
- from ....common.action import Action
5
- from ....common.action_response import ActionResponse
6
- from ....services.file_service import FS_PROTOCOL, FileService
7
- from ....services.file_service.file_utils import starts_with_fs_url
8
-
9
-
10
- class CreateFile(Action):
11
- """Action to create a new file in file service"""
12
-
13
- def __init__(self, **kwargs):
14
-
15
- super().__init__(
16
- {
17
- "name": "create_file",
18
- "prompt_directive": f"Creates a new persisted file and returns the file block with {FS_PROTOCOL} URL",
19
- "params": [
20
- {
21
- "name": "name",
22
- "desc": "File name (required) - must have an extension. Eg: file.csv",
23
- "type": "string",
24
- },
25
- {
26
- "name": "content",
27
- "desc": "Content of the file (required)",
28
- "type": "string",
29
- },
30
- ],
31
- "required_scopes": ["global:create_file:write"],
32
- },
33
- **kwargs,
34
- )
35
-
36
- def invoke(self, params, meta={}) -> ActionResponse:
37
- name: str = params.get("name")
38
- content: str = params.get("content")
39
- session_id: str = meta.get("session_id")
40
-
41
- if not name or not content:
42
- return ActionResponse(message="Error: name and content are required.")
43
-
44
- try:
45
- # Upload the file
46
- file_service = FileService()
47
-
48
- updated_content = content
49
- if starts_with_fs_url(updated_content):
50
- updated_content = file_service.resolve_url(updated_content, session_id)
51
- else:
52
- updated_content = file_service.resolve_all_resolvable_urls(updated_content, session_id)
53
-
54
- if isinstance(updated_content, str):
55
- updated_content = updated_content.encode("utf-8")
56
-
57
- file_meta = file_service.upload_from_buffer(
58
- updated_content,
59
- name,
60
- session_id,
61
- data_source="Global Agent - Create File Action",
62
- )
63
- except Exception as e:
64
- log.error("Failed to upload file %s: %s", name, str(e))
65
- return ActionResponse(message=f"Failed to upload the file: {name}")
66
-
67
- file_block = file_service.get_file_block_by_metadata(file_meta)
68
- return ActionResponse(
69
- message=f"Following file has been created:\n\n{file_block}",
70
- )
@@ -1,45 +0,0 @@
1
- """Action to handle errors from the system"""
2
-
3
- from solace_ai_connector.common.log import log
4
-
5
- from ....common.action import Action
6
- from ....common.action_response import (
7
- ActionResponse,
8
- ErrorInfo,
9
- WithContextQuery,
10
- )
11
-
12
-
13
- class ErrorAction(Action):
14
- def __init__(self, **kwargs):
15
- super().__init__(
16
- {
17
- "name": "error_action",
18
- "prompt_directive": "Raise an error message",
19
- "params": [
20
- {
21
- "name": "error_message",
22
- "desc": "The error to send to the user",
23
- "type": "string",
24
- }
25
- ],
26
- "required_scopes": ["*:*:*"],
27
- },
28
- **kwargs,
29
- )
30
-
31
- def invoke(self, params, meta={}) -> ActionResponse:
32
- error_message = params.get("error_message")
33
- if error_message:
34
- log.error("Raising error: %s", error_message)
35
- # If the error_message contains "Failed to parse response",
36
- # then return a response requesting a redo from the LLM
37
- if "Failed to parse response" in error_message:
38
- return ActionResponse(
39
- context_query=WithContextQuery(
40
- context_type="statement",
41
- context="Your response was not correctly formated and parsing failed. Please try again but don't comment on the parsing problem in your response.",
42
- query="",
43
- )
44
- )
45
- return ActionResponse(error_info=ErrorInfo(error_message=error_message))