solace-agent-mesh 1.11.2__py3-none-any.whl → 1.12.0__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.
Files changed (308) hide show
  1. solace_agent_mesh/agent/adk/callbacks.py +177 -10
  2. solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +3 -0
  3. solace_agent_mesh/agent/adk/models/lite_llm.py +34 -16
  4. solace_agent_mesh/agent/adk/runner.py +66 -8
  5. solace_agent_mesh/agent/adk/setup.py +61 -26
  6. solace_agent_mesh/agent/protocol/event_handlers.py +48 -0
  7. solace_agent_mesh/agent/proxies/a2a/component.py +27 -0
  8. solace_agent_mesh/agent/sac/component.py +84 -2
  9. solace_agent_mesh/agent/tools/builtin_artifact_tools.py +41 -22
  10. solace_agent_mesh/agent/tools/peer_agent_tool.py +19 -12
  11. solace_agent_mesh/agent/tools/tool_config_types.py +21 -1
  12. solace_agent_mesh/agent/utils/artifact_helpers.py +54 -0
  13. solace_agent_mesh/assets/docs/404.html +3 -3
  14. solace_agent_mesh/assets/docs/assets/js/15ba94aa.e186750d.js +1 -0
  15. solace_agent_mesh/assets/docs/assets/js/240a0364.83e37aa8.js +1 -0
  16. solace_agent_mesh/assets/docs/assets/js/2e32b5e0.2f0db237.js +1 -0
  17. solace_agent_mesh/assets/docs/assets/js/3a6c6137.7e61915d.js +1 -0
  18. solace_agent_mesh/assets/docs/assets/js/{3ac1795d.28b7c67b.js → 3ac1795d.dc006e20.js} +1 -1
  19. solace_agent_mesh/assets/docs/assets/js/3ff0015d.f08618fb.js +1 -0
  20. solace_agent_mesh/assets/docs/assets/js/4667dc50.bf2ad456.js +1 -0
  21. solace_agent_mesh/assets/docs/assets/js/547e15cc.8e6da617.js +1 -0
  22. solace_agent_mesh/assets/docs/assets/js/5b8d9c11.d4eb37b8.js +1 -0
  23. solace_agent_mesh/assets/docs/assets/js/5c2bd65f.1ee87753.js +1 -0
  24. solace_agent_mesh/assets/docs/assets/js/64195356.09dbd087.js +1 -0
  25. solace_agent_mesh/assets/docs/assets/js/66d4869e.30340bd3.js +1 -0
  26. solace_agent_mesh/assets/docs/assets/js/729898df.7249e9fd.js +1 -0
  27. solace_agent_mesh/assets/docs/assets/js/7e294c01.7c5f6906.js +1 -0
  28. solace_agent_mesh/assets/docs/assets/js/8024126c.e3467286.js +1 -0
  29. solace_agent_mesh/assets/docs/assets/js/81a99df0.95be65d4.js +1 -0
  30. solace_agent_mesh/assets/docs/assets/js/9bb13469.4523ae20.js +1 -0
  31. solace_agent_mesh/assets/docs/assets/js/a7d42657.a956689d.js +1 -0
  32. solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e563275.js +1 -0
  33. solace_agent_mesh/assets/docs/assets/js/e04b235d.06d23db6.js +1 -0
  34. solace_agent_mesh/assets/docs/assets/js/e1b6eeb4.deb2b62e.js +1 -0
  35. solace_agent_mesh/assets/docs/assets/js/e6f9706b.acc800d3.js +1 -0
  36. solace_agent_mesh/assets/docs/assets/js/e92d0134.c147a429.js +1 -0
  37. solace_agent_mesh/assets/docs/assets/js/ee0c2fe7.94d0a351.js +1 -0
  38. solace_agent_mesh/assets/docs/assets/js/f284c35a.08fab659.js +1 -0
  39. solace_agent_mesh/assets/docs/assets/js/main.b241af3e.js +2 -0
  40. solace_agent_mesh/assets/docs/assets/js/runtime~main.4ca7d2e2.js +1 -0
  41. solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +4 -4
  42. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/artifact-management/index.html +4 -4
  43. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/audio-tools/index.html +4 -4
  44. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/data-analysis-tools/index.html +4 -4
  45. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/embeds/index.html +4 -4
  46. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/image-tools/index.html +81 -0
  47. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/index.html +14 -12
  48. solace_agent_mesh/assets/docs/docs/documentation/components/cli/index.html +30 -9
  49. solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +4 -4
  50. solace_agent_mesh/assets/docs/docs/documentation/components/index.html +6 -4
  51. solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +4 -4
  52. solace_agent_mesh/assets/docs/docs/documentation/components/platform-service/index.html +33 -0
  53. solace_agent_mesh/assets/docs/docs/documentation/components/plugins/index.html +4 -4
  54. solace_agent_mesh/assets/docs/docs/documentation/components/projects/index.html +4 -4
  55. solace_agent_mesh/assets/docs/docs/documentation/components/prompts/index.html +4 -4
  56. solace_agent_mesh/assets/docs/docs/documentation/components/proxies/index.html +4 -4
  57. solace_agent_mesh/assets/docs/docs/documentation/components/speech/index.html +4 -4
  58. solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +4 -4
  59. solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +5 -5
  60. solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +4 -4
  61. solace_agent_mesh/assets/docs/docs/documentation/deploying/{kubernetes-deployment → kubernetes}/index.html +6 -6
  62. solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes/kubernetes-deployment-guide/index.html +197 -0
  63. solace_agent_mesh/assets/docs/docs/documentation/deploying/logging/index.html +11 -6
  64. solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +4 -4
  65. solace_agent_mesh/assets/docs/docs/documentation/deploying/proxy_configuration/index.html +4 -4
  66. solace_agent_mesh/assets/docs/docs/documentation/developing/create-agents/index.html +4 -4
  67. solace_agent_mesh/assets/docs/docs/documentation/developing/create-gateways/index.html +4 -4
  68. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-python-tools/index.html +23 -5
  69. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +4 -4
  70. solace_agent_mesh/assets/docs/docs/documentation/developing/evaluations/index.html +4 -4
  71. solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +4 -4
  72. solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +4 -4
  73. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/bedrock-agents/index.html +4 -4
  74. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/custom-agent/index.html +4 -4
  75. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/event-mesh-gateway/index.html +4 -4
  76. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mcp-integration/index.html +17 -8
  77. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mongodb-integration/index.html +4 -4
  78. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rag-integration/index.html +4 -4
  79. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rest-gateway/index.html +4 -4
  80. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +4 -4
  81. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/sql-database/index.html +4 -4
  82. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/teams-integration/index.html +4 -4
  83. solace_agent_mesh/assets/docs/docs/documentation/enterprise/agent-builder/index.html +5 -5
  84. solace_agent_mesh/assets/docs/docs/documentation/enterprise/connectors/index.html +4 -4
  85. solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +4 -4
  86. solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +4 -4
  87. solace_agent_mesh/assets/docs/docs/documentation/enterprise/openapi-tools/index.html +4 -4
  88. solace_agent_mesh/assets/docs/docs/documentation/enterprise/rbac-setup-guide/index.html +4 -4
  89. solace_agent_mesh/assets/docs/docs/documentation/enterprise/secure-user-delegated-access/index.html +4 -4
  90. solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +4 -4
  91. solace_agent_mesh/assets/docs/docs/documentation/enterprise/wheel-installation/index.html +4 -4
  92. solace_agent_mesh/assets/docs/docs/documentation/getting-started/architecture/index.html +4 -4
  93. solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +6 -5
  94. solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +4 -4
  95. solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +4 -4
  96. solace_agent_mesh/assets/docs/docs/documentation/getting-started/vibe_coding/index.html +62 -0
  97. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/artifact-storage/index.html +25 -4
  98. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/configurations/index.html +4 -4
  99. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +4 -4
  100. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +4 -4
  101. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +4 -4
  102. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +4 -4
  103. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/session-storage/index.html +4 -4
  104. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/user-feedback/index.html +4 -4
  105. solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-gateway-upgrade-to-0.3.0/index.html +4 -4
  106. solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-technical-migration-map/index.html +4 -4
  107. solace_agent_mesh/assets/docs/docs/documentation/migrations/platform-service-split/index.html +85 -0
  108. solace_agent_mesh/assets/docs/lunr-index-1767712284328.json +1 -0
  109. solace_agent_mesh/assets/docs/lunr-index.json +1 -1
  110. solace_agent_mesh/assets/docs/search-doc-1767712284328.json +1 -0
  111. solace_agent_mesh/assets/docs/search-doc.json +1 -1
  112. solace_agent_mesh/assets/docs/sitemap.xml +1 -1
  113. solace_agent_mesh/cli/__init__.py +1 -1
  114. solace_agent_mesh/cli/commands/init_cmd/__init__.py +15 -0
  115. solace_agent_mesh/cli/commands/init_cmd/directory_step.py +1 -1
  116. solace_agent_mesh/cli/commands/init_cmd/env_step.py +29 -2
  117. solace_agent_mesh/cli/commands/init_cmd/platform_service_step.py +85 -0
  118. solace_agent_mesh/cli/commands/tools_cmd.py +315 -0
  119. solace_agent_mesh/cli/main.py +2 -0
  120. solace_agent_mesh/client/webui/frontend/static/assets/{authCallback-Dj3JtK42.js → authCallback-8Nihi8rv.js} +1 -1
  121. solace_agent_mesh/client/webui/frontend/static/assets/{client-ZKk9kEJ5.js → client-DYtZN8p-.js} +1 -1
  122. solace_agent_mesh/client/webui/frontend/static/assets/main-BYGUHQMk.js +435 -0
  123. solace_agent_mesh/client/webui/frontend/static/assets/main-D2CSH1bp.css +1 -0
  124. solace_agent_mesh/client/webui/frontend/static/assets/{vendor-BNV4kZN0.js → vendor-XBWAmrun.js} +106 -101
  125. solace_agent_mesh/client/webui/frontend/static/auth-callback.html +3 -3
  126. solace_agent_mesh/client/webui/frontend/static/index.html +4 -4
  127. solace_agent_mesh/client/webui/frontend/static/ui-version.json +1 -1
  128. solace_agent_mesh/common/a2a/types.py +1 -1
  129. solace_agent_mesh/common/agent_registry.py +38 -11
  130. solace_agent_mesh/common/data_parts.py +28 -0
  131. solace_agent_mesh/common/error_handlers.py +83 -0
  132. solace_agent_mesh/common/sam_events/event_service.py +2 -2
  133. solace_agent_mesh/config_portal/backend/common.py +2 -0
  134. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-ZV-jX48T.js +103 -0
  135. solace_agent_mesh/config_portal/frontend/static/client/assets/{manifest-ba77705e.js → manifest-ce5bc5da.js} +1 -1
  136. solace_agent_mesh/config_portal/frontend/static/client/index.html +1 -1
  137. solace_agent_mesh/core_a2a/service.py +3 -2
  138. solace_agent_mesh/gateway/adapter/base.py +28 -1
  139. solace_agent_mesh/gateway/adapter/types.py +9 -0
  140. solace_agent_mesh/gateway/base/auth_interface.py +103 -0
  141. solace_agent_mesh/gateway/base/component.py +68 -1
  142. solace_agent_mesh/gateway/generic/component.py +195 -30
  143. solace_agent_mesh/gateway/http_sse/app.py +23 -6
  144. solace_agent_mesh/gateway/http_sse/component.py +9 -61
  145. solace_agent_mesh/gateway/http_sse/dependencies.py +9 -51
  146. solace_agent_mesh/gateway/http_sse/main.py +28 -418
  147. solace_agent_mesh/gateway/http_sse/repository/chat_task_repository.py +2 -2
  148. solace_agent_mesh/gateway/http_sse/repository/entities/project.py +1 -1
  149. solace_agent_mesh/gateway/http_sse/repository/entities/project_user.py +1 -1
  150. solace_agent_mesh/gateway/http_sse/repository/entities/session.py +2 -2
  151. solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +2 -2
  152. solace_agent_mesh/gateway/http_sse/repository/interfaces.py +2 -2
  153. solace_agent_mesh/gateway/http_sse/repository/models/prompt_model.py +1 -1
  154. solace_agent_mesh/gateway/http_sse/repository/models/session_model.py +1 -1
  155. solace_agent_mesh/gateway/http_sse/repository/project_repository.py +1 -1
  156. solace_agent_mesh/gateway/http_sse/repository/project_user_repository.py +1 -1
  157. solace_agent_mesh/gateway/http_sse/repository/session_repository.py +4 -4
  158. solace_agent_mesh/gateway/http_sse/repository/task_repository.py +2 -2
  159. solace_agent_mesh/gateway/http_sse/routers/artifacts.py +16 -15
  160. solace_agent_mesh/gateway/http_sse/routers/auth.py +61 -132
  161. solace_agent_mesh/gateway/http_sse/routers/config.py +12 -8
  162. solace_agent_mesh/gateway/http_sse/routers/dto/requests/session_requests.py +1 -1
  163. solace_agent_mesh/gateway/http_sse/routers/dto/responses/base_responses.py +1 -1
  164. solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +2 -2
  165. solace_agent_mesh/gateway/http_sse/routers/feedback.py +2 -2
  166. solace_agent_mesh/gateway/http_sse/routers/people.py +2 -2
  167. solace_agent_mesh/gateway/http_sse/routers/projects.py +2 -1
  168. solace_agent_mesh/gateway/http_sse/routers/prompts.py +2 -1
  169. solace_agent_mesh/gateway/http_sse/routers/sessions.py +3 -3
  170. solace_agent_mesh/gateway/http_sse/routers/speech.py +1 -1
  171. solace_agent_mesh/gateway/http_sse/routers/tasks.py +3 -2
  172. solace_agent_mesh/gateway/http_sse/routers/users.py +1 -1
  173. solace_agent_mesh/gateway/http_sse/routers/visualization.py +2 -1
  174. solace_agent_mesh/gateway/http_sse/services/background_task_monitor.py +1 -1
  175. solace_agent_mesh/gateway/http_sse/services/data_retention_service.py +1 -1
  176. solace_agent_mesh/gateway/http_sse/services/feedback_service.py +1 -1
  177. solace_agent_mesh/gateway/http_sse/services/session_service.py +4 -4
  178. solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +1 -1
  179. solace_agent_mesh/services/platform/__init__.py +23 -12
  180. solace_agent_mesh/services/platform/api/dependencies.py +23 -16
  181. solace_agent_mesh/services/platform/api/main.py +118 -43
  182. solace_agent_mesh/services/platform/api/routers/__init__.py +12 -3
  183. solace_agent_mesh/services/platform/api/routers/health_router.py +31 -0
  184. solace_agent_mesh/services/platform/app.py +101 -7
  185. solace_agent_mesh/services/platform/component.py +552 -33
  186. solace_agent_mesh/shared/__init__.py +14 -0
  187. solace_agent_mesh/shared/api/__init__.py +42 -0
  188. solace_agent_mesh/shared/auth/__init__.py +26 -0
  189. solace_agent_mesh/shared/auth/dependencies.py +204 -0
  190. solace_agent_mesh/shared/auth/middleware.py +291 -0
  191. solace_agent_mesh/shared/database/__init__.py +20 -0
  192. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/base_repository.py +1 -1
  193. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_exceptions.py +1 -1
  194. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_helpers.py +1 -1
  195. solace_agent_mesh/shared/exceptions/__init__.py +36 -0
  196. solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/exception_handlers.py +1 -1
  197. solace_agent_mesh/shared/utils/__init__.py +21 -0
  198. solace_agent_mesh/templates/platform.yaml +49 -0
  199. solace_agent_mesh/templates/webui.yaml +12 -3
  200. {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/METADATA +2 -1
  201. {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/RECORD +214 -258
  202. solace_agent_mesh/agent/adk/adk_llm.txt +0 -226
  203. solace_agent_mesh/agent/adk/adk_llm_detail.txt +0 -566
  204. solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt +0 -171
  205. solace_agent_mesh/agent/adk/models/models_llm.txt +0 -189
  206. solace_agent_mesh/agent/agent_llm.txt +0 -369
  207. solace_agent_mesh/agent/agent_llm_detail.txt +0 -1702
  208. solace_agent_mesh/agent/protocol/protocol_llm.txt +0 -81
  209. solace_agent_mesh/agent/protocol/protocol_llm_detail.txt +0 -92
  210. solace_agent_mesh/agent/proxies/a2a/a2a_llm.txt +0 -190
  211. solace_agent_mesh/agent/proxies/base/base_llm.txt +0 -148
  212. solace_agent_mesh/agent/proxies/proxies_llm.txt +0 -283
  213. solace_agent_mesh/agent/sac/sac_llm.txt +0 -189
  214. solace_agent_mesh/agent/sac/sac_llm_detail.txt +0 -200
  215. solace_agent_mesh/agent/testing/testing_llm.txt +0 -58
  216. solace_agent_mesh/agent/testing/testing_llm_detail.txt +0 -68
  217. solace_agent_mesh/agent/tools/tools_llm.txt +0 -276
  218. solace_agent_mesh/agent/tools/tools_llm_detail.txt +0 -275
  219. solace_agent_mesh/agent/utils/utils_llm.txt +0 -152
  220. solace_agent_mesh/agent/utils/utils_llm_detail.txt +0 -149
  221. solace_agent_mesh/assets/docs/assets/js/15ba94aa.92fea363.js +0 -1
  222. solace_agent_mesh/assets/docs/assets/js/240a0364.9ad94d1b.js +0 -1
  223. solace_agent_mesh/assets/docs/assets/js/2e32b5e0.33f5d75b.js +0 -1
  224. solace_agent_mesh/assets/docs/assets/js/3a6c6137.f5940cfa.js +0 -1
  225. solace_agent_mesh/assets/docs/assets/js/3ff0015d.2ddc75c0.js +0 -1
  226. solace_agent_mesh/assets/docs/assets/js/547e15cc.2f7790c1.js +0 -1
  227. solace_agent_mesh/assets/docs/assets/js/5c2bd65f.90a87880.js +0 -1
  228. solace_agent_mesh/assets/docs/assets/js/64195356.c498c4d0.js +0 -1
  229. solace_agent_mesh/assets/docs/assets/js/66d4869e.b77431fc.js +0 -1
  230. solace_agent_mesh/assets/docs/assets/js/8024126c.fa0e7186.js +0 -1
  231. solace_agent_mesh/assets/docs/assets/js/81a99df0.2484b8d9.js +0 -1
  232. solace_agent_mesh/assets/docs/assets/js/9bb13469.b2333011.js +0 -1
  233. solace_agent_mesh/assets/docs/assets/js/ab9708a8.245ae0ef.js +0 -1
  234. solace_agent_mesh/assets/docs/assets/js/db5d6442.3daf1696.js +0 -1
  235. solace_agent_mesh/assets/docs/assets/js/e04b235d.52cb25ed.js +0 -1
  236. solace_agent_mesh/assets/docs/assets/js/e1b6eeb4.b1068f9b.js +0 -1
  237. solace_agent_mesh/assets/docs/assets/js/e6f9706b.4488e34c.js +0 -1
  238. solace_agent_mesh/assets/docs/assets/js/e92d0134.3bda61dd.js +0 -1
  239. solace_agent_mesh/assets/docs/assets/js/f284c35a.250993bf.js +0 -1
  240. solace_agent_mesh/assets/docs/assets/js/main.7acf7ace.js +0 -2
  241. solace_agent_mesh/assets/docs/assets/js/runtime~main.9e0813a2.js +0 -1
  242. solace_agent_mesh/assets/docs/lunr-index-1765810064709.json +0 -1
  243. solace_agent_mesh/assets/docs/search-doc-1765810064709.json +0 -1
  244. solace_agent_mesh/cli/commands/add_cmd/add_cmd_llm.txt +0 -250
  245. solace_agent_mesh/cli/commands/init_cmd/init_cmd_llm.txt +0 -365
  246. solace_agent_mesh/cli/commands/plugin_cmd/plugin_cmd_llm.txt +0 -305
  247. solace_agent_mesh/client/webui/frontend/static/assets/main-BcUaNZ-Q.css +0 -1
  248. solace_agent_mesh/client/webui/frontend/static/assets/main-vjch4RYc.js +0 -435
  249. solace_agent_mesh/common/a2a/a2a_llm.txt +0 -175
  250. solace_agent_mesh/common/a2a/a2a_llm_detail.txt +0 -193
  251. solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +0 -445
  252. solace_agent_mesh/common/a2a_spec/a2a_spec_llm_detail.txt +0 -736
  253. solace_agent_mesh/common/a2a_spec/schemas/schemas_llm.txt +0 -330
  254. solace_agent_mesh/common/common_llm.txt +0 -230
  255. solace_agent_mesh/common/common_llm_detail.txt +0 -2562
  256. solace_agent_mesh/common/middleware/middleware_llm.txt +0 -174
  257. solace_agent_mesh/common/middleware/middleware_llm_detail.txt +0 -185
  258. solace_agent_mesh/common/sac/sac_llm.txt +0 -71
  259. solace_agent_mesh/common/sac/sac_llm_detail.txt +0 -82
  260. solace_agent_mesh/common/sam_events/sam_events_llm.txt +0 -104
  261. solace_agent_mesh/common/sam_events/sam_events_llm_detail.txt +0 -115
  262. solace_agent_mesh/common/services/providers/providers_llm.txt +0 -81
  263. solace_agent_mesh/common/services/services_llm.txt +0 -368
  264. solace_agent_mesh/common/services/services_llm_detail.txt +0 -459
  265. solace_agent_mesh/common/utils/embeds/embeds_llm.txt +0 -220
  266. solace_agent_mesh/common/utils/utils_llm.txt +0 -335
  267. solace_agent_mesh/common/utils/utils_llm_detail.txt +0 -572
  268. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-DiOiAjzL.js +0 -103
  269. solace_agent_mesh/core_a2a/core_a2a_llm.txt +0 -90
  270. solace_agent_mesh/core_a2a/core_a2a_llm_detail.txt +0 -101
  271. solace_agent_mesh/gateway/base/base_llm.txt +0 -226
  272. solace_agent_mesh/gateway/base/base_llm_detail.txt +0 -235
  273. solace_agent_mesh/gateway/gateway_llm.txt +0 -369
  274. solace_agent_mesh/gateway/gateway_llm_detail.txt +0 -3885
  275. solace_agent_mesh/gateway/http_sse/alembic/alembic_llm.txt +0 -345
  276. solace_agent_mesh/gateway/http_sse/alembic/versions/versions_llm.txt +0 -161
  277. solace_agent_mesh/gateway/http_sse/components/components_llm.txt +0 -105
  278. solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +0 -299
  279. solace_agent_mesh/gateway/http_sse/http_sse_llm_detail.txt +0 -3278
  280. solace_agent_mesh/gateway/http_sse/repository/entities/entities_llm.txt +0 -221
  281. solace_agent_mesh/gateway/http_sse/repository/models/models_llm.txt +0 -257
  282. solace_agent_mesh/gateway/http_sse/repository/repository_llm.txt +0 -308
  283. solace_agent_mesh/gateway/http_sse/routers/dto/dto_llm.txt +0 -450
  284. solace_agent_mesh/gateway/http_sse/routers/dto/requests/requests_llm.txt +0 -133
  285. solace_agent_mesh/gateway/http_sse/routers/dto/responses/responses_llm.txt +0 -123
  286. solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +0 -312
  287. solace_agent_mesh/gateway/http_sse/services/services_llm.txt +0 -303
  288. solace_agent_mesh/gateway/http_sse/shared/__init__.py +0 -146
  289. solace_agent_mesh/gateway/http_sse/shared/shared_llm.txt +0 -319
  290. solace_agent_mesh/gateway/http_sse/utils/utils_llm.txt +0 -47
  291. solace_agent_mesh/llm.txt +0 -228
  292. solace_agent_mesh/llm_detail.txt +0 -2835
  293. solace_agent_mesh/solace_agent_mesh_llm.txt +0 -362
  294. solace_agent_mesh/solace_agent_mesh_llm_detail.txt +0 -8599
  295. solace_agent_mesh/templates/templates_llm.txt +0 -147
  296. /solace_agent_mesh/assets/docs/assets/js/{main.7acf7ace.js.LICENSE.txt → main.b241af3e.js.LICENSE.txt} +0 -0
  297. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/auth_utils.py +0 -0
  298. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/pagination.py +0 -0
  299. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/response_utils.py +0 -0
  300. /solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/error_dto.py +0 -0
  301. /solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/exceptions.py +0 -0
  302. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/enums.py +0 -0
  303. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/timestamp_utils.py +0 -0
  304. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/types.py +0 -0
  305. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/utils.py +0 -0
  306. {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/WHEEL +0 -0
  307. {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/entry_points.txt +0 -0
  308. {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,283 +0,0 @@
1
- # DEVELOPER GUIDE: proxies
2
-
3
- ## Quick Summary
4
- The `proxies` directory provides a framework for creating proxy applications that enable the Solace Agent Mesh to communicate with downstream agents using various protocols. It consists of protocol-agnostic base classes in the `base/` subdirectory that handle common functionality like message routing, agent discovery, and task management, plus concrete implementations like `a2a/` for A2A-over-HTTPS protocol support.
5
-
6
- ## Files and Subdirectories Overview
7
- - **Direct files:**
8
- - `__init__.py` - Empty package initialization file
9
- - **Subdirectories:**
10
- - `base/` - Abstract base classes for proxy applications and components with common functionality
11
- - `a2a/` - Concrete implementation for proxying A2A-over-HTTPS agents with authentication support
12
-
13
- ## Developer API Reference
14
-
15
- ### Direct Files
16
-
17
- #### __init__.py
18
- **Purpose:** Package initialization (empty file)
19
- **Import:** `from solace_agent_mesh.agent.proxies import *`
20
-
21
- No public API - this is an empty initialization file.
22
-
23
- ### Subdirectory APIs
24
-
25
- #### base/
26
- **Purpose:** Provides abstract base classes and configuration models for building proxy applications
27
- **Key Exports:** BaseProxyApp, BaseProxyComponent, BaseProxyAppConfig, ProxyTaskContext
28
- **Import Examples:**
29
- ```python
30
- from solace_agent_mesh.agent.proxies.base.app import BaseProxyApp
31
- from solace_agent_mesh.agent.proxies.base.component import BaseProxyComponent
32
- from solace_agent_mesh.agent.proxies.base.config import BaseProxyAppConfig, ProxiedAgentConfig
33
- from solace_agent_mesh.agent.proxies.base.proxy_task_context import ProxyTaskContext
34
- ```
35
-
36
- #### a2a/
37
- **Purpose:** Concrete implementation for proxying A2A-over-HTTPS agents with OAuth 2.0 and static authentication
38
- **Key Exports:** A2AProxyApp, A2AProxyComponent, A2AProxyAppConfig, OAuth2TokenCache
39
- **Import Examples:**
40
- ```python
41
- from solace_agent_mesh.agent.proxies.a2a.app import A2AProxyApp
42
- from solace_agent_mesh.agent.proxies.a2a.component import A2AProxyComponent
43
- from solace_agent_mesh.agent.proxies.a2a.config import A2AProxyAppConfig, AuthenticationConfig
44
- from solace_agent_mesh.agent.proxies.a2a.oauth_token_cache import OAuth2TokenCache
45
- ```
46
-
47
- ## Complete Usage Guide
48
-
49
- ### 1. Creating a Custom Proxy Implementation
50
-
51
- To create a new proxy for a different protocol, extend the base classes:
52
-
53
- ```python
54
- from solace_agent_mesh.agent.proxies.base.app import BaseProxyApp
55
- from solace_agent_mesh.agent.proxies.base.component import BaseProxyComponent
56
- from solace_agent_mesh.agent.proxies.base.config import BaseProxyAppConfig
57
- from a2a.types import AgentCard, A2ARequest
58
- from typing import Optional
59
-
60
- # Custom configuration (extend BaseProxyAppConfig)
61
- class MyProxyAppConfig(BaseProxyAppConfig):
62
- custom_setting: str = "default_value"
63
-
64
- # Custom component implementation
65
- class MyProxyComponent(BaseProxyComponent):
66
- async def _fetch_agent_card(self, agent_config: dict) -> Optional[AgentCard]:
67
- # Implement protocol-specific agent discovery
68
- url = agent_config.get("url")
69
- # Make HTTP request to get agent capabilities
70
- # Return AgentCard with agent information
71
- pass
72
-
73
- async def _forward_request(self, task_context, request: A2ARequest, agent_name: str):
74
- # Implement protocol-specific request forwarding
75
- # Forward request to downstream agent
76
- # Handle response and publish back to Solace
77
- pass
78
-
79
- # Custom app class
80
- class MyProxyApp(BaseProxyApp):
81
- def _get_component_class(self):
82
- return MyProxyComponent
83
- ```
84
-
85
- ### 2. Using the A2A Proxy Implementation
86
-
87
- The most common use case is using the built-in A2A proxy:
88
-
89
- ```python
90
- from solace_agent_mesh.agent.proxies.a2a.app import A2AProxyApp
91
- from solace_agent_mesh.agent.proxies.a2a.config import A2AProxyAppConfig, AuthenticationConfig
92
-
93
- # Configuration with OAuth 2.0 authentication
94
- app_info = {
95
- "app_config": {
96
- "namespace": "myorg/production",
97
- "proxied_agents": [
98
- {
99
- "name": "external-agent",
100
- "url": "https://external-agent.example.com",
101
- "request_timeout_seconds": 120,
102
- "authentication": {
103
- "type": "oauth2_client_credentials",
104
- "token_url": "https://auth.example.com/oauth/token",
105
- "client_id": "my-client-id",
106
- "client_secret": "my-client-secret",
107
- "scope": "agent:read agent:write",
108
- "token_cache_duration_seconds": 3300
109
- }
110
- },
111
- {
112
- "name": "api-key-agent",
113
- "url": "https://api-agent.example.com",
114
- "authentication": {
115
- "type": "static_bearer",
116
- "token": "my-api-key"
117
- }
118
- }
119
- ],
120
- "artifact_service": {
121
- "type": "gcs",
122
- "bucket_name": "my-artifacts-bucket",
123
- "artifact_scope": "namespace"
124
- },
125
- "discovery_interval_seconds": 30,
126
- "default_request_timeout_seconds": 300
127
- }
128
- }
129
-
130
- # Create and run the proxy app
131
- app = A2AProxyApp(app_info)
132
- # App automatically handles Solace subscriptions and agent discovery
133
- ```
134
-
135
- ### 3. Working with Authentication
136
-
137
- The A2A proxy supports multiple authentication methods:
138
-
139
- ```python
140
- from solace_agent_mesh.agent.proxies.a2a.config import AuthenticationConfig
141
-
142
- # OAuth 2.0 Client Credentials
143
- oauth_auth = AuthenticationConfig(
144
- type="oauth2_client_credentials",
145
- token_url="https://auth.provider.com/token",
146
- client_id="client123",
147
- client_secret="secret456",
148
- scope="read write",
149
- token_cache_duration_seconds=3300 # Cache for 55 minutes
150
- )
151
-
152
- # Static Bearer Token
153
- bearer_auth = AuthenticationConfig(
154
- type="static_bearer",
155
- token="Bearer abc123xyz"
156
- )
157
-
158
- # Static API Key
159
- apikey_auth = AuthenticationConfig(
160
- type="static_apikey",
161
- token="api-key-value"
162
- )
163
- ```
164
-
165
- ### 4. Managing OAuth Token Cache
166
-
167
- For OAuth 2.0 authentication, tokens are automatically cached:
168
-
169
- ```python
170
- from solace_agent_mesh.agent.proxies.a2a.oauth_token_cache import OAuth2TokenCache
171
- from solace_agent_mesh.agent.proxies.a2a.component import A2AProxyComponent
172
-
173
- # Access the component to manage cache
174
- component = A2AProxyComponent(proxied_agents_config=config)
175
-
176
- # Clear all cached tokens (useful for testing or credential rotation)
177
- component.clear_client_cache()
178
-
179
- # Direct cache usage (advanced)
180
- cache = OAuth2TokenCache()
181
- await cache.set("agent-name", "access_token", 3600)
182
- token = await cache.get("agent-name")
183
- await cache.invalidate("agent-name")
184
- ```
185
-
186
- ### 5. Task Context and Lifecycle Management
187
-
188
- The proxy framework automatically manages task contexts:
189
-
190
- ```python
191
- from solace_agent_mesh.agent.proxies.base.proxy_task_context import ProxyTaskContext
192
-
193
- # Task contexts are created automatically when requests arrive
194
- # They contain A2A protocol information and task state
195
- task_context = ProxyTaskContext(
196
- task_id="unique-task-id",
197
- a2a_context={
198
- "jsonrpc_request_id": "req-123",
199
- "logical_task_id": "task-456",
200
- "session_id": "session-789",
201
- "user_id": "user123",
202
- "status_topic": "status/myorg/production/external-agent",
203
- "reply_to_topic": "reply/myorg/production/external-agent",
204
- "is_streaming": False
205
- }
206
- )
207
-
208
- # Access task information in custom components
209
- print(f"Handling task: {task_context.task_id}")
210
- print(f"User: {task_context.a2a_context['user_id']}")
211
- ```
212
-
213
- ### 6. Configuration Validation
214
-
215
- All proxy configurations use Pydantic for validation:
216
-
217
- ```python
218
- from solace_agent_mesh.agent.proxies.a2a.config import A2AProxyAppConfig
219
- from pydantic import ValidationError
220
-
221
- try:
222
- config = A2AProxyAppConfig.model_validate({
223
- "namespace": "myorg/dev",
224
- "proxied_agents": [
225
- {
226
- "name": "test-agent",
227
- "url": "https://agent.example.com",
228
- "authentication": {
229
- "type": "oauth2_client_credentials",
230
- "token_url": "https://auth.example.com/token",
231
- "client_id": "client123"
232
- # Missing client_secret - will cause validation error
233
- }
234
- }
235
- ]
236
- })
237
- except ValidationError as e:
238
- print(f"Configuration error: {e}")
239
- ```
240
-
241
- ### 7. Integration Patterns
242
-
243
- Common patterns for integrating proxies into larger applications:
244
-
245
- ```python
246
- # Pattern 1: Direct instantiation
247
- from solace_agent_mesh.agent.proxies.a2a.app import A2AProxyApp
248
-
249
- app = A2AProxyApp(app_info)
250
- # App handles its own lifecycle
251
-
252
- # Pattern 2: Component access for advanced control
253
- from solace_agent_mesh.agent.proxies.a2a.component import A2AProxyComponent
254
-
255
- component = A2AProxyComponent(
256
- proxied_agents_config=config["proxied_agents"],
257
- namespace=config["namespace"],
258
- # ... other broker settings
259
- )
260
-
261
- # Manual lifecycle management
262
- await component.run()
263
- # ... application logic
264
- await component.cleanup()
265
-
266
- # Pattern 3: Custom proxy with base classes
267
- class CustomProtocolProxy(BaseProxyComponent):
268
- def __init__(self, **kwargs):
269
- super().__init__(**kwargs)
270
- self.custom_clients = {}
271
-
272
- async def _fetch_agent_card(self, agent_config):
273
- # Custom discovery logic
274
- pass
275
-
276
- async def _forward_request(self, task_context, request, agent_name):
277
- # Custom forwarding logic
278
- pass
279
- ```
280
-
281
- This comprehensive guide covers all the main use cases for the proxies directory, from using the built-in A2A proxy to creating custom proxy implementations for new protocols.
282
-
283
- # content_hash: 2f19070457fccc3f5c8f680f44788fb63495f9ea3b3da7d71ddb5a52f8f5b0f6
@@ -1,189 +0,0 @@
1
- # DEVELOPER GUIDE for the directory: sac
2
-
3
- ## Quick Summary
4
- The `sac` (Solace AI Connector) directory provides the core implementation for hosting a Google ADK (Agent Development Kit) agent within the Solace AI Connector framework. It acts as a bridge, enabling ADK agents to communicate using the A2A (Agent-to-Agent) protocol over Solace messaging. This allows for the creation of distributed, collaborative agent systems where agents can delegate tasks, share information, and work together to solve complex problems.
5
-
6
- ## Files Overview
7
- - `__init__.py` - Empty package marker file
8
- - `app.py` - Custom SAC App class that automatically configures Solace subscriptions and broker settings for A2A communication
9
- - `component.py` - Main SAC Component that hosts the ADK agent, manages its lifecycle, and handles all A2A protocol messaging
10
- - `patch_adk.py` - Runtime patches for the Google ADK library to enhance or correct its behavior
11
- - `task_execution_context.py` - State management class that encapsulates all runtime information for a single, in-flight A2A task
12
-
13
- ## Developer API Reference
14
-
15
- ### app.py
16
- **Purpose:** Provides a custom SAC App class that simplifies the configuration of an A2A agent
17
- **Import:** `from solace_agent_mesh.agent.sac.app import SamAgentApp`
18
-
19
- **Classes:**
20
- - `SamAgentApp(app_info: Dict[str, Any], **kwargs)` - Custom App class for SAM Agent Host with namespace prefixing and automatic subscription generation
21
- - `app_schema: Dict` - Class attribute defining comprehensive configuration schema for agent host validation
22
-
23
- **Constants/Variables:**
24
- - `info: Dict[str, str]` - Metadata dictionary about the SamAgentApp class for SAC framework discovery
25
-
26
- **Usage Examples:**
27
- ```python
28
- # SamAgentApp is typically instantiated by the SAC framework from YAML config
29
- # Example agent-config.yaml:
30
- # app:
31
- # class_name: solace_agent_mesh.agent.sac.app.SamAgentApp
32
- # app_config:
33
- # namespace: "my-org/production"
34
- # agent_name: "customer-support-agent"
35
- # model: "gemini-1.5-pro-latest"
36
- # tools:
37
- # - tool_type: "builtin"
38
- # tool_name: "file_search"
39
- # agent_card:
40
- # description: "An agent that can answer questions about customer accounts."
41
- # agent_card_publishing:
42
- # interval_seconds: 60
43
- # session_service:
44
- # type: "memory"
45
- ```
46
-
47
- ### component.py
48
- **Purpose:** Core component that hosts a Google ADK agent and bridges communication to A2A protocol
49
- **Import:** `from solace_agent_mesh.agent.sac.component import SamAgentComponent`
50
-
51
- **Classes:**
52
- - `SamAgentComponent(**kwargs)` - Solace AI Connector component that hosts a Google ADK agent
53
- - `process_event(event: Event) -> None` - Main entry point for all SAC framework events
54
- - `handle_timer_event(timer_data: Dict[str, Any]) -> None` - Handles scheduled timer events for agent card publishing
55
- - `handle_cache_expiry_event(cache_data: Dict[str, Any]) -> None` - Handles cache expiry events for peer agent timeouts
56
- - `finalize_task_success(a2a_context: Dict) -> None` - Async method to finalize successful task completion
57
- - `finalize_task_canceled(a2a_context: Dict) -> None` - Finalizes task as CANCELED
58
- - `finalize_task_error(exception: Exception, a2a_context: Dict) -> None` - Async method to finalize failed tasks
59
- - `cleanup() -> None` - Cleans up resources on component shutdown
60
- - `set_agent_specific_state(key: str, value: Any) -> None` - Sets key-value pair in agent state dictionary
61
- - `get_agent_specific_state(key: str, default: Optional[Any] = None) -> Any` - Retrieves value from agent state
62
- - `get_async_loop() -> Optional[asyncio.AbstractEventLoop]` - Returns dedicated asyncio event loop
63
- - `set_agent_system_instruction_string(instruction_string: str) -> None` - Sets static system prompt injection
64
- - `set_agent_system_instruction_callback(callback_function: Callable) -> None` - Sets dynamic system prompt callback
65
- - `get_gateway_id() -> str` - Returns unique identifier for agent host instance
66
- - `submit_a2a_task(target_agent_name: str, a2a_message: A2AMessage, user_id: str, user_config: Dict[str, Any], sub_task_id: str) -> str` - Submits task to peer agent
67
- - `get_agent_context() -> Dict[str, Any]` - Returns agent context for middleware interactions
68
-
69
- **Constants/Variables:**
70
- - `info: Dict` - Metadata dictionary for SAC framework
71
- - `CORRELATION_DATA_PREFIX: str` - Prefix for cache keys when tracking peer requests
72
- - `HOST_COMPONENT_VERSION: str` - Version string of the host component
73
-
74
- **Usage Examples:**
75
- ```python
76
- # Custom initialization function example
77
- from solace_agent_mesh.agent.sac.component import SamAgentComponent
78
-
79
- def initialize_my_agent(host_component: SamAgentComponent, config: dict):
80
- """Custom initialization function for the agent."""
81
- # Store database connection in agent state
82
- db_connection = create_database_connection(config.get('db_url'))
83
- host_component.set_agent_specific_state('db_connection', db_connection)
84
-
85
- # Set custom system instruction
86
- host_component.set_agent_system_instruction_string(
87
- "You are a specialized customer service agent with access to our database."
88
- )
89
-
90
- # Tool accessing agent state
91
- def my_custom_tool(host_component: SamAgentComponent, query: str) -> str:
92
- """Tool that uses stored database connection."""
93
- db_connection = host_component.get_agent_specific_state('db_connection')
94
- if db_connection:
95
- return db_connection.execute_query(query)
96
- return "Database not available"
97
-
98
- # Scheduling async work from synchronous code
99
- def schedule_background_task(host_component: SamAgentComponent):
100
- """Schedule async work on the component's event loop."""
101
- loop = host_component.get_async_loop()
102
- if loop:
103
- asyncio.run_coroutine_threadsafe(my_async_task(), loop)
104
- ```
105
-
106
- ### patch_adk.py
107
- **Purpose:** Contains runtime patches for the Google ADK library to enhance behavior
108
- **Import:** `from solace_agent_mesh.agent.sac.patch_adk import patch_adk`
109
-
110
- **Functions:**
111
- - `patch_adk() -> None` - Applies all necessary patches to the ADK library
112
-
113
- **Usage Examples:**
114
- ```python
115
- from solace_agent_mesh.agent.sac.patch_adk import patch_adk
116
-
117
- # Apply patches before using ADK
118
- patch_adk()
119
- ```
120
-
121
- ### task_execution_context.py
122
- **Purpose:** State management class for single, in-flight agent tasks
123
- **Import:** `from solace_agent_mesh.agent.sac.task_execution_context import TaskExecutionContext`
124
-
125
- **Classes:**
126
- - `TaskExecutionContext(task_id: str, a2a_context: Dict[str, Any])` - Encapsulates runtime state for a single agent task
127
- - `cancel() -> None` - Signals that the task should be cancelled
128
- - `is_cancelled() -> bool` - Checks if cancellation event has been set
129
- - `append_to_streaming_buffer(text: str) -> None` - Appends text to streaming buffer
130
- - `flush_streaming_buffer() -> str` - Returns and clears streaming buffer content
131
- - `get_streaming_buffer_content() -> str` - Returns buffer content without clearing
132
- - `append_to_run_based_buffer(text: str) -> None` - Appends text to run-based response buffer
133
- - `register_peer_sub_task(sub_task_id: str, correlation_data: Dict[str, Any]) -> None` - Adds peer sub-task tracking
134
- - `claim_sub_task_completion(sub_task_id: str) -> Optional[Dict[str, Any]]` - Atomically retrieves and removes sub-task data
135
- - `register_parallel_call_sent(invocation_id: str) -> None` - Registers new parallel tool call
136
- - `handle_peer_timeout(sub_task_id: str, correlation_data: Dict, timeout_sec: int, invocation_id: str) -> bool` - Handles peer timeout
137
- - `record_parallel_result(result: Dict, invocation_id: str) -> bool` - Records parallel tool call result
138
- - `clear_parallel_invocation_state(invocation_id: str) -> None` - Removes completed invocation state
139
- - `register_produced_artifact(filename: str, version: int) -> None` - Tracks newly created artifacts
140
- - `add_artifact_signal(signal: Dict[str, Any]) -> None` - Adds artifact return signal
141
- - `get_and_clear_artifact_signals() -> List[Dict[str, Any]]` - Retrieves and clears artifact signals
142
- - `set_event_loop(loop: asyncio.AbstractEventLoop) -> None` - Stores event loop reference
143
- - `get_event_loop() -> Optional[asyncio.AbstractEventLoop]` - Retrieves stored event loop
144
- - `record_token_usage(input_tokens: int, output_tokens: int, model: str, source: str = "agent", tool_name: Optional[str] = None, cached_input_tokens: int = 0) -> None` - Records token usage for LLM calls
145
- - `get_token_usage_summary() -> Dict[str, Any]` - Returns summary of all token usage for the task
146
-
147
- **Usage Examples:**
148
- ```python
149
- from solace_agent_mesh.agent.sac.task_execution_context import TaskExecutionContext
150
-
151
- # Create task context
152
- a2a_context = {
153
- "logical_task_id": "task-123",
154
- "user_id": "user-456",
155
- "session_id": "session-789"
156
- }
157
- task_context = TaskExecutionContext("task-123", a2a_context)
158
-
159
- # Use streaming buffer
160
- task_context.append_to_streaming_buffer("Hello ")
161
- task_context.append_to_streaming_buffer("world!")
162
- content = task_context.flush_streaming_buffer() # Returns "Hello world!"
163
-
164
- # Track peer sub-tasks
165
- correlation_data = {
166
- "peer_agent_name": "math-agent",
167
- "adk_function_call_id": "call-123"
168
- }
169
- task_context.register_peer_sub_task("sub-task-456", correlation_data)
170
-
171
- # Handle completion
172
- completed_data = task_context.claim_sub_task_completion("sub-task-456")
173
- if completed_data:
174
- print(f"Sub-task completed: {completed_data}")
175
-
176
- # Track token usage
177
- task_context.record_token_usage(
178
- input_tokens=100,
179
- output_tokens=50,
180
- model="gemini-1.5-pro",
181
- source="agent"
182
- )
183
-
184
- # Get usage summary
185
- usage = task_context.get_token_usage_summary()
186
- print(f"Total tokens used: {usage['total_tokens']}")
187
- ```
188
-
189
- # content_hash: c80bf39278c35fcb73e1df4421b631aabbdb4ba330e8be028fb8a29e097c3fad
@@ -1,200 +0,0 @@
1
- # LLM Summary Detail File
2
-
3
- This file is a concatenation of all individual *llm.txt files found in the 'sac' directory tree. Each section below corresponds to a specific directory's summary file.
4
-
5
- ================================================================================
6
-
7
- ## Section 1: solace_agent_mesh/agent/sac/sac_llm.txt
8
-
9
- **Source file:** `solace_agent_mesh/agent/sac/sac_llm.txt`
10
-
11
- # DEVELOPER GUIDE for the directory: sac
12
-
13
- ## Quick Summary
14
- The `sac` (Solace AI Connector) directory provides the core implementation for hosting a Google ADK (Agent Development Kit) agent within the Solace AI Connector framework. It acts as a bridge, enabling ADK agents to communicate using the A2A (Agent-to-Agent) protocol over Solace messaging. This allows for the creation of distributed, collaborative agent systems where agents can delegate tasks, share information, and work together to solve complex problems.
15
-
16
- ## Files Overview
17
- - `__init__.py` - Empty package marker file
18
- - `app.py` - Custom SAC App class that automatically configures Solace subscriptions and broker settings for A2A communication
19
- - `component.py` - Main SAC Component that hosts the ADK agent, manages its lifecycle, and handles all A2A protocol messaging
20
- - `patch_adk.py` - Runtime patches for the Google ADK library to enhance or correct its behavior
21
- - `task_execution_context.py` - State management class that encapsulates all runtime information for a single, in-flight A2A task
22
-
23
- ## Developer API Reference
24
-
25
- ### app.py
26
- **Purpose:** Provides a custom SAC App class that simplifies the configuration of an A2A agent
27
- **Import:** `from solace_agent_mesh.agent.sac.app import SamAgentApp`
28
-
29
- **Classes:**
30
- - `SamAgentApp(app_info: Dict[str, Any], **kwargs)` - Custom App class for SAM Agent Host with namespace prefixing and automatic subscription generation
31
- - `app_schema: Dict` - Class attribute defining comprehensive configuration schema for agent host validation
32
-
33
- **Constants/Variables:**
34
- - `info: Dict[str, str]` - Metadata dictionary about the SamAgentApp class for SAC framework discovery
35
-
36
- **Usage Examples:**
37
- ```python
38
- # SamAgentApp is typically instantiated by the SAC framework from YAML config
39
- # Example agent-config.yaml:
40
- # app:
41
- # class_name: solace_agent_mesh.agent.sac.app.SamAgentApp
42
- # app_config:
43
- # namespace: "my-org/production"
44
- # agent_name: "customer-support-agent"
45
- # model: "gemini-1.5-pro-latest"
46
- # tools:
47
- # - tool_type: "builtin"
48
- # tool_name: "file_search"
49
- # agent_card:
50
- # description: "An agent that can answer questions about customer accounts."
51
- # agent_card_publishing:
52
- # interval_seconds: 60
53
- # session_service:
54
- # type: "memory"
55
- ```
56
-
57
- ### component.py
58
- **Purpose:** Core component that hosts a Google ADK agent and bridges communication to A2A protocol
59
- **Import:** `from solace_agent_mesh.agent.sac.component import SamAgentComponent`
60
-
61
- **Classes:**
62
- - `SamAgentComponent(**kwargs)` - Solace AI Connector component that hosts a Google ADK agent
63
- - `process_event(event: Event) -> None` - Main entry point for all SAC framework events
64
- - `handle_timer_event(timer_data: Dict[str, Any]) -> None` - Handles scheduled timer events for agent card publishing
65
- - `handle_cache_expiry_event(cache_data: Dict[str, Any]) -> None` - Handles cache expiry events for peer agent timeouts
66
- - `finalize_task_success(a2a_context: Dict) -> None` - Async method to finalize successful task completion
67
- - `finalize_task_canceled(a2a_context: Dict) -> None` - Finalizes task as CANCELED
68
- - `finalize_task_error(exception: Exception, a2a_context: Dict) -> None` - Async method to finalize failed tasks
69
- - `cleanup() -> None` - Cleans up resources on component shutdown
70
- - `set_agent_specific_state(key: str, value: Any) -> None` - Sets key-value pair in agent state dictionary
71
- - `get_agent_specific_state(key: str, default: Optional[Any] = None) -> Any` - Retrieves value from agent state
72
- - `get_async_loop() -> Optional[asyncio.AbstractEventLoop]` - Returns dedicated asyncio event loop
73
- - `set_agent_system_instruction_string(instruction_string: str) -> None` - Sets static system prompt injection
74
- - `set_agent_system_instruction_callback(callback_function: Callable) -> None` - Sets dynamic system prompt callback
75
- - `get_gateway_id() -> str` - Returns unique identifier for agent host instance
76
- - `submit_a2a_task(target_agent_name: str, a2a_message: A2AMessage, user_id: str, user_config: Dict[str, Any], sub_task_id: str) -> str` - Submits task to peer agent
77
- - `get_agent_context() -> Dict[str, Any]` - Returns agent context for middleware interactions
78
-
79
- **Constants/Variables:**
80
- - `info: Dict` - Metadata dictionary for SAC framework
81
- - `CORRELATION_DATA_PREFIX: str` - Prefix for cache keys when tracking peer requests
82
- - `HOST_COMPONENT_VERSION: str` - Version string of the host component
83
-
84
- **Usage Examples:**
85
- ```python
86
- # Custom initialization function example
87
- from solace_agent_mesh.agent.sac.component import SamAgentComponent
88
-
89
- def initialize_my_agent(host_component: SamAgentComponent, config: dict):
90
- """Custom initialization function for the agent."""
91
- # Store database connection in agent state
92
- db_connection = create_database_connection(config.get('db_url'))
93
- host_component.set_agent_specific_state('db_connection', db_connection)
94
-
95
- # Set custom system instruction
96
- host_component.set_agent_system_instruction_string(
97
- "You are a specialized customer service agent with access to our database."
98
- )
99
-
100
- # Tool accessing agent state
101
- def my_custom_tool(host_component: SamAgentComponent, query: str) -> str:
102
- """Tool that uses stored database connection."""
103
- db_connection = host_component.get_agent_specific_state('db_connection')
104
- if db_connection:
105
- return db_connection.execute_query(query)
106
- return "Database not available"
107
-
108
- # Scheduling async work from synchronous code
109
- def schedule_background_task(host_component: SamAgentComponent):
110
- """Schedule async work on the component's event loop."""
111
- loop = host_component.get_async_loop()
112
- if loop:
113
- asyncio.run_coroutine_threadsafe(my_async_task(), loop)
114
- ```
115
-
116
- ### patch_adk.py
117
- **Purpose:** Contains runtime patches for the Google ADK library to enhance behavior
118
- **Import:** `from solace_agent_mesh.agent.sac.patch_adk import patch_adk`
119
-
120
- **Functions:**
121
- - `patch_adk() -> None` - Applies all necessary patches to the ADK library
122
-
123
- **Usage Examples:**
124
- ```python
125
- from solace_agent_mesh.agent.sac.patch_adk import patch_adk
126
-
127
- # Apply patches before using ADK
128
- patch_adk()
129
- ```
130
-
131
- ### task_execution_context.py
132
- **Purpose:** State management class for single, in-flight agent tasks
133
- **Import:** `from solace_agent_mesh.agent.sac.task_execution_context import TaskExecutionContext`
134
-
135
- **Classes:**
136
- - `TaskExecutionContext(task_id: str, a2a_context: Dict[str, Any])` - Encapsulates runtime state for a single agent task
137
- - `cancel() -> None` - Signals that the task should be cancelled
138
- - `is_cancelled() -> bool` - Checks if cancellation event has been set
139
- - `append_to_streaming_buffer(text: str) -> None` - Appends text to streaming buffer
140
- - `flush_streaming_buffer() -> str` - Returns and clears streaming buffer content
141
- - `get_streaming_buffer_content() -> str` - Returns buffer content without clearing
142
- - `append_to_run_based_buffer(text: str) -> None` - Appends text to run-based response buffer
143
- - `register_peer_sub_task(sub_task_id: str, correlation_data: Dict[str, Any]) -> None` - Adds peer sub-task tracking
144
- - `claim_sub_task_completion(sub_task_id: str) -> Optional[Dict[str, Any]]` - Atomically retrieves and removes sub-task data
145
- - `register_parallel_call_sent(invocation_id: str) -> None` - Registers new parallel tool call
146
- - `handle_peer_timeout(sub_task_id: str, correlation_data: Dict, timeout_sec: int, invocation_id: str) -> bool` - Handles peer timeout
147
- - `record_parallel_result(result: Dict, invocation_id: str) -> bool` - Records parallel tool call result
148
- - `clear_parallel_invocation_state(invocation_id: str) -> None` - Removes completed invocation state
149
- - `register_produced_artifact(filename: str, version: int) -> None` - Tracks newly created artifacts
150
- - `add_artifact_signal(signal: Dict[str, Any]) -> None` - Adds artifact return signal
151
- - `get_and_clear_artifact_signals() -> List[Dict[str, Any]]` - Retrieves and clears artifact signals
152
- - `set_event_loop(loop: asyncio.AbstractEventLoop) -> None` - Stores event loop reference
153
- - `get_event_loop() -> Optional[asyncio.AbstractEventLoop]` - Retrieves stored event loop
154
- - `record_token_usage(input_tokens: int, output_tokens: int, model: str, source: str = "agent", tool_name: Optional[str] = None, cached_input_tokens: int = 0) -> None` - Records token usage for LLM calls
155
- - `get_token_usage_summary() -> Dict[str, Any]` - Returns summary of all token usage for the task
156
-
157
- **Usage Examples:**
158
- ```python
159
- from solace_agent_mesh.agent.sac.task_execution_context import TaskExecutionContext
160
-
161
- # Create task context
162
- a2a_context = {
163
- "logical_task_id": "task-123",
164
- "user_id": "user-456",
165
- "session_id": "session-789"
166
- }
167
- task_context = TaskExecutionContext("task-123", a2a_context)
168
-
169
- # Use streaming buffer
170
- task_context.append_to_streaming_buffer("Hello ")
171
- task_context.append_to_streaming_buffer("world!")
172
- content = task_context.flush_streaming_buffer() # Returns "Hello world!"
173
-
174
- # Track peer sub-tasks
175
- correlation_data = {
176
- "peer_agent_name": "math-agent",
177
- "adk_function_call_id": "call-123"
178
- }
179
- task_context.register_peer_sub_task("sub-task-456", correlation_data)
180
-
181
- # Handle completion
182
- completed_data = task_context.claim_sub_task_completion("sub-task-456")
183
- if completed_data:
184
- print(f"Sub-task completed: {completed_data}")
185
-
186
- # Track token usage
187
- task_context.record_token_usage(
188
- input_tokens=100,
189
- output_tokens=50,
190
- model="gemini-1.5-pro",
191
- source="agent"
192
- )
193
-
194
- # Get usage summary
195
- usage = task_context.get_token_usage_summary()
196
- print(f"Total tokens used: {usage['total_tokens']}")
197
- ```
198
-
199
- ================================================================================
200
-