solace-agent-mesh 0.2.3__py3-none-any.whl → 1.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of solace-agent-mesh might be problematic. Click here for more details.

Files changed (518) hide show
  1. solace_agent_mesh/agent/adk/adk_llm.txt +93 -0
  2. solace_agent_mesh/agent/adk/app_llm_agent.py +26 -0
  3. solace_agent_mesh/agent/adk/callbacks.py +1694 -0
  4. solace_agent_mesh/agent/adk/filesystem_artifact_service.py +381 -0
  5. solace_agent_mesh/agent/adk/invocation_monitor.py +295 -0
  6. solace_agent_mesh/agent/adk/models/lite_llm.py +872 -0
  7. solace_agent_mesh/agent/adk/models/models_llm.txt +94 -0
  8. solace_agent_mesh/agent/adk/runner.py +353 -0
  9. solace_agent_mesh/agent/adk/services.py +240 -0
  10. solace_agent_mesh/agent/adk/setup.py +751 -0
  11. solace_agent_mesh/agent/adk/stream_parser.py +214 -0
  12. solace_agent_mesh/agent/adk/tool_wrapper.py +139 -0
  13. solace_agent_mesh/agent/agent_llm.txt +41 -0
  14. solace_agent_mesh/agent/protocol/event_handlers.py +1469 -0
  15. solace_agent_mesh/agent/protocol/protocol_llm.txt +21 -0
  16. solace_agent_mesh/agent/sac/app.py +640 -0
  17. solace_agent_mesh/agent/sac/component.py +3388 -0
  18. solace_agent_mesh/agent/sac/patch_adk.py +111 -0
  19. solace_agent_mesh/agent/sac/sac_llm.txt +105 -0
  20. solace_agent_mesh/agent/sac/task_execution_context.py +176 -0
  21. solace_agent_mesh/agent/testing/__init__.py +3 -0
  22. solace_agent_mesh/agent/testing/debug_utils.py +135 -0
  23. solace_agent_mesh/agent/testing/testing_llm.txt +90 -0
  24. solace_agent_mesh/agent/tools/__init__.py +14 -0
  25. solace_agent_mesh/agent/tools/audio_tools.py +1622 -0
  26. solace_agent_mesh/agent/tools/builtin_artifact_tools.py +1954 -0
  27. solace_agent_mesh/agent/tools/builtin_data_analysis_tools.py +238 -0
  28. solace_agent_mesh/agent/tools/general_agent_tools.py +569 -0
  29. solace_agent_mesh/agent/tools/image_tools.py +1184 -0
  30. solace_agent_mesh/agent/tools/peer_agent_tool.py +289 -0
  31. solace_agent_mesh/agent/tools/registry.py +36 -0
  32. solace_agent_mesh/agent/tools/test_tools.py +135 -0
  33. solace_agent_mesh/agent/tools/tool_definition.py +45 -0
  34. solace_agent_mesh/agent/tools/tools_llm.txt +104 -0
  35. solace_agent_mesh/agent/tools/web_tools.py +381 -0
  36. solace_agent_mesh/agent/utils/artifact_helpers.py +927 -0
  37. solace_agent_mesh/agent/utils/config_parser.py +47 -0
  38. solace_agent_mesh/agent/utils/context_helpers.py +60 -0
  39. solace_agent_mesh/agent/utils/utils_llm.txt +153 -0
  40. solace_agent_mesh/assets/docs/404.html +16 -0
  41. solace_agent_mesh/assets/docs/assets/css/styles.906a1503.css +1 -0
  42. solace_agent_mesh/assets/docs/assets/images/Solace_AI_Framework_With_Broker-85f0a306a9bcdd20b390b7a949f6d862.png +0 -0
  43. solace_agent_mesh/assets/docs/assets/images/sac-flows-80d5b603c6aafd33e87945680ce0abf3.png +0 -0
  44. solace_agent_mesh/assets/docs/assets/images/sac_parts_of_a_component-cb3d0424b1d0c17734c5435cca6b4082.png +0 -0
  45. solace_agent_mesh/assets/docs/assets/js/04989206.674a8007.js +1 -0
  46. solace_agent_mesh/assets/docs/assets/js/0e682baa.79f0ab22.js +1 -0
  47. solace_agent_mesh/assets/docs/assets/js/1001.0182a8bd.js +1 -0
  48. solace_agent_mesh/assets/docs/assets/js/1023fc19.015679ca.js +1 -0
  49. solace_agent_mesh/assets/docs/assets/js/1039.0bd46aa1.js +1 -0
  50. solace_agent_mesh/assets/docs/assets/js/149.b797a808.js +1 -0
  51. solace_agent_mesh/assets/docs/assets/js/1523c6b4.91c7bc01.js +1 -0
  52. solace_agent_mesh/assets/docs/assets/js/165.6a39807d.js +2 -0
  53. solace_agent_mesh/assets/docs/assets/js/165.6a39807d.js.LICENSE.txt +9 -0
  54. solace_agent_mesh/assets/docs/assets/js/166ab619.7d97ccaf.js +1 -0
  55. solace_agent_mesh/assets/docs/assets/js/17896441.a5e82f9b.js +2 -0
  56. solace_agent_mesh/assets/docs/assets/js/17896441.a5e82f9b.js.LICENSE.txt +7 -0
  57. solace_agent_mesh/assets/docs/assets/js/1c6e87d2.23bccffb.js +1 -0
  58. solace_agent_mesh/assets/docs/assets/js/2130.ab9fd314.js +1 -0
  59. solace_agent_mesh/assets/docs/assets/js/21ceee5f.614fa8dd.js +1 -0
  60. solace_agent_mesh/assets/docs/assets/js/2237.5e477fc6.js +1 -0
  61. solace_agent_mesh/assets/docs/assets/js/2334.622a6395.js +1 -0
  62. solace_agent_mesh/assets/docs/assets/js/2a9cab12.8909df92.js +1 -0
  63. solace_agent_mesh/assets/docs/assets/js/3219.adc1d663.js +1 -0
  64. solace_agent_mesh/assets/docs/assets/js/332e10b5.7a103f42.js +1 -0
  65. solace_agent_mesh/assets/docs/assets/js/3624.b524e433.js +1 -0
  66. solace_agent_mesh/assets/docs/assets/js/375.708d48db.js +1 -0
  67. solace_agent_mesh/assets/docs/assets/js/3834.b6cd790e.js +1 -0
  68. solace_agent_mesh/assets/docs/assets/js/3d406171.f722eaf5.js +1 -0
  69. solace_agent_mesh/assets/docs/assets/js/4250.95455b28.js +1 -0
  70. solace_agent_mesh/assets/docs/assets/js/42b3f8d8.36090198.js +1 -0
  71. solace_agent_mesh/assets/docs/assets/js/4356.d169ab5b.js +1 -0
  72. solace_agent_mesh/assets/docs/assets/js/442a8107.5ba94b65.js +1 -0
  73. solace_agent_mesh/assets/docs/assets/js/4458.518e66fa.js +1 -0
  74. solace_agent_mesh/assets/docs/assets/js/4488.c7cc3442.js +1 -0
  75. solace_agent_mesh/assets/docs/assets/js/4494.6ee23046.js +1 -0
  76. solace_agent_mesh/assets/docs/assets/js/4855.fc4444b6.js +1 -0
  77. solace_agent_mesh/assets/docs/assets/js/4866.22daefc0.js +1 -0
  78. solace_agent_mesh/assets/docs/assets/js/4950.ca4caeda.js +1 -0
  79. solace_agent_mesh/assets/docs/assets/js/4c2787c2.66ee00e9.js +1 -0
  80. solace_agent_mesh/assets/docs/assets/js/5388.7a136447.js +1 -0
  81. solace_agent_mesh/assets/docs/assets/js/55f47984.c484bf96.js +1 -0
  82. solace_agent_mesh/assets/docs/assets/js/5607.081356f8.js +1 -0
  83. solace_agent_mesh/assets/docs/assets/js/5864.b0d0e9de.js +1 -0
  84. solace_agent_mesh/assets/docs/assets/js/5b4258a4.bda20761.js +1 -0
  85. solace_agent_mesh/assets/docs/assets/js/5e95c892.558d5167.js +1 -0
  86. solace_agent_mesh/assets/docs/assets/js/6143.0a1464c9.js +1 -0
  87. solace_agent_mesh/assets/docs/assets/js/6395.e9c73649.js +1 -0
  88. solace_agent_mesh/assets/docs/assets/js/6796.51d2c9b7.js +1 -0
  89. solace_agent_mesh/assets/docs/assets/js/6976.379be23b.js +1 -0
  90. solace_agent_mesh/assets/docs/assets/js/6978.ee0b945c.js +1 -0
  91. solace_agent_mesh/assets/docs/assets/js/7040.cb436723.js +1 -0
  92. solace_agent_mesh/assets/docs/assets/js/7195.412f418a.js +1 -0
  93. solace_agent_mesh/assets/docs/assets/js/7280.3fb73bdb.js +1 -0
  94. solace_agent_mesh/assets/docs/assets/js/768e31b0.a12673db.js +1 -0
  95. solace_agent_mesh/assets/docs/assets/js/7845.e33e7c4c.js +1 -0
  96. solace_agent_mesh/assets/docs/assets/js/7900.69516146.js +1 -0
  97. solace_agent_mesh/assets/docs/assets/js/8356.8a379c04.js +1 -0
  98. solace_agent_mesh/assets/docs/assets/js/85387663.6bf41934.js +1 -0
  99. solace_agent_mesh/assets/docs/assets/js/8567.4732c6b7.js +1 -0
  100. solace_agent_mesh/assets/docs/assets/js/8573.cb04eda5.js +1 -0
  101. solace_agent_mesh/assets/docs/assets/js/8577.1d54e766.js +1 -0
  102. solace_agent_mesh/assets/docs/assets/js/8591.d7c16be6.js +2 -0
  103. solace_agent_mesh/assets/docs/assets/js/8591.d7c16be6.js.LICENSE.txt +61 -0
  104. solace_agent_mesh/assets/docs/assets/js/8709.7ecd4047.js +1 -0
  105. solace_agent_mesh/assets/docs/assets/js/8731.49e930c2.js +1 -0
  106. solace_agent_mesh/assets/docs/assets/js/8908.f9d1b506.js +1 -0
  107. solace_agent_mesh/assets/docs/assets/js/9157.b4093d07.js +1 -0
  108. solace_agent_mesh/assets/docs/assets/js/9278.a4fd875d.js +1 -0
  109. solace_agent_mesh/assets/docs/assets/js/945fb41e.74d728aa.js +1 -0
  110. solace_agent_mesh/assets/docs/assets/js/9616.b75c2f6d.js +1 -0
  111. solace_agent_mesh/assets/docs/assets/js/9793.c6d16376.js +1 -0
  112. solace_agent_mesh/assets/docs/assets/js/9eff14a2.1bf8f61c.js +1 -0
  113. solace_agent_mesh/assets/docs/assets/js/a3a92b25.26ca071f.js +1 -0
  114. solace_agent_mesh/assets/docs/assets/js/a7bd4aaa.2204d2f7.js +1 -0
  115. solace_agent_mesh/assets/docs/assets/js/a94703ab.0438dbc2.js +1 -0
  116. solace_agent_mesh/assets/docs/assets/js/aba21aa0.c42a534c.js +1 -0
  117. solace_agent_mesh/assets/docs/assets/js/aba87c2f.d3e2dcc3.js +1 -0
  118. solace_agent_mesh/assets/docs/assets/js/ae4415af.8e279b5d.js +1 -0
  119. solace_agent_mesh/assets/docs/assets/js/b7006a3a.40b10c9d.js +1 -0
  120. solace_agent_mesh/assets/docs/assets/js/bac0be12.f50d9bac.js +1 -0
  121. solace_agent_mesh/assets/docs/assets/js/bb2ef573.207e6990.js +1 -0
  122. solace_agent_mesh/assets/docs/assets/js/c2c06897.63b76e9e.js +1 -0
  123. solace_agent_mesh/assets/docs/assets/js/cc969b05.954186d4.js +1 -0
  124. solace_agent_mesh/assets/docs/assets/js/cd3d4052.ca6eed8c.js +1 -0
  125. solace_agent_mesh/assets/docs/assets/js/ced92a13.fb92e7ca.js +1 -0
  126. solace_agent_mesh/assets/docs/assets/js/cee5d587.f5b73ca1.js +1 -0
  127. solace_agent_mesh/assets/docs/assets/js/f284c35a.ecc3d195.js +1 -0
  128. solace_agent_mesh/assets/docs/assets/js/f897a61a.2c2e152c.js +1 -0
  129. solace_agent_mesh/assets/docs/assets/js/fbfa3e75.aca209c9.js +1 -0
  130. solace_agent_mesh/assets/docs/assets/js/main.7ed3319f.js +2 -0
  131. solace_agent_mesh/assets/docs/assets/js/main.7ed3319f.js.LICENSE.txt +81 -0
  132. solace_agent_mesh/assets/docs/assets/js/runtime~main.d9520ae2.js +1 -0
  133. solace_agent_mesh/assets/docs/docs/documentation/concepts/agents/index.html +128 -0
  134. solace_agent_mesh/assets/docs/docs/documentation/concepts/architecture/index.html +91 -0
  135. solace_agent_mesh/assets/docs/docs/documentation/concepts/cli/index.html +201 -0
  136. solace_agent_mesh/assets/docs/docs/documentation/concepts/gateways/index.html +91 -0
  137. solace_agent_mesh/assets/docs/docs/documentation/concepts/orchestrator/index.html +55 -0
  138. solace_agent_mesh/assets/docs/docs/documentation/concepts/plugins/index.html +82 -0
  139. solace_agent_mesh/assets/docs/docs/documentation/deployment/debugging/index.html +60 -0
  140. solace_agent_mesh/assets/docs/docs/documentation/deployment/deploy/index.html +48 -0
  141. solace_agent_mesh/assets/docs/docs/documentation/deployment/observability/index.html +54 -0
  142. solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +17 -0
  143. solace_agent_mesh/assets/docs/docs/documentation/getting-started/component-overview/index.html +45 -0
  144. solace_agent_mesh/assets/docs/docs/documentation/getting-started/installation/index.html +76 -0
  145. solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +150 -0
  146. solace_agent_mesh/assets/docs/docs/documentation/getting-started/quick-start/index.html +54 -0
  147. solace_agent_mesh/assets/docs/docs/documentation/tutorials/bedrock-agents/index.html +267 -0
  148. solace_agent_mesh/assets/docs/docs/documentation/tutorials/custom-agent/index.html +136 -0
  149. solace_agent_mesh/assets/docs/docs/documentation/tutorials/event-mesh-gateway/index.html +116 -0
  150. solace_agent_mesh/assets/docs/docs/documentation/tutorials/mcp-integration/index.html +80 -0
  151. solace_agent_mesh/assets/docs/docs/documentation/tutorials/mongodb-integration/index.html +164 -0
  152. solace_agent_mesh/assets/docs/docs/documentation/tutorials/rest-gateway/index.html +57 -0
  153. solace_agent_mesh/assets/docs/docs/documentation/tutorials/slack-integration/index.html +72 -0
  154. solace_agent_mesh/assets/docs/docs/documentation/tutorials/sql-database/index.html +102 -0
  155. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/artifact-management/index.html +99 -0
  156. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/audio-tools/index.html +90 -0
  157. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/data-analysis-tools/index.html +107 -0
  158. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/embeds/index.html +152 -0
  159. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/index.html +103 -0
  160. solace_agent_mesh/assets/docs/docs/documentation/user-guide/create-agents/index.html +170 -0
  161. solace_agent_mesh/assets/docs/docs/documentation/user-guide/create-gateways/index.html +200 -0
  162. solace_agent_mesh/assets/docs/docs/documentation/user-guide/creating-service-providers/index.html +54 -0
  163. solace_agent_mesh/assets/docs/docs/documentation/user-guide/solace-ai-connector/index.html +69 -0
  164. solace_agent_mesh/assets/docs/docs/documentation/user-guide/structure/index.html +59 -0
  165. solace_agent_mesh/assets/docs/img/Solace_AI_Framework_README.png +0 -0
  166. solace_agent_mesh/assets/docs/img/Solace_AI_Framework_With_Broker.png +0 -0
  167. solace_agent_mesh/assets/docs/img/logo.png +0 -0
  168. solace_agent_mesh/assets/docs/img/sac-flows.png +0 -0
  169. solace_agent_mesh/assets/docs/img/sac_parts_of_a_component.png +0 -0
  170. solace_agent_mesh/assets/docs/img/solace-logo.png +0 -0
  171. solace_agent_mesh/assets/docs/lunr-index-1753813536522.json +1 -0
  172. solace_agent_mesh/assets/docs/lunr-index.json +1 -0
  173. solace_agent_mesh/assets/docs/search-doc-1753813536522.json +1 -0
  174. solace_agent_mesh/assets/docs/search-doc.json +1 -0
  175. solace_agent_mesh/assets/docs/sitemap.xml +1 -0
  176. solace_agent_mesh/cli/__init__.py +1 -1
  177. solace_agent_mesh/cli/commands/add_cmd/__init__.py +15 -0
  178. solace_agent_mesh/cli/commands/add_cmd/add_cmd_llm.txt +250 -0
  179. solace_agent_mesh/cli/commands/add_cmd/agent_cmd.py +659 -0
  180. solace_agent_mesh/cli/commands/add_cmd/gateway_cmd.py +322 -0
  181. solace_agent_mesh/cli/commands/add_cmd/web_add_agent_step.py +93 -0
  182. solace_agent_mesh/cli/commands/add_cmd/web_add_gateway_step.py +118 -0
  183. solace_agent_mesh/cli/commands/docs_cmd.py +57 -0
  184. solace_agent_mesh/cli/commands/eval_cmd.py +64 -0
  185. solace_agent_mesh/cli/commands/init_cmd/__init__.py +404 -0
  186. solace_agent_mesh/cli/commands/init_cmd/broker_step.py +201 -0
  187. solace_agent_mesh/cli/commands/init_cmd/directory_step.py +28 -0
  188. solace_agent_mesh/cli/commands/init_cmd/env_step.py +197 -0
  189. solace_agent_mesh/cli/commands/init_cmd/init_cmd_llm.txt +365 -0
  190. solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +387 -0
  191. solace_agent_mesh/cli/commands/init_cmd/project_files_step.py +38 -0
  192. solace_agent_mesh/cli/commands/init_cmd/web_init_step.py +110 -0
  193. solace_agent_mesh/cli/commands/init_cmd/webui_gateway_step.py +183 -0
  194. solace_agent_mesh/cli/commands/plugin_cmd/__init__.py +18 -0
  195. solace_agent_mesh/cli/commands/plugin_cmd/add_cmd.py +372 -0
  196. solace_agent_mesh/cli/commands/plugin_cmd/build_cmd.py +86 -0
  197. solace_agent_mesh/cli/commands/plugin_cmd/catalog_cmd.py +138 -0
  198. solace_agent_mesh/cli/commands/plugin_cmd/create_cmd.py +309 -0
  199. solace_agent_mesh/cli/commands/plugin_cmd/official_registry.py +174 -0
  200. solace_agent_mesh/cli/commands/plugin_cmd/plugin_cmd_llm.txt +305 -0
  201. solace_agent_mesh/cli/commands/run_cmd.py +158 -0
  202. solace_agent_mesh/cli/main.py +17 -294
  203. solace_agent_mesh/cli/utils.py +135 -204
  204. solace_agent_mesh/client/webui/frontend/static/assets/authCallback-DvlO62me.js +1 -0
  205. solace_agent_mesh/client/webui/frontend/static/assets/client-bp6u3qVZ.js +49 -0
  206. solace_agent_mesh/client/webui/frontend/static/assets/favicon-BLgzUch9.ico +0 -0
  207. solace_agent_mesh/client/webui/frontend/static/assets/main-An0a5j5k.js +663 -0
  208. solace_agent_mesh/client/webui/frontend/static/assets/main-Bu5-4Bac.css +1 -0
  209. solace_agent_mesh/client/webui/frontend/static/auth-callback.html +14 -0
  210. solace_agent_mesh/client/webui/frontend/static/index.html +15 -0
  211. solace_agent_mesh/common/__init__.py +1 -0
  212. solace_agent_mesh/common/a2a_protocol.py +564 -0
  213. solace_agent_mesh/common/agent_registry.py +42 -0
  214. solace_agent_mesh/common/client/__init__.py +4 -0
  215. solace_agent_mesh/common/client/card_resolver.py +21 -0
  216. solace_agent_mesh/common/client/client.py +85 -0
  217. solace_agent_mesh/common/client/client_llm.txt +133 -0
  218. solace_agent_mesh/common/common_llm.txt +144 -0
  219. solace_agent_mesh/common/constants.py +1 -14
  220. solace_agent_mesh/common/middleware/__init__.py +12 -0
  221. solace_agent_mesh/common/middleware/config_resolver.py +130 -0
  222. solace_agent_mesh/common/middleware/middleware_llm.txt +174 -0
  223. solace_agent_mesh/common/middleware/registry.py +125 -0
  224. solace_agent_mesh/common/server/__init__.py +4 -0
  225. solace_agent_mesh/common/server/server.py +122 -0
  226. solace_agent_mesh/common/server/server_llm.txt +169 -0
  227. solace_agent_mesh/common/server/task_manager.py +291 -0
  228. solace_agent_mesh/common/server/utils.py +28 -0
  229. solace_agent_mesh/common/services/__init__.py +4 -0
  230. solace_agent_mesh/common/services/employee_service.py +162 -0
  231. solace_agent_mesh/common/services/identity_service.py +129 -0
  232. solace_agent_mesh/common/services/providers/__init__.py +4 -0
  233. solace_agent_mesh/common/services/providers/local_file_identity_service.py +148 -0
  234. solace_agent_mesh/common/services/providers/providers_llm.txt +113 -0
  235. solace_agent_mesh/common/services/services_llm.txt +132 -0
  236. solace_agent_mesh/common/types.py +411 -0
  237. solace_agent_mesh/common/utils/__init__.py +7 -0
  238. solace_agent_mesh/common/utils/asyncio_macos_fix.py +86 -0
  239. solace_agent_mesh/common/utils/embeds/__init__.py +33 -0
  240. solace_agent_mesh/common/utils/embeds/constants.py +55 -0
  241. solace_agent_mesh/common/utils/embeds/converter.py +452 -0
  242. solace_agent_mesh/common/utils/embeds/embeds_llm.txt +124 -0
  243. solace_agent_mesh/common/utils/embeds/evaluators.py +394 -0
  244. solace_agent_mesh/common/utils/embeds/modifiers.py +816 -0
  245. solace_agent_mesh/common/utils/embeds/resolver.py +865 -0
  246. solace_agent_mesh/common/utils/embeds/types.py +14 -0
  247. solace_agent_mesh/common/utils/in_memory_cache.py +108 -0
  248. solace_agent_mesh/common/utils/log_formatters.py +44 -0
  249. solace_agent_mesh/common/utils/mime_helpers.py +106 -0
  250. solace_agent_mesh/common/utils/push_notification_auth.py +134 -0
  251. solace_agent_mesh/common/utils/utils_llm.txt +67 -0
  252. solace_agent_mesh/config_portal/backend/common.py +66 -24
  253. solace_agent_mesh/config_portal/backend/plugin_catalog/constants.py +23 -0
  254. solace_agent_mesh/config_portal/backend/plugin_catalog/models.py +49 -0
  255. solace_agent_mesh/config_portal/backend/plugin_catalog/registry_manager.py +160 -0
  256. solace_agent_mesh/config_portal/backend/plugin_catalog/scraper.py +525 -0
  257. solace_agent_mesh/config_portal/backend/plugin_catalog_server.py +216 -0
  258. solace_agent_mesh/config_portal/backend/server.py +550 -140
  259. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-DNxCwAGB.js +48 -0
  260. solace_agent_mesh/config_portal/frontend/static/client/assets/components-B7lKcHVY.js +140 -0
  261. solace_agent_mesh/config_portal/frontend/static/client/assets/{entry.client-DX1misIU.js → entry.client-CEumGClk.js} +3 -3
  262. solace_agent_mesh/config_portal/frontend/static/client/assets/index-DSo1AH_7.js +68 -0
  263. solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-d2b54a97.js +1 -0
  264. solace_agent_mesh/config_portal/frontend/static/client/assets/{root-BApq5dPK.js → root-C4XmHinv.js} +2 -2
  265. solace_agent_mesh/config_portal/frontend/static/client/assets/root-DxRwaWiE.css +1 -0
  266. solace_agent_mesh/config_portal/frontend/static/client/index.html +3 -3
  267. solace_agent_mesh/core_a2a/__init__.py +1 -0
  268. solace_agent_mesh/core_a2a/core_a2a_llm.txt +88 -0
  269. solace_agent_mesh/core_a2a/service.py +331 -0
  270. solace_agent_mesh/evaluation/config_loader.py +657 -0
  271. solace_agent_mesh/evaluation/evaluator.py +667 -0
  272. solace_agent_mesh/evaluation/message_organizer.py +568 -0
  273. solace_agent_mesh/evaluation/report/benchmark_info.html +35 -0
  274. solace_agent_mesh/evaluation/report/chart_section.html +141 -0
  275. solace_agent_mesh/evaluation/report/detailed_breakdown.html +28 -0
  276. solace_agent_mesh/evaluation/report/modal.html +59 -0
  277. solace_agent_mesh/evaluation/report/modal_chart_functions.js +411 -0
  278. solace_agent_mesh/evaluation/report/modal_script.js +296 -0
  279. solace_agent_mesh/evaluation/report/modal_styles.css +340 -0
  280. solace_agent_mesh/evaluation/report/performance_metrics_styles.css +93 -0
  281. solace_agent_mesh/evaluation/report/templates/footer.html +2 -0
  282. solace_agent_mesh/evaluation/report/templates/header.html +340 -0
  283. solace_agent_mesh/evaluation/report_data_processor.py +972 -0
  284. solace_agent_mesh/evaluation/report_generator.py +613 -0
  285. solace_agent_mesh/evaluation/run.py +613 -0
  286. solace_agent_mesh/evaluation/subscriber.py +872 -0
  287. solace_agent_mesh/evaluation/summary_builder.py +775 -0
  288. solace_agent_mesh/evaluation/test_case_loader.py +714 -0
  289. solace_agent_mesh/gateway/base/__init__.py +1 -0
  290. solace_agent_mesh/gateway/base/app.py +266 -0
  291. solace_agent_mesh/gateway/base/base_llm.txt +119 -0
  292. solace_agent_mesh/gateway/base/component.py +1542 -0
  293. solace_agent_mesh/gateway/base/task_context.py +74 -0
  294. solace_agent_mesh/gateway/gateway_llm.txt +125 -0
  295. solace_agent_mesh/gateway/http_sse/app.py +190 -0
  296. solace_agent_mesh/gateway/http_sse/component.py +1602 -0
  297. solace_agent_mesh/gateway/http_sse/components/__init__.py +7 -0
  298. solace_agent_mesh/gateway/http_sse/components/components_llm.txt +65 -0
  299. solace_agent_mesh/gateway/http_sse/components/visualization_forwarder_component.py +108 -0
  300. solace_agent_mesh/gateway/http_sse/dependencies.py +316 -0
  301. solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +63 -0
  302. solace_agent_mesh/gateway/http_sse/main.py +442 -0
  303. solace_agent_mesh/gateway/http_sse/routers/__init__.py +4 -0
  304. solace_agent_mesh/gateway/http_sse/routers/agents.py +41 -0
  305. solace_agent_mesh/gateway/http_sse/routers/artifacts.py +821 -0
  306. solace_agent_mesh/gateway/http_sse/routers/auth.py +212 -0
  307. solace_agent_mesh/gateway/http_sse/routers/config.py +55 -0
  308. solace_agent_mesh/gateway/http_sse/routers/people.py +69 -0
  309. solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +37 -0
  310. solace_agent_mesh/gateway/http_sse/routers/sessions.py +80 -0
  311. solace_agent_mesh/gateway/http_sse/routers/sse.py +138 -0
  312. solace_agent_mesh/gateway/http_sse/routers/tasks.py +294 -0
  313. solace_agent_mesh/gateway/http_sse/routers/users.py +59 -0
  314. solace_agent_mesh/gateway/http_sse/routers/visualization.py +1131 -0
  315. solace_agent_mesh/gateway/http_sse/services/__init__.py +4 -0
  316. solace_agent_mesh/gateway/http_sse/services/agent_service.py +69 -0
  317. solace_agent_mesh/gateway/http_sse/services/people_service.py +158 -0
  318. solace_agent_mesh/gateway/http_sse/services/services_llm.txt +179 -0
  319. solace_agent_mesh/gateway/http_sse/services/task_service.py +121 -0
  320. solace_agent_mesh/gateway/http_sse/session_manager.py +187 -0
  321. solace_agent_mesh/gateway/http_sse/sse_manager.py +328 -0
  322. solace_agent_mesh/llm.txt +228 -0
  323. solace_agent_mesh/llm_detail.txt +2835 -0
  324. solace_agent_mesh/templates/agent_template.yaml +53 -0
  325. solace_agent_mesh/templates/eval_backend_template.yaml +54 -0
  326. solace_agent_mesh/templates/gateway_app_template.py +73 -0
  327. solace_agent_mesh/templates/gateway_component_template.py +400 -0
  328. solace_agent_mesh/templates/gateway_config_template.yaml +43 -0
  329. solace_agent_mesh/templates/main_orchestrator.yaml +55 -0
  330. solace_agent_mesh/templates/plugin_agent_config_template.yaml +122 -0
  331. solace_agent_mesh/templates/plugin_custom_config_template.yaml +27 -0
  332. solace_agent_mesh/templates/plugin_custom_template.py +10 -0
  333. solace_agent_mesh/templates/plugin_gateway_config_template.yaml +63 -0
  334. solace_agent_mesh/templates/plugin_pyproject_template.toml +33 -0
  335. solace_agent_mesh/templates/plugin_readme_template.md +34 -0
  336. solace_agent_mesh/templates/plugin_tools_template.py +224 -0
  337. solace_agent_mesh/templates/shared_config.yaml +66 -0
  338. solace_agent_mesh/templates/templates_llm.txt +147 -0
  339. solace_agent_mesh/templates/webui.yaml +53 -0
  340. solace_agent_mesh-1.0.1.dist-info/METADATA +432 -0
  341. solace_agent_mesh-1.0.1.dist-info/RECORD +359 -0
  342. solace_agent_mesh-1.0.1.dist-info/entry_points.txt +3 -0
  343. {solace_agent_mesh-0.2.3.dist-info → solace_agent_mesh-1.0.1.dist-info}/licenses/LICENSE +1 -1
  344. solace_agent_mesh/agents/base_agent_component.py +0 -226
  345. solace_agent_mesh/agents/global/actions/agent_state_change.py +0 -54
  346. solace_agent_mesh/agents/global/actions/clear_history.py +0 -32
  347. solace_agent_mesh/agents/global/actions/convert_file_to_markdown.py +0 -160
  348. solace_agent_mesh/agents/global/actions/create_file.py +0 -70
  349. solace_agent_mesh/agents/global/actions/error_action.py +0 -45
  350. solace_agent_mesh/agents/global/actions/plantuml_diagram.py +0 -163
  351. solace_agent_mesh/agents/global/actions/plotly_graph.py +0 -152
  352. solace_agent_mesh/agents/global/actions/retrieve_file.py +0 -51
  353. solace_agent_mesh/agents/global/global_agent_component.py +0 -38
  354. solace_agent_mesh/agents/image_processing/actions/create_image.py +0 -75
  355. solace_agent_mesh/agents/image_processing/actions/describe_image.py +0 -115
  356. solace_agent_mesh/agents/image_processing/image_processing_agent_component.py +0 -23
  357. solace_agent_mesh/agents/slack/__init__.py +0 -1
  358. solace_agent_mesh/agents/slack/actions/__init__.py +0 -1
  359. solace_agent_mesh/agents/slack/actions/post_message.py +0 -177
  360. solace_agent_mesh/agents/slack/slack_agent_component.py +0 -59
  361. solace_agent_mesh/agents/web_request/actions/do_image_search.py +0 -84
  362. solace_agent_mesh/agents/web_request/actions/do_news_search.py +0 -47
  363. solace_agent_mesh/agents/web_request/actions/do_suggestion_search.py +0 -34
  364. solace_agent_mesh/agents/web_request/actions/do_web_request.py +0 -135
  365. solace_agent_mesh/agents/web_request/actions/download_file.py +0 -69
  366. solace_agent_mesh/agents/web_request/web_request_agent_component.py +0 -33
  367. solace_agent_mesh/assets/web-visualizer/assets/index-D0qORgkg.css +0 -1
  368. solace_agent_mesh/assets/web-visualizer/assets/index-DnDr1pnu.js +0 -109
  369. solace_agent_mesh/assets/web-visualizer/index.html +0 -14
  370. solace_agent_mesh/assets/web-visualizer/vite.svg +0 -1
  371. solace_agent_mesh/cli/commands/add/__init__.py +0 -3
  372. solace_agent_mesh/cli/commands/add/add.py +0 -88
  373. solace_agent_mesh/cli/commands/add/agent.py +0 -110
  374. solace_agent_mesh/cli/commands/add/copy_from_plugin.py +0 -92
  375. solace_agent_mesh/cli/commands/add/gateway.py +0 -374
  376. solace_agent_mesh/cli/commands/build.py +0 -670
  377. solace_agent_mesh/cli/commands/chat/__init__.py +0 -3
  378. solace_agent_mesh/cli/commands/chat/chat.py +0 -361
  379. solace_agent_mesh/cli/commands/config.py +0 -29
  380. solace_agent_mesh/cli/commands/init/__init__.py +0 -3
  381. solace_agent_mesh/cli/commands/init/ai_provider_step.py +0 -93
  382. solace_agent_mesh/cli/commands/init/broker_step.py +0 -99
  383. solace_agent_mesh/cli/commands/init/builtin_agent_step.py +0 -83
  384. solace_agent_mesh/cli/commands/init/check_if_already_done.py +0 -13
  385. solace_agent_mesh/cli/commands/init/create_config_file_step.py +0 -65
  386. solace_agent_mesh/cli/commands/init/create_other_project_files_step.py +0 -147
  387. solace_agent_mesh/cli/commands/init/file_service_step.py +0 -73
  388. solace_agent_mesh/cli/commands/init/init.py +0 -92
  389. solace_agent_mesh/cli/commands/init/project_structure_step.py +0 -16
  390. solace_agent_mesh/cli/commands/init/web_init_step.py +0 -32
  391. solace_agent_mesh/cli/commands/plugin/__init__.py +0 -3
  392. solace_agent_mesh/cli/commands/plugin/add.py +0 -100
  393. solace_agent_mesh/cli/commands/plugin/build.py +0 -268
  394. solace_agent_mesh/cli/commands/plugin/create.py +0 -117
  395. solace_agent_mesh/cli/commands/plugin/plugin.py +0 -124
  396. solace_agent_mesh/cli/commands/plugin/remove.py +0 -73
  397. solace_agent_mesh/cli/commands/run.py +0 -68
  398. solace_agent_mesh/cli/commands/visualizer.py +0 -138
  399. solace_agent_mesh/cli/config.py +0 -85
  400. solace_agent_mesh/common/action.py +0 -91
  401. solace_agent_mesh/common/action_list.py +0 -37
  402. solace_agent_mesh/common/action_response.py +0 -340
  403. solace_agent_mesh/common/mysql_database.py +0 -40
  404. solace_agent_mesh/common/postgres_database.py +0 -85
  405. solace_agent_mesh/common/prompt_templates.py +0 -28
  406. solace_agent_mesh/common/stimulus_utils.py +0 -152
  407. solace_agent_mesh/common/time.py +0 -24
  408. solace_agent_mesh/common/utils.py +0 -712
  409. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-DMmCawWe.js +0 -42
  410. solace_agent_mesh/config_portal/frontend/static/client/assets/components-ZIfdTbrV.js +0 -191
  411. solace_agent_mesh/config_portal/frontend/static/client/assets/index-BJHAE5s4.js +0 -17
  412. solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-dd988f05.js +0 -1
  413. solace_agent_mesh/config_portal/frontend/static/client/assets/root-DX4gQ516.css +0 -1
  414. solace_agent_mesh/configs/agent_global.yaml +0 -74
  415. solace_agent_mesh/configs/agent_image_processing.yaml +0 -82
  416. solace_agent_mesh/configs/agent_slack.yaml +0 -64
  417. solace_agent_mesh/configs/agent_web_request.yaml +0 -75
  418. solace_agent_mesh/configs/conversation_to_file.yaml +0 -56
  419. solace_agent_mesh/configs/error_catcher.yaml +0 -56
  420. solace_agent_mesh/configs/monitor.yaml +0 -0
  421. solace_agent_mesh/configs/monitor_stim_and_errors_to_slack.yaml +0 -109
  422. solace_agent_mesh/configs/monitor_user_feedback.yaml +0 -58
  423. solace_agent_mesh/configs/orchestrator.yaml +0 -241
  424. solace_agent_mesh/configs/service_embedding.yaml +0 -81
  425. solace_agent_mesh/configs/service_llm.yaml +0 -265
  426. solace_agent_mesh/configs/visualize_websocket.yaml +0 -55
  427. solace_agent_mesh/gateway/components/gateway_base.py +0 -47
  428. solace_agent_mesh/gateway/components/gateway_input.py +0 -278
  429. solace_agent_mesh/gateway/components/gateway_output.py +0 -298
  430. solace_agent_mesh/gateway/identity/bamboohr_identity.py +0 -18
  431. solace_agent_mesh/gateway/identity/identity_base.py +0 -10
  432. solace_agent_mesh/gateway/identity/identity_provider.py +0 -60
  433. solace_agent_mesh/gateway/identity/no_identity.py +0 -9
  434. solace_agent_mesh/gateway/identity/passthru_identity.py +0 -9
  435. solace_agent_mesh/monitors/base_monitor_component.py +0 -26
  436. solace_agent_mesh/monitors/feedback/user_feedback_monitor.py +0 -75
  437. solace_agent_mesh/monitors/stim_and_errors/stim_and_error_monitor.py +0 -560
  438. solace_agent_mesh/orchestrator/__init__.py +0 -0
  439. solace_agent_mesh/orchestrator/action_manager.py +0 -237
  440. solace_agent_mesh/orchestrator/components/__init__.py +0 -0
  441. solace_agent_mesh/orchestrator/components/orchestrator_action_manager_timeout_component.py +0 -58
  442. solace_agent_mesh/orchestrator/components/orchestrator_action_response_component.py +0 -179
  443. solace_agent_mesh/orchestrator/components/orchestrator_register_component.py +0 -107
  444. solace_agent_mesh/orchestrator/components/orchestrator_stimulus_processor_component.py +0 -527
  445. solace_agent_mesh/orchestrator/components/orchestrator_streaming_output_component.py +0 -260
  446. solace_agent_mesh/orchestrator/orchestrator_main.py +0 -172
  447. solace_agent_mesh/orchestrator/orchestrator_prompt.py +0 -539
  448. solace_agent_mesh/services/__init__.py +0 -0
  449. solace_agent_mesh/services/authorization/providers/base_authorization_provider.py +0 -56
  450. solace_agent_mesh/services/bamboo_hr_service/__init__.py +0 -3
  451. solace_agent_mesh/services/bamboo_hr_service/bamboo_hr.py +0 -182
  452. solace_agent_mesh/services/common/__init__.py +0 -4
  453. solace_agent_mesh/services/common/auto_expiry.py +0 -45
  454. solace_agent_mesh/services/common/singleton.py +0 -18
  455. solace_agent_mesh/services/file_service/__init__.py +0 -14
  456. solace_agent_mesh/services/file_service/file_manager/__init__.py +0 -0
  457. solace_agent_mesh/services/file_service/file_manager/bucket_file_manager.py +0 -149
  458. solace_agent_mesh/services/file_service/file_manager/file_manager_base.py +0 -162
  459. solace_agent_mesh/services/file_service/file_manager/memory_file_manager.py +0 -64
  460. solace_agent_mesh/services/file_service/file_manager/volume_file_manager.py +0 -106
  461. solace_agent_mesh/services/file_service/file_service.py +0 -437
  462. solace_agent_mesh/services/file_service/file_service_constants.py +0 -54
  463. solace_agent_mesh/services/file_service/file_transformations.py +0 -141
  464. solace_agent_mesh/services/file_service/file_utils.py +0 -324
  465. solace_agent_mesh/services/file_service/transformers/__init__.py +0 -5
  466. solace_agent_mesh/services/history_service/__init__.py +0 -3
  467. solace_agent_mesh/services/history_service/history_providers/__init__.py +0 -0
  468. solace_agent_mesh/services/history_service/history_providers/base_history_provider.py +0 -54
  469. solace_agent_mesh/services/history_service/history_providers/file_history_provider.py +0 -74
  470. solace_agent_mesh/services/history_service/history_providers/index.py +0 -40
  471. solace_agent_mesh/services/history_service/history_providers/memory_history_provider.py +0 -33
  472. solace_agent_mesh/services/history_service/history_providers/mongodb_history_provider.py +0 -66
  473. solace_agent_mesh/services/history_service/history_providers/redis_history_provider.py +0 -66
  474. solace_agent_mesh/services/history_service/history_providers/sql_history_provider.py +0 -93
  475. solace_agent_mesh/services/history_service/history_service.py +0 -413
  476. solace_agent_mesh/services/history_service/long_term_memory/__init__.py +0 -0
  477. solace_agent_mesh/services/history_service/long_term_memory/long_term_memory.py +0 -399
  478. solace_agent_mesh/services/llm_service/components/llm_request_component.py +0 -340
  479. solace_agent_mesh/services/llm_service/components/llm_service_component_base.py +0 -152
  480. solace_agent_mesh/services/middleware_service/__init__.py +0 -0
  481. solace_agent_mesh/services/middleware_service/middleware_service.py +0 -20
  482. solace_agent_mesh/templates/action.py +0 -38
  483. solace_agent_mesh/templates/agent.py +0 -29
  484. solace_agent_mesh/templates/agent.yaml +0 -70
  485. solace_agent_mesh/templates/gateway-config-template.yaml +0 -6
  486. solace_agent_mesh/templates/gateway-default-config.yaml +0 -28
  487. solace_agent_mesh/templates/gateway-flows.yaml +0 -78
  488. solace_agent_mesh/templates/gateway-header.yaml +0 -16
  489. solace_agent_mesh/templates/gateway_base.py +0 -15
  490. solace_agent_mesh/templates/gateway_input.py +0 -98
  491. solace_agent_mesh/templates/gateway_output.py +0 -71
  492. solace_agent_mesh/templates/plugin-gateway-default-config.yaml +0 -29
  493. solace_agent_mesh/templates/plugin-pyproject.toml +0 -30
  494. solace_agent_mesh/templates/rest-api-default-config.yaml +0 -31
  495. solace_agent_mesh/templates/rest-api-flows.yaml +0 -81
  496. solace_agent_mesh/templates/slack-default-config.yaml +0 -16
  497. solace_agent_mesh/templates/slack-flows.yaml +0 -81
  498. solace_agent_mesh/templates/solace-agent-mesh-default.yaml +0 -86
  499. solace_agent_mesh/templates/solace-agent-mesh-plugin-default.yaml +0 -8
  500. solace_agent_mesh/templates/web-default-config.yaml +0 -10
  501. solace_agent_mesh/templates/web-flows.yaml +0 -76
  502. solace_agent_mesh/tools/__init__.py +0 -0
  503. solace_agent_mesh/tools/components/__init__.py +0 -0
  504. solace_agent_mesh/tools/components/conversation_formatter.py +0 -111
  505. solace_agent_mesh/tools/components/file_resolver_component.py +0 -58
  506. solace_agent_mesh/tools/config/runtime_config.py +0 -26
  507. solace_agent_mesh-0.2.3.dist-info/METADATA +0 -172
  508. solace_agent_mesh-0.2.3.dist-info/RECORD +0 -193
  509. solace_agent_mesh-0.2.3.dist-info/entry_points.txt +0 -3
  510. /solace_agent_mesh/{agents → agent}/__init__.py +0 -0
  511. /solace_agent_mesh/{agents/global → agent/adk}/__init__.py +0 -0
  512. /solace_agent_mesh/{agents/global/actions → agent/protocol}/__init__.py +0 -0
  513. /solace_agent_mesh/{agents/image_processing → agent/sac}/__init__.py +0 -0
  514. /solace_agent_mesh/{agents/image_processing/actions → agent/utils}/__init__.py +0 -0
  515. /solace_agent_mesh/{agents/web_request → config_portal/backend/plugin_catalog}/__init__.py +0 -0
  516. /solace_agent_mesh/{agents/web_request/actions → evaluation}/__init__.py +0 -0
  517. /solace_agent_mesh/gateway/{components → http_sse}/__init__.py +0 -0
  518. {solace_agent_mesh-0.2.3.dist-info → solace_agent_mesh-1.0.1.dist-info}/WHEEL +0 -0
