solace-agent-mesh 1.5.0__py3-none-any.whl → 1.6.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of solace-agent-mesh might be problematic. Click here for more details.
- solace_agent_mesh/agent/adk/callbacks.py +14 -17
- solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +3 -1
- solace_agent_mesh/agent/adk/intelligent_mcp_callbacks.py +2 -1
- solace_agent_mesh/agent/adk/mcp_content_processor.py +2 -1
- solace_agent_mesh/agent/adk/models/lite_llm.py +123 -8
- solace_agent_mesh/agent/adk/models/oauth2_token_manager.py +245 -0
- solace_agent_mesh/agent/adk/runner.py +3 -1
- solace_agent_mesh/agent/adk/services.py +4 -1
- solace_agent_mesh/agent/adk/setup.py +3 -1
- solace_agent_mesh/agent/adk/tool_wrapper.py +2 -2
- solace_agent_mesh/agent/protocol/event_handlers.py +42 -2
- solace_agent_mesh/agent/proxies/__init__.py +0 -0
- solace_agent_mesh/agent/proxies/a2a/__init__.py +3 -0
- solace_agent_mesh/agent/proxies/a2a/app.py +55 -0
- solace_agent_mesh/agent/proxies/a2a/component.py +1115 -0
- solace_agent_mesh/agent/proxies/a2a/config.py +140 -0
- solace_agent_mesh/agent/proxies/a2a/oauth_token_cache.py +104 -0
- solace_agent_mesh/agent/proxies/base/__init__.py +3 -0
- solace_agent_mesh/agent/proxies/base/app.py +99 -0
- solace_agent_mesh/agent/proxies/base/component.py +619 -0
- solace_agent_mesh/agent/proxies/base/config.py +85 -0
- solace_agent_mesh/agent/proxies/base/proxy_task_context.py +17 -0
- solace_agent_mesh/agent/sac/app.py +12 -4
- solace_agent_mesh/agent/sac/component.py +164 -9
- solace_agent_mesh/agent/tools/audio_tools.py +127 -9
- solace_agent_mesh/agent/tools/builtin_artifact_tools.py +3 -1
- solace_agent_mesh/agent/tools/builtin_data_analysis_tools.py +3 -1
- solace_agent_mesh/agent/tools/dynamic_tool.py +2 -1
- solace_agent_mesh/agent/tools/general_agent_tools.py +2 -1
- solace_agent_mesh/agent/tools/image_tools.py +2 -1
- solace_agent_mesh/agent/tools/peer_agent_tool.py +2 -1
- solace_agent_mesh/agent/tools/registry.py +3 -1
- solace_agent_mesh/agent/tools/test_tools.py +2 -1
- solace_agent_mesh/agent/tools/web_tools.py +12 -6
- solace_agent_mesh/agent/utils/artifact_helpers.py +144 -4
- solace_agent_mesh/agent/utils/config_parser.py +3 -1
- solace_agent_mesh/assets/docs/404.html +3 -3
- solace_agent_mesh/assets/docs/assets/js/{b7006a3a.73a79653.js → 032c2d61.f3d37824.js} +1 -1
- solace_agent_mesh/assets/docs/assets/js/0bcf40b7.c019ad46.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/15ba94aa.932dd2db.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2131ec11.5c7a1f6e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/{2334.622a6395.js → 2334.1cf50a20.js} +1 -1
- solace_agent_mesh/assets/docs/assets/js/240a0364.7eac6021.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2e32b5e0.33f5d75b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/341393d4.0fac2613.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/{3624.b524e433.js → 3624.0eaa1fd0.js} +1 -1
- solace_agent_mesh/assets/docs/assets/js/3a6c6137.f5940cfa.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3ac1795d.76654dd9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3ff0015d.2be20244.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/509e993c.4c7a1a6d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/547e15cc.2cbb060a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/55b7b518.f2b1d1ba.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5c2bd65f.eda4bcb2.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6063ff4c.ef84f702.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/631738c7.a8b1ef8b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6a520c9d.ba015d81.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.f4b15f3b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6d84eae0.4a5fbf39.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6fdfefc7.99de744e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/71da7b71.38583438.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/722f809d.965da774.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/742f027b.46c07808.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/77cf947d.48cb18a2.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8024126c.56e59919.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/81a99df0.07034dd9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/82fbfb93.139a1a1f.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/{8591.d7c16be6.js → 8591.5d015485.js} +2 -2
- solace_agent_mesh/assets/docs/assets/js/{8731.49e930c2.js → 8731.6c1dbf0c.js} +1 -1
- solace_agent_mesh/assets/docs/assets/js/924ffdeb.8095e148.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/945fb41e.6f4cdffd.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/94e8668d.b5ddb7a1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9bb13469.dd1c9b54.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9e9d0a82.570c057b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e6dd091.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ad71b5ed.af3ecfd1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/c198a0dc.8f31f867.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/c93cbaa0.eaff365e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ceb2a7a6.5d92d7d0.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/da0b5bad.d08a9466.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/db924877.e98d12a1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/dd817ffc.0aa9630a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/dd81e2b8.d590bc9e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/de5f4c65.e8241890.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/de915948.27d6b065.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e3d9abda.2b916f9e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e6f9706b.e74a984d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e92d0134.cf6d6522.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/f284c35a.42f59cdd.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ff4d71f2.15b02f97.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/main.20feee82.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/runtime~main.0d198646.js +1 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +154 -0
- solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/artifact-management/index.html +7 -7
- solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/audio-tools/index.html +7 -7
- solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/data-analysis-tools/index.html +8 -8
- solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/embeds/index.html +6 -6
- solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/index.html +11 -11
- solace_agent_mesh/assets/docs/docs/documentation/{concepts → components}/cli/index.html +25 -25
- solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +91 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/index.html +29 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +55 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/plugins/index.html +110 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/proxies/index.html +262 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +104 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +85 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +25 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +59 -0
- solace_agent_mesh/assets/docs/docs/documentation/{user-guide → developing}/create-agents/index.html +113 -152
- solace_agent_mesh/assets/docs/docs/documentation/{user-guide → developing}/create-gateways/index.html +10 -10
- solace_agent_mesh/assets/docs/docs/documentation/{user-guide → developing}/creating-python-tools/index.html +12 -12
- solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +54 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/evaluations/index.html +135 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +34 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +55 -0
- solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/bedrock-agents/index.html +25 -25
- solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/custom-agent/index.html +13 -13
- solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/event-mesh-gateway/index.html +12 -12
- solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/mcp-integration/index.html +10 -10
- solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/mongodb-integration/index.html +13 -13
- solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/rag-integration/index.html +13 -13
- solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/rest-gateway/index.html +10 -10
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +72 -0
- solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/sql-database/index.html +14 -14
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +33 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +83 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/rbac-setup-guide/index.html +222 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +161 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/architecture/index.html +75 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +53 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +35 -100
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +41 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/configurations/index.html +81 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +25 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +76 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +160 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +142 -0
- solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-gateway-upgrade-to-0.3.0/index.html +100 -0
- solace_agent_mesh/assets/docs/docs/documentation/{Migrations/A2A Upgrade To 0.3.0/a2a-technical-migration-map/index.html → migrations/a2a-upgrade/a2a-technical-migration-map/index.html} +10 -11
- solace_agent_mesh/assets/docs/img/solace-logo.png +0 -0
- solace_agent_mesh/assets/docs/lunr-index-1761165361160.json +1 -0
- solace_agent_mesh/assets/docs/lunr-index.json +1 -1
- solace_agent_mesh/assets/docs/search-doc-1761165361160.json +1 -0
- solace_agent_mesh/assets/docs/search-doc.json +1 -1
- solace_agent_mesh/assets/docs/sitemap.xml +1 -1
- solace_agent_mesh/cli/__init__.py +1 -1
- solace_agent_mesh/cli/commands/add_cmd/agent_cmd.py +2 -69
- solace_agent_mesh/cli/commands/eval_cmd.py +11 -49
- solace_agent_mesh/cli/commands/init_cmd/__init__.py +0 -5
- solace_agent_mesh/cli/commands/init_cmd/env_step.py +10 -12
- solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +9 -61
- solace_agent_mesh/cli/commands/init_cmd/webui_gateway_step.py +9 -49
- solace_agent_mesh/cli/commands/plugin_cmd/add_cmd.py +1 -2
- solace_agent_mesh/client/webui/frontend/static/assets/{authCallback-DwrxZE0E.js → authCallback-BTf6dqwp.js} +1 -1
- solace_agent_mesh/client/webui/frontend/static/assets/{client-DarGQzyw.js → client-CaY59VuC.js} +1 -1
- solace_agent_mesh/client/webui/frontend/static/assets/main-BGTaW0uv.js +342 -0
- solace_agent_mesh/client/webui/frontend/static/assets/main-DHJKSW1S.css +1 -0
- solace_agent_mesh/client/webui/frontend/static/assets/{vendor-BKIeiHj_.js → vendor-BEmvJSYz.js} +1 -1
- solace_agent_mesh/client/webui/frontend/static/auth-callback.html +3 -3
- solace_agent_mesh/client/webui/frontend/static/index.html +4 -4
- solace_agent_mesh/common/a2a/__init__.py +24 -0
- solace_agent_mesh/common/a2a/artifact.py +41 -1
- solace_agent_mesh/common/a2a/events.py +29 -0
- solace_agent_mesh/common/a2a/message.py +68 -0
- solace_agent_mesh/common/a2a/protocol.py +76 -3
- solace_agent_mesh/common/a2a/translation.py +3 -1
- solace_agent_mesh/common/agent_registry.py +83 -3
- solace_agent_mesh/common/constants.py +3 -1
- solace_agent_mesh/common/middleware/config_resolver.py +3 -1
- solace_agent_mesh/common/middleware/registry.py +3 -1
- solace_agent_mesh/common/sac/sam_component_base.py +2 -1
- solace_agent_mesh/common/sam_events/event_service.py +3 -2
- solace_agent_mesh/common/services/employee_service.py +3 -1
- solace_agent_mesh/common/services/identity_service.py +2 -1
- solace_agent_mesh/common/services/providers/local_file_identity_service.py +2 -1
- solace_agent_mesh/common/utils/artifact_utils.py +3 -1
- solace_agent_mesh/common/utils/asyncio_macos_fix.py +3 -1
- solace_agent_mesh/common/utils/embeds/converter.py +3 -1
- solace_agent_mesh/common/utils/embeds/evaluators.py +2 -1
- solace_agent_mesh/common/utils/embeds/modifiers.py +3 -2
- solace_agent_mesh/common/utils/embeds/resolver.py +2 -1
- solace_agent_mesh/common/utils/initializer.py +3 -1
- solace_agent_mesh/common/utils/message_utils.py +2 -1
- solace_agent_mesh/common/utils/push_notification_auth.py +3 -2
- solace_agent_mesh/common/utils/pydantic_utils.py +12 -0
- solace_agent_mesh/config_portal/backend/common.py +1 -1
- solace_agent_mesh/config_portal/frontend/static/client/assets/_index-ByU1X1HD.js +98 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/{manifest-44d62be6.js → manifest-61038fc6.js} +1 -1
- solace_agent_mesh/config_portal/frontend/static/client/index.html +1 -1
- solace_agent_mesh/core_a2a/service.py +2 -2
- solace_agent_mesh/evaluation/evaluator.py +128 -104
- solace_agent_mesh/evaluation/message_organizer.py +116 -110
- solace_agent_mesh/evaluation/report_data_processor.py +84 -86
- solace_agent_mesh/evaluation/report_generator.py +73 -79
- solace_agent_mesh/evaluation/run.py +421 -235
- solace_agent_mesh/evaluation/shared/__init__.py +92 -0
- solace_agent_mesh/evaluation/shared/constants.py +47 -0
- solace_agent_mesh/evaluation/shared/exceptions.py +50 -0
- solace_agent_mesh/evaluation/shared/helpers.py +35 -0
- solace_agent_mesh/evaluation/shared/test_case_loader.py +167 -0
- solace_agent_mesh/evaluation/shared/test_suite_loader.py +280 -0
- solace_agent_mesh/evaluation/subscriber.py +111 -232
- solace_agent_mesh/evaluation/summary_builder.py +227 -117
- solace_agent_mesh/gateway/base/app.py +3 -2
- solace_agent_mesh/gateway/base/component.py +11 -2
- solace_agent_mesh/gateway/base/task_context.py +2 -1
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251015_add_session_performance_indexes.py +70 -0
- solace_agent_mesh/gateway/http_sse/app.py +2 -1
- solace_agent_mesh/gateway/http_sse/component.py +102 -3
- solace_agent_mesh/gateway/http_sse/components/task_logger_forwarder.py +3 -2
- solace_agent_mesh/gateway/http_sse/components/visualization_forwarder_component.py +3 -1
- solace_agent_mesh/gateway/http_sse/dependencies.py +7 -5
- solace_agent_mesh/gateway/http_sse/main.py +5 -2
- solace_agent_mesh/gateway/http_sse/repository/chat_task_repository.py +12 -13
- solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +15 -18
- solace_agent_mesh/gateway/http_sse/repository/interfaces.py +25 -18
- solace_agent_mesh/gateway/http_sse/repository/session_repository.py +30 -26
- solace_agent_mesh/gateway/http_sse/repository/task_repository.py +35 -44
- solace_agent_mesh/gateway/http_sse/routers/agent_cards.py +7 -5
- solace_agent_mesh/gateway/http_sse/routers/artifacts.py +97 -205
- solace_agent_mesh/gateway/http_sse/routers/auth.py +3 -1
- solace_agent_mesh/gateway/http_sse/routers/config.py +3 -2
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +4 -3
- solace_agent_mesh/gateway/http_sse/routers/people.py +3 -1
- solace_agent_mesh/gateway/http_sse/routers/sessions.py +5 -3
- solace_agent_mesh/gateway/http_sse/routers/sse.py +3 -2
- solace_agent_mesh/gateway/http_sse/routers/tasks.py +35 -42
- solace_agent_mesh/gateway/http_sse/routers/users.py +3 -1
- solace_agent_mesh/gateway/http_sse/routers/visualization.py +19 -12
- solace_agent_mesh/gateway/http_sse/services/agent_card_service.py +3 -1
- solace_agent_mesh/gateway/http_sse/services/data_retention_service.py +6 -5
- solace_agent_mesh/gateway/http_sse/services/feedback_service.py +53 -44
- solace_agent_mesh/gateway/http_sse/services/people_service.py +2 -2
- solace_agent_mesh/gateway/http_sse/services/session_service.py +23 -21
- solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +10 -9
- solace_agent_mesh/gateway/http_sse/services/task_service.py +3 -2
- solace_agent_mesh/gateway/http_sse/session_manager.py +2 -1
- solace_agent_mesh/gateway/http_sse/shared/base_repository.py +45 -71
- solace_agent_mesh/gateway/http_sse/shared/types.py +0 -18
- solace_agent_mesh/gateway/http_sse/sse_event_buffer.py +2 -1
- solace_agent_mesh/gateway/http_sse/sse_manager.py +2 -2
- solace_agent_mesh/templates/gateway_app_template.py +4 -2
- solace_agent_mesh/templates/gateway_component_template.py +3 -1
- solace_agent_mesh/templates/gateway_config_template.yaml +0 -5
- solace_agent_mesh/templates/logging_config_template.ini +27 -46
- solace_agent_mesh/templates/plugin_gateway_config_template.yaml +0 -3
- solace_agent_mesh/templates/plugin_tools_template.py +2 -2
- solace_agent_mesh/templates/shared_config.yaml +40 -0
- {solace_agent_mesh-1.5.0.dist-info → solace_agent_mesh-1.6.0.dist-info}/METADATA +47 -21
- {solace_agent_mesh-1.5.0.dist-info → solace_agent_mesh-1.6.0.dist-info}/RECORD +254 -225
- 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.a248f00c.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/0e682baa.d54b8668.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/1023fc19.8a8a9309.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/1523c6b4.2645ef68.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/166ab619.e27886d9.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/1c6e87d2.e056b7e0.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/21ceee5f.3bf39250.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/2a9cab12.2afaee76.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/332e10b5.f7629851.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/3d406171.5560fdf9.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/42b3f8d8.508ae8db.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/442a8107.b5c2532a.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/453a82a6.3c6bb61d.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/483cef9a.bf9398af.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/4c2787c2.c1290a40.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/55f47984.bcd00a86.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/5b4258a4.fdfd2325.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/664b740a.ba305a89.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/75384d09.c19e8b51.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/768e31b0.9abcdc48.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/85387663.be2bc838.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/945fb41e.16e00776.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/9a09e75d.92de8cf5.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/9eff14a2.d62aad71.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/a12a4955.25fbed32.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/a3a92b25.af35e313.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/aba87c2f.4ddf32f2.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/ae0e903d.5fe5203f.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/ae4415af.16cc58d3.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/bac0be12.17de4316.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/c2c06897.87cb1f47.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/c835a94d.ce21f0bf.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/cc969b05.feef7dcc.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/cd3d4052.a19e7d78.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/ced92a13.fb92e7ca.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/cee5d587.47904f5e.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/d6a81ee7.829198f1.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/f284c35a.ed8dd236.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/f897a61a.126663fe.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/fbfa3e75.e144b16c.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/main.0c149855.js +0 -2
- solace_agent_mesh/assets/docs/assets/js/runtime~main.c66557e4.js +0 -1
- solace_agent_mesh/assets/docs/docs/documentation/Enterprise/installation/index.html +0 -46
- solace_agent_mesh/assets/docs/docs/documentation/Enterprise/rbac-setup-guilde/index.html +0 -201
- solace_agent_mesh/assets/docs/docs/documentation/Enterprise/single-sign-on/index.html +0 -29
- solace_agent_mesh/assets/docs/docs/documentation/Migrations/A2A Upgrade To 0.3.0/a2a-gateway-upgrade-to-0.3.0/index.html +0 -105
- solace_agent_mesh/assets/docs/docs/documentation/concepts/agents/index.html +0 -144
- solace_agent_mesh/assets/docs/docs/documentation/concepts/architecture/index.html +0 -91
- solace_agent_mesh/assets/docs/docs/documentation/concepts/gateways/index.html +0 -91
- solace_agent_mesh/assets/docs/docs/documentation/concepts/orchestrator/index.html +0 -55
- solace_agent_mesh/assets/docs/docs/documentation/concepts/plugins/index.html +0 -111
- solace_agent_mesh/assets/docs/docs/documentation/deployment/debugging/index.html +0 -77
- solace_agent_mesh/assets/docs/docs/documentation/deployment/deploy/index.html +0 -48
- solace_agent_mesh/assets/docs/docs/documentation/deployment/observability/index.html +0 -54
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/component-overview/index.html +0 -45
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/configurations/index.html +0 -74
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/configurations/litellm_models/index.html +0 -49
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/installation/index.html +0 -76
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/quick-start/index.html +0 -73
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/slack-integration/index.html +0 -72
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/creating-service-providers/index.html +0 -54
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/solace-ai-connector/index.html +0 -69
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/structure/index.html +0 -59
- solace_agent_mesh/assets/docs/lunr-index-1760032255022.json +0 -1
- solace_agent_mesh/assets/docs/search-doc-1760032255022.json +0 -1
- solace_agent_mesh/client/webui/frontend/static/assets/main-CZbpmwfA.css +0 -1
- solace_agent_mesh/client/webui/frontend/static/assets/main-C__uuUkB.js +0 -339
- solace_agent_mesh/config_portal/frontend/static/client/assets/_index-BNuqpWDc.js +0 -98
- solace_agent_mesh/evaluation/config_loader.py +0 -657
- solace_agent_mesh/evaluation/test_case_loader.py +0 -714
- /solace_agent_mesh/assets/docs/assets/js/{8591.d7c16be6.js.LICENSE.txt → 8591.5d015485.js.LICENSE.txt} +0 -0
- /solace_agent_mesh/assets/docs/assets/js/{main.0c149855.js.LICENSE.txt → main.20feee82.js.LICENSE.txt} +0 -0
- {solace_agent_mesh-1.5.0.dist-info → solace_agent_mesh-1.6.0.dist-info}/WHEEL +0 -0
- {solace_agent_mesh-1.5.0.dist-info → solace_agent_mesh-1.6.0.dist-info}/entry_points.txt +0 -0
- {solace_agent_mesh-1.5.0.dist-info → solace_agent_mesh-1.6.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -3,15 +3,16 @@ Service layer for handling A2A task submissions and cancellations.
|
|
|
3
3
|
Uses CoreA2AService for logic and a provided function for publishing.
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
|
+
import logging
|
|
6
7
|
import threading
|
|
7
8
|
from typing import Callable, Dict, Optional
|
|
8
9
|
|
|
9
|
-
from solace_ai_connector.common.log import log
|
|
10
|
-
|
|
11
10
|
from ....common import a2a
|
|
12
11
|
from ....gateway.http_sse.sse_manager import SSEManager
|
|
13
12
|
from ....core_a2a.service import CoreA2AService
|
|
14
13
|
|
|
14
|
+
log = logging.getLogger(__name__)
|
|
15
|
+
|
|
15
16
|
PublishFunc = Callable[[str, Dict, Optional[Dict]], None]
|
|
16
17
|
|
|
17
18
|
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
Manages web user sessions and mapping to A2A Client IDs.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
import logging
|
|
5
6
|
import uuid
|
|
6
7
|
from collections.abc import Callable
|
|
7
8
|
from typing import Any
|
|
8
9
|
|
|
9
|
-
from solace_ai_connector.common.log import log
|
|
10
10
|
from starlette.requests import Request
|
|
11
11
|
|
|
12
|
+
log = logging.getLogger(__name__)
|
|
12
13
|
|
|
13
14
|
SESSION_KEY_CLIENT_ID = "a2a_client_id"
|
|
14
15
|
SESSION_KEY_SESSION_ID = "a2a_session_id"
|
|
@@ -6,16 +6,15 @@ for database session management and transaction handling.
|
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
8
|
from abc import ABC, abstractmethod
|
|
9
|
-
from typing import
|
|
9
|
+
from typing import Any, Generic, TypeVar
|
|
10
|
+
|
|
10
11
|
from sqlalchemy.orm import Session
|
|
11
|
-
from sqlalchemy.exc import NoResultFound
|
|
12
|
-
from .exceptions import EntityNotFoundError, ValidationError
|
|
13
|
-
from .types import PaginationInfo
|
|
14
12
|
|
|
13
|
+
from .exceptions import EntityNotFoundError
|
|
15
14
|
|
|
16
|
-
T = TypeVar(
|
|
17
|
-
ModelType = TypeVar(
|
|
18
|
-
EntityType = TypeVar(
|
|
15
|
+
T = TypeVar("T")
|
|
16
|
+
ModelType = TypeVar("ModelType")
|
|
17
|
+
EntityType = TypeVar("EntityType")
|
|
19
18
|
|
|
20
19
|
|
|
21
20
|
class BaseRepository(ABC, Generic[ModelType, EntityType]):
|
|
@@ -27,7 +26,7 @@ class BaseRepository(ABC, Generic[ModelType, EntityType]):
|
|
|
27
26
|
transactions should be handled at the service/API layer.
|
|
28
27
|
"""
|
|
29
28
|
|
|
30
|
-
def __init__(self, model_class:
|
|
29
|
+
def __init__(self, model_class: type[ModelType], entity_class: type[EntityType]):
|
|
31
30
|
"""
|
|
32
31
|
Initialize repository with model and entity classes.
|
|
33
32
|
|
|
@@ -44,7 +43,7 @@ class BaseRepository(ABC, Generic[ModelType, EntityType]):
|
|
|
44
43
|
"""Return the entity name for error messages."""
|
|
45
44
|
pass
|
|
46
45
|
|
|
47
|
-
def create(self, session: Session, create_data:
|
|
46
|
+
def create(self, session: Session, create_data: dict[str, Any]) -> EntityType:
|
|
48
47
|
"""
|
|
49
48
|
Create a new entity.
|
|
50
49
|
|
|
@@ -83,16 +82,20 @@ class BaseRepository(ABC, Generic[ModelType, EntityType]):
|
|
|
83
82
|
Raises:
|
|
84
83
|
EntityNotFoundError: If entity not found
|
|
85
84
|
"""
|
|
86
|
-
model_instance =
|
|
87
|
-
self.model_class
|
|
88
|
-
|
|
85
|
+
model_instance = (
|
|
86
|
+
session.query(self.model_class)
|
|
87
|
+
.filter(self.model_class.id == str(entity_id))
|
|
88
|
+
.first()
|
|
89
|
+
)
|
|
89
90
|
|
|
90
91
|
if not model_instance:
|
|
91
92
|
raise EntityNotFoundError(self.entity_name, entity_id)
|
|
92
93
|
|
|
93
94
|
return self.entity_class.model_validate(model_instance)
|
|
94
95
|
|
|
95
|
-
def get_all(
|
|
96
|
+
def get_all(
|
|
97
|
+
self, session: Session, limit: int | None = None, offset: int | None = None
|
|
98
|
+
) -> list[EntityType]:
|
|
96
99
|
"""
|
|
97
100
|
Get all entities with optional pagination.
|
|
98
101
|
|
|
@@ -112,9 +115,13 @@ class BaseRepository(ABC, Generic[ModelType, EntityType]):
|
|
|
112
115
|
query = query.limit(limit)
|
|
113
116
|
|
|
114
117
|
model_instances = query.all()
|
|
115
|
-
return [
|
|
118
|
+
return [
|
|
119
|
+
self.entity_class.model_validate(instance) for instance in model_instances
|
|
120
|
+
]
|
|
116
121
|
|
|
117
|
-
def update(
|
|
122
|
+
def update(
|
|
123
|
+
self, session: Session, entity_id: Any, update_data: dict[str, Any]
|
|
124
|
+
) -> EntityType:
|
|
118
125
|
"""
|
|
119
126
|
Update an entity.
|
|
120
127
|
|
|
@@ -129,9 +136,11 @@ class BaseRepository(ABC, Generic[ModelType, EntityType]):
|
|
|
129
136
|
Raises:
|
|
130
137
|
EntityNotFoundError: If entity not found
|
|
131
138
|
"""
|
|
132
|
-
model_instance =
|
|
133
|
-
self.model_class
|
|
134
|
-
|
|
139
|
+
model_instance = (
|
|
140
|
+
session.query(self.model_class)
|
|
141
|
+
.filter(self.model_class.id == str(entity_id))
|
|
142
|
+
.first()
|
|
143
|
+
)
|
|
135
144
|
|
|
136
145
|
if not model_instance:
|
|
137
146
|
raise EntityNotFoundError(self.entity_name, entity_id)
|
|
@@ -158,9 +167,11 @@ class BaseRepository(ABC, Generic[ModelType, EntityType]):
|
|
|
158
167
|
Raises:
|
|
159
168
|
EntityNotFoundError: If entity not found
|
|
160
169
|
"""
|
|
161
|
-
model_instance =
|
|
162
|
-
self.model_class
|
|
163
|
-
|
|
170
|
+
model_instance = (
|
|
171
|
+
session.query(self.model_class)
|
|
172
|
+
.filter(self.model_class.id == str(entity_id))
|
|
173
|
+
.first()
|
|
174
|
+
)
|
|
164
175
|
|
|
165
176
|
if not model_instance:
|
|
166
177
|
raise EntityNotFoundError(self.entity_name, entity_id)
|
|
@@ -179,9 +190,11 @@ class BaseRepository(ABC, Generic[ModelType, EntityType]):
|
|
|
179
190
|
Returns:
|
|
180
191
|
True if entity exists, False otherwise
|
|
181
192
|
"""
|
|
182
|
-
count =
|
|
183
|
-
self.model_class
|
|
184
|
-
|
|
193
|
+
count = (
|
|
194
|
+
session.query(self.model_class)
|
|
195
|
+
.filter(self.model_class.id == str(entity_id))
|
|
196
|
+
.count()
|
|
197
|
+
)
|
|
185
198
|
|
|
186
199
|
return count > 0
|
|
187
200
|
|
|
@@ -200,52 +213,13 @@ class BaseRepository(ABC, Generic[ModelType, EntityType]):
|
|
|
200
213
|
|
|
201
214
|
class PaginatedRepository(BaseRepository[ModelType, EntityType]):
|
|
202
215
|
"""
|
|
203
|
-
Base repository with
|
|
204
|
-
"""
|
|
205
|
-
|
|
206
|
-
def get_paginated(self, session: Session, page_number: int, page_size: int) -> tuple[List[EntityType], int]:
|
|
207
|
-
"""
|
|
208
|
-
Get paginated results.
|
|
209
|
-
|
|
210
|
-
Args:
|
|
211
|
-
session: Database session
|
|
212
|
-
page_number: Page number (1-based)
|
|
213
|
-
page_size: Number of items per page
|
|
214
|
-
|
|
215
|
-
Returns:
|
|
216
|
-
Tuple of (entities, total_count)
|
|
217
|
-
"""
|
|
218
|
-
offset = (page_number - 1) * page_size
|
|
216
|
+
Base repository with pagination support.
|
|
219
217
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
return entities, total_count
|
|
225
|
-
|
|
226
|
-
def get_paginated_with_info(self, session: Session, pagination: PaginationInfo) -> tuple[List[EntityType], PaginationInfo]:
|
|
227
|
-
"""
|
|
228
|
-
Get paginated results with complete pagination info.
|
|
229
|
-
|
|
230
|
-
Args:
|
|
231
|
-
session: Database session
|
|
232
|
-
pagination: Pagination parameters
|
|
233
|
-
|
|
234
|
-
Returns:
|
|
235
|
-
Tuple of (entities, updated_pagination_info)
|
|
236
|
-
"""
|
|
237
|
-
entities, total_count = self.get_paginated(session, pagination.page, pagination.page_size)
|
|
238
|
-
|
|
239
|
-
updated_pagination = PaginationInfo(
|
|
240
|
-
page=pagination.page,
|
|
241
|
-
page_size=pagination.page_size,
|
|
242
|
-
total_items=total_count,
|
|
243
|
-
total_pages=(total_count + pagination.page_size - 1) // pagination.page_size,
|
|
244
|
-
has_next=pagination.page * pagination.page_size < total_count,
|
|
245
|
-
has_previous=pagination.page > 1
|
|
246
|
-
)
|
|
218
|
+
Concrete repositories should implement their own pagination methods
|
|
219
|
+
that apply specific filters and ordering before pagination.
|
|
220
|
+
"""
|
|
247
221
|
|
|
248
|
-
|
|
222
|
+
pass
|
|
249
223
|
|
|
250
224
|
|
|
251
225
|
class ValidationMixin:
|
|
@@ -253,7 +227,7 @@ class ValidationMixin:
|
|
|
253
227
|
Mixin for repositories that need validation logic.
|
|
254
228
|
"""
|
|
255
229
|
|
|
256
|
-
def validate_create_data(self, create_data:
|
|
230
|
+
def validate_create_data(self, create_data: dict[str, Any]) -> None:
|
|
257
231
|
"""
|
|
258
232
|
Validate data before creation.
|
|
259
233
|
|
|
@@ -265,7 +239,7 @@ class ValidationMixin:
|
|
|
265
239
|
"""
|
|
266
240
|
pass
|
|
267
241
|
|
|
268
|
-
def validate_update_data(self, update_data:
|
|
242
|
+
def validate_update_data(self, update_data: dict[str, Any]) -> None:
|
|
269
243
|
"""
|
|
270
244
|
Validate data before update.
|
|
271
245
|
|
|
@@ -275,4 +249,4 @@ class ValidationMixin:
|
|
|
275
249
|
Raises:
|
|
276
250
|
ValidationError: If validation fails
|
|
277
251
|
"""
|
|
278
|
-
pass
|
|
252
|
+
pass
|
|
@@ -35,24 +35,6 @@ class LegacyTimestamp(BaseModel):
|
|
|
35
35
|
updated_at: datetime | None = None
|
|
36
36
|
|
|
37
37
|
|
|
38
|
-
class PaginationParams(BaseModel):
|
|
39
|
-
"""Pagination parameters for list requests."""
|
|
40
|
-
|
|
41
|
-
page: int
|
|
42
|
-
page_size: int
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
class PaginationInfo(BaseModel):
|
|
46
|
-
"""Pagination information for list responses."""
|
|
47
|
-
|
|
48
|
-
page: int
|
|
49
|
-
page_size: int
|
|
50
|
-
total_items: int
|
|
51
|
-
total_pages: int
|
|
52
|
-
has_next: bool
|
|
53
|
-
has_previous: bool
|
|
54
|
-
|
|
55
|
-
|
|
56
38
|
class SortInfo(BaseModel):
|
|
57
39
|
"""Sorting information for list requests."""
|
|
58
40
|
|
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
A thread-safe buffer for holding early SSE events before a client connects.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
import logging
|
|
5
6
|
import datetime
|
|
6
7
|
import threading
|
|
7
8
|
from typing import Any, Dict, List, Optional, Tuple
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
log = logging.getLogger(__name__)
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
class SSEEventBuffer:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Manages Server-Sent Event (SSE) connections for streaming task updates.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
import logging
|
|
5
6
|
import asyncio
|
|
6
7
|
import threading
|
|
7
8
|
from typing import Dict, List, Any
|
|
@@ -9,10 +10,9 @@ import json
|
|
|
9
10
|
import datetime
|
|
10
11
|
import math
|
|
11
12
|
|
|
12
|
-
from solace_ai_connector.common.log import log
|
|
13
|
-
|
|
14
13
|
from .sse_event_buffer import SSEEventBuffer
|
|
15
14
|
|
|
15
|
+
log = logging.getLogger(__name__)
|
|
16
16
|
|
|
17
17
|
class SSEManager:
|
|
18
18
|
"""
|
|
@@ -2,14 +2,16 @@
|
|
|
2
2
|
Solace Agent Mesh App class for the __GATEWAY_NAME_PASCAL_CASE__ Gateway.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
import logging
|
|
5
6
|
from typing import Any, Dict, List, Type
|
|
6
7
|
|
|
7
|
-
from solace_ai_connector.common.log import log
|
|
8
8
|
from solace_agent_mesh.gateway.base.app import BaseGatewayApp
|
|
9
9
|
from solace_agent_mesh.gateway.base.component import BaseGatewayComponent
|
|
10
10
|
|
|
11
11
|
from .component import __GATEWAY_NAME_PASCAL_CASE__GatewayComponent
|
|
12
12
|
|
|
13
|
+
log = logging.getLogger(__name__)
|
|
14
|
+
|
|
13
15
|
info = {
|
|
14
16
|
"class_name": "__GATEWAY_NAME_PASCAL_CASE__GatewayApp",
|
|
15
17
|
"description": "Custom App class for the A2A __GATEWAY_NAME_PASCAL_CASE__ Gateway.",
|
|
@@ -70,4 +72,4 @@ class __GATEWAY_NAME_PASCAL_CASE__GatewayApp(BaseGatewayApp):
|
|
|
70
72
|
"""
|
|
71
73
|
Returns the specific gateway component class for this app.
|
|
72
74
|
"""
|
|
73
|
-
return __GATEWAY_NAME_PASCAL_CASE__GatewayComponent
|
|
75
|
+
return __GATEWAY_NAME_PASCAL_CASE__GatewayComponent
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Solace Agent Mesh Component class for the __GATEWAY_NAME_PASCAL_CASE__ Gateway.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
import logging
|
|
5
6
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
|
6
7
|
|
|
7
|
-
from solace_ai_connector.common.log import log
|
|
8
8
|
from solace_agent_mesh.gateway.base.component import BaseGatewayComponent
|
|
9
9
|
from a2a.types import (
|
|
10
10
|
TextPart,
|
|
@@ -18,6 +18,8 @@ from a2a.types import (
|
|
|
18
18
|
from ...common import a2a
|
|
19
19
|
from ...common.a2a import ContentPart
|
|
20
20
|
|
|
21
|
+
log = logging.getLogger(__name__)
|
|
22
|
+
|
|
21
23
|
info = {
|
|
22
24
|
"class_name": "__GATEWAY_NAME_PASCAL_CASE__GatewayComponent",
|
|
23
25
|
"description": (
|
|
@@ -21,11 +21,6 @@ apps:
|
|
|
21
21
|
|
|
22
22
|
artifact_service: __ARTIFACT_SERVICE__
|
|
23
23
|
|
|
24
|
-
authorization_service:
|
|
25
|
-
type: "none" # Or "default_rbac"
|
|
26
|
-
# role_definitions_path: "config/auth/roles.yaml"
|
|
27
|
-
# user_assignments_path: "config/auth/users.yaml"
|
|
28
|
-
|
|
29
24
|
system_purpose: >
|
|
30
25
|
__SYSTEM_PURPOSE__
|
|
31
26
|
|
|
@@ -1,64 +1,45 @@
|
|
|
1
1
|
[loggers]
|
|
2
|
-
keys=root,
|
|
3
|
-
|
|
4
|
-
[handlers]
|
|
5
|
-
keys=streamHandler,rotatingFileHandler
|
|
6
|
-
|
|
7
|
-
[formatters]
|
|
8
|
-
keys=simpleFormatter
|
|
2
|
+
keys=root,solace_ai_connector,solace_agent_mesh,sam_trace
|
|
9
3
|
|
|
10
4
|
[logger_root]
|
|
11
|
-
level
|
|
5
|
+
level=${LOGGING_ROOT_LEVEL, WARNING}
|
|
12
6
|
handlers=streamHandler,rotatingFileHandler
|
|
13
7
|
qualname=root
|
|
14
8
|
|
|
15
|
-
[handler_streamHandler]
|
|
16
|
-
class=StreamHandler
|
|
17
|
-
level=INFO
|
|
18
|
-
formatter=simpleFormatter
|
|
19
|
-
args=(sys.stdout,)
|
|
20
|
-
|
|
21
|
-
[logger_LiteLLM]
|
|
22
|
-
level=DEBUG
|
|
23
|
-
handlers=streamHandler,rotatingFileHandler
|
|
24
|
-
qualname=LiteLLM
|
|
25
|
-
propagate=0
|
|
26
|
-
|
|
27
|
-
[logger_py_warnings]
|
|
28
|
-
level=WARNING
|
|
29
|
-
handlers=streamHandler,rotatingFileHandler
|
|
30
|
-
qualname=py.warnings
|
|
31
|
-
propagate=0
|
|
32
|
-
|
|
33
9
|
[logger_solace_ai_connector]
|
|
34
|
-
level
|
|
35
|
-
handlers=
|
|
10
|
+
level=${LOGGING_SOLACE_AI_CONNECTOR_LEVEL, INFO}
|
|
11
|
+
handlers=
|
|
36
12
|
qualname=solace_ai_connector
|
|
37
|
-
propagate=0
|
|
38
13
|
|
|
39
|
-
[
|
|
40
|
-
level
|
|
41
|
-
handlers=
|
|
42
|
-
qualname=
|
|
43
|
-
propagate=0
|
|
14
|
+
[logger_solace_agent_mesh]
|
|
15
|
+
level=${LOGGING_SAM_LEVEL, INFO}
|
|
16
|
+
handlers=
|
|
17
|
+
qualname=solace_agent_mesh
|
|
44
18
|
|
|
45
|
-
[
|
|
46
|
-
level
|
|
47
|
-
handlers=
|
|
48
|
-
qualname=
|
|
49
|
-
propagate=0
|
|
19
|
+
[logger_sam_trace]
|
|
20
|
+
level=${LOGGING_SAM_TRACE_LEVEL, INFO}
|
|
21
|
+
handlers=
|
|
22
|
+
qualname=sam_trace
|
|
50
23
|
|
|
51
|
-
[
|
|
52
|
-
|
|
53
|
-
handlers=streamHandler,rotatingFileHandler
|
|
54
|
-
qualname=uvicorn.access
|
|
55
|
-
propagate=0
|
|
24
|
+
[handlers]
|
|
25
|
+
keys=streamHandler,rotatingFileHandler
|
|
56
26
|
|
|
57
27
|
[handler_rotatingFileHandler]
|
|
58
28
|
class=logging.handlers.RotatingFileHandler
|
|
59
|
-
level=DEBUG
|
|
60
29
|
formatter=simpleFormatter
|
|
61
30
|
args=('sam.log', 'a', 52428800, 10)
|
|
62
31
|
|
|
32
|
+
[handler_streamHandler]
|
|
33
|
+
class=StreamHandler
|
|
34
|
+
formatter=simpleFormatter
|
|
35
|
+
args=(sys.stdout,)
|
|
36
|
+
|
|
37
|
+
[formatters]
|
|
38
|
+
keys=simpleFormatter,jsonFormatter
|
|
39
|
+
|
|
63
40
|
[formatter_simpleFormatter]
|
|
64
|
-
format=%(asctime)s
|
|
41
|
+
format=%(asctime)s | %(levelname)-5s | %(name)s | %(message)s
|
|
42
|
+
|
|
43
|
+
[formatter_jsonFormatter]
|
|
44
|
+
class=pythonjsonlogger.jsonlogger.JsonFormatter
|
|
45
|
+
format=%(asctime)s %(levelname)s %(name)s %(message)s
|
|
@@ -47,9 +47,6 @@ apps:
|
|
|
47
47
|
gateway_id: __COMPONENT_KEBAB_CASE_NAME__-gw-01
|
|
48
48
|
artifact_service: *default_artifact_service
|
|
49
49
|
|
|
50
|
-
authorization_service:
|
|
51
|
-
type: "none" # Or "default_rbac"
|
|
52
|
-
|
|
53
50
|
system_purpose: >
|
|
54
51
|
The system is an AI Chatbot with agentic capabilities.
|
|
55
52
|
It will use the agents available to provide information,
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
+
import logging
|
|
1
2
|
import asyncio
|
|
2
|
-
import uuid
|
|
3
3
|
from datetime import datetime, timezone
|
|
4
4
|
from typing import Any, Dict, Optional
|
|
5
5
|
|
|
6
6
|
from google.adk.tools import ToolContext
|
|
7
|
-
from solace_ai_connector.common.log import log
|
|
8
7
|
from solace_agent_mesh.agent.utils.artifact_helpers import (
|
|
9
8
|
save_artifact_with_metadata,
|
|
10
9
|
DEFAULT_SCHEMA_MAX_KEYS,
|
|
11
10
|
)
|
|
12
11
|
from solace_agent_mesh.agent.utils.context_helpers import get_original_session_id
|
|
13
12
|
|
|
13
|
+
log = logging.getLogger(__name__)
|
|
14
14
|
|
|
15
15
|
async def example_text_processor_tool(
|
|
16
16
|
text_input: str,
|
|
@@ -19,6 +19,8 @@ shared_config:
|
|
|
19
19
|
api_key: ${LLM_SERVICE_API_KEY} # Use env var for API key
|
|
20
20
|
# Enable parallel tool calls for planning model
|
|
21
21
|
parallel_tool_calls: true
|
|
22
|
+
# Prompt Caching Strategy
|
|
23
|
+
cache_strategy: "5m" # none, 5m, 1h
|
|
22
24
|
|
|
23
25
|
# max_tokens: ${MAX_TOKENS, 16000} # Set a reasonable max token limit for planning
|
|
24
26
|
# temperature: 0.1 # Lower temperature for more deterministic planning
|
|
@@ -32,6 +34,8 @@ shared_config:
|
|
|
32
34
|
api_base: ${LLM_SERVICE_ENDPOINT} # Use env var for endpoint URL
|
|
33
35
|
# 'api_key' provides authentication.
|
|
34
36
|
api_key: ${LLM_SERVICE_API_KEY} # Use env var for API key
|
|
37
|
+
# Prompt Caching Strategy
|
|
38
|
+
cache_strategy: "5m" # none, 5m, 1h
|
|
35
39
|
|
|
36
40
|
image_gen: &image_generation_model
|
|
37
41
|
# This dictionary structure tells ADK to use the LiteLlm wrapper.
|
|
@@ -53,6 +57,42 @@ shared_config:
|
|
|
53
57
|
|
|
54
58
|
multimodal: &multimodal_model "gemini-2.5-flash-preview-04-17"
|
|
55
59
|
|
|
60
|
+
# OAuth 2.0 Client Credentials authentication example
|
|
61
|
+
oauth_planning: &oauth_planning_model
|
|
62
|
+
# This dictionary structure tells ADK to use the LiteLlm wrapper with OAuth authentication.
|
|
63
|
+
# 'model' uses the specific model identifier your endpoint expects.
|
|
64
|
+
model: ${LLM_SERVICE_OAUTH_PLANNING_MODEL_NAME} # Use env var for model name
|
|
65
|
+
# 'api_base' tells LiteLLM where to send the request.
|
|
66
|
+
api_base: ${LLM_SERVICE_OAUTH_ENDPOINT} # Use env var for endpoint URL
|
|
67
|
+
|
|
68
|
+
# OAuth 2.0 Client Credentials configuration
|
|
69
|
+
oauth_token_url: ${LLM_SERVICE_OAUTH_TOKEN_URL} # OAuth token endpoint URL
|
|
70
|
+
oauth_client_id: ${LLM_SERVICE_OAUTH_CLIENT_ID} # OAuth client identifier
|
|
71
|
+
oauth_client_secret: ${LLM_SERVICE_OAUTH_CLIENT_SECRET} # OAuth client secret
|
|
72
|
+
oauth_scope: ${LLM_SERVICE_OAUTH_SCOPE} # Optional: OAuth scope (space-separated)
|
|
73
|
+
# oauth_ca_cert: ${LLM_SERVICE_OAUTH_CA_CERT_PATH} # Optional: Custom CA certificate path
|
|
74
|
+
oauth_token_refresh_buffer_seconds: ${LLM_SERVICE_OAUTH_TOKEN_REFRESH_BUFFER_SECONDS, 300} # Refresh buffer
|
|
75
|
+
|
|
76
|
+
# Enable parallel tool calls for planning model
|
|
77
|
+
parallel_tool_calls: true
|
|
78
|
+
# max_tokens: ${MAX_TOKENS, 16000} # Set a reasonable max token limit for planning
|
|
79
|
+
# temperature: 0.1 # Lower temperature for more deterministic planning
|
|
80
|
+
|
|
81
|
+
oauth_general: &oauth_general_model
|
|
82
|
+
# This dictionary structure tells ADK to use the LiteLlm wrapper with OAuth authentication.
|
|
83
|
+
# 'model' uses the specific model identifier your endpoint expects.
|
|
84
|
+
model: ${LLM_SERVICE_OAUTH_GENERAL_MODEL_NAME} # Use env var for model name
|
|
85
|
+
# 'api_base' tells LiteLLM where to send the request.
|
|
86
|
+
api_base: ${LLM_SERVICE_OAUTH_ENDPOINT} # Use env var for endpoint URL
|
|
87
|
+
|
|
88
|
+
# OAuth 2.0 Client Credentials configuration
|
|
89
|
+
oauth_token_url: ${LLM_SERVICE_OAUTH_TOKEN_URL} # OAuth token endpoint URL
|
|
90
|
+
oauth_client_id: ${LLM_SERVICE_OAUTH_CLIENT_ID} # OAuth client identifier
|
|
91
|
+
oauth_client_secret: ${LLM_SERVICE_OAUTH_CLIENT_SECRET} # OAuth client secret
|
|
92
|
+
oauth_scope: ${LLM_SERVICE_OAUTH_SCOPE} # Optional: OAuth scope (space-separated)
|
|
93
|
+
# oauth_ca_cert: ${LLM_SERVICE_OAUTH_CA_CERT_PATH} # Optional: Custom CA certificate path
|
|
94
|
+
oauth_token_refresh_buffer_seconds: ${LLM_SERVICE_OAUTH_TOKEN_REFRESH_BUFFER_SECONDS, 300} # Refresh buffer
|
|
95
|
+
|
|
56
96
|
- services:
|
|
57
97
|
# Default session service configuration
|
|
58
98
|
session_service: &default_session_service
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: solace-agent-mesh
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.6.0
|
|
4
4
|
Summary: Solace Agent Mesh is an open-source framework for building event-driven, multi-agent AI systems where specialized agents collaborate on complex tasks.
|
|
5
5
|
Project-URL: Homepage, https://github.com/SolaceLabs/solace-agent-mesh
|
|
6
6
|
Project-URL: Repository, https://github.com/SolaceLabs/solace-agent-mesh
|
|
@@ -249,25 +249,21 @@ Requires-Dist: python-jwt==4.1.0
|
|
|
249
249
|
Requires-Dist: python-multipart==0.0.20
|
|
250
250
|
Requires-Dist: pyyaml==6.0.2
|
|
251
251
|
Requires-Dist: rouge==1.0.1
|
|
252
|
-
Requires-Dist: solace-ai-connector==1.
|
|
252
|
+
Requires-Dist: solace-ai-connector==1.3.0
|
|
253
253
|
Requires-Dist: sqlalchemy==2.0.40
|
|
254
254
|
Requires-Dist: sse-starlette==3.0.2
|
|
255
255
|
Requires-Dist: toml==0.10.2
|
|
256
256
|
Requires-Dist: uvicorn[standard]==0.37.0
|
|
257
|
-
Provides-Extra: cli
|
|
258
|
-
Requires-Dist: click>=8.0; extra == 'cli'
|
|
259
|
-
Requires-Dist: prompt-toolkit>=3.0; extra == 'cli'
|
|
260
|
-
Requires-Dist: rich>=13.0; extra == 'cli'
|
|
261
257
|
Provides-Extra: employee-tools
|
|
262
|
-
Requires-Dist: holidays
|
|
258
|
+
Requires-Dist: holidays==0.81.0; extra == 'employee-tools'
|
|
263
259
|
Provides-Extra: gcs
|
|
264
|
-
Requires-Dist: google-cloud-storage
|
|
260
|
+
Requires-Dist: google-cloud-storage==2.19.0; extra == 'gcs'
|
|
265
261
|
Provides-Extra: postgresql
|
|
266
|
-
Requires-Dist: psycopg2-binary
|
|
262
|
+
Requires-Dist: psycopg2-binary==2.9.10; extra == 'postgresql'
|
|
267
263
|
Provides-Extra: s3
|
|
268
|
-
Requires-Dist: boto3
|
|
264
|
+
Requires-Dist: boto3==1.40.37; extra == 's3'
|
|
269
265
|
Provides-Extra: vertex
|
|
270
|
-
Requires-Dist: google-cloud-aiplatform
|
|
266
|
+
Requires-Dist: google-cloud-aiplatform==1.120.0; extra == 'vertex'
|
|
271
267
|
Description-Content-Type: text/markdown
|
|
272
268
|
|
|
273
269
|
<p align="center">
|
|
@@ -326,12 +322,12 @@ The result? A fully asynchronous, event-driven and decoupled AI agent architectu
|
|
|
326
322
|
---
|
|
327
323
|
|
|
328
324
|
## 🔑 Key Features
|
|
329
|
-
- **[Multi-Agent Event-Driven Architecture](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/getting-started/
|
|
330
|
-
- **[Agent Orchestration](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/
|
|
331
|
-
- **[Flexible Interfaces](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/
|
|
332
|
-
- **[Extensible](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/
|
|
333
|
-
- **[Agent-to-Agent Communication](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/
|
|
334
|
-
- **[Dynamic Embeds](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/
|
|
325
|
+
- **[Multi-Agent Event-Driven Architecture](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/getting-started/architecture)** – Agents communicate via the Solace Event Mesh for true scalability
|
|
326
|
+
- **[Agent Orchestration](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/components/agents)** – Complex tasks are automatically broken down and delegated by the [Orchestrator](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/components/orchestrator) agent
|
|
327
|
+
- **[Flexible Interfaces](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/components/gateways)** – Integrate with REST API, web UI, [Slack](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/developing/tutorials/slack-integration), or build your own integration
|
|
328
|
+
- **[Extensible](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/components/plugins)** – Add your own agents, gateways, or services with minimal code
|
|
329
|
+
- **[Agent-to-Agent Communication](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/getting-started/architecture)** – Agents can discover and delegate tasks to each other seamlessly using the Agent2Agent (A2A) Protocol
|
|
330
|
+
- **[Dynamic Embeds](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/components/builtin-tools/embeds)** – Embed dynamic content like real-time data, calculations and file contents in responses
|
|
335
331
|
|
|
336
332
|
📚 **Want to know more?** Check out the full Solace Agent Mesh [documentation](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/getting-started/introduction/).
|
|
337
333
|
|
|
@@ -432,10 +428,10 @@ Want to go further? Here are some hands-on tutorials to help you get started:
|
|
|
432
428
|
|
|
433
429
|
| 🔧 Integration | ⏱️ Est. Time | 📘 Tutorial |
|
|
434
430
|
|----------------|--------------|-------------|
|
|
435
|
-
| 🌤️ **Weather Agent**<br>Learn how to build an agent that gives Solace Agent Mesh the ability to access real-time weather information. | **~15 min** | [Weather Agent Plugin](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/tutorials/custom-agent) |
|
|
436
|
-
| 🗃️ **SQL Database Integration**<br>Enable Solace Agent Mesh to answer company-specific questions using a sample coffee company database.| **~10–15 min** | [SQL Database Tutorial](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/tutorials/sql-database) |
|
|
437
|
-
| 🧠 **MCP Integration**<br>Integrating a Model Context Protocol (MCP) Servers into Solace Agent Mesh. | **~10–15 min** | [MCP Integration Tutorial](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/tutorials/mcp-integration) |
|
|
438
|
-
| 💬 **Slack Integration**<br>Chat with Solace Agent Mesh directly from Slack. | **~20–30 min** | [Slack Integration Tutorial](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/tutorials/slack-integration) |
|
|
431
|
+
| 🌤️ **Weather Agent**<br>Learn how to build an agent that gives Solace Agent Mesh the ability to access real-time weather information. | **~15 min** | [Weather Agent Plugin](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/developing/tutorials/custom-agent) |
|
|
432
|
+
| 🗃️ **SQL Database Integration**<br>Enable Solace Agent Mesh to answer company-specific questions using a sample coffee company database.| **~10–15 min** | [SQL Database Tutorial](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/developing/tutorials/sql-database) |
|
|
433
|
+
| 🧠 **MCP Integration**<br>Integrating a Model Context Protocol (MCP) Servers into Solace Agent Mesh. | **~10–15 min** | [MCP Integration Tutorial](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/developing/tutorials/mcp-integration) |
|
|
434
|
+
| 💬 **Slack Integration**<br>Chat with Solace Agent Mesh directly from Slack. | **~20–30 min** | [Slack Integration Tutorial](https://solacelabs.github.io/solace-agent-mesh/docs/documentation/developing/tutorials/slack-integration) |
|
|
439
435
|
|
|
440
436
|
---
|
|
441
437
|
|
|
@@ -455,6 +451,36 @@ This project is licensed under the **Apache 2.0 License**. See the full license
|
|
|
455
451
|
|
|
456
452
|
---
|
|
457
453
|
|
|
454
|
+
## 🧪 Running Tests
|
|
455
|
+
|
|
456
|
+
This project uses `pytest` for testing. You can run tests using either `hatch` or `pytest` directly.
|
|
457
|
+
|
|
458
|
+
### Using Hatch
|
|
459
|
+
|
|
460
|
+
The recommended way to run tests is through the `hatch` environment, which ensures all dependencies are managed correctly.
|
|
461
|
+
|
|
462
|
+
```bash
|
|
463
|
+
# Run all tests
|
|
464
|
+
hatch test
|
|
465
|
+
|
|
466
|
+
# Run tests with tags
|
|
467
|
+
hatch test -m "<tag>"
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
### Using Pytest Directly
|
|
471
|
+
|
|
472
|
+
If you prefer to use `pytest` directly, you must first install the project with its test dependencies.
|
|
473
|
+
|
|
474
|
+
```bash
|
|
475
|
+
# Install the project in editable mode with the 'test' extras
|
|
476
|
+
pip install -e .[test]
|
|
477
|
+
|
|
478
|
+
# Run all tests
|
|
479
|
+
pytest
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
---
|
|
483
|
+
|
|
458
484
|
<h3 align="center">
|
|
459
485
|
<img src="./docs/static/img/solace-logo-text.svg" alt="Solace Agent Mesh Logo" width="100"/>
|
|
460
486
|
</h3>
|