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,55 @@
|
|
|
1
|
+
# Solace Agent Mesh Orchestrator Agent Configurations
|
|
2
|
+
|
|
3
|
+
log:
|
|
4
|
+
stdout_log_level: INFO
|
|
5
|
+
log_file_level: INFO
|
|
6
|
+
log_file: __LOG_FILE_NAME__
|
|
7
|
+
|
|
8
|
+
# Shared SAM config
|
|
9
|
+
!include ../shared_config.yaml
|
|
10
|
+
|
|
11
|
+
apps:
|
|
12
|
+
- name: __APP_NAME__
|
|
13
|
+
app_base_path: .
|
|
14
|
+
app_module: solace_agent_mesh.agent.sac.app
|
|
15
|
+
broker:
|
|
16
|
+
<<: *broker_connection
|
|
17
|
+
|
|
18
|
+
app_config:
|
|
19
|
+
namespace: __NAMESPACE__
|
|
20
|
+
supports_streaming: __SUPPORTS_STREAMING__
|
|
21
|
+
agent_name: "__AGENT_NAME__"
|
|
22
|
+
display_name: "__AGENT_NAME__"
|
|
23
|
+
model: *planning_model
|
|
24
|
+
|
|
25
|
+
instruction: |
|
|
26
|
+
__INSTRUCTION__
|
|
27
|
+
inject_system_purpose: true
|
|
28
|
+
inject_response_format: true
|
|
29
|
+
inject_user_profile: true
|
|
30
|
+
session_service: __SESSION_SERVICE__
|
|
31
|
+
artifact_service: __ARTIFACT_SERVICE__
|
|
32
|
+
artifact_handling_mode: "__ARTIFACT_HANDLING_MODE__"
|
|
33
|
+
enable_embed_resolution: __ENABLE_EMBED_RESOLUTION__
|
|
34
|
+
enable_artifact_content_instruction: __ENABLE_ARTIFACT_CONTENT_INSTRUCTION__
|
|
35
|
+
data_tools_config: *default_data_tools_config
|
|
36
|
+
tools:
|
|
37
|
+
- group_name: artifact_management
|
|
38
|
+
tool_type: builtin-group
|
|
39
|
+
- tool_type: builtin-group
|
|
40
|
+
group_name: "data_analysis"
|
|
41
|
+
|
|
42
|
+
agent_card:
|
|
43
|
+
description: "__AGENT_CARD_DESCRIPTION__"
|
|
44
|
+
defaultInputModes: __DEFAULT_INPUT_MODES__
|
|
45
|
+
defaultOutputModes: __DEFAULT_OUTPUT_MODES__
|
|
46
|
+
skills: []
|
|
47
|
+
|
|
48
|
+
agent_card_publishing:
|
|
49
|
+
interval_seconds: __AGENT_CARD_PUBLISHING_INTERVAL__
|
|
50
|
+
agent_discovery:
|
|
51
|
+
enabled: __AGENT_DISCOVERY_ENABLED__
|
|
52
|
+
inter_agent_communication:
|
|
53
|
+
allow_list: __INTER_AGENT_COMMUNICATION_ALLOW_LIST__
|
|
54
|
+
__INTER_AGENT_COMMUNICATION_DENY_LIST_LINE__
|
|
55
|
+
request_timeout_seconds: __INTER_AGENT_COMMUNICATION_TIMEOUT__
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Plugin Metadata:
|
|
2
|
+
# Name: __PLUGIN_KEBAB_CASE_NAME__
|
|
3
|
+
# Version: __PLUGIN_VERSION__
|
|
4
|
+
# Description: __PLUGIN_DESCRIPTION__
|
|
5
|
+
# Author: __PLUGIN_AUTHOR_NAME__ <__PLUGIN_AUTHOR_EMAIL__>
|
|
6
|
+
#
|
|
7
|
+
# --- Start of Agent Configuration Template ---
|
|
8
|
+
# Solace Agent Mesh: Plugin Configuration Template
|
|
9
|
+
#
|
|
10
|
+
# This file serves as a template for creating new agent configurations from this plugin.
|
|
11
|
+
# Use placeholders like __COMPONENT_KEBAB_CASE_NAME__, __COMPONENT_PASCAL_CASE_NAME__,
|
|
12
|
+
# and __COMPONENT_UPPER_SNAKE_CASE_NAME__ where the specific component name should be inserted.
|
|
13
|
+
|
|
14
|
+
log:
|
|
15
|
+
stdout_log_level: INFO
|
|
16
|
+
log_file_level: DEBUG
|
|
17
|
+
log_file: __COMPONENT_KEBAB_CASE_NAME__.log
|
|
18
|
+
|
|
19
|
+
# To use the `shared_config.yaml` file, uncomment the following line and remove the `shared_config` section below.
|
|
20
|
+
# !include ../shared_config.yaml
|
|
21
|
+
shared_config:
|
|
22
|
+
- broker_connection: &broker_connection
|
|
23
|
+
dev_mode: ${SOLACE_DEV_MODE, false}
|
|
24
|
+
broker_url: ${SOLACE_BROKER_URL, ws://localhost:8080}
|
|
25
|
+
broker_username: ${SOLACE_BROKER_USERNAME, default}
|
|
26
|
+
broker_password: ${SOLACE_BROKER_PASSWORD, default}
|
|
27
|
+
broker_vpn: ${SOLACE_BROKER_VPN, default}
|
|
28
|
+
temporary_queue: ${USE_TEMPORARY_QUEUES, true}
|
|
29
|
+
|
|
30
|
+
- models:
|
|
31
|
+
general: &general_model
|
|
32
|
+
# This dictionary structure tells ADK to use the LiteLlm wrapper.
|
|
33
|
+
# 'model' uses the specific model identifier your endpoint expects.
|
|
34
|
+
model: ${LLM_SERVICE_GENERAL_MODEL_NAME} # Use env var for model name
|
|
35
|
+
# 'api_base' tells LiteLLM where to send the request.
|
|
36
|
+
api_base: ${LLM_SERVICE_ENDPOINT} # Use env var for endpoint URL
|
|
37
|
+
# 'api_key' provides authentication.
|
|
38
|
+
api_key: ${LLM_SERVICE_API_KEY} # Use env var for API key
|
|
39
|
+
|
|
40
|
+
- services:
|
|
41
|
+
# Default session service configuration
|
|
42
|
+
session_service: &default_session_service
|
|
43
|
+
type: "memory"
|
|
44
|
+
default_behavior: "PERSISTENT"
|
|
45
|
+
|
|
46
|
+
# Default artifact service configuration
|
|
47
|
+
artifact_service: &default_artifact_service
|
|
48
|
+
type: "filesystem"
|
|
49
|
+
base_path: "/tmp/samv2"
|
|
50
|
+
artifact_scope: namespace # Or "namespace", "app", "custom"
|
|
51
|
+
|
|
52
|
+
apps:
|
|
53
|
+
- name: __COMPONENT_KEBAB_CASE_NAME__-app
|
|
54
|
+
app_base_path: .
|
|
55
|
+
app_module: solace_agent_mesh.agent.sac.app
|
|
56
|
+
broker:
|
|
57
|
+
<<: *broker_connection
|
|
58
|
+
|
|
59
|
+
# App Level Config
|
|
60
|
+
app_config:
|
|
61
|
+
namespace: ${NAMESPACE}
|
|
62
|
+
supports_streaming: true
|
|
63
|
+
agent_name: "__COMPONENT_PASCAL_CASE_NAME__"
|
|
64
|
+
display_name: "__COMPONENT_PASCAL_CASE_NAME__ Agent"
|
|
65
|
+
model: *general_model
|
|
66
|
+
|
|
67
|
+
instruction: |
|
|
68
|
+
This is a component created from the __COMPONENT_PASCAL_CASE_NAME__ plugin.
|
|
69
|
+
Configure its specific instructions here.
|
|
70
|
+
|
|
71
|
+
tools:
|
|
72
|
+
- group_name: artifact_management
|
|
73
|
+
tool_type: builtin-group
|
|
74
|
+
|
|
75
|
+
# Example: Plugin creator should define their tools.
|
|
76
|
+
# - tool_type: mcp
|
|
77
|
+
# connection_params:
|
|
78
|
+
# type: stdio
|
|
79
|
+
# command: "my-mcp-server-command"
|
|
80
|
+
# args: ["--arg1", "value1"]
|
|
81
|
+
# timeout: 30
|
|
82
|
+
|
|
83
|
+
# --- Example Python Tools (defined in tools.py) ---
|
|
84
|
+
# - tool_type: python
|
|
85
|
+
# component_module: __PLUGIN_SNAKE_CASE_NAME__.tools
|
|
86
|
+
# component_base_path: . # Relative to where the agent runs
|
|
87
|
+
# function_name: example_text_processor_tool
|
|
88
|
+
# tool_config:
|
|
89
|
+
# prefix: "PluginProcessed: "
|
|
90
|
+
|
|
91
|
+
# - tool_type: python
|
|
92
|
+
# component_module: __PLUGIN_SNAKE_CASE_NAME__.tools
|
|
93
|
+
# component_base_path: .
|
|
94
|
+
# function_name: example_file_creator_tool
|
|
95
|
+
# tool_config: {} # Add specific config if needed by the tool
|
|
96
|
+
|
|
97
|
+
# --- Example Builtin Tools ---
|
|
98
|
+
# - tool_type: builtin-group
|
|
99
|
+
# group_name: "text_to_speech"
|
|
100
|
+
# tool_config: {}
|
|
101
|
+
|
|
102
|
+
session_service: *default_session_service
|
|
103
|
+
artifact_service: *default_artifact_service
|
|
104
|
+
|
|
105
|
+
artifact_handling_mode: "embed"
|
|
106
|
+
enable_embed_resolution: true
|
|
107
|
+
enable_artifact_content_instruction: true
|
|
108
|
+
|
|
109
|
+
agent_card:
|
|
110
|
+
description: "__PLUGIN_DESCRIPTION__"
|
|
111
|
+
defaultInputModes: ["text"]
|
|
112
|
+
defaultOutputModes: ["text"]
|
|
113
|
+
skills:
|
|
114
|
+
# - id: "example_tool"
|
|
115
|
+
# name: "Example Tool"
|
|
116
|
+
# description: "An example tool provided by the __PLUGIN_PASCAL_CASE_NAME__ plugin."
|
|
117
|
+
|
|
118
|
+
agent_card_publishing: { interval_seconds: 10 }
|
|
119
|
+
agent_discovery: { enabled: false }
|
|
120
|
+
inter_agent_communication:
|
|
121
|
+
allow_list: []
|
|
122
|
+
request_timeout_seconds: 30
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Plugin Metadata:
|
|
2
|
+
# Name: __PLUGIN_KEBAB_CASE_NAME__
|
|
3
|
+
# Version: __PLUGIN_VERSION__
|
|
4
|
+
# Description: __PLUGIN_DESCRIPTION__
|
|
5
|
+
# Author: __PLUGIN_AUTHOR_NAME__ <__PLUGIN_AUTHOR_EMAIL__>
|
|
6
|
+
#
|
|
7
|
+
# --- Start of Custom Configuration Template ---
|
|
8
|
+
# Solace Agent Mesh: Custom Configuration Template
|
|
9
|
+
#
|
|
10
|
+
# This file serves as a template for creating new custom configurations from this plugin.
|
|
11
|
+
# Use placeholders like __COMPONENT_KEBAB_CASE_NAME__, __COMPONENT_PASCAL_CASE_NAME__,
|
|
12
|
+
# and __COMPONENT_UPPER_SNAKE_CASE_NAME__ where the specific component name should be inserted.
|
|
13
|
+
|
|
14
|
+
# To use the `shared_config.yaml` file, uncomment the following line and remove the `shared_config` section below.
|
|
15
|
+
# !include ../shared_config.yaml
|
|
16
|
+
|
|
17
|
+
shared_config:
|
|
18
|
+
- broker_connection: &broker_connection
|
|
19
|
+
dev_mode: ${SOLACE_DEV_MODE, false}
|
|
20
|
+
broker_url: ${SOLACE_BROKER_URL, ws://localhost:8080}
|
|
21
|
+
broker_username: ${SOLACE_BROKER_USERNAME, default}
|
|
22
|
+
broker_password: ${SOLACE_BROKER_PASSWORD, default}
|
|
23
|
+
broker_vpn: ${SOLACE_BROKER_VPN, default}
|
|
24
|
+
temporary_queue: ${USE_TEMPORARY_QUEUES, true}
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
__PLUGIN_SNAKE_CASE_NAME__: {}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Solace Agent Mesh Custom Plugin
|
|
2
|
+
|
|
3
|
+
class __COMPONENT_PASCAL_CASE_NAME__:
|
|
4
|
+
def template_function(self):
|
|
5
|
+
"""
|
|
6
|
+
This function serves as a placeholder for custom template logic.
|
|
7
|
+
It can be modified to include specific functionality as needed.
|
|
8
|
+
"""
|
|
9
|
+
# Custom logic goes here
|
|
10
|
+
print("This is a custom template function.")
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Plugin Metadata:
|
|
2
|
+
# Name: __PLUGIN_KEBAB_CASE_NAME__
|
|
3
|
+
# Version: __PLUGIN_VERSION__
|
|
4
|
+
# Description: __PLUGIN_DESCRIPTION__
|
|
5
|
+
# Author: __PLUGIN_AUTHOR_NAME__ <__PLUGIN_AUTHOR_EMAIL__>
|
|
6
|
+
#
|
|
7
|
+
# --- Start of Gateway Configuration Template ---
|
|
8
|
+
# Solace Agent Mesh: Gateway Configuration Template
|
|
9
|
+
#
|
|
10
|
+
# This file serves as a template for creating new gateway configurations from this plugin.
|
|
11
|
+
# Use placeholders like __COMPONENT_KEBAB_CASE_NAME__, __COMPONENT_PASCAL_CASE_NAME__,
|
|
12
|
+
# and __COMPONENT_UPPER_SNAKE_CASE_NAME__ where the specific component name should be inserted.
|
|
13
|
+
|
|
14
|
+
log:
|
|
15
|
+
stdout_log_level: INFO
|
|
16
|
+
log_file_level: DEBUG
|
|
17
|
+
log_file: __COMPONENT_KEBAB_CASE_NAME__.log
|
|
18
|
+
|
|
19
|
+
# To use the `shared_config.yaml` file, uncomment the following line and remove the `shared_config` section below.
|
|
20
|
+
# !include ../shared_config.yaml
|
|
21
|
+
|
|
22
|
+
shared_config:
|
|
23
|
+
- broker_connection: &broker_connection
|
|
24
|
+
dev_mode: ${SOLACE_DEV_MODE, false}
|
|
25
|
+
broker_url: ${SOLACE_BROKER_URL, ws://localhost:8080}
|
|
26
|
+
broker_username: ${SOLACE_BROKER_USERNAME, default}
|
|
27
|
+
broker_password: ${SOLACE_BROKER_PASSWORD, default}
|
|
28
|
+
broker_vpn: ${SOLACE_BROKER_VPN, default}
|
|
29
|
+
temporary_queue: ${USE_TEMPORARY_QUEUES, true}
|
|
30
|
+
|
|
31
|
+
- services:
|
|
32
|
+
# Default artifact service configuration
|
|
33
|
+
artifact_service: &default_artifact_service
|
|
34
|
+
type: "filesystem"
|
|
35
|
+
base_path: "/tmp/samv2"
|
|
36
|
+
artifact_scope: namespace # Or "namespace", "app", "custom"
|
|
37
|
+
|
|
38
|
+
apps:
|
|
39
|
+
# --- App Definition ---
|
|
40
|
+
- name: __COMPONENT_PASCAL_CASE_NAME____app # Unique name for this gateway app instance
|
|
41
|
+
app_module: __PLUGIN_SNAKE_CASE_NAME__.app # Points to the plugin's App class
|
|
42
|
+
broker:
|
|
43
|
+
<<: *broker_connection
|
|
44
|
+
|
|
45
|
+
app_config:
|
|
46
|
+
namespace: "${NAMESPACE}"
|
|
47
|
+
gateway_id: __COMPONENT_KEBAB_CASE_NAME__-gw-01
|
|
48
|
+
artifact_service: *default_artifact_service
|
|
49
|
+
|
|
50
|
+
authorization_service:
|
|
51
|
+
type: "none" # Or "default_rbac"
|
|
52
|
+
|
|
53
|
+
system_purpose: >
|
|
54
|
+
The system is an AI Chatbot with agentic capabilities.
|
|
55
|
+
It will use the agents available to provide information,
|
|
56
|
+
reasoning and general assistance for the users in this system.
|
|
57
|
+
**Always return useful artifacts and files that you create to the user.**
|
|
58
|
+
Provide a status update before each tool call.
|
|
59
|
+
Your external name is Agent Mesh.
|
|
60
|
+
|
|
61
|
+
response_format: >
|
|
62
|
+
Responses should be clear, concise, and professionally toned.
|
|
63
|
+
Format responses to the user in Markdown using appropriate formatting.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[tool.hatch.metadata]
|
|
6
|
+
allow-direct-references = true
|
|
7
|
+
|
|
8
|
+
[tool.__PLUGIN_SNAKE_CASE_NAME__.metadata]
|
|
9
|
+
type = "__PLUGIN_META_DATA_TYPE__"
|
|
10
|
+
|
|
11
|
+
[project]
|
|
12
|
+
name = "__PLUGIN_SNAKE_CASE_NAME__"
|
|
13
|
+
version = "__PLUGIN_VERSION__"
|
|
14
|
+
authors = [
|
|
15
|
+
{ name="__PLUGIN_AUTHOR_NAME__", email="__PLUGIN_AUTHOR_EMAIL__" },
|
|
16
|
+
]
|
|
17
|
+
description = "__PLUGIN_DESCRIPTION__"
|
|
18
|
+
readme = "README.md"
|
|
19
|
+
requires-python = ">=3.10"
|
|
20
|
+
dependencies = [
|
|
21
|
+
"solace_agent_mesh~=__SAM_VERSION__",
|
|
22
|
+
# Add plugin-specific dependencies here
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
[tool.hatch.build.targets.wheel]
|
|
26
|
+
packages = ["src/__PLUGIN_SNAKE_CASE_NAME__"]
|
|
27
|
+
src-path = "src"
|
|
28
|
+
|
|
29
|
+
[tool.hatch.build.targets.wheel.force-include]
|
|
30
|
+
"src/__PLUGIN_SNAKE_CASE_NAME__" = "__PLUGIN_SNAKE_CASE_NAME__/"
|
|
31
|
+
"config.yaml" = "__PLUGIN_SNAKE_CASE_NAME__/config.yaml"
|
|
32
|
+
"README.md" = "__PLUGIN_SNAKE_CASE_NAME__/README.md"
|
|
33
|
+
"pyproject.toml" = "__PLUGIN_SNAKE_CASE_NAME__/pyproject.toml"
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# __PLUGIN_KEBAB_CASE_NAME__ SAM Plugin
|
|
2
|
+
|
|
3
|
+
__PLUGIN_DESCRIPTION__
|
|
4
|
+
|
|
5
|
+
This is a plugin for the Solace Agent Mesh (SAM).
|
|
6
|
+
|
|
7
|
+
## Configuration (`config.yaml`)
|
|
8
|
+
|
|
9
|
+
The `config.yaml` in this plugin serves as a template. When you use `sam plugin add <component_name> --plugin __PLUGIN_KEBAB_CASE_NAME__`, the following placeholders in the YAML structure will be replaced with variations of `<component_name>`:
|
|
10
|
+
- `__COMPONENT_UPPER_SNAKE_CASE_NAME__`
|
|
11
|
+
- `__COMPONENT_KEBAB_CASE_NAME__`
|
|
12
|
+
- `__COMPONENT_PASCAL_CASE_NAME__`
|
|
13
|
+
|
|
14
|
+
Customize the `config.yaml` in this plugin directory to define the base configuration for components created from it.
|
|
15
|
+
|
|
16
|
+
## Source Code (`src/`)
|
|
17
|
+
The `src/` directory contains the Python source code for your plugin.
|
|
18
|
+
|
|
19
|
+
## Installation (as a developer of this plugin)
|
|
20
|
+
|
|
21
|
+
To build and install this plugin locally for testing:
|
|
22
|
+
```bash
|
|
23
|
+
sam plugin build
|
|
24
|
+
pip install dist/*.whl
|
|
25
|
+
```
|
|
26
|
+
(Or `pip install .` if preferred, `sam plugin build` is for creating the distributable wheel)
|
|
27
|
+
|
|
28
|
+
## Usage (as a user of this plugin)
|
|
29
|
+
|
|
30
|
+
Once the plugin is installed (e.g., from PyPI or a local wheel file):
|
|
31
|
+
```bash
|
|
32
|
+
sam plugin add <your-new-component-name> --plugin __PLUGIN_KEBAB_CASE_NAME__
|
|
33
|
+
```
|
|
34
|
+
This will create a new component configuration at `configs/plugins/<your-new-component-name-kebab-case>.yaml`.
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
import uuid
|
|
3
|
+
from datetime import datetime, timezone
|
|
4
|
+
from typing import Any, Dict, Optional
|
|
5
|
+
|
|
6
|
+
from google.adk.tools import ToolContext
|
|
7
|
+
from solace_ai_connector.common.log import log
|
|
8
|
+
from solace_agent_mesh.agent.utils.artifact_helpers import (
|
|
9
|
+
save_artifact_with_metadata,
|
|
10
|
+
DEFAULT_SCHEMA_MAX_KEYS,
|
|
11
|
+
)
|
|
12
|
+
from solace_agent_mesh.agent.utils.context_helpers import get_original_session_id
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
async def example_text_processor_tool(
|
|
16
|
+
text_input: str,
|
|
17
|
+
uppercase: bool = False, # Example of a boolean parameter
|
|
18
|
+
tool_context: Optional[ToolContext] = None,
|
|
19
|
+
tool_config: Optional[Dict[str, Any]] = None,
|
|
20
|
+
) -> Dict[str, Any]:
|
|
21
|
+
"""
|
|
22
|
+
An example tool that processes input text, optionally converts it to uppercase,
|
|
23
|
+
and adds a prefix from tool_config.
|
|
24
|
+
"""
|
|
25
|
+
plugin_name = "__PLUGIN_SPACED_NAME__"
|
|
26
|
+
log_identifier = f"[{plugin_name}:example_text_processor_tool]"
|
|
27
|
+
log.info(f"{log_identifier} Received text: '{text_input}', uppercase: {uppercase}")
|
|
28
|
+
|
|
29
|
+
current_tool_config = tool_config if tool_config is not None else {}
|
|
30
|
+
prefix = current_tool_config.get("prefix", "Processed: ")
|
|
31
|
+
|
|
32
|
+
processed_text = text_input
|
|
33
|
+
if uppercase:
|
|
34
|
+
processed_text = processed_text.upper()
|
|
35
|
+
|
|
36
|
+
final_text = f"{prefix}{processed_text}"
|
|
37
|
+
|
|
38
|
+
log.info(f"{log_identifier} Processed text: '{final_text}'")
|
|
39
|
+
return {
|
|
40
|
+
"status": "success",
|
|
41
|
+
"message": "Text processed successfully by example_text_processor_tool.",
|
|
42
|
+
"original_input": text_input,
|
|
43
|
+
"processed_text": final_text,
|
|
44
|
+
"was_uppercased": uppercase,
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
async def example_text_file_creator_tool(
|
|
49
|
+
filename: str,
|
|
50
|
+
content: str,
|
|
51
|
+
tool_context: Optional[ToolContext] = None,
|
|
52
|
+
tool_config: Optional[Dict[str, Any]] = None,
|
|
53
|
+
) -> Dict[str, Any]:
|
|
54
|
+
"""
|
|
55
|
+
An example tool that creates a text file and saves it as an artifact
|
|
56
|
+
using the Solace Agent Mesh artifact service.
|
|
57
|
+
"""
|
|
58
|
+
plugin_name = "__PLUGIN_SPACED_NAME__"
|
|
59
|
+
log_identifier = f"[{plugin_name}:example_text_file_creator_tool]"
|
|
60
|
+
log.info(
|
|
61
|
+
f"{log_identifier} Received request to create file: '{filename}' with content starting: '{content[:50]}...'"
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
if not tool_context or not tool_context._invocation_context:
|
|
65
|
+
log.error(
|
|
66
|
+
f"{log_identifier} ToolContext or InvocationContext is missing. Cannot save artifact."
|
|
67
|
+
)
|
|
68
|
+
return {
|
|
69
|
+
"status": "error",
|
|
70
|
+
"message": "ToolContext or InvocationContext is missing.",
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
inv_context = tool_context._invocation_context
|
|
74
|
+
app_name = getattr(inv_context, "app_name", None)
|
|
75
|
+
user_id = getattr(inv_context, "user_id", None)
|
|
76
|
+
session_id = get_original_session_id(inv_context)
|
|
77
|
+
artifact_service = getattr(inv_context, "artifact_service", None)
|
|
78
|
+
|
|
79
|
+
if not all([app_name, user_id, session_id, artifact_service]):
|
|
80
|
+
missing_parts = [
|
|
81
|
+
part
|
|
82
|
+
for part, val in [
|
|
83
|
+
("app_name", app_name),
|
|
84
|
+
("user_id", user_id),
|
|
85
|
+
("session_id", session_id),
|
|
86
|
+
("artifact_service", artifact_service),
|
|
87
|
+
]
|
|
88
|
+
if not val
|
|
89
|
+
]
|
|
90
|
+
log.error(
|
|
91
|
+
f"{log_identifier} Missing required context parts for artifact saving: {', '.join(missing_parts)}"
|
|
92
|
+
)
|
|
93
|
+
return {
|
|
94
|
+
"status": "error",
|
|
95
|
+
"message": f"Missing required context parts for artifact saving: {', '.join(missing_parts)}",
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
output_filename = filename
|
|
99
|
+
if not output_filename.lower().endswith(".txt"):
|
|
100
|
+
output_filename += ".txt"
|
|
101
|
+
|
|
102
|
+
content_bytes = content.encode("utf-8")
|
|
103
|
+
mime_type = "text/plain"
|
|
104
|
+
timestamp = datetime.now(timezone.utc)
|
|
105
|
+
|
|
106
|
+
metadata_dict = {
|
|
107
|
+
"description": f"Text file created by {plugin_name}'s example_text_file_creator_tool.",
|
|
108
|
+
"source_tool": "example_text_file_creator_tool",
|
|
109
|
+
"original_requested_filename": filename,
|
|
110
|
+
"creation_timestamp_iso": timestamp.isoformat(),
|
|
111
|
+
"content_character_count": len(content),
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
log.info(
|
|
115
|
+
f"{log_identifier} Attempting to save artifact '{output_filename}' via artifact_service."
|
|
116
|
+
)
|
|
117
|
+
try:
|
|
118
|
+
save_result = await save_artifact_with_metadata(
|
|
119
|
+
artifact_service=artifact_service,
|
|
120
|
+
app_name=app_name,
|
|
121
|
+
user_id=user_id,
|
|
122
|
+
session_id=session_id,
|
|
123
|
+
filename=output_filename,
|
|
124
|
+
content_bytes=content_bytes,
|
|
125
|
+
mime_type=mime_type,
|
|
126
|
+
metadata_dict=metadata_dict,
|
|
127
|
+
timestamp=timestamp,
|
|
128
|
+
schema_max_keys=DEFAULT_SCHEMA_MAX_KEYS,
|
|
129
|
+
tool_context=tool_context,
|
|
130
|
+
)
|
|
131
|
+
if save_result.get("status") == "error":
|
|
132
|
+
log.error(
|
|
133
|
+
f"{log_identifier} Failed to save artifact: {save_result.get('message')}"
|
|
134
|
+
)
|
|
135
|
+
return {
|
|
136
|
+
"status": "error",
|
|
137
|
+
"message": f"Failed to save artifact: {save_result.get('message')}",
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
log.info(
|
|
141
|
+
f"{log_identifier} Artifact '{output_filename}' v{save_result['data_version']} saved successfully."
|
|
142
|
+
)
|
|
143
|
+
return {
|
|
144
|
+
"status": "success",
|
|
145
|
+
"message": f"File '{output_filename}' created and saved as artifact v{save_result['data_version']}.",
|
|
146
|
+
"output_filename": output_filename,
|
|
147
|
+
"output_version": save_result["data_version"],
|
|
148
|
+
}
|
|
149
|
+
except Exception as e:
|
|
150
|
+
log.exception(f"{log_identifier} Unexpected error during artifact saving: {e}")
|
|
151
|
+
return {
|
|
152
|
+
"status": "error",
|
|
153
|
+
"message": f"An unexpected error occurred during artifact saving: {e}",
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
# Example of how these might be tested or run if this file was executed directly.
|
|
158
|
+
# This assumes the script is run in an environment where solace_agent_mesh is importable,
|
|
159
|
+
# or the imports at the top will fail.
|
|
160
|
+
if __name__ == "__main__":
|
|
161
|
+
|
|
162
|
+
async def run_tests():
|
|
163
|
+
print("--- Testing example_text_processor_tool ---")
|
|
164
|
+
# For standalone testing, ToolContext might be minimal or None if ADK is not fully available.
|
|
165
|
+
# The tool should handle tool_context=None gracefully if it's designed to be testable standalone.
|
|
166
|
+
|
|
167
|
+
# A more complete mock for standalone testing if needed:
|
|
168
|
+
class MockArtifactService:
|
|
169
|
+
async def save_artifact(
|
|
170
|
+
self, **kwargs
|
|
171
|
+
): # Match expected signature elements
|
|
172
|
+
log.info(
|
|
173
|
+
f"MockArtifactService.save_artifact called with filename: {kwargs.get('filename')}"
|
|
174
|
+
)
|
|
175
|
+
return {
|
|
176
|
+
"uri": f"mock://{kwargs.get('filename')}",
|
|
177
|
+
"version": 1,
|
|
178
|
+
} # Simulate ADK response
|
|
179
|
+
|
|
180
|
+
async def save_artifact_metadata(self, **kwargs):
|
|
181
|
+
log.info(
|
|
182
|
+
f"MockArtifactService.save_artifact_metadata called for: {kwargs.get('filename')}"
|
|
183
|
+
)
|
|
184
|
+
return {
|
|
185
|
+
"uri": f"mock://{kwargs.get('filename')}.metadata",
|
|
186
|
+
"version": 1,
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
class MockInvocationContext:
|
|
190
|
+
def __init__(self):
|
|
191
|
+
self.app_name = "test_app"
|
|
192
|
+
self.user_id = "test_user"
|
|
193
|
+
self.session_id = "test_session_123"
|
|
194
|
+
self.artifact_service = MockArtifactService()
|
|
195
|
+
# Add other attributes if your tool or helpers expect them
|
|
196
|
+
|
|
197
|
+
class MockToolContext:
|
|
198
|
+
def __init__(self):
|
|
199
|
+
self._invocation_context = MockInvocationContext()
|
|
200
|
+
|
|
201
|
+
mock_context = MockToolContext()
|
|
202
|
+
|
|
203
|
+
text_result1 = await example_text_processor_tool(
|
|
204
|
+
"hello world",
|
|
205
|
+
uppercase=True,
|
|
206
|
+
tool_context=mock_context,
|
|
207
|
+
tool_config={"prefix": "TestPrefix: "},
|
|
208
|
+
)
|
|
209
|
+
print(f"Text tool result 1: {text_result1}")
|
|
210
|
+
|
|
211
|
+
text_result2 = await example_text_processor_tool(
|
|
212
|
+
"another test", tool_context=mock_context
|
|
213
|
+
)
|
|
214
|
+
print(f"Text tool result 2: {text_result2}")
|
|
215
|
+
|
|
216
|
+
print("\n--- Testing example_text_file_creator_tool ---")
|
|
217
|
+
file_result = await example_text_file_creator_tool(
|
|
218
|
+
"my_example_file.txt",
|
|
219
|
+
"This is the content of the example file created by the plugin template.",
|
|
220
|
+
tool_context=mock_context, # Using the mock context with a mock artifact service
|
|
221
|
+
)
|
|
222
|
+
print(f"File tool result: {file_result}")
|
|
223
|
+
|
|
224
|
+
asyncio.run(run_tests())
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
shared_config:
|
|
2
|
+
- broker_connection: &broker_connection
|
|
3
|
+
dev_mode: ${SOLACE_DEV_MODE, false}
|
|
4
|
+
broker_url: ${SOLACE_BROKER_URL, ws://localhost:8080}
|
|
5
|
+
broker_username: ${SOLACE_BROKER_USERNAME, default}
|
|
6
|
+
broker_password: ${SOLACE_BROKER_PASSWORD, default}
|
|
7
|
+
broker_vpn: ${SOLACE_BROKER_VPN, default}
|
|
8
|
+
temporary_queue: ${USE_TEMPORARY_QUEUES, true}
|
|
9
|
+
|
|
10
|
+
- models:
|
|
11
|
+
planning: &planning_model
|
|
12
|
+
# This dictionary structure tells ADK to use the LiteLlm wrapper.
|
|
13
|
+
# 'model' uses the specific model identifier your endpoint expects.
|
|
14
|
+
model: ${LLM_SERVICE_PLANNING_MODEL_NAME} # Use env var for model name
|
|
15
|
+
# 'api_base' tells LiteLLM where to send the request.
|
|
16
|
+
api_base: ${LLM_SERVICE_ENDPOINT} # Use env var for endpoint URL
|
|
17
|
+
# 'api_key' provides authentication.
|
|
18
|
+
api_key: ${LLM_SERVICE_API_KEY} # Use env var for API key
|
|
19
|
+
|
|
20
|
+
general: &general_model
|
|
21
|
+
# This dictionary structure tells ADK to use the LiteLlm wrapper.
|
|
22
|
+
# 'model' uses the specific model identifier your endpoint expects.
|
|
23
|
+
model: ${LLM_SERVICE_GENERAL_MODEL_NAME} # Use env var for model name
|
|
24
|
+
# 'api_base' tells LiteLLM where to send the request.
|
|
25
|
+
api_base: ${LLM_SERVICE_ENDPOINT} # Use env var for endpoint URL
|
|
26
|
+
# 'api_key' provides authentication.
|
|
27
|
+
api_key: ${LLM_SERVICE_API_KEY} # Use env var for API key
|
|
28
|
+
|
|
29
|
+
image_gen: &image_generation_model
|
|
30
|
+
# This dictionary structure tells ADK to use the LiteLlm wrapper.
|
|
31
|
+
# 'model' uses the specific model identifier your endpoint expects.
|
|
32
|
+
model: ${IMAGE_MODEL_NAME} # Use env var for model name
|
|
33
|
+
# 'api_base' tells LiteLLM where to send the request.
|
|
34
|
+
api_base: ${IMAGE_SERVICE_ENDPOINT} # Use env var for endpoint URL
|
|
35
|
+
# 'api_key' provides authentication.
|
|
36
|
+
api_key: ${IMAGE_SERVICE_API_KEY} # Use env var for API key
|
|
37
|
+
|
|
38
|
+
report_gen: &report_generation_model
|
|
39
|
+
# This dictionary structure tells ADK to use the LiteLlm wrapper.
|
|
40
|
+
# 'model' uses the specific model identifier your endpoint expects.
|
|
41
|
+
model: ${LLM_REPORT_MODEL_NAME} # Use env var for model name
|
|
42
|
+
# 'api_base' tells LiteLLM where to send the request.
|
|
43
|
+
api_base: ${LLM_SERVICE_ENDPOINT} # Use env var for endpoint URL
|
|
44
|
+
# 'api_key' provides authentication.
|
|
45
|
+
api_key: ${LLM_SERVICE_API_KEY} # Use env var for API key
|
|
46
|
+
|
|
47
|
+
multimodal: &multimodal_model "gemini-2.5-flash-preview-04-17"
|
|
48
|
+
gemini_pro: &gemini_pro_model "gemini-2.5-pro-exp-03-25"
|
|
49
|
+
|
|
50
|
+
- services:
|
|
51
|
+
# Default session service configuration
|
|
52
|
+
session_service: &default_session_service
|
|
53
|
+
type: "__DEFAULT_SESSION_SERVICE_TYPE__"
|
|
54
|
+
default_behavior: "__DEFAULT_SESSION_SERVICE_BEHAVIOR__"
|
|
55
|
+
|
|
56
|
+
# Default artifact service configuration
|
|
57
|
+
artifact_service: &default_artifact_service
|
|
58
|
+
type: "__DEFAULT_ARTIFACT_SERVICE_TYPE__"
|
|
59
|
+
__DEFAULT_ARTIFACT_SERVICE_BASE_PATH_LINE__
|
|
60
|
+
artifact_scope: __DEFAULT_ARTIFACT_SERVICE_SCOPE__
|
|
61
|
+
|
|
62
|
+
# Default data tools configuration
|
|
63
|
+
data_tools_config: &default_data_tools_config
|
|
64
|
+
sqlite_memory_threshold_mb: 100
|
|
65
|
+
max_result_preview_rows: 50
|
|
66
|
+
max_result_preview_bytes: 4096
|