@@ -1,138 +0,0 @@
1
- import os
2
- import http.server
3
- import socketserver
4
- import socket
5
- import click
6
- import json
7
-
8
- from cli.utils import get_cli_root_dir, log_error
9
-
10
-
11
- def get_local_ip():
12
- """Get the local IP address of the machine."""
13
- s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
14
- try:
15
- # Connect to an external address, doesn't send any packets, just determines IP
16
- s.connect(("8.8.8.8", 80))
17
- ip = s.getsockname()[0]
18
- except Exception:
19
- ip = "localhost"
20
- finally:
21
- s.close()
22
- return ip
23
-
24
-
25
- def get_wss_url(url: str) -> str:
26
- """Get the WSS URL from a WS URL."""
27
- if url.startswith("ws://") or url.startswith("wss://"):
28
- return url
29
- elif url.startswith("tcp://"):
30
- url = url.replace("tcp://", "ws://")
31
- # Change port to 443
32
- if len(url.split(":")) > 1:
33
- url = url.split(":")
34
- url[-1] = "443"
35
- url = ":".join(url)
36
- elif url.startswith("tcps://"):
37
- url = url.replace("tcps://", "wss://")
38
- # Change port to 443
39
- if len(url.split(":")) > 1:
40
- url = url.split(":")
41
- url[-1] = "443"
42
- url = ":".join(url)
43
- return url
44
-
45
-
46
- def visualizer_command(port, find_unused_port=False, host=False, use_env=False):
47
- """Runs a GUI web-based visualizer for inspecting events inside the solace agent mesh."""
48
- config = click.get_current_context().obj["solace_agent_mesh"]
49
- if use_env:
50
- try:
51
- from dotenv import load_dotenv
52
-
53
- env_file = config["env_file"]
54
- load_dotenv(env_file, override=True)
55
- except ImportError:
56
- log_error(
57
- "Failed to import dotenv. Please install it using 'pip install python-dotenv'"
58
- )
59
- return 1
60
- except Exception as e:
61
- log_error(f"Failed to load environment variables. {e}")
62
- return 1
63
-
64
- visualizer_directory = os.path.join(get_cli_root_dir(), "assets", "web-visualizer")
65
- # Check if the visualizer directory exists
66
- if not os.path.exists(visualizer_directory):
67
- visualizer_directory = os.path.join(
68
- get_cli_root_dir(), "web-visualizer", "dist"
69
- )
70
- if not os.path.exists(visualizer_directory):
71
- log_error("Error: Built Web-Visualizer directory not found.")
72
- return 1
73
-
74
- # Find an unused port if the specified port is in use
75
- while True:
76
- # Check if port is available
77
- try:
78
- with socketserver.TCPServer(("localhost", port), None) as s:
79
- pass
80
- except OSError:
81
- log_error(f"Error: Port {port} is already in use.")
82
- if find_unused_port:
83
- port += 1
84
- click.echo(f"Trying port {port}...")
85
- continue
86
- else:
87
- return 1
88
- break
89
-
90
- # Change the current working directory to the visualizer directory
91
- os.chdir(visualizer_directory)
92
-
93
- # Write the Solace broker configuration to a file for client pickup
94
- config = {
95
- "url": get_wss_url(os.getenv("SOLACE_BROKER_URL", "")),
96
- "username": os.getenv("SOLACE_BROKER_USERNAME", ""),
97
- "password": os.getenv("SOLACE_BROKER_PASSWORD", ""),
98
- "vpn": os.getenv("SOLACE_BROKER_VPN", ""),
99
- "namespace": os.getenv("SOLACE_AGENT_MESH_NAMESPACE", ""),
100
- }
101
- with open("config.json", "w") as f:
102
- json.dump(config, f)
103
-
104
- # Set up a handler to serve files from the specified directory
105
- handler = http.server.SimpleHTTPRequestHandler
106
-
107
- # Determine the host binding
108
- if host:
109
- # Bind to '0.0.0.0' to expose to the network
110
- bind_address = "0.0.0.0"
111
- local_ip = get_local_ip() # Get local network IP address
112
- else:
113
- # Bind to 'localhost' to restrict access to the local machine
114
- bind_address = "localhost"
115
- local_ip = "localhost"
116
-
117
- # Start the server
118
- with socketserver.TCPServer((bind_address, port), handler) as httpd:
119
- click.echo(f"Serving solace-agent-mesh web-visualizer.")
120
- click.echo(
121
- click.style(f"\tLocal: http://localhost:{port}", bold=True, fg="blue")
122
- )
123
- click.echo(
124
- click.style(
125
- "\tNetwork: "
126
- + (f"http://{local_ip}:{port}" if host else "use --host to expose"),
127
- bold=True,
128
- fg="blue",
129
- )
130
- )
131
- click.echo("Press Ctrl+C to stop the server.")
132
- try:
133
- httpd.serve_forever()
134
- except KeyboardInterrupt:
135
- click.echo("Shutting down server.")
136
- httpd.shutdown()
137
- finally:
138
- os.remove("config.json")
@@ -1,85 +0,0 @@
1
- import os
2
- from ruamel.yaml import YAML
3
-
4
- # Initialize a YAML object
5
- yaml = YAML()
6
- yaml.preserve_quotes = True # To preserve quotes in the YAML
7
-
8
- from cli.utils import merge_dicts, load_template, remove_duplicate
9
-
10
-
11
- class Config:
12
- default_config_file = "solace-agent-mesh-default.yaml"
13
- user_config_file = "solace-agent-mesh.yaml"
14
- user_plugin_config_file = "solace-agent-mesh-plugin.yaml"
15
- default_plugin_config_file = "solace-agent-mesh-plugin-default.yaml"
16
-
17
- @staticmethod
18
- def get_default_config():
19
- loaded_config = load_template(Config.default_config_file)
20
- return yaml.load(loaded_config)
21
-
22
- @staticmethod
23
- def get_default_plugin_config():
24
- loaded_config = load_template(Config.default_plugin_config_file)
25
- return yaml.load(loaded_config)
26
-
27
- @staticmethod
28
- def get_user_config(config_file=None):
29
- config_file_path = config_file or Config.user_config_file
30
- if os.path.exists(config_file_path):
31
- with open(config_file_path, "r", encoding="utf-8") as f:
32
- return yaml.load(f) or {}
33
- return {}
34
-
35
- @staticmethod
36
- def get_user_plugin_config(config_file=None):
37
- config_file_path = config_file or Config.user_plugin_config_file
38
- if os.path.exists(config_file_path):
39
- with open(config_file_path, "r", encoding="utf-8") as f:
40
- return yaml.load(f) or {}
41
- return {}
42
-
43
- @staticmethod
44
- def get_config(config_file=None):
45
- user_config = Config.get_user_config(config_file)
46
- default_config = Config.get_default_config()
47
- # Merge user config with default config
48
- merged_config = merge_dicts(default_config, user_config)
49
- merged_config["solace_agent_mesh"]["built_in"]["agents"] = remove_duplicate(
50
- merged_config["solace_agent_mesh"]["built_in"]["agents"],
51
- lambda agent: agent.get("name"),
52
- )
53
- return merged_config
54
-
55
- @staticmethod
56
- def get_plugin_config(config_file=None):
57
- user_config = Config.get_user_plugin_config(config_file)
58
- default_config = Config.get_default_plugin_config()
59
- # Merge user config with default config
60
- merged_config = merge_dicts(default_config, user_config)
61
- return merged_config
62
-
63
- @staticmethod
64
- def is_plugin_project():
65
- return os.path.exists(Config.user_plugin_config_file)
66
-
67
- @staticmethod
68
- @staticmethod
69
- def write_config(config, path=None):
70
- if not path:
71
- path = Config.user_config_file
72
- with open(path, "w", encoding="utf-8") as f:
73
- yaml.dump(config, f)
74
-
75
- @staticmethod
76
- def load_config(path=None):
77
- if not path:
78
- path = Config.user_config_file
79
- if os.path.exists(path):
80
- with open(path, "r", encoding="utf-8") as f:
81
- return yaml.load(f)
82
-
83
- @staticmethod
84
- def get_yaml_parser():
85
- return yaml.load
@@ -1,91 +0,0 @@
1
- from abc import ABC, abstractmethod
2
-
3
- from .action_response import ActionResponse
4
-
5
-
6
- class Action(ABC):
7
-
8
- def __init__(self, attributes, agent=None, config_fn=None, **kwargs):
9
- self.validate_attributes(attributes)
10
- self.long_description = attributes.get(
11
- "long_description", attributes.get("prompt_directive", "<unspecified>")
12
- )
13
- self._prompt_directive = attributes.get("prompt_directive")
14
- self._name = attributes.get("name")
15
- self._params = attributes.get("params")
16
- self._disabled = attributes.get("disabled", False)
17
- self._examples = attributes.get("examples", [])
18
- self._required_scopes = attributes.get("required_scopes", [])
19
- self._config_fn = config_fn
20
- self.agent = agent
21
- self.kwargs = kwargs
22
-
23
- @property
24
- def name(self):
25
- return self._name
26
-
27
- @property
28
- def disabled(self):
29
- return self._disabled
30
-
31
- @property
32
- def examples(self):
33
- return self._examples
34
-
35
- @property
36
- def required_scopes(self):
37
- return self._required_scopes
38
-
39
- def set_agent(self, agent):
40
- self.agent = agent
41
-
42
- def fix_scopes(self, search_value, replace_value):
43
- self._required_scopes = [
44
- scope.replace(search_value, replace_value)
45
- for scope in self._required_scopes
46
- ]
47
-
48
- def get_agent(self):
49
- return self.agent
50
-
51
- def set_config_fn(self, config_fn):
52
- self._config_fn = config_fn
53
-
54
- def get_config(self, key=None, default=None):
55
- if self._config_fn:
56
- return self._config_fn(key, default)
57
- return default
58
-
59
- def get_prompt_summary(self, prefix="") -> dict:
60
- if self.disabled:
61
- return None
62
- summary = {}
63
- action_name = self._name
64
- summary[action_name] = {
65
- "desc": self._prompt_directive,
66
- "params": [f"{param['name']} ({param['desc']})" for param in self._params],
67
- "examples": self._examples,
68
- "required_scopes": self._required_scopes,
69
- }
70
- return summary
71
-
72
- def validate_attributes(self, attributes):
73
- if not attributes.get("name"):
74
- raise ValueError("Actions must have a name")
75
- if not attributes.get("prompt_directive"):
76
- raise ValueError("Actions must have a prompt_directive")
77
- if attributes.get("params"):
78
- params = attributes.get("params")
79
- for param in params:
80
- if not param.get("name"):
81
- raise ValueError(
82
- "Action attributes params must have a descriptive name"
83
- )
84
- if not param.get("desc"):
85
- raise ValueError("Action attributes params must have a description")
86
- if not param.get("type"):
87
- raise ValueError("Action attributes params must have a type")
88
-
89
- @abstractmethod
90
- def invoke(self, params, meta={}) -> ActionResponse:
91
- raise NotImplementedError("Invoke method must be implemented in subclass")
@@ -1,37 +0,0 @@
1
- from .action import Action
2
-
3
-
4
- class ActionList:
5
-
6
- def __init__(self, actions_classes, **kwargs):
7
- self.actions: Action = []
8
- self.actions_map = {}
9
- for action_class in actions_classes:
10
- action = action_class(**kwargs)
11
- self.actions.append(action)
12
- self.actions_map[action.name] = action
13
-
14
- def add_action(self, action):
15
- self.actions.append(action)
16
- self.actions_map[action.name] = action
17
-
18
- def set_agent(self, agent):
19
- for action in self.actions:
20
- action.set_agent(agent)
21
-
22
- def fix_scopes(self, search_value, replace_value):
23
- for action in self.actions:
24
- action.fix_scopes(search_value, replace_value)
25
-
26
- def set_config_fn(self, config_fn):
27
- for action in self.actions:
28
- action.set_config_fn(config_fn)
29
-
30
- def get_prompt_summary(self, prefix="") -> dict:
31
- summary = []
32
- for action in self.actions:
33
- summary.append(action.get_prompt_summary(prefix))
34
- return summary
35
-
36
- def get_action(self, name):
37
- return self.actions_map.get(name)
@@ -1,340 +0,0 @@
1
- """This is the definition of responses for the actions of the system."""
2
-
3
- from typing import Optional
4
-
5
-
6
- class RagMatch:
7
-
8
- def __init__(self, text: str, link: str = None, heading: str = None):
9
- self._text: str = text
10
- self._link: str = link
11
- self._heading: str = heading
12
-
13
- @property
14
- def text(self) -> str:
15
- return self._text
16
-
17
- @property
18
- def link(self) -> str:
19
- return self._link
20
-
21
- @property
22
- def heading(self) -> str:
23
- return self._headings
24
-
25
- def to_dict(self) -> dict:
26
- return {
27
- "text": self._text,
28
- "link": self._link,
29
- "heading": self._heading,
30
- }
31
-
32
-
33
- class InlineFile:
34
-
35
- def __init__(self, content: str, name: str, **kwargs):
36
- if type(content) != str:
37
- raise ValueError("InlineFile content must be a string")
38
- self._content: str = content
39
- self._name: str = name
40
- self._kwargs: dict = kwargs
41
-
42
- @property
43
- def content(self) -> str:
44
- return self._content
45
-
46
- @property
47
- def name(self) -> str:
48
- return self._name
49
-
50
- @property
51
- def kwargs(self) -> dict:
52
- return self._kwargs
53
-
54
- def to_dict(self) -> dict:
55
- return {
56
- "data": self._content,
57
- "name": self._name,
58
- "file_size": len(self._content.encode()),
59
- "mime_type": "text/plain",
60
- **self._kwargs,
61
- }
62
-
63
-
64
- class WithContextQuery:
65
-
66
- def __init__(
67
- self, query: str, context_type: str, context: str = None, since: str = None
68
- ):
69
- self._query: str = query
70
- self._context_type: str = context_type
71
- self._context: str = context
72
- self._since: str = since
73
-
74
- @property
75
- def query(self) -> str:
76
- return self._query
77
-
78
- @property
79
- def context(self) -> str:
80
- return self._context
81
-
82
- @property
83
- def context_type(self) -> str:
84
- return self._context_type
85
-
86
- @property
87
- def since(self) -> dict:
88
- return self._since
89
-
90
- def to_dict(self) -> dict:
91
- return {
92
- "query": self._query,
93
- "context_type": self._context_type,
94
- "context": self._context,
95
- "since": self._since,
96
- }
97
-
98
-
99
- class RagResponse:
100
-
101
- def __init__(
102
- self, data_source: str, matches: list[RagMatch], query: str, prompt: str = None
103
- ):
104
- self._data_source: str = data_source
105
- self._matches: list[RagMatch] = matches
106
- self._query: str = query
107
- self._prompt: str = prompt
108
-
109
- @property
110
- def data_source(self) -> str:
111
- return self._data_source
112
-
113
- @property
114
- def matches(self) -> list[RagMatch]:
115
- return self._matches
116
-
117
- @property
118
- def query(self) -> str:
119
- return self._query
120
-
121
- @property
122
- def prompt(self) -> str:
123
- return self._prompt
124
-
125
- def to_dict(self) -> dict:
126
- return {
127
- "data_source": self._data_source,
128
- "matches": [match.to_dict() for match in self._matches],
129
- "query": self._query,
130
- "prompt": self._prompt,
131
- }
132
-
133
-
134
- class AgentStateChange:
135
-
136
- def __init__(self, agent_name: str, new_state: str):
137
- self._agent_name: str = agent_name
138
- self._new_state: str = new_state
139
-
140
- @property
141
- def agent_name(self) -> str:
142
- return self._agent_name
143
-
144
- @property
145
- def new_state(self) -> str:
146
- return self._new_state
147
-
148
- def to_dict(self) -> dict:
149
- return {"agent_name": self._agent_name, "new_state": self._new_state}
150
-
151
-
152
- class ErrorInfo:
153
-
154
- def __init__(self, error_message: str):
155
- self._error_message: str = error_message
156
-
157
- @property
158
- def error_message(self) -> str:
159
- return self._error_message
160
-
161
- def __str__(self) -> str:
162
- return self._error_message
163
-
164
- def to_dict(self) -> dict:
165
- return {"error_message": self._error_message}
166
-
167
-
168
- class ActionResponse:
169
-
170
- def __init__(
171
- self,
172
- message: any = None,
173
- files: list[str] = None,
174
- inline_files: list[InlineFile] = None,
175
- clear_history: bool = False,
176
- history_depth_to_keep: int = None,
177
- error_info: ErrorInfo = None,
178
- agent_state_change: AgentStateChange = None,
179
- invoke_model_again: bool = False,
180
- context_query: WithContextQuery = None,
181
- is_async: bool = False,
182
- async_response_id: str = None,
183
- ):
184
- # Message to return - this could be a string or a slack blocks message
185
- self._message: str = message
186
- # Files to return - this is a list of temporary files to return
187
- self._files: list[str] = files
188
- # Inline files to return - this is a list of inline files to return
189
- self._inline_files: list[InlineFile] = inline_files
190
- # Clear history - this is a flag to clear the chat history
191
- self._clear_history: bool = clear_history
192
- # Clear history but keep depth - this is a flag to clear the chat history but keep
193
- # the last N messages
194
- self._history_depth_to_keep: int = history_depth_to_keep
195
- # Error info - this is a dictionary of error information (error_message)
196
- self._error_info: ErrorInfo = error_info
197
- # Agent state change - this is a dictionary of agent state change
198
- # information (agent_name, new_state)
199
- self._agent_state_change: AgentStateChange = agent_state_change
200
- # Invoke model again - this is a flag to indicate if the model should be
201
- # invoked again with the same input
202
- self._invoke_model_again: bool = invoke_model_again
203
- # Context query - this contains the query and context type to be used in the next action
204
- self._context_query: WithContextQuery = context_query
205
- # action_list_id - identifier of the action_list that this action response is associated with
206
- self._action_list_id: str = None
207
- # action_idx - index of the action in the action_list that this action response is associated with
208
- self._action_idx: int = None
209
- # action_name - name of the action that this action response is associated with
210
- self._action_name: str = None
211
- # action_params - parameters of the action that this action response is associated with
212
- self._action_params: dict = None
213
- # is_async - indicates if this is an async response that will be delivered later
214
- self._is_async: bool = is_async
215
- # async_response_id - unique identifier for correlating async responses
216
- self._async_response_id: str = async_response_id
217
- # originator - the component that originated the action request
218
- self._originator: Optional[str] = None
219
-
220
- @property
221
- def message(self) -> any:
222
- return self._message
223
-
224
- @message.setter
225
- def message(self, message: any):
226
- self._message = message
227
-
228
- @property
229
- def files(self) -> list[str]:
230
- return self._files
231
-
232
- @property
233
- def inline_files(self) -> list[InlineFile]:
234
- return self._inline_files
235
-
236
- @property
237
- def clear_history(self) -> bool:
238
- return self._clear_history
239
-
240
- @property
241
- def history_depth_to_keep(self) -> int:
242
- return self._history_depth_to_keep
243
-
244
- @property
245
- def error_info(self) -> dict:
246
- return self._error_info
247
-
248
- @property
249
- def agent_state_change(self) -> AgentStateChange:
250
- return self._agent_state_change
251
-
252
- @property
253
- def invoke_model_again(self) -> bool:
254
- return self._invoke_model_again
255
-
256
- @property
257
- def context_query(self) -> WithContextQuery:
258
- return self._context_query
259
-
260
- @property
261
- def action_list_id(self) -> str:
262
- return self._action_list_id
263
-
264
- @property
265
- def action_idx(self) -> int:
266
- return self._action_idx
267
-
268
- @property
269
- def action_name(self) -> str:
270
- return self._action_name
271
-
272
- @property
273
- def action_params(self) -> dict:
274
- return self._action_params
275
-
276
- @property
277
- def originator(self) -> dict:
278
- return self._originator
279
-
280
- @action_list_id.setter
281
- def action_list_id(self, action_list_id: str):
282
- self._action_list_id = action_list_id
283
-
284
- @action_idx.setter
285
- def action_idx(self, action_idx: int):
286
- self._action_idx = action_idx
287
-
288
- @action_name.setter
289
- def action_name(self, action_name: str):
290
- self._action_name = action_name
291
-
292
- @action_params.setter
293
- def action_params(self, action_params: dict):
294
- self._action_params = action_params
295
-
296
- @originator.setter
297
- def originator(self, originator: str):
298
- self._originator = originator
299
-
300
- @property
301
- def is_async(self) -> bool:
302
- return self._is_async
303
-
304
- @property
305
- def async_response_id(self) -> str:
306
- return self._async_response_id
307
-
308
- def to_dict(self) -> dict:
309
- response = {}
310
- if self._message:
311
- response["message"] = self._message
312
- if self._is_async:
313
- response["is_async"] = True
314
- response["async_response_id"] = self._async_response_id
315
- if self._files:
316
- # Files are already dictionary
317
- response["files"] = self._files
318
- if self._inline_files:
319
- # Add to the files list
320
- response["files"] = response.get("files", []) + [
321
- inline_file.to_dict() for inline_file in self._inline_files
322
- ]
323
- if self._clear_history:
324
- response["clear_history"] = self._clear_history
325
- if self._history_depth_to_keep:
326
- response["history_depth_to_keep"] = self._history_depth_to_keep
327
- if self._error_info:
328
- response["error_info"] = self._error_info.to_dict()
329
- if self._agent_state_change:
330
- response["agent_state_change"] = self._agent_state_change.to_dict()
331
- if self._invoke_model_again:
332
- response["invoke_model_again"] = self._invoke_model_again
333
- if self._context_query:
334
- response["context_query"] = self._context_query.to_dict()
335
- response["action_list_id"] = self._action_list_id
336
- response["action_idx"] = self._action_idx
337
- response["action_name"] = self._action_name
338
- response["action_params"] = self._action_params
339
- response["originator"] = self._originator
340
- return response