solace-agent-mesh 0.2.4__py3-none-any.whl → 1.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of solace-agent-mesh might be problematic. Click here for more details.
- 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 -181
- 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.4.dist-info → solace_agent_mesh-1.0.1.dist-info}/licenses/LICENSE +1 -1
- solace_agent_mesh/agents/base_agent_component.py +0 -256
- 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-a-zJ6rLx.js +0 -46
- 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-44c41103.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.4.dist-info/METADATA +0 -176
- solace_agent_mesh-0.2.4.dist-info/RECORD +0 -193
- solace_agent_mesh-0.2.4.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.4.dist-info → solace_agent_mesh-1.0.1.dist-info}/WHEEL +0 -0
|
@@ -1,340 +0,0 @@
|
|
|
1
|
-
"""LLM Request Component for performing LLM service requests."""
|
|
2
|
-
|
|
3
|
-
import uuid
|
|
4
|
-
from typing import Dict, Any
|
|
5
|
-
|
|
6
|
-
from solace_ai_connector.components.component_base import ComponentBase
|
|
7
|
-
from solace_ai_connector.common.log import log
|
|
8
|
-
from solace_ai_connector.common.message import Message
|
|
9
|
-
from solace_ai_connector.common.utils import ensure_slash_on_end
|
|
10
|
-
|
|
11
|
-
info = {
|
|
12
|
-
"class_name": "LLMRequestComponent",
|
|
13
|
-
"description": "Component that performs LLM service requests",
|
|
14
|
-
"config_parameters": [
|
|
15
|
-
{
|
|
16
|
-
"name": "llm_service_topic",
|
|
17
|
-
"required": True,
|
|
18
|
-
"description": "The topic for the LLM service",
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
"name": "stream_to_flow",
|
|
22
|
-
"required": False,
|
|
23
|
-
"description": (
|
|
24
|
-
"Name the flow to stream the output to - this must be configured for "
|
|
25
|
-
"llm_mode='stream'. This is mutually exclusive with stream_to_next_component."
|
|
26
|
-
),
|
|
27
|
-
"default": "",
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"name": "stream_to_next_component",
|
|
31
|
-
"required": False,
|
|
32
|
-
"description": (
|
|
33
|
-
"Whether to stream the output to the next component in the flow. "
|
|
34
|
-
"This is mutually exclusive with stream_to_flow."
|
|
35
|
-
),
|
|
36
|
-
"default": False,
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
"name": "llm_mode",
|
|
40
|
-
"required": False,
|
|
41
|
-
"description": (
|
|
42
|
-
"The mode for streaming results: 'sync' or 'stream'. 'stream' "
|
|
43
|
-
"will just stream the results to the named flow. 'none' will "
|
|
44
|
-
"wait for the full response."
|
|
45
|
-
),
|
|
46
|
-
"default": "none",
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
"name": "stream_batch_size",
|
|
50
|
-
"required": False,
|
|
51
|
-
"description": "The minimum number of words in a single streaming result.",
|
|
52
|
-
"default": 15,
|
|
53
|
-
},
|
|
54
|
-
],
|
|
55
|
-
"input_schema": {
|
|
56
|
-
"type": "object",
|
|
57
|
-
"properties": {
|
|
58
|
-
"messages": {
|
|
59
|
-
"type": "array",
|
|
60
|
-
"items": {
|
|
61
|
-
"type": "object",
|
|
62
|
-
"properties": {
|
|
63
|
-
"role": {
|
|
64
|
-
"type": "string",
|
|
65
|
-
"enum": ["system", "user", "assistant"],
|
|
66
|
-
},
|
|
67
|
-
"content": {"type": "string"},
|
|
68
|
-
},
|
|
69
|
-
"required": ["role", "content"],
|
|
70
|
-
},
|
|
71
|
-
},
|
|
72
|
-
"source_info": {
|
|
73
|
-
"type": "object",
|
|
74
|
-
"properties": {
|
|
75
|
-
"type": {"type": "string"},
|
|
76
|
-
},
|
|
77
|
-
"required": ["type"],
|
|
78
|
-
},
|
|
79
|
-
},
|
|
80
|
-
"required": ["messages"],
|
|
81
|
-
},
|
|
82
|
-
"output_schema": {
|
|
83
|
-
"type": "object",
|
|
84
|
-
"properties": {
|
|
85
|
-
"content": {
|
|
86
|
-
"type": "string",
|
|
87
|
-
"description": "The generated response from the model",
|
|
88
|
-
},
|
|
89
|
-
"chunk": {
|
|
90
|
-
"type": "string",
|
|
91
|
-
"description": "The current chunk of the response",
|
|
92
|
-
},
|
|
93
|
-
"response_uuid": {
|
|
94
|
-
"type": "string",
|
|
95
|
-
"description": "The UUID of the response",
|
|
96
|
-
},
|
|
97
|
-
"first_chunk": {
|
|
98
|
-
"type": "boolean",
|
|
99
|
-
"description": "Whether this is the first chunk of the response",
|
|
100
|
-
},
|
|
101
|
-
"last_chunk": {
|
|
102
|
-
"type": "boolean",
|
|
103
|
-
"description": "Whether this is the last chunk of the response",
|
|
104
|
-
},
|
|
105
|
-
"streaming": {
|
|
106
|
-
"type": "boolean",
|
|
107
|
-
"description": "Whether this is a streaming response",
|
|
108
|
-
},
|
|
109
|
-
},
|
|
110
|
-
"required": ["content"],
|
|
111
|
-
},
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
class LLMRequestComponent(ComponentBase):
|
|
116
|
-
"""Component that performs LLM service requests."""
|
|
117
|
-
|
|
118
|
-
def __init__(self, child_info=None, **kwargs):
|
|
119
|
-
super().__init__(child_info or info, **kwargs)
|
|
120
|
-
self.init()
|
|
121
|
-
|
|
122
|
-
def init(self):
|
|
123
|
-
"""Initialize the component with configuration parameters."""
|
|
124
|
-
self.llm_service_topic = ensure_slash_on_end(
|
|
125
|
-
self.get_config("llm_service_topic")
|
|
126
|
-
)
|
|
127
|
-
self.stream_to_flow = self.get_config("stream_to_flow")
|
|
128
|
-
self.stream_to_next_component = self.get_config("stream_to_next_component")
|
|
129
|
-
self.llm_mode = self.get_config("llm_mode")
|
|
130
|
-
self.stream_batch_size = self.get_config("stream_batch_size")
|
|
131
|
-
|
|
132
|
-
if self.stream_to_flow and self.stream_to_next_component:
|
|
133
|
-
raise ValueError(
|
|
134
|
-
"stream_to_flow and stream_to_next_component are mutually exclusive"
|
|
135
|
-
)
|
|
136
|
-
|
|
137
|
-
if not self.is_broker_request_response_enabled():
|
|
138
|
-
raise ValueError(
|
|
139
|
-
"LLM service topic is set, but the component does not "
|
|
140
|
-
f"have its broker request/response enabled, {self.__class__.__name__}"
|
|
141
|
-
)
|
|
142
|
-
|
|
143
|
-
def invoke(self, message: Message, data: Dict[str, Any]) -> Dict[str, Any]:
|
|
144
|
-
"""
|
|
145
|
-
Invoke the LLM service request.
|
|
146
|
-
|
|
147
|
-
Args:
|
|
148
|
-
message (Message): The input message.
|
|
149
|
-
data (Dict[str, Any]): The input data containing the messages.
|
|
150
|
-
|
|
151
|
-
Returns:
|
|
152
|
-
Dict[str, Any]: The response from the LLM service.
|
|
153
|
-
"""
|
|
154
|
-
messages = data.get("messages", [])
|
|
155
|
-
source_info = data.get("source_info", {})
|
|
156
|
-
llm_message = self._create_llm_message(message, messages, source_info)
|
|
157
|
-
response_uuid = str(uuid.uuid4())
|
|
158
|
-
|
|
159
|
-
try:
|
|
160
|
-
if self.llm_mode == "stream":
|
|
161
|
-
return self._handle_streaming(message, llm_message, response_uuid)
|
|
162
|
-
else:
|
|
163
|
-
return self._handle_sync(llm_message)
|
|
164
|
-
except Exception as e:
|
|
165
|
-
log.error("Error invoking LLM service: %s", e, exc_info=True)
|
|
166
|
-
raise
|
|
167
|
-
|
|
168
|
-
def _handle_sync(self, llm_message: Message) -> Dict[str, Any]:
|
|
169
|
-
"""
|
|
170
|
-
Handle synchronous LLM service request.
|
|
171
|
-
|
|
172
|
-
Args:
|
|
173
|
-
llm_message (Message): The message to send to the LLM service.
|
|
174
|
-
|
|
175
|
-
Returns:
|
|
176
|
-
Dict[str, Any]: The response from the LLM service.
|
|
177
|
-
"""
|
|
178
|
-
response = self.do_broker_request_response(llm_message)
|
|
179
|
-
return response.get_payload()
|
|
180
|
-
|
|
181
|
-
def _handle_streaming(
|
|
182
|
-
self, input_message: Message, llm_message: Message, response_uuid: str
|
|
183
|
-
) -> Dict[str, Any]:
|
|
184
|
-
"""
|
|
185
|
-
Handle streaming LLM service request.
|
|
186
|
-
|
|
187
|
-
Args:
|
|
188
|
-
input_message (Message): The original input message.
|
|
189
|
-
llm_message (Message): The message to send to the LLM service.
|
|
190
|
-
response_uuid (str): The UUID for the response.
|
|
191
|
-
|
|
192
|
-
Returns:
|
|
193
|
-
Dict[str, Any]: The final response from the LLM service.
|
|
194
|
-
"""
|
|
195
|
-
aggregate_result = ""
|
|
196
|
-
current_batch = ""
|
|
197
|
-
first_chunk = True
|
|
198
|
-
error = False
|
|
199
|
-
|
|
200
|
-
try:
|
|
201
|
-
for response_message, last_message in self.do_broker_request_response(
|
|
202
|
-
llm_message,
|
|
203
|
-
stream=True,
|
|
204
|
-
streaming_complete_expression="input.payload:last_chunk",
|
|
205
|
-
):
|
|
206
|
-
# Only process if the stimulus UUIDs correlate
|
|
207
|
-
if not self._correlate_request_and_response(input_message, response_message):
|
|
208
|
-
log.error("Mismatched request and response stimulus UUIDs: %s %s",
|
|
209
|
-
self._get_user_propery(input_message, "stimulus_uuid"),
|
|
210
|
-
self._get_user_propery(response_message, "stimulus_uuid"))
|
|
211
|
-
raise ValueError("Mismatched request and response stimulus UUIDs")
|
|
212
|
-
|
|
213
|
-
payload = response_message.get_payload()
|
|
214
|
-
content = payload.get("chunk", "")
|
|
215
|
-
aggregate_result += content
|
|
216
|
-
current_batch += content
|
|
217
|
-
|
|
218
|
-
if payload.get("handle_error", False):
|
|
219
|
-
log.error("Error invoking LLM service: %s", payload.get("content", ""), exc_info=True)
|
|
220
|
-
aggregate_result = payload.get("content", None)
|
|
221
|
-
last_message = True
|
|
222
|
-
error = True
|
|
223
|
-
|
|
224
|
-
if len(current_batch.split()) >= self.stream_batch_size or last_message:
|
|
225
|
-
self._send_streaming_chunk(
|
|
226
|
-
input_message,
|
|
227
|
-
current_batch,
|
|
228
|
-
aggregate_result,
|
|
229
|
-
response_uuid,
|
|
230
|
-
first_chunk,
|
|
231
|
-
last_message,
|
|
232
|
-
)
|
|
233
|
-
current_batch = ""
|
|
234
|
-
first_chunk = False
|
|
235
|
-
|
|
236
|
-
if last_message:
|
|
237
|
-
break
|
|
238
|
-
except TimeoutError as e:
|
|
239
|
-
log.error("Timeout error during streaming: %s", e, exc_info=True)
|
|
240
|
-
aggregate_result = "That request took too long to process. Try again with a more focused request or by breaking it in smaller parts."
|
|
241
|
-
error = True
|
|
242
|
-
except Exception as e:
|
|
243
|
-
log.error("Error during streaming: %s", e, exc_info=True)
|
|
244
|
-
aggregate_result = f"I apologize, but I encountered an error while processing your request: {str(e)}"
|
|
245
|
-
error = True
|
|
246
|
-
finally:
|
|
247
|
-
# Send a final error chunk if there was an error
|
|
248
|
-
if error:
|
|
249
|
-
self._send_streaming_chunk(
|
|
250
|
-
input_message,
|
|
251
|
-
aggregate_result,
|
|
252
|
-
aggregate_result,
|
|
253
|
-
response_uuid,
|
|
254
|
-
first_chunk,
|
|
255
|
-
True,
|
|
256
|
-
)
|
|
257
|
-
# Return the final result
|
|
258
|
-
return {
|
|
259
|
-
"content": aggregate_result,
|
|
260
|
-
"response_uuid": response_uuid,
|
|
261
|
-
"streaming": True,
|
|
262
|
-
"last_chunk": True,
|
|
263
|
-
"error": error
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
def _create_llm_message(self, message: Message, messages: list, source_info: dict) -> Message:
|
|
267
|
-
"""
|
|
268
|
-
Create a message for the LLM service request.
|
|
269
|
-
|
|
270
|
-
Args:
|
|
271
|
-
message (Message): The original input message.
|
|
272
|
-
messages (list): The list of messages to send to the LLM service.
|
|
273
|
-
source_info (dict): Information about the caller to help montoring LLM requests.
|
|
274
|
-
|
|
275
|
-
Returns:
|
|
276
|
-
Message: The created message for the LLM service.
|
|
277
|
-
"""
|
|
278
|
-
user_properties = message.get_user_properties().copy()
|
|
279
|
-
stimulus_uuid = user_properties.get("stimulus_uuid", str(uuid.uuid4()))
|
|
280
|
-
session_id = user_properties.get("session_id", "x")
|
|
281
|
-
originator_id = user_properties.get("originator_id", "x")
|
|
282
|
-
user_properties["llm_request_source_info"] = source_info
|
|
283
|
-
|
|
284
|
-
topic = f"{self.llm_service_topic}{stimulus_uuid}/{session_id}/{originator_id}"
|
|
285
|
-
|
|
286
|
-
return Message(
|
|
287
|
-
topic=topic,
|
|
288
|
-
payload={"messages": messages, "stream": True},
|
|
289
|
-
user_properties=user_properties,
|
|
290
|
-
)
|
|
291
|
-
|
|
292
|
-
def _send_streaming_chunk(
|
|
293
|
-
self,
|
|
294
|
-
input_message: Message,
|
|
295
|
-
chunk: str,
|
|
296
|
-
aggregate_result: str,
|
|
297
|
-
response_uuid: str,
|
|
298
|
-
first_chunk: bool,
|
|
299
|
-
last_chunk: bool,
|
|
300
|
-
):
|
|
301
|
-
"""
|
|
302
|
-
Send a streaming chunk to the specified flow or next component.
|
|
303
|
-
|
|
304
|
-
Args:
|
|
305
|
-
input_message (Message): The original input message.
|
|
306
|
-
chunk (str): The current chunk of the response.
|
|
307
|
-
aggregate_result (str): The aggregated result so far.
|
|
308
|
-
response_uuid (str): The UUID of the response.
|
|
309
|
-
first_chunk (bool): Whether this is the first chunk.
|
|
310
|
-
last_chunk (bool): Whether this is the last chunk.
|
|
311
|
-
"""
|
|
312
|
-
payload = {
|
|
313
|
-
"chunk": chunk,
|
|
314
|
-
"content": aggregate_result,
|
|
315
|
-
"response_uuid": response_uuid,
|
|
316
|
-
"first_chunk": first_chunk,
|
|
317
|
-
"last_chunk": last_chunk,
|
|
318
|
-
"streaming": True,
|
|
319
|
-
}
|
|
320
|
-
message = Message(
|
|
321
|
-
payload=payload,
|
|
322
|
-
user_properties=input_message.get_user_properties(),
|
|
323
|
-
)
|
|
324
|
-
|
|
325
|
-
if self.stream_to_flow:
|
|
326
|
-
self.send_to_flow(self.stream_to_flow, message)
|
|
327
|
-
elif self.stream_to_next_component:
|
|
328
|
-
self.send_message(message)
|
|
329
|
-
|
|
330
|
-
@staticmethod
|
|
331
|
-
def _get_user_propery(message, user_property_key):
|
|
332
|
-
message_props = message.get_user_properties()
|
|
333
|
-
return message_props.get(user_property_key, "unknown")
|
|
334
|
-
|
|
335
|
-
# Define a helper function to check if response matches request
|
|
336
|
-
@staticmethod
|
|
337
|
-
def _correlate_request_and_response(request_msg, response_msg, correlation_key="stimulus_uuid"):
|
|
338
|
-
return (LLMRequestComponent._get_user_propery(request_msg, correlation_key) ==
|
|
339
|
-
LLMRequestComponent._get_user_propery(response_msg, correlation_key))
|
|
340
|
-
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
"""This is the base class that provides LLM and Embedding service access"""
|
|
2
|
-
|
|
3
|
-
from abc import ABC , abstractmethod
|
|
4
|
-
from solace_ai_connector.components.component_base import ComponentBase
|
|
5
|
-
from solace_ai_connector.common.message import Message
|
|
6
|
-
from solace_ai_connector.common.utils import ensure_slash_on_end
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
agent_info = {
|
|
11
|
-
"class_name": "LLMServiceComponentBase",
|
|
12
|
-
"description": "This is the base class that provides LLM and Embedding service access",
|
|
13
|
-
"config_parameters": [
|
|
14
|
-
{
|
|
15
|
-
"name": "llm_service_topic",
|
|
16
|
-
"required": False,
|
|
17
|
-
"description": "The topic to use for the LLM service",
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
"name": "embedding_service_topic",
|
|
21
|
-
"required": False,
|
|
22
|
-
"description": "The topic to use for the Embedding service",
|
|
23
|
-
},
|
|
24
|
-
]
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
class LLMServiceComponentBase(ComponentBase, ABC):
|
|
29
|
-
|
|
30
|
-
def __init__(self, module_info={}, **kwargs):
|
|
31
|
-
super().__init__(module_info, **kwargs)
|
|
32
|
-
self.current_message = None
|
|
33
|
-
self.current_request_data = None
|
|
34
|
-
|
|
35
|
-
self.llm_service_topic = self.get_config("llm_service_topic")
|
|
36
|
-
if self.llm_service_topic:
|
|
37
|
-
self.llm_service_topic = ensure_slash_on_end(self.llm_service_topic)
|
|
38
|
-
# Check that the component's broker request/response is enabled
|
|
39
|
-
if not self.is_broker_request_response_enabled():
|
|
40
|
-
raise ValueError(
|
|
41
|
-
"LLM service topic is set, but the component does not "
|
|
42
|
-
f"have its broker request/response enabled, {self.__class__.__name__}"
|
|
43
|
-
)
|
|
44
|
-
|
|
45
|
-
self.embedding_service_topic = self.get_config("embedding_service_topic")
|
|
46
|
-
if self.embedding_service_topic:
|
|
47
|
-
self.embedding_service_topic = ensure_slash_on_end(
|
|
48
|
-
self.embedding_service_topic
|
|
49
|
-
)
|
|
50
|
-
# Check that the component's broker request/response is enabled
|
|
51
|
-
if not self.is_broker_request_response_enabled():
|
|
52
|
-
raise ValueError(
|
|
53
|
-
"Embedding service topic is set, but the component does not "
|
|
54
|
-
f"have its broker request/response enabled, {self.__class__.__name__}"
|
|
55
|
-
)
|
|
56
|
-
|
|
57
|
-
def process_pre_invoke(self, message):
|
|
58
|
-
self.current_request_data = super().process_pre_invoke(message)
|
|
59
|
-
return self.current_request_data
|
|
60
|
-
|
|
61
|
-
def process_post_invoke(self, result, message):
|
|
62
|
-
super().process_post_invoke(result, message)
|
|
63
|
-
self.current_request_data = None
|
|
64
|
-
|
|
65
|
-
@abstractmethod
|
|
66
|
-
def invoke(self, message, data):
|
|
67
|
-
pass
|
|
68
|
-
|
|
69
|
-
def do_llm_service_request_stream(self, message):
|
|
70
|
-
for response_message, last_message in self.do_broker_request_response(
|
|
71
|
-
message,
|
|
72
|
-
stream=True,
|
|
73
|
-
streaming_complete_expression="input.payload:last_chunk",
|
|
74
|
-
):
|
|
75
|
-
yield response_message.get_payload(), last_message
|
|
76
|
-
return
|
|
77
|
-
|
|
78
|
-
def do_llm_service_request(self, messages, stream=False, resolve_files=False):
|
|
79
|
-
"""Send a message to the LLM service"""
|
|
80
|
-
if not self.llm_service_topic:
|
|
81
|
-
raise ValueError(f"LLM service topic not set on {self.__class__.__name__}")
|
|
82
|
-
|
|
83
|
-
user_properties = self.current_message.get_user_properties().copy()
|
|
84
|
-
|
|
85
|
-
# Add the topic suffix
|
|
86
|
-
stimulus_uuid = user_properties.get("stimulus_uuid", "x")
|
|
87
|
-
session_id = user_properties.get("session_id", "x")
|
|
88
|
-
originator_id = user_properties.get("originator_id", "x")
|
|
89
|
-
|
|
90
|
-
topic = f"{self.llm_service_topic}{stimulus_uuid}/{session_id}/{originator_id}"
|
|
91
|
-
user_properties["resolve_files"] = resolve_files
|
|
92
|
-
|
|
93
|
-
if self.current_request_data:
|
|
94
|
-
action_list_id = self.current_request_data.get("action_list_id")
|
|
95
|
-
action_idx = self.current_request_data.get("action_idx")
|
|
96
|
-
action_name = self.current_request_data.get("action_name")
|
|
97
|
-
|
|
98
|
-
source_info = {
|
|
99
|
-
"type": "agent",
|
|
100
|
-
"agent_name": self.info.get("agent_name"),
|
|
101
|
-
"action_list_id": action_list_id,
|
|
102
|
-
"action_idx": action_idx,
|
|
103
|
-
"action_name": action_name,
|
|
104
|
-
}
|
|
105
|
-
else:
|
|
106
|
-
source_info = {
|
|
107
|
-
"type": "agent",
|
|
108
|
-
"agent_name": self.info.get("agent_name"),
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
user_properties["llm_request_source_info"] = source_info
|
|
112
|
-
|
|
113
|
-
message = Message(
|
|
114
|
-
topic=topic,
|
|
115
|
-
payload={"messages": messages, "stream": stream},
|
|
116
|
-
user_properties=user_properties,
|
|
117
|
-
)
|
|
118
|
-
|
|
119
|
-
if stream:
|
|
120
|
-
return self.do_llm_service_request_stream(message)
|
|
121
|
-
else:
|
|
122
|
-
return self.do_broker_request_response(message).get_payload()
|
|
123
|
-
|
|
124
|
-
def do_embedding_service_request(self, items, resolve_files=False):
|
|
125
|
-
"""Send a message to the Embedding service"""
|
|
126
|
-
if not self.embedding_service_topic:
|
|
127
|
-
raise ValueError(
|
|
128
|
-
f"Embedding service topic not set on {self.__class__.__name__}"
|
|
129
|
-
)
|
|
130
|
-
|
|
131
|
-
user_properties = self.current_message.get_user_properties().copy()
|
|
132
|
-
|
|
133
|
-
# Add the topic suffix
|
|
134
|
-
stimulus_uuid = user_properties.get("stimulus_uuid", "x")
|
|
135
|
-
session_id = user_properties.get("session_id", "x")
|
|
136
|
-
originator_id = user_properties.get("originator_id", "x")
|
|
137
|
-
|
|
138
|
-
topic = f"{self.embedding_service_topic}{stimulus_uuid}/{session_id}/{originator_id}"
|
|
139
|
-
user_properties["resolve_files"] = resolve_files
|
|
140
|
-
|
|
141
|
-
message = Message(
|
|
142
|
-
topic=topic,
|
|
143
|
-
payload={
|
|
144
|
-
"items": items,
|
|
145
|
-
},
|
|
146
|
-
user_properties=user_properties,
|
|
147
|
-
)
|
|
148
|
-
|
|
149
|
-
return (
|
|
150
|
-
self.do_broker_request_response(message).get_payload().get("embeddings", [])
|
|
151
|
-
)
|
|
152
|
-
|
|
File without changes
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
from ..common.singleton import SingletonMeta
|
|
2
|
-
|
|
3
|
-
class MiddlewareService(metaclass=SingletonMeta):
|
|
4
|
-
def __init__(self):
|
|
5
|
-
self._middleware = {}
|
|
6
|
-
self._register_defaults()
|
|
7
|
-
|
|
8
|
-
def _register_defaults(self):
|
|
9
|
-
# Default middleware that just returns actions unchanged
|
|
10
|
-
self.register("filter_action", lambda user_properties, actions: actions)
|
|
11
|
-
# Default middleware that allows all actions
|
|
12
|
-
self.register("base_agent_filter", lambda user_properties, action: True)
|
|
13
|
-
# Default middleware that allows all action requests
|
|
14
|
-
self.register("validate_action_request", lambda user_properties, action_details: True)
|
|
15
|
-
|
|
16
|
-
def register(self, name: str, middleware_fn):
|
|
17
|
-
self._middleware[name] = middleware_fn
|
|
18
|
-
|
|
19
|
-
def get(self, name: str):
|
|
20
|
-
return self._middleware.get(name, lambda *args, **kwargs: args[0] if len(args) == 1 else args)
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"""Action description"""
|
|
2
|
-
|
|
3
|
-
from solace_ai_connector.common.log import log
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
from solace_agent_mesh.common.action import Action
|
|
7
|
-
from solace_agent_mesh.common.action_response import ActionResponse
|
|
8
|
-
|
|
9
|
-
# To import from a local file, like this file, use a relative path from the {{SNAKE_CASE_NAME}}
|
|
10
|
-
# For example, to load this class, use:
|
|
11
|
-
# from {{SNAKE_CASE_NAME}}.actions.sample_action import SampleAction
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class SampleAction(Action):
|
|
15
|
-
def __init__(self, **kwargs):
|
|
16
|
-
super().__init__(
|
|
17
|
-
{
|
|
18
|
-
"name": "sample_action",
|
|
19
|
-
"prompt_directive": ("detailed description of the action. " "examples, chain of thought, etc." "details for parameters"),
|
|
20
|
-
"params": [
|
|
21
|
-
{
|
|
22
|
-
"name": "sampleParam",
|
|
23
|
-
"desc": "Description of the parameter",
|
|
24
|
-
"type": "type of parameter (string, int, etc.)",
|
|
25
|
-
}
|
|
26
|
-
],
|
|
27
|
-
"required_scopes": ["{{SNAKE_CASE_NAME}}:sample_action:read"],
|
|
28
|
-
},
|
|
29
|
-
**kwargs,
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
def invoke(self, params, meta={}) -> ActionResponse:
|
|
33
|
-
log.debug("Doing sample action: %s", params["sampleParam"])
|
|
34
|
-
return self.do_action(params["sampleParam"])
|
|
35
|
-
|
|
36
|
-
def do_action(self, sample) -> ActionResponse:
|
|
37
|
-
sample += " Action performed"
|
|
38
|
-
return ActionResponse(message=sample)
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"""The agent component for the {{SPACED_NAME}}"""
|
|
2
|
-
|
|
3
|
-
import os
|
|
4
|
-
import copy
|
|
5
|
-
import sys
|
|
6
|
-
|
|
7
|
-
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
|
8
|
-
sys.path.append(os.path.dirname(SCRIPT_DIR))
|
|
9
|
-
|
|
10
|
-
from solace_agent_mesh.agents.base_agent_component import (
|
|
11
|
-
agent_info,
|
|
12
|
-
BaseAgentComponent,
|
|
13
|
-
)
|
|
14
|
-
|
|
15
|
-
# Sample action import
|
|
16
|
-
from {{SNAKE_CASE_NAME}}.actions.sample_action import SampleAction
|
|
17
|
-
|
|
18
|
-
info = copy.deepcopy(agent_info)
|
|
19
|
-
info["agent_name"] = "{{SNAKE_CASE_NAME}}"
|
|
20
|
-
info["class_name"] = "{{CAMEL_CASE_NAME}}AgentComponent"
|
|
21
|
-
info["description"] = (
|
|
22
|
-
"This agent handles ... It should be used "
|
|
23
|
-
"when an user explicitly requests information ... "
|
|
24
|
-
)
|
|
25
|
-
|
|
26
|
-
class {{CAMEL_CASE_NAME}}AgentComponent(BaseAgentComponent):
|
|
27
|
-
info = info
|
|
28
|
-
# sample action
|
|
29
|
-
actions = [SampleAction]
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
# This is the configuration file for the {{SPACED_NAME}} agent
|
|
2
|
-
#
|
|
3
|
-
# It fulfills a few functions:
|
|
4
|
-
# 1. A flow to do periodic registration of this agent with the orchestrator
|
|
5
|
-
# 2. A flow to process action requests and produce action responses
|
|
6
|
-
# This requires a custom component to process the action requests
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
log:
|
|
10
|
-
stdout_log_level: INFO
|
|
11
|
-
log_file_level: INFO
|
|
12
|
-
log_file: solace_ai_connector.log
|
|
13
|
-
|
|
14
|
-
shared_config:
|
|
15
|
-
- broker_config: &broker_connection
|
|
16
|
-
dev_mode: ${SOLACE_DEV_MODE, false}
|
|
17
|
-
broker_url: ${SOLACE_BROKER_URL}
|
|
18
|
-
broker_username: ${SOLACE_BROKER_USERNAME}
|
|
19
|
-
broker_password: ${SOLACE_BROKER_PASSWORD}
|
|
20
|
-
broker_vpn: ${SOLACE_BROKER_VPN}
|
|
21
|
-
temporary_queue: ${USE_TEMPORARY_QUEUES, false}
|
|
22
|
-
|
|
23
|
-
flows:
|
|
24
|
-
|
|
25
|
-
# Flow to handle action requests
|
|
26
|
-
- name: {{SNAKE_CASE_NAME}}_action_request_processor
|
|
27
|
-
components:
|
|
28
|
-
# Input from a Solace broker
|
|
29
|
-
- component_name: broker_input
|
|
30
|
-
component_module: broker_input
|
|
31
|
-
component_config:
|
|
32
|
-
<<: *broker_connection
|
|
33
|
-
payload_encoding: utf-8
|
|
34
|
-
payload_format: json
|
|
35
|
-
broker_queue_name: ${SOLACE_AGENT_MESH_NAMESPACE}agent_{{SNAKE_CASE_NAME}}_action_request
|
|
36
|
-
broker_subscriptions:
|
|
37
|
-
# Subscribe to all {{SNAKE_CASE_NAME}} actions - note that if we
|
|
38
|
-
# wanted to handle some {{SNAKE_CASE_NAME}} actions elsewhere, we would
|
|
39
|
-
# need to be more specific here
|
|
40
|
-
- topic: ${SOLACE_AGENT_MESH_NAMESPACE}solace-agent-mesh/v1/actionRequest/*/*/{{SNAKE_CASE_NAME}}/>
|
|
41
|
-
qos: 1
|
|
42
|
-
|
|
43
|
-
# Custom component to process the action request
|
|
44
|
-
- component_name: action_request_processor
|
|
45
|
-
component_base_path: .
|
|
46
|
-
# path is completed at build time
|
|
47
|
-
component_module: {{MODULE_DIRECTORY}}.agents.{{SNAKE_CASE_NAME}}.{{SNAKE_CASE_NAME}}_agent_component
|
|
48
|
-
component_config:
|
|
49
|
-
llm_service_topic: ${SOLACE_AGENT_MESH_NAMESPACE}solace-agent-mesh/v1/llm-service/request/general-good/
|
|
50
|
-
embedding_service_topic: ${SOLACE_AGENT_MESH_NAMESPACE}solace-agent-mesh/v1/embedding-service/request/text/
|
|
51
|
-
# Pass required configuration to the component
|
|
52
|
-
broker_request_response:
|
|
53
|
-
enabled: true
|
|
54
|
-
broker_config: *broker_connection
|
|
55
|
-
request_expiry_ms: 120000
|
|
56
|
-
payload_encoding: utf-8
|
|
57
|
-
payload_format: json
|
|
58
|
-
response_topic_prefix: ${SOLACE_AGENT_MESH_NAMESPACE}solace-agent-mesh/v1
|
|
59
|
-
response_queue_prefix: ${SOLACE_AGENT_MESH_NAMESPACE}solace-agent-mesh/v1
|
|
60
|
-
component_input:
|
|
61
|
-
source_expression: input.payload
|
|
62
|
-
|
|
63
|
-
# Output to a Solace broker
|
|
64
|
-
- component_name: broker_output
|
|
65
|
-
component_module: broker_output
|
|
66
|
-
component_config:
|
|
67
|
-
<<: *broker_connection
|
|
68
|
-
payload_encoding: utf-8
|
|
69
|
-
payload_format: json
|
|
70
|
-
copy_user_properties: true
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
- {{SNAKE_CASE_NAME}}_config: &gateway_interface_config
|
|
2
|
-
key: "value" # Add your configuration here
|
|
3
|
-
|
|
4
|
-
- response_format_prompt: &response_format_prompt >
|
|
5
|
-
Return all responses in markdown format. When returning files or images, use the <{{tag_prefix}}file> tags.
|
|
6
|
-
Do not return files as links or with generic <file> tags.
|