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.
- solace_agent_mesh/agent/adk/adk_llm.txt +93 -0
- solace_agent_mesh/agent/adk/app_llm_agent.py +26 -0
- solace_agent_mesh/agent/adk/callbacks.py +1694 -0
- solace_agent_mesh/agent/adk/filesystem_artifact_service.py +381 -0
- solace_agent_mesh/agent/adk/invocation_monitor.py +295 -0
- solace_agent_mesh/agent/adk/models/lite_llm.py +872 -0
- solace_agent_mesh/agent/adk/models/models_llm.txt +94 -0
- solace_agent_mesh/agent/adk/runner.py +353 -0
- solace_agent_mesh/agent/adk/services.py +240 -0
- solace_agent_mesh/agent/adk/setup.py +751 -0
- solace_agent_mesh/agent/adk/stream_parser.py +214 -0
- solace_agent_mesh/agent/adk/tool_wrapper.py +139 -0
- solace_agent_mesh/agent/agent_llm.txt +41 -0
- solace_agent_mesh/agent/protocol/event_handlers.py +1469 -0
- solace_agent_mesh/agent/protocol/protocol_llm.txt +21 -0
- solace_agent_mesh/agent/sac/app.py +640 -0
- solace_agent_mesh/agent/sac/component.py +3388 -0
- solace_agent_mesh/agent/sac/patch_adk.py +111 -0
- solace_agent_mesh/agent/sac/sac_llm.txt +105 -0
- solace_agent_mesh/agent/sac/task_execution_context.py +176 -0
- solace_agent_mesh/agent/testing/__init__.py +3 -0
- solace_agent_mesh/agent/testing/debug_utils.py +135 -0
- solace_agent_mesh/agent/testing/testing_llm.txt +90 -0
- solace_agent_mesh/agent/tools/__init__.py +14 -0
- solace_agent_mesh/agent/tools/audio_tools.py +1622 -0
- solace_agent_mesh/agent/tools/builtin_artifact_tools.py +1954 -0
- solace_agent_mesh/agent/tools/builtin_data_analysis_tools.py +238 -0
- solace_agent_mesh/agent/tools/general_agent_tools.py +569 -0
- solace_agent_mesh/agent/tools/image_tools.py +1184 -0
- solace_agent_mesh/agent/tools/peer_agent_tool.py +289 -0
- solace_agent_mesh/agent/tools/registry.py +36 -0
- solace_agent_mesh/agent/tools/test_tools.py +135 -0
- solace_agent_mesh/agent/tools/tool_definition.py +45 -0
- solace_agent_mesh/agent/tools/tools_llm.txt +104 -0
- solace_agent_mesh/agent/tools/web_tools.py +381 -0
- solace_agent_mesh/agent/utils/artifact_helpers.py +927 -0
- solace_agent_mesh/agent/utils/config_parser.py +47 -0
- solace_agent_mesh/agent/utils/context_helpers.py +60 -0
- solace_agent_mesh/agent/utils/utils_llm.txt +153 -0
- solace_agent_mesh/assets/docs/404.html +16 -0
- solace_agent_mesh/assets/docs/assets/css/styles.906a1503.css +1 -0
- solace_agent_mesh/assets/docs/assets/images/Solace_AI_Framework_With_Broker-85f0a306a9bcdd20b390b7a949f6d862.png +0 -0
- solace_agent_mesh/assets/docs/assets/images/sac-flows-80d5b603c6aafd33e87945680ce0abf3.png +0 -0
- solace_agent_mesh/assets/docs/assets/images/sac_parts_of_a_component-cb3d0424b1d0c17734c5435cca6b4082.png +0 -0
- solace_agent_mesh/assets/docs/assets/js/04989206.674a8007.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/0e682baa.79f0ab22.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/1001.0182a8bd.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/1023fc19.015679ca.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/1039.0bd46aa1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/149.b797a808.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/1523c6b4.91c7bc01.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/165.6a39807d.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/165.6a39807d.js.LICENSE.txt +9 -0
- solace_agent_mesh/assets/docs/assets/js/166ab619.7d97ccaf.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/17896441.a5e82f9b.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/17896441.a5e82f9b.js.LICENSE.txt +7 -0
- solace_agent_mesh/assets/docs/assets/js/1c6e87d2.23bccffb.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2130.ab9fd314.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/21ceee5f.614fa8dd.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2237.5e477fc6.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2334.622a6395.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2a9cab12.8909df92.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3219.adc1d663.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/332e10b5.7a103f42.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3624.b524e433.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/375.708d48db.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3834.b6cd790e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3d406171.f722eaf5.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4250.95455b28.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/42b3f8d8.36090198.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4356.d169ab5b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/442a8107.5ba94b65.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4458.518e66fa.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4488.c7cc3442.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4494.6ee23046.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4855.fc4444b6.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4866.22daefc0.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4950.ca4caeda.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4c2787c2.66ee00e9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5388.7a136447.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/55f47984.c484bf96.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5607.081356f8.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5864.b0d0e9de.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5b4258a4.bda20761.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5e95c892.558d5167.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6143.0a1464c9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6395.e9c73649.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6796.51d2c9b7.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6976.379be23b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6978.ee0b945c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7040.cb436723.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7195.412f418a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7280.3fb73bdb.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/768e31b0.a12673db.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7845.e33e7c4c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7900.69516146.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8356.8a379c04.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/85387663.6bf41934.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8567.4732c6b7.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8573.cb04eda5.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8577.1d54e766.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8591.d7c16be6.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/8591.d7c16be6.js.LICENSE.txt +61 -0
- solace_agent_mesh/assets/docs/assets/js/8709.7ecd4047.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8731.49e930c2.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8908.f9d1b506.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9157.b4093d07.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9278.a4fd875d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/945fb41e.74d728aa.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9616.b75c2f6d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9793.c6d16376.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9eff14a2.1bf8f61c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/a3a92b25.26ca071f.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/a7bd4aaa.2204d2f7.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/a94703ab.0438dbc2.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/aba21aa0.c42a534c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/aba87c2f.d3e2dcc3.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ae4415af.8e279b5d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/b7006a3a.40b10c9d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/bac0be12.f50d9bac.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/bb2ef573.207e6990.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/c2c06897.63b76e9e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/cc969b05.954186d4.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/cd3d4052.ca6eed8c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ced92a13.fb92e7ca.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/cee5d587.f5b73ca1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/f284c35a.ecc3d195.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/f897a61a.2c2e152c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/fbfa3e75.aca209c9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/main.7ed3319f.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/main.7ed3319f.js.LICENSE.txt +81 -0
- solace_agent_mesh/assets/docs/assets/js/runtime~main.d9520ae2.js +1 -0
- solace_agent_mesh/assets/docs/docs/documentation/concepts/agents/index.html +128 -0
- solace_agent_mesh/assets/docs/docs/documentation/concepts/architecture/index.html +91 -0
- solace_agent_mesh/assets/docs/docs/documentation/concepts/cli/index.html +201 -0
- solace_agent_mesh/assets/docs/docs/documentation/concepts/gateways/index.html +91 -0
- solace_agent_mesh/assets/docs/docs/documentation/concepts/orchestrator/index.html +55 -0
- solace_agent_mesh/assets/docs/docs/documentation/concepts/plugins/index.html +82 -0
- solace_agent_mesh/assets/docs/docs/documentation/deployment/debugging/index.html +60 -0
- solace_agent_mesh/assets/docs/docs/documentation/deployment/deploy/index.html +48 -0
- solace_agent_mesh/assets/docs/docs/documentation/deployment/observability/index.html +54 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +17 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/component-overview/index.html +45 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/installation/index.html +76 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +150 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/quick-start/index.html +54 -0
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/bedrock-agents/index.html +267 -0
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/custom-agent/index.html +136 -0
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/event-mesh-gateway/index.html +116 -0
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/mcp-integration/index.html +80 -0
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/mongodb-integration/index.html +164 -0
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/rest-gateway/index.html +57 -0
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/slack-integration/index.html +72 -0
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/sql-database/index.html +102 -0
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/artifact-management/index.html +99 -0
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/audio-tools/index.html +90 -0
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/data-analysis-tools/index.html +107 -0
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/embeds/index.html +152 -0
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/index.html +103 -0
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/create-agents/index.html +170 -0
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/create-gateways/index.html +200 -0
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/creating-service-providers/index.html +54 -0
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/solace-ai-connector/index.html +69 -0
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/structure/index.html +59 -0
- solace_agent_mesh/assets/docs/img/Solace_AI_Framework_README.png +0 -0
- solace_agent_mesh/assets/docs/img/Solace_AI_Framework_With_Broker.png +0 -0
- solace_agent_mesh/assets/docs/img/logo.png +0 -0
- solace_agent_mesh/assets/docs/img/sac-flows.png +0 -0
- solace_agent_mesh/assets/docs/img/sac_parts_of_a_component.png +0 -0
- solace_agent_mesh/assets/docs/img/solace-logo.png +0 -0
- solace_agent_mesh/assets/docs/lunr-index-1753813536522.json +1 -0
- solace_agent_mesh/assets/docs/lunr-index.json +1 -0
- solace_agent_mesh/assets/docs/search-doc-1753813536522.json +1 -0
- solace_agent_mesh/assets/docs/search-doc.json +1 -0
- solace_agent_mesh/assets/docs/sitemap.xml +1 -0
- solace_agent_mesh/cli/__init__.py +1 -1
- solace_agent_mesh/cli/commands/add_cmd/__init__.py +15 -0
- solace_agent_mesh/cli/commands/add_cmd/add_cmd_llm.txt +250 -0
- solace_agent_mesh/cli/commands/add_cmd/agent_cmd.py +659 -0
- solace_agent_mesh/cli/commands/add_cmd/gateway_cmd.py +322 -0
- solace_agent_mesh/cli/commands/add_cmd/web_add_agent_step.py +93 -0
- solace_agent_mesh/cli/commands/add_cmd/web_add_gateway_step.py +118 -0
- solace_agent_mesh/cli/commands/docs_cmd.py +57 -0
- solace_agent_mesh/cli/commands/eval_cmd.py +64 -0
- solace_agent_mesh/cli/commands/init_cmd/__init__.py +404 -0
- solace_agent_mesh/cli/commands/init_cmd/broker_step.py +201 -0
- solace_agent_mesh/cli/commands/init_cmd/directory_step.py +28 -0
- solace_agent_mesh/cli/commands/init_cmd/env_step.py +197 -0
- solace_agent_mesh/cli/commands/init_cmd/init_cmd_llm.txt +365 -0
- solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +387 -0
- solace_agent_mesh/cli/commands/init_cmd/project_files_step.py +38 -0
- solace_agent_mesh/cli/commands/init_cmd/web_init_step.py +110 -0
- solace_agent_mesh/cli/commands/init_cmd/webui_gateway_step.py +183 -0
- solace_agent_mesh/cli/commands/plugin_cmd/__init__.py +18 -0
- solace_agent_mesh/cli/commands/plugin_cmd/add_cmd.py +372 -0
- solace_agent_mesh/cli/commands/plugin_cmd/build_cmd.py +86 -0
- solace_agent_mesh/cli/commands/plugin_cmd/catalog_cmd.py +138 -0
- solace_agent_mesh/cli/commands/plugin_cmd/create_cmd.py +309 -0
- solace_agent_mesh/cli/commands/plugin_cmd/official_registry.py +174 -0
- solace_agent_mesh/cli/commands/plugin_cmd/plugin_cmd_llm.txt +305 -0
- solace_agent_mesh/cli/commands/run_cmd.py +158 -0
- solace_agent_mesh/cli/main.py +17 -294
- solace_agent_mesh/cli/utils.py +135 -204
- solace_agent_mesh/client/webui/frontend/static/assets/authCallback-DvlO62me.js +1 -0
- solace_agent_mesh/client/webui/frontend/static/assets/client-bp6u3qVZ.js +49 -0
- solace_agent_mesh/client/webui/frontend/static/assets/favicon-BLgzUch9.ico +0 -0
- solace_agent_mesh/client/webui/frontend/static/assets/main-An0a5j5k.js +663 -0
- solace_agent_mesh/client/webui/frontend/static/assets/main-Bu5-4Bac.css +1 -0
- solace_agent_mesh/client/webui/frontend/static/auth-callback.html +14 -0
- solace_agent_mesh/client/webui/frontend/static/index.html +15 -0
- solace_agent_mesh/common/__init__.py +1 -0
- solace_agent_mesh/common/a2a_protocol.py +564 -0
- solace_agent_mesh/common/agent_registry.py +42 -0
- solace_agent_mesh/common/client/__init__.py +4 -0
- solace_agent_mesh/common/client/card_resolver.py +21 -0
- solace_agent_mesh/common/client/client.py +85 -0
- solace_agent_mesh/common/client/client_llm.txt +133 -0
- solace_agent_mesh/common/common_llm.txt +144 -0
- solace_agent_mesh/common/constants.py +1 -14
- solace_agent_mesh/common/middleware/__init__.py +12 -0
- solace_agent_mesh/common/middleware/config_resolver.py +130 -0
- solace_agent_mesh/common/middleware/middleware_llm.txt +174 -0
- solace_agent_mesh/common/middleware/registry.py +125 -0
- solace_agent_mesh/common/server/__init__.py +4 -0
- solace_agent_mesh/common/server/server.py +122 -0
- solace_agent_mesh/common/server/server_llm.txt +169 -0
- solace_agent_mesh/common/server/task_manager.py +291 -0
- solace_agent_mesh/common/server/utils.py +28 -0
- solace_agent_mesh/common/services/__init__.py +4 -0
- solace_agent_mesh/common/services/employee_service.py +162 -0
- solace_agent_mesh/common/services/identity_service.py +129 -0
- solace_agent_mesh/common/services/providers/__init__.py +4 -0
- solace_agent_mesh/common/services/providers/local_file_identity_service.py +148 -0
- solace_agent_mesh/common/services/providers/providers_llm.txt +113 -0
- solace_agent_mesh/common/services/services_llm.txt +132 -0
- solace_agent_mesh/common/types.py +411 -0
- solace_agent_mesh/common/utils/__init__.py +7 -0
- solace_agent_mesh/common/utils/asyncio_macos_fix.py +86 -0
- solace_agent_mesh/common/utils/embeds/__init__.py +33 -0
- solace_agent_mesh/common/utils/embeds/constants.py +55 -0
- solace_agent_mesh/common/utils/embeds/converter.py +452 -0
- solace_agent_mesh/common/utils/embeds/embeds_llm.txt +124 -0
- solace_agent_mesh/common/utils/embeds/evaluators.py +394 -0
- solace_agent_mesh/common/utils/embeds/modifiers.py +816 -0
- solace_agent_mesh/common/utils/embeds/resolver.py +865 -0
- solace_agent_mesh/common/utils/embeds/types.py +14 -0
- solace_agent_mesh/common/utils/in_memory_cache.py +108 -0
- solace_agent_mesh/common/utils/log_formatters.py +44 -0
- solace_agent_mesh/common/utils/mime_helpers.py +106 -0
- solace_agent_mesh/common/utils/push_notification_auth.py +134 -0
- solace_agent_mesh/common/utils/utils_llm.txt +67 -0
- solace_agent_mesh/config_portal/backend/common.py +66 -24
- solace_agent_mesh/config_portal/backend/plugin_catalog/constants.py +23 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog/models.py +49 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog/registry_manager.py +160 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog/scraper.py +525 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog_server.py +216 -0
- solace_agent_mesh/config_portal/backend/server.py +550 -140
- solace_agent_mesh/config_portal/frontend/static/client/assets/_index-DNxCwAGB.js +48 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/components-B7lKcHVY.js +140 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/{entry.client-DX1misIU.js → entry.client-CEumGClk.js} +3 -3
- solace_agent_mesh/config_portal/frontend/static/client/assets/index-DSo1AH_7.js +68 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-d2b54a97.js +1 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/{root-BApq5dPK.js → root-C4XmHinv.js} +2 -2
- solace_agent_mesh/config_portal/frontend/static/client/assets/root-DxRwaWiE.css +1 -0
- solace_agent_mesh/config_portal/frontend/static/client/index.html +3 -3
- solace_agent_mesh/core_a2a/__init__.py +1 -0
- solace_agent_mesh/core_a2a/core_a2a_llm.txt +88 -0
- solace_agent_mesh/core_a2a/service.py +331 -0
- solace_agent_mesh/evaluation/config_loader.py +657 -0
- solace_agent_mesh/evaluation/evaluator.py +667 -0
- solace_agent_mesh/evaluation/message_organizer.py +568 -0
- solace_agent_mesh/evaluation/report/benchmark_info.html +35 -0
- solace_agent_mesh/evaluation/report/chart_section.html +141 -0
- solace_agent_mesh/evaluation/report/detailed_breakdown.html +28 -0
- solace_agent_mesh/evaluation/report/modal.html +59 -0
- solace_agent_mesh/evaluation/report/modal_chart_functions.js +411 -0
- solace_agent_mesh/evaluation/report/modal_script.js +296 -0
- solace_agent_mesh/evaluation/report/modal_styles.css +340 -0
- solace_agent_mesh/evaluation/report/performance_metrics_styles.css +93 -0
- solace_agent_mesh/evaluation/report/templates/footer.html +2 -0
- solace_agent_mesh/evaluation/report/templates/header.html +340 -0
- solace_agent_mesh/evaluation/report_data_processor.py +972 -0
- solace_agent_mesh/evaluation/report_generator.py +613 -0
- solace_agent_mesh/evaluation/run.py +613 -0
- solace_agent_mesh/evaluation/subscriber.py +872 -0
- solace_agent_mesh/evaluation/summary_builder.py +775 -0
- solace_agent_mesh/evaluation/test_case_loader.py +714 -0
- solace_agent_mesh/gateway/base/__init__.py +1 -0
- solace_agent_mesh/gateway/base/app.py +266 -0
- solace_agent_mesh/gateway/base/base_llm.txt +119 -0
- solace_agent_mesh/gateway/base/component.py +1542 -0
- solace_agent_mesh/gateway/base/task_context.py +74 -0
- solace_agent_mesh/gateway/gateway_llm.txt +125 -0
- solace_agent_mesh/gateway/http_sse/app.py +190 -0
- solace_agent_mesh/gateway/http_sse/component.py +1602 -0
- solace_agent_mesh/gateway/http_sse/components/__init__.py +7 -0
- solace_agent_mesh/gateway/http_sse/components/components_llm.txt +65 -0
- solace_agent_mesh/gateway/http_sse/components/visualization_forwarder_component.py +108 -0
- solace_agent_mesh/gateway/http_sse/dependencies.py +316 -0
- solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +63 -0
- solace_agent_mesh/gateway/http_sse/main.py +442 -0
- solace_agent_mesh/gateway/http_sse/routers/__init__.py +4 -0
- solace_agent_mesh/gateway/http_sse/routers/agents.py +41 -0
- solace_agent_mesh/gateway/http_sse/routers/artifacts.py +821 -0
- solace_agent_mesh/gateway/http_sse/routers/auth.py +212 -0
- solace_agent_mesh/gateway/http_sse/routers/config.py +55 -0
- solace_agent_mesh/gateway/http_sse/routers/people.py +69 -0
- solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +37 -0
- solace_agent_mesh/gateway/http_sse/routers/sessions.py +80 -0
- solace_agent_mesh/gateway/http_sse/routers/sse.py +138 -0
- solace_agent_mesh/gateway/http_sse/routers/tasks.py +294 -0
- solace_agent_mesh/gateway/http_sse/routers/users.py +59 -0
- solace_agent_mesh/gateway/http_sse/routers/visualization.py +1131 -0
- solace_agent_mesh/gateway/http_sse/services/__init__.py +4 -0
- solace_agent_mesh/gateway/http_sse/services/agent_service.py +69 -0
- solace_agent_mesh/gateway/http_sse/services/people_service.py +158 -0
- solace_agent_mesh/gateway/http_sse/services/services_llm.txt +179 -0
- solace_agent_mesh/gateway/http_sse/services/task_service.py +121 -0
- solace_agent_mesh/gateway/http_sse/session_manager.py +187 -0
- solace_agent_mesh/gateway/http_sse/sse_manager.py +328 -0
- solace_agent_mesh/llm.txt +228 -0
- solace_agent_mesh/llm_detail.txt +2835 -0
- solace_agent_mesh/templates/agent_template.yaml +53 -0
- solace_agent_mesh/templates/eval_backend_template.yaml +54 -0
- solace_agent_mesh/templates/gateway_app_template.py +73 -0
- solace_agent_mesh/templates/gateway_component_template.py +400 -0
- solace_agent_mesh/templates/gateway_config_template.yaml +43 -0
- solace_agent_mesh/templates/main_orchestrator.yaml +55 -0
- solace_agent_mesh/templates/plugin_agent_config_template.yaml +122 -0
- solace_agent_mesh/templates/plugin_custom_config_template.yaml +27 -0
- solace_agent_mesh/templates/plugin_custom_template.py +10 -0
- solace_agent_mesh/templates/plugin_gateway_config_template.yaml +63 -0
- solace_agent_mesh/templates/plugin_pyproject_template.toml +33 -0
- solace_agent_mesh/templates/plugin_readme_template.md +34 -0
- solace_agent_mesh/templates/plugin_tools_template.py +224 -0
- solace_agent_mesh/templates/shared_config.yaml +66 -0
- solace_agent_mesh/templates/templates_llm.txt +147 -0
- solace_agent_mesh/templates/webui.yaml +53 -0
- solace_agent_mesh-1.0.1.dist-info/METADATA +432 -0
- solace_agent_mesh-1.0.1.dist-info/RECORD +359 -0
- solace_agent_mesh-1.0.1.dist-info/entry_points.txt +3 -0
- {solace_agent_mesh-0.2.3.dist-info → solace_agent_mesh-1.0.1.dist-info}/licenses/LICENSE +1 -1
- solace_agent_mesh/agents/base_agent_component.py +0 -226
- solace_agent_mesh/agents/global/actions/agent_state_change.py +0 -54
- solace_agent_mesh/agents/global/actions/clear_history.py +0 -32
- solace_agent_mesh/agents/global/actions/convert_file_to_markdown.py +0 -160
- solace_agent_mesh/agents/global/actions/create_file.py +0 -70
- solace_agent_mesh/agents/global/actions/error_action.py +0 -45
- solace_agent_mesh/agents/global/actions/plantuml_diagram.py +0 -163
- solace_agent_mesh/agents/global/actions/plotly_graph.py +0 -152
- solace_agent_mesh/agents/global/actions/retrieve_file.py +0 -51
- solace_agent_mesh/agents/global/global_agent_component.py +0 -38
- solace_agent_mesh/agents/image_processing/actions/create_image.py +0 -75
- solace_agent_mesh/agents/image_processing/actions/describe_image.py +0 -115
- solace_agent_mesh/agents/image_processing/image_processing_agent_component.py +0 -23
- solace_agent_mesh/agents/slack/__init__.py +0 -1
- solace_agent_mesh/agents/slack/actions/__init__.py +0 -1
- solace_agent_mesh/agents/slack/actions/post_message.py +0 -177
- solace_agent_mesh/agents/slack/slack_agent_component.py +0 -59
- solace_agent_mesh/agents/web_request/actions/do_image_search.py +0 -84
- solace_agent_mesh/agents/web_request/actions/do_news_search.py +0 -47
- solace_agent_mesh/agents/web_request/actions/do_suggestion_search.py +0 -34
- solace_agent_mesh/agents/web_request/actions/do_web_request.py +0 -135
- solace_agent_mesh/agents/web_request/actions/download_file.py +0 -69
- solace_agent_mesh/agents/web_request/web_request_agent_component.py +0 -33
- solace_agent_mesh/assets/web-visualizer/assets/index-D0qORgkg.css +0 -1
- solace_agent_mesh/assets/web-visualizer/assets/index-DnDr1pnu.js +0 -109
- solace_agent_mesh/assets/web-visualizer/index.html +0 -14
- solace_agent_mesh/assets/web-visualizer/vite.svg +0 -1
- solace_agent_mesh/cli/commands/add/__init__.py +0 -3
- solace_agent_mesh/cli/commands/add/add.py +0 -88
- solace_agent_mesh/cli/commands/add/agent.py +0 -110
- solace_agent_mesh/cli/commands/add/copy_from_plugin.py +0 -92
- solace_agent_mesh/cli/commands/add/gateway.py +0 -374
- solace_agent_mesh/cli/commands/build.py +0 -670
- solace_agent_mesh/cli/commands/chat/__init__.py +0 -3
- solace_agent_mesh/cli/commands/chat/chat.py +0 -361
- solace_agent_mesh/cli/commands/config.py +0 -29
- solace_agent_mesh/cli/commands/init/__init__.py +0 -3
- solace_agent_mesh/cli/commands/init/ai_provider_step.py +0 -93
- solace_agent_mesh/cli/commands/init/broker_step.py +0 -99
- solace_agent_mesh/cli/commands/init/builtin_agent_step.py +0 -83
- solace_agent_mesh/cli/commands/init/check_if_already_done.py +0 -13
- solace_agent_mesh/cli/commands/init/create_config_file_step.py +0 -65
- solace_agent_mesh/cli/commands/init/create_other_project_files_step.py +0 -147
- solace_agent_mesh/cli/commands/init/file_service_step.py +0 -73
- solace_agent_mesh/cli/commands/init/init.py +0 -92
- solace_agent_mesh/cli/commands/init/project_structure_step.py +0 -16
- solace_agent_mesh/cli/commands/init/web_init_step.py +0 -32
- solace_agent_mesh/cli/commands/plugin/__init__.py +0 -3
- solace_agent_mesh/cli/commands/plugin/add.py +0 -100
- solace_agent_mesh/cli/commands/plugin/build.py +0 -268
- solace_agent_mesh/cli/commands/plugin/create.py +0 -117
- solace_agent_mesh/cli/commands/plugin/plugin.py +0 -124
- solace_agent_mesh/cli/commands/plugin/remove.py +0 -73
- solace_agent_mesh/cli/commands/run.py +0 -68
- solace_agent_mesh/cli/commands/visualizer.py +0 -138
- solace_agent_mesh/cli/config.py +0 -85
- solace_agent_mesh/common/action.py +0 -91
- solace_agent_mesh/common/action_list.py +0 -37
- solace_agent_mesh/common/action_response.py +0 -340
- solace_agent_mesh/common/mysql_database.py +0 -40
- solace_agent_mesh/common/postgres_database.py +0 -85
- solace_agent_mesh/common/prompt_templates.py +0 -28
- solace_agent_mesh/common/stimulus_utils.py +0 -152
- solace_agent_mesh/common/time.py +0 -24
- solace_agent_mesh/common/utils.py +0 -712
- solace_agent_mesh/config_portal/frontend/static/client/assets/_index-DMmCawWe.js +0 -42
- solace_agent_mesh/config_portal/frontend/static/client/assets/components-ZIfdTbrV.js +0 -191
- solace_agent_mesh/config_portal/frontend/static/client/assets/index-BJHAE5s4.js +0 -17
- solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-dd988f05.js +0 -1
- solace_agent_mesh/config_portal/frontend/static/client/assets/root-DX4gQ516.css +0 -1
- solace_agent_mesh/configs/agent_global.yaml +0 -74
- solace_agent_mesh/configs/agent_image_processing.yaml +0 -82
- solace_agent_mesh/configs/agent_slack.yaml +0 -64
- solace_agent_mesh/configs/agent_web_request.yaml +0 -75
- solace_agent_mesh/configs/conversation_to_file.yaml +0 -56
- solace_agent_mesh/configs/error_catcher.yaml +0 -56
- solace_agent_mesh/configs/monitor.yaml +0 -0
- solace_agent_mesh/configs/monitor_stim_and_errors_to_slack.yaml +0 -109
- solace_agent_mesh/configs/monitor_user_feedback.yaml +0 -58
- solace_agent_mesh/configs/orchestrator.yaml +0 -241
- solace_agent_mesh/configs/service_embedding.yaml +0 -81
- solace_agent_mesh/configs/service_llm.yaml +0 -265
- solace_agent_mesh/configs/visualize_websocket.yaml +0 -55
- solace_agent_mesh/gateway/components/gateway_base.py +0 -47
- solace_agent_mesh/gateway/components/gateway_input.py +0 -278
- solace_agent_mesh/gateway/components/gateway_output.py +0 -298
- solace_agent_mesh/gateway/identity/bamboohr_identity.py +0 -18
- solace_agent_mesh/gateway/identity/identity_base.py +0 -10
- solace_agent_mesh/gateway/identity/identity_provider.py +0 -60
- solace_agent_mesh/gateway/identity/no_identity.py +0 -9
- solace_agent_mesh/gateway/identity/passthru_identity.py +0 -9
- solace_agent_mesh/monitors/base_monitor_component.py +0 -26
- solace_agent_mesh/monitors/feedback/user_feedback_monitor.py +0 -75
- solace_agent_mesh/monitors/stim_and_errors/stim_and_error_monitor.py +0 -560
- solace_agent_mesh/orchestrator/__init__.py +0 -0
- solace_agent_mesh/orchestrator/action_manager.py +0 -237
- solace_agent_mesh/orchestrator/components/__init__.py +0 -0
- solace_agent_mesh/orchestrator/components/orchestrator_action_manager_timeout_component.py +0 -58
- solace_agent_mesh/orchestrator/components/orchestrator_action_response_component.py +0 -179
- solace_agent_mesh/orchestrator/components/orchestrator_register_component.py +0 -107
- solace_agent_mesh/orchestrator/components/orchestrator_stimulus_processor_component.py +0 -527
- solace_agent_mesh/orchestrator/components/orchestrator_streaming_output_component.py +0 -260
- solace_agent_mesh/orchestrator/orchestrator_main.py +0 -172
- solace_agent_mesh/orchestrator/orchestrator_prompt.py +0 -539
- solace_agent_mesh/services/__init__.py +0 -0
- solace_agent_mesh/services/authorization/providers/base_authorization_provider.py +0 -56
- solace_agent_mesh/services/bamboo_hr_service/__init__.py +0 -3
- solace_agent_mesh/services/bamboo_hr_service/bamboo_hr.py +0 -182
- solace_agent_mesh/services/common/__init__.py +0 -4
- solace_agent_mesh/services/common/auto_expiry.py +0 -45
- solace_agent_mesh/services/common/singleton.py +0 -18
- solace_agent_mesh/services/file_service/__init__.py +0 -14
- solace_agent_mesh/services/file_service/file_manager/__init__.py +0 -0
- solace_agent_mesh/services/file_service/file_manager/bucket_file_manager.py +0 -149
- solace_agent_mesh/services/file_service/file_manager/file_manager_base.py +0 -162
- solace_agent_mesh/services/file_service/file_manager/memory_file_manager.py +0 -64
- solace_agent_mesh/services/file_service/file_manager/volume_file_manager.py +0 -106
- solace_agent_mesh/services/file_service/file_service.py +0 -437
- solace_agent_mesh/services/file_service/file_service_constants.py +0 -54
- solace_agent_mesh/services/file_service/file_transformations.py +0 -141
- solace_agent_mesh/services/file_service/file_utils.py +0 -324
- solace_agent_mesh/services/file_service/transformers/__init__.py +0 -5
- solace_agent_mesh/services/history_service/__init__.py +0 -3
- solace_agent_mesh/services/history_service/history_providers/__init__.py +0 -0
- solace_agent_mesh/services/history_service/history_providers/base_history_provider.py +0 -54
- solace_agent_mesh/services/history_service/history_providers/file_history_provider.py +0 -74
- solace_agent_mesh/services/history_service/history_providers/index.py +0 -40
- solace_agent_mesh/services/history_service/history_providers/memory_history_provider.py +0 -33
- solace_agent_mesh/services/history_service/history_providers/mongodb_history_provider.py +0 -66
- solace_agent_mesh/services/history_service/history_providers/redis_history_provider.py +0 -66
- solace_agent_mesh/services/history_service/history_providers/sql_history_provider.py +0 -93
- solace_agent_mesh/services/history_service/history_service.py +0 -413
- solace_agent_mesh/services/history_service/long_term_memory/__init__.py +0 -0
- solace_agent_mesh/services/history_service/long_term_memory/long_term_memory.py +0 -399
- solace_agent_mesh/services/llm_service/components/llm_request_component.py +0 -340
- solace_agent_mesh/services/llm_service/components/llm_service_component_base.py +0 -152
- solace_agent_mesh/services/middleware_service/__init__.py +0 -0
- solace_agent_mesh/services/middleware_service/middleware_service.py +0 -20
- solace_agent_mesh/templates/action.py +0 -38
- solace_agent_mesh/templates/agent.py +0 -29
- solace_agent_mesh/templates/agent.yaml +0 -70
- solace_agent_mesh/templates/gateway-config-template.yaml +0 -6
- solace_agent_mesh/templates/gateway-default-config.yaml +0 -28
- solace_agent_mesh/templates/gateway-flows.yaml +0 -78
- solace_agent_mesh/templates/gateway-header.yaml +0 -16
- solace_agent_mesh/templates/gateway_base.py +0 -15
- solace_agent_mesh/templates/gateway_input.py +0 -98
- solace_agent_mesh/templates/gateway_output.py +0 -71
- solace_agent_mesh/templates/plugin-gateway-default-config.yaml +0 -29
- solace_agent_mesh/templates/plugin-pyproject.toml +0 -30
- solace_agent_mesh/templates/rest-api-default-config.yaml +0 -31
- solace_agent_mesh/templates/rest-api-flows.yaml +0 -81
- solace_agent_mesh/templates/slack-default-config.yaml +0 -16
- solace_agent_mesh/templates/slack-flows.yaml +0 -81
- solace_agent_mesh/templates/solace-agent-mesh-default.yaml +0 -86
- solace_agent_mesh/templates/solace-agent-mesh-plugin-default.yaml +0 -8
- solace_agent_mesh/templates/web-default-config.yaml +0 -10
- solace_agent_mesh/templates/web-flows.yaml +0 -76
- solace_agent_mesh/tools/__init__.py +0 -0
- solace_agent_mesh/tools/components/__init__.py +0 -0
- solace_agent_mesh/tools/components/conversation_formatter.py +0 -111
- solace_agent_mesh/tools/components/file_resolver_component.py +0 -58
- solace_agent_mesh/tools/config/runtime_config.py +0 -26
- solace_agent_mesh-0.2.3.dist-info/METADATA +0 -172
- solace_agent_mesh-0.2.3.dist-info/RECORD +0 -193
- solace_agent_mesh-0.2.3.dist-info/entry_points.txt +0 -3
- /solace_agent_mesh/{agents → agent}/__init__.py +0 -0
- /solace_agent_mesh/{agents/global → agent/adk}/__init__.py +0 -0
- /solace_agent_mesh/{agents/global/actions → agent/protocol}/__init__.py +0 -0
- /solace_agent_mesh/{agents/image_processing → agent/sac}/__init__.py +0 -0
- /solace_agent_mesh/{agents/image_processing/actions → agent/utils}/__init__.py +0 -0
- /solace_agent_mesh/{agents/web_request → config_portal/backend/plugin_catalog}/__init__.py +0 -0
- /solace_agent_mesh/{agents/web_request/actions → evaluation}/__init__.py +0 -0
- /solace_agent_mesh/gateway/{components → http_sse}/__init__.py +0 -0
- {solace_agent_mesh-0.2.3.dist-info → solace_agent_mesh-1.0.1.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Service layer for handling agent-related operations, primarily interacting
|
|
3
|
+
with the AgentRegistry.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from typing import List, Optional
|
|
7
|
+
|
|
8
|
+
from solace_ai_connector.common.log import log
|
|
9
|
+
|
|
10
|
+
from ....common.agent_registry import AgentRegistry
|
|
11
|
+
from ....common.types import AgentCard
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class AgentService:
|
|
15
|
+
"""
|
|
16
|
+
Provides methods for accessing information about discovered A2A agents.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
def __init__(self, agent_registry: AgentRegistry):
|
|
20
|
+
"""
|
|
21
|
+
Initializes the AgentService.
|
|
22
|
+
|
|
23
|
+
Args:
|
|
24
|
+
agent_registry: An instance of the shared AgentRegistry.
|
|
25
|
+
"""
|
|
26
|
+
if not isinstance(agent_registry, AgentRegistry):
|
|
27
|
+
raise TypeError("agent_registry must be an instance of AgentRegistry")
|
|
28
|
+
self._agent_registry = agent_registry
|
|
29
|
+
log.info("[AgentService] Initialized.")
|
|
30
|
+
|
|
31
|
+
def get_all_agents(self) -> List[AgentCard]:
|
|
32
|
+
"""
|
|
33
|
+
Retrieves all currently discovered and registered agent cards.
|
|
34
|
+
|
|
35
|
+
Returns:
|
|
36
|
+
A list of AgentCard objects.
|
|
37
|
+
"""
|
|
38
|
+
log_prefix = "[AgentService.get_all_agents] "
|
|
39
|
+
log.info("%sRetrieving all agents.", log_prefix)
|
|
40
|
+
agent_names = self._agent_registry.get_agent_names()
|
|
41
|
+
agents = []
|
|
42
|
+
for name in agent_names:
|
|
43
|
+
agent = self._agent_registry.get_agent(name)
|
|
44
|
+
if agent:
|
|
45
|
+
agents.append(agent)
|
|
46
|
+
else:
|
|
47
|
+
log.warning(
|
|
48
|
+
"%sAgent name '%s' found in list but not retrievable from registry.",
|
|
49
|
+
log_prefix,
|
|
50
|
+
name,
|
|
51
|
+
)
|
|
52
|
+
log.info("%sRetrieved %d agent cards.", log_prefix, len(agents))
|
|
53
|
+
return agents
|
|
54
|
+
|
|
55
|
+
def get_agent_by_name(self, agent_name: str) -> Optional[AgentCard]:
|
|
56
|
+
"""
|
|
57
|
+
Retrieves a specific agent card by its name.
|
|
58
|
+
|
|
59
|
+
Args:
|
|
60
|
+
agent_name: The name of the agent to retrieve.
|
|
61
|
+
|
|
62
|
+
Returns:
|
|
63
|
+
The AgentCard object if found, otherwise None.
|
|
64
|
+
"""
|
|
65
|
+
log_prefix = "[AgentService.get_agent_by_name] "
|
|
66
|
+
log.info("%sRetrieving agent by name '%s'.", log_prefix, agent_name)
|
|
67
|
+
agent = self._agent_registry.get_agent(agent_name)
|
|
68
|
+
log.info("%sFound: %s", log_prefix, agent is not None)
|
|
69
|
+
return agent
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Service layer for handling people-related operations, such as searching for users.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from typing import Any, Dict, List, Optional
|
|
6
|
+
|
|
7
|
+
from solace_ai_connector.common.log import log
|
|
8
|
+
|
|
9
|
+
from ....common.services.identity_service import BaseIdentityService
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class PeopleService:
|
|
13
|
+
"""
|
|
14
|
+
Provides methods for searching and retrieving user information,
|
|
15
|
+
acting as a layer on top of the configured IdentityService.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
def __init__(self, identity_service: Optional[BaseIdentityService]):
|
|
19
|
+
"""
|
|
20
|
+
Initializes the PeopleService.
|
|
21
|
+
|
|
22
|
+
Args:
|
|
23
|
+
identity_service: An instance of a configured BaseIdentityService, or None.
|
|
24
|
+
"""
|
|
25
|
+
self._identity_service = identity_service
|
|
26
|
+
self.log_identifier = "[PeopleService]"
|
|
27
|
+
log.info(
|
|
28
|
+
"%s Initialized with Identity Service: %s",
|
|
29
|
+
self.log_identifier,
|
|
30
|
+
identity_service is not None,
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
async def search_for_users(
|
|
34
|
+
self, query: str, limit: int = 10
|
|
35
|
+
) -> List[Dict[str, Any]]:
|
|
36
|
+
"""
|
|
37
|
+
Searches for users via the identity service.
|
|
38
|
+
|
|
39
|
+
Args:
|
|
40
|
+
query: The search query string.
|
|
41
|
+
limit: The maximum number of results to return.
|
|
42
|
+
|
|
43
|
+
Returns:
|
|
44
|
+
A list of user profile dictionaries.
|
|
45
|
+
"""
|
|
46
|
+
if not self._identity_service:
|
|
47
|
+
log.warning(
|
|
48
|
+
"%s Search requested but no identity service is configured.",
|
|
49
|
+
self.log_identifier,
|
|
50
|
+
)
|
|
51
|
+
return []
|
|
52
|
+
|
|
53
|
+
if not query or len(query) < 2:
|
|
54
|
+
return []
|
|
55
|
+
|
|
56
|
+
try:
|
|
57
|
+
log.debug(
|
|
58
|
+
"%s Searching for users with query: '%s', limit: %d",
|
|
59
|
+
self.log_identifier,
|
|
60
|
+
query,
|
|
61
|
+
limit,
|
|
62
|
+
)
|
|
63
|
+
results = await self._identity_service.search_users(query, limit)
|
|
64
|
+
log.info(
|
|
65
|
+
"%s Found %d users for query: '%s'",
|
|
66
|
+
self.log_identifier,
|
|
67
|
+
len(results),
|
|
68
|
+
query,
|
|
69
|
+
)
|
|
70
|
+
return results
|
|
71
|
+
except Exception as e:
|
|
72
|
+
log.exception(
|
|
73
|
+
"%s Error during user search for query '%s': %s",
|
|
74
|
+
self.log_identifier,
|
|
75
|
+
query,
|
|
76
|
+
e,
|
|
77
|
+
)
|
|
78
|
+
return []
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
"""
|
|
82
|
+
Service layer for handling people-related operations, such as searching for users.
|
|
83
|
+
"""
|
|
84
|
+
|
|
85
|
+
from typing import Any, Dict, List, Optional
|
|
86
|
+
|
|
87
|
+
from solace_ai_connector.common.log import log
|
|
88
|
+
|
|
89
|
+
from ....common.services.identity_service import BaseIdentityService
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
class PeopleService:
|
|
93
|
+
"""
|
|
94
|
+
Provides methods for searching and retrieving user information,
|
|
95
|
+
acting as a layer on top of the configured IdentityService.
|
|
96
|
+
"""
|
|
97
|
+
|
|
98
|
+
def __init__(self, identity_service: Optional[BaseIdentityService]):
|
|
99
|
+
"""
|
|
100
|
+
Initializes the PeopleService.
|
|
101
|
+
|
|
102
|
+
Args:
|
|
103
|
+
identity_service: An instance of a configured BaseIdentityService, or None.
|
|
104
|
+
"""
|
|
105
|
+
self._identity_service = identity_service
|
|
106
|
+
self.log_identifier = "[PeopleService]"
|
|
107
|
+
log.info(
|
|
108
|
+
"%s Initialized with Identity Service: %s",
|
|
109
|
+
self.log_identifier,
|
|
110
|
+
identity_service is not None,
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
async def search_for_users(
|
|
114
|
+
self, query: str, limit: int = 10
|
|
115
|
+
) -> List[Dict[str, Any]]:
|
|
116
|
+
"""
|
|
117
|
+
Searches for users via the identity service.
|
|
118
|
+
|
|
119
|
+
Args:
|
|
120
|
+
query: The search query string.
|
|
121
|
+
limit: The maximum number of results to return.
|
|
122
|
+
|
|
123
|
+
Returns:
|
|
124
|
+
A list of user profile dictionaries.
|
|
125
|
+
"""
|
|
126
|
+
if not self._identity_service:
|
|
127
|
+
log.warning(
|
|
128
|
+
"%s Search requested but no identity service is configured.",
|
|
129
|
+
self.log_identifier,
|
|
130
|
+
)
|
|
131
|
+
return []
|
|
132
|
+
|
|
133
|
+
if not query or len(query) < 2:
|
|
134
|
+
return []
|
|
135
|
+
|
|
136
|
+
try:
|
|
137
|
+
log.debug(
|
|
138
|
+
"%s Searching for users with query: '%s', limit: %d",
|
|
139
|
+
self.log_identifier,
|
|
140
|
+
query,
|
|
141
|
+
limit,
|
|
142
|
+
)
|
|
143
|
+
results = await self._identity_service.search_users(query, limit)
|
|
144
|
+
log.info(
|
|
145
|
+
"%s Found %d users for query: '%s'",
|
|
146
|
+
self.log_identifier,
|
|
147
|
+
len(results),
|
|
148
|
+
query,
|
|
149
|
+
)
|
|
150
|
+
return results
|
|
151
|
+
except Exception as e:
|
|
152
|
+
log.exception(
|
|
153
|
+
"%s Error during user search for query '%s': %s",
|
|
154
|
+
self.log_identifier,
|
|
155
|
+
query,
|
|
156
|
+
e,
|
|
157
|
+
)
|
|
158
|
+
return []
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
Here is the developer guide for the `services` directory.
|
|
2
|
+
|
|
3
|
+
## Quick Summary
|
|
4
|
+
The `services` directory contains the business logic layer for the HTTP SSE Gateway. It encapsulates core functionalities by providing high-level services for agent management, user identity searches, and A2A (Agent-to-Agent) task operations. These services abstract the complexities of interacting with the agent registry, external identity providers, and the underlying A2A messaging protocol.
|
|
5
|
+
|
|
6
|
+
## Files Overview
|
|
7
|
+
- `__init__.py` - Marks the directory as a Python package.
|
|
8
|
+
- `agent_service.py` - Service for retrieving information about discovered A2A agents.
|
|
9
|
+
- `people_service.py` - Service for searching for users via a configured identity service.
|
|
10
|
+
- `task_service.py` - Service for handling the cancellation of tasks with A2A agents.
|
|
11
|
+
|
|
12
|
+
## Developer API Reference
|
|
13
|
+
|
|
14
|
+
### __init__.py
|
|
15
|
+
**Purpose:** This file marks the `services` directory as a Python package, allowing its modules to be imported.
|
|
16
|
+
**Import:** N/A - No public interfaces.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
### agent_service.py
|
|
21
|
+
**Purpose:** Provides high-level methods for accessing information about discovered A2A agents from the shared `AgentRegistry`.
|
|
22
|
+
**Import:** `from src.solace_agent_mesh.gateway.http_sse.services.agent_service import AgentService`
|
|
23
|
+
|
|
24
|
+
**Classes:**
|
|
25
|
+
- `AgentService(agent_registry: AgentRegistry)` - A service that provides methods for accessing information about discovered A2A agents.
|
|
26
|
+
- `get_all_agents() -> List[AgentCard]` - Retrieves all currently discovered and registered agent cards from the registry.
|
|
27
|
+
- `get_agent_by_name(agent_name: str) -> Optional[AgentCard]` - Retrieves a specific agent card by its unique name. Returns `None` if the agent is not found.
|
|
28
|
+
|
|
29
|
+
**Usage Examples:**
|
|
30
|
+
```python
|
|
31
|
+
from typing import List, Optional
|
|
32
|
+
from src.solace_agent_mesh.gateway.http_sse.services.agent_service import AgentService
|
|
33
|
+
from src.solace_agent_mesh.common.agent_registry import AgentRegistry
|
|
34
|
+
from src.solace_agent_mesh.common.types import AgentCard
|
|
35
|
+
|
|
36
|
+
# In a real application, AgentRegistry would be a shared instance.
|
|
37
|
+
# For this example, we'll create a new one and populate it.
|
|
38
|
+
agent_registry = AgentRegistry()
|
|
39
|
+
my_agent_card = AgentCard(name="data-analyzer", description="Analyzes data files.")
|
|
40
|
+
agent_registry.register_agent(my_agent_card)
|
|
41
|
+
|
|
42
|
+
# 1. Initialize the service with the agent registry
|
|
43
|
+
agent_service = AgentService(agent_registry=agent_registry)
|
|
44
|
+
|
|
45
|
+
# 2. Get all available agents
|
|
46
|
+
all_agents = agent_service.get_all_agents()
|
|
47
|
+
print(f"Found {len(all_agents)} agent(s).")
|
|
48
|
+
for agent in all_agents:
|
|
49
|
+
print(f"- Agent: {agent.name}, Description: {agent.description}")
|
|
50
|
+
|
|
51
|
+
# 3. Get a specific agent by name
|
|
52
|
+
found_agent = agent_service.get_agent_by_name("data-analyzer")
|
|
53
|
+
if found_agent:
|
|
54
|
+
print(f"\nSuccessfully retrieved agent: {found_agent.name}")
|
|
55
|
+
else:
|
|
56
|
+
print("\nCould not find agent 'data-analyzer'.")
|
|
57
|
+
|
|
58
|
+
# 4. Try to get a non-existent agent
|
|
59
|
+
missing_agent = agent_service.get_agent_by_name("non-existent-agent")
|
|
60
|
+
print(f"Result for 'non-existent-agent': {missing_agent}")
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
### people_service.py
|
|
66
|
+
**Purpose:** Acts as a layer on top of a configured `IdentityService` to provide user search functionality. If no identity service is configured, it gracefully returns empty results.
|
|
67
|
+
**Import:** `from src.solace_agent_mesh.gateway.http_sse.services.people_service import PeopleService`
|
|
68
|
+
|
|
69
|
+
**Classes:**
|
|
70
|
+
- `PeopleService(identity_service: Optional[BaseIdentityService])` - A service for searching and retrieving user information.
|
|
71
|
+
- `search_for_users(query: str, limit: int = 10) -> List[Dict[str, Any]]` - Asynchronously searches for users via the identity service. Returns an empty list if the query is too short, no identity service is configured, or an error occurs.
|
|
72
|
+
|
|
73
|
+
**Usage Examples:**
|
|
74
|
+
```python
|
|
75
|
+
import asyncio
|
|
76
|
+
from typing import Any, Dict, List, Optional
|
|
77
|
+
from src.solace_agent_mesh.gateway.http_sse.services.people_service import PeopleService
|
|
78
|
+
from src.solace_agent_mesh.common.services.identity_service import BaseIdentityService
|
|
79
|
+
|
|
80
|
+
# Define a mock identity service for the example
|
|
81
|
+
class MockIdentityService(BaseIdentityService):
|
|
82
|
+
async def search_users(self, query: str, limit: int) -> List[Dict[str, Any]]:
|
|
83
|
+
print(f"MockIdentityService: Searching for '{query}' with limit {limit}")
|
|
84
|
+
all_users = [
|
|
85
|
+
{"id": "jdoe", "name": "John Doe", "email": "j.doe@example.com"},
|
|
86
|
+
{"id": "jsmith", "name": "Jane Smith", "email": "j.smith@example.com"},
|
|
87
|
+
]
|
|
88
|
+
return [user for user in all_users if query.lower() in user["name"].lower()][:limit]
|
|
89
|
+
|
|
90
|
+
async def main():
|
|
91
|
+
# 1. Initialize with a configured identity service
|
|
92
|
+
identity_service = MockIdentityService()
|
|
93
|
+
people_service = PeopleService(identity_service=identity_service)
|
|
94
|
+
|
|
95
|
+
# 2. Search for users
|
|
96
|
+
users = await people_service.search_for_users("john", limit=5)
|
|
97
|
+
print(f"Found {len(users)} user(s): {users}")
|
|
98
|
+
|
|
99
|
+
# 3. Initialize without an identity service
|
|
100
|
+
people_service_no_id = PeopleService(identity_service=None)
|
|
101
|
+
|
|
102
|
+
# 4. Search will return an empty list
|
|
103
|
+
empty_results = await people_service_no_id.search_for_users("jane")
|
|
104
|
+
print(f"Results with no identity service: {empty_results}")
|
|
105
|
+
|
|
106
|
+
if __name__ == "__main__":
|
|
107
|
+
asyncio.run(main())
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
### task_service.py
|
|
113
|
+
**Purpose:** Handles the business logic for cancelling A2A tasks. It uses `CoreA2AService` to construct the cancellation message and a provided publisher function to send it over the messaging fabric.
|
|
114
|
+
**Import:** `from src.solace_agent_mesh.gateway.http_sse.services.task_service import TaskService, PublishFunc`
|
|
115
|
+
|
|
116
|
+
**Classes:**
|
|
117
|
+
- `TaskService(core_a2a_service: CoreA2AService, publish_func: PublishFunc, namespace: str, gateway_id: str, sse_manager: SSEManager, task_context_map: Dict[str, Dict], task_context_lock: threading.Lock, app_name: str)` - A service for managing A2A task operations.
|
|
118
|
+
- `cancel_task(agent_name: str, task_id: str, client_id: str, user_id: str = "web_user") -> None` - Asynchronously constructs and publishes an A2A `CancelTaskRequest` message for a specific task.
|
|
119
|
+
|
|
120
|
+
**Type Aliases:**
|
|
121
|
+
- `PublishFunc: Callable[[str, Dict, Optional[Dict]], None]` - A callable that sends a message. It takes a topic, a payload dictionary, and optional user properties.
|
|
122
|
+
|
|
123
|
+
**Usage Examples:**
|
|
124
|
+
```python
|
|
125
|
+
import asyncio
|
|
126
|
+
import threading
|
|
127
|
+
from typing import Callable, Dict, Optional
|
|
128
|
+
|
|
129
|
+
from src.solace_agent_mesh.gateway.http_sse.services.task_service import TaskService, PublishFunc
|
|
130
|
+
from src.solace_agent_mesh.core_a2a.service import CoreA2AService
|
|
131
|
+
from src.solace_agent_mesh.gateway.http_sse.sse_manager import SSEManager
|
|
132
|
+
|
|
133
|
+
# Mock dependencies for the example
|
|
134
|
+
class MockCoreA2AService(CoreA2AService):
|
|
135
|
+
def cancel_task(self, agent_name, task_id, client_id, user_id):
|
|
136
|
+
topic = f"a2a/request/{agent_name}/cancelTask"
|
|
137
|
+
payload = {"taskId": task_id}
|
|
138
|
+
user_props = {"clientId": client_id, "userId": user_id}
|
|
139
|
+
return topic, payload, user_props
|
|
140
|
+
|
|
141
|
+
def my_publish_func(topic: str, payload: Dict, user_properties: Optional[Dict]):
|
|
142
|
+
print("\n--- Publishing Message ---")
|
|
143
|
+
print(f"Topic: {topic}")
|
|
144
|
+
print(f"Payload: {payload}")
|
|
145
|
+
print(f"User Properties: {user_properties}")
|
|
146
|
+
print("------------------------")
|
|
147
|
+
|
|
148
|
+
async def main():
|
|
149
|
+
# 1. Set up dependencies
|
|
150
|
+
core_a2a_service = MockCoreA2AService()
|
|
151
|
+
sse_manager = SSEManager()
|
|
152
|
+
task_context_map = {}
|
|
153
|
+
task_context_lock = threading.Lock()
|
|
154
|
+
|
|
155
|
+
# 2. Initialize TaskService
|
|
156
|
+
task_service = TaskService(
|
|
157
|
+
core_a2a_service=core_a2a_service,
|
|
158
|
+
publish_func=my_publish_func,
|
|
159
|
+
namespace="my-namespace",
|
|
160
|
+
gateway_id="gateway-01",
|
|
161
|
+
sse_manager=sse_manager,
|
|
162
|
+
task_context_map=task_context_map,
|
|
163
|
+
task_context_lock=task_context_lock,
|
|
164
|
+
app_name="my-app"
|
|
165
|
+
)
|
|
166
|
+
|
|
167
|
+
# 3. Call the cancel_task method
|
|
168
|
+
print("Requesting task cancellation...")
|
|
169
|
+
await task_service.cancel_task(
|
|
170
|
+
agent_name="report-generator",
|
|
171
|
+
task_id="task-12345",
|
|
172
|
+
client_id="client-abcde",
|
|
173
|
+
user_id="test.user"
|
|
174
|
+
)
|
|
175
|
+
print("Task cancellation request sent.")
|
|
176
|
+
|
|
177
|
+
if __name__ == "__main__":
|
|
178
|
+
asyncio.run(main())
|
|
179
|
+
```
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Service layer for handling A2A task submissions and cancellations.
|
|
3
|
+
Uses CoreA2AService for logic and a provided function for publishing.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import threading
|
|
7
|
+
from typing import Callable, Dict, Optional
|
|
8
|
+
|
|
9
|
+
from solace_ai_connector.common.log import log
|
|
10
|
+
|
|
11
|
+
from ....common.types import (
|
|
12
|
+
InternalError,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
from ....gateway.http_sse.sse_manager import SSEManager
|
|
16
|
+
from ....core_a2a.service import CoreA2AService
|
|
17
|
+
|
|
18
|
+
PublishFunc = Callable[[str, Dict, Optional[Dict]], None]
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class TaskService:
|
|
22
|
+
"""
|
|
23
|
+
Handles the logic for submitting and cancelling tasks to A2A agents.
|
|
24
|
+
Delegates A2A message construction to CoreA2AService and publishing
|
|
25
|
+
to an injected function.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
def __init__(
|
|
29
|
+
self,
|
|
30
|
+
core_a2a_service: CoreA2AService,
|
|
31
|
+
publish_func: PublishFunc,
|
|
32
|
+
namespace: str,
|
|
33
|
+
gateway_id: str,
|
|
34
|
+
sse_manager: SSEManager,
|
|
35
|
+
task_context_map: Dict[str, Dict],
|
|
36
|
+
task_context_lock: threading.Lock,
|
|
37
|
+
app_name: str,
|
|
38
|
+
):
|
|
39
|
+
"""
|
|
40
|
+
Initializes the TaskService.
|
|
41
|
+
|
|
42
|
+
Args:
|
|
43
|
+
core_a2a_service: An instance of the CoreA2AService.
|
|
44
|
+
publish_func: A callable function (provided by WebUIBackendComponent)
|
|
45
|
+
to publish messages to the A2A messaging layer.
|
|
46
|
+
Expected signature: publish_func(topic: str, payload: Dict, user_properties: Optional[Dict])
|
|
47
|
+
namespace: The A2A namespace string.
|
|
48
|
+
gateway_id: The unique ID of this gateway instance.
|
|
49
|
+
sse_manager: An instance of the SSEManager.
|
|
50
|
+
task_context_map: Shared dictionary to store task context.
|
|
51
|
+
task_context_lock: Lock for accessing the task context map.
|
|
52
|
+
app_name: The name of the SAC application (used for artifact context).
|
|
53
|
+
"""
|
|
54
|
+
if not isinstance(core_a2a_service, CoreA2AService):
|
|
55
|
+
raise TypeError("core_a2a_service must be an instance of CoreA2AService")
|
|
56
|
+
if not callable(publish_func):
|
|
57
|
+
raise TypeError("publish_func must be a callable function")
|
|
58
|
+
if not isinstance(sse_manager, SSEManager):
|
|
59
|
+
raise TypeError("sse_manager must be an instance of SSEManager")
|
|
60
|
+
|
|
61
|
+
self.core_a2a_service = core_a2a_service
|
|
62
|
+
self._publish_func = publish_func
|
|
63
|
+
self._namespace = namespace
|
|
64
|
+
self._gateway_id = gateway_id
|
|
65
|
+
self._sse_manager = sse_manager
|
|
66
|
+
self._task_context_map = task_context_map
|
|
67
|
+
self._task_context_lock = task_context_lock
|
|
68
|
+
self._app_name = app_name
|
|
69
|
+
log.info(
|
|
70
|
+
"[TaskService] Initialized with Gateway ID: %s, App Name: %s",
|
|
71
|
+
self._gateway_id,
|
|
72
|
+
self._app_name,
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
async def cancel_task(
|
|
76
|
+
self,
|
|
77
|
+
agent_name: str,
|
|
78
|
+
task_id: str,
|
|
79
|
+
client_id: str,
|
|
80
|
+
user_id: str = "web_user",
|
|
81
|
+
):
|
|
82
|
+
"""
|
|
83
|
+
Constructs and publishes an A2A CancelTaskRequest using CoreA2AService.
|
|
84
|
+
|
|
85
|
+
Args:
|
|
86
|
+
agent_name: The name of the agent that owns the task.
|
|
87
|
+
task_id: The ID of the task to cancel.
|
|
88
|
+
client_id: The ID of the client requesting cancellation (frontend).
|
|
89
|
+
user_id: An identifier for the user (optional).
|
|
90
|
+
|
|
91
|
+
Raises:
|
|
92
|
+
Exception: If constructing or publishing the message fails.
|
|
93
|
+
"""
|
|
94
|
+
log_prefix = "[TaskService][Task:%s] " % task_id
|
|
95
|
+
log.info(
|
|
96
|
+
"%sRequesting cancellation for task owned by agent '%s'",
|
|
97
|
+
log_prefix,
|
|
98
|
+
agent_name,
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
try:
|
|
102
|
+
target_topic, payload, user_properties = self.core_a2a_service.cancel_task(
|
|
103
|
+
agent_name=agent_name,
|
|
104
|
+
task_id=task_id,
|
|
105
|
+
client_id=client_id,
|
|
106
|
+
user_id=user_id,
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
log.debug(
|
|
110
|
+
"%sPublishing CancelTaskRequest to topic: %s", log_prefix, target_topic
|
|
111
|
+
)
|
|
112
|
+
self._publish_func(
|
|
113
|
+
topic=target_topic, payload=payload, user_properties=user_properties
|
|
114
|
+
)
|
|
115
|
+
log.info("%sSuccessfully published task cancellation request.", log_prefix)
|
|
116
|
+
|
|
117
|
+
except Exception as e:
|
|
118
|
+
log.exception("%sFailed to publish cancellation request: %s", log_prefix, e)
|
|
119
|
+
raise InternalError(
|
|
120
|
+
message="Failed to publish cancellation request: %s" % e
|
|
121
|
+
) from e
|