solace-agent-mesh 1.11.2__py3-none-any.whl → 1.12.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- solace_agent_mesh/agent/adk/callbacks.py +177 -10
- solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +3 -0
- solace_agent_mesh/agent/adk/models/lite_llm.py +34 -16
- solace_agent_mesh/agent/adk/runner.py +66 -8
- solace_agent_mesh/agent/adk/setup.py +61 -26
- solace_agent_mesh/agent/protocol/event_handlers.py +48 -0
- solace_agent_mesh/agent/proxies/a2a/component.py +27 -0
- solace_agent_mesh/agent/sac/component.py +84 -2
- solace_agent_mesh/agent/tools/builtin_artifact_tools.py +41 -22
- solace_agent_mesh/agent/tools/peer_agent_tool.py +19 -12
- solace_agent_mesh/agent/tools/tool_config_types.py +21 -1
- solace_agent_mesh/agent/utils/artifact_helpers.py +54 -0
- solace_agent_mesh/assets/docs/404.html +3 -3
- solace_agent_mesh/assets/docs/assets/js/15ba94aa.e186750d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/240a0364.83e37aa8.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2e32b5e0.2f0db237.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3a6c6137.7e61915d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/{3ac1795d.28b7c67b.js → 3ac1795d.dc006e20.js} +1 -1
- solace_agent_mesh/assets/docs/assets/js/3ff0015d.f08618fb.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4667dc50.bf2ad456.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/547e15cc.8e6da617.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5b8d9c11.d4eb37b8.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5c2bd65f.1ee87753.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/64195356.09dbd087.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/66d4869e.30340bd3.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/729898df.7249e9fd.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7e294c01.7c5f6906.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8024126c.e3467286.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/81a99df0.95be65d4.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9bb13469.4523ae20.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/a7d42657.a956689d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e563275.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e04b235d.06d23db6.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e1b6eeb4.deb2b62e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e6f9706b.acc800d3.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e92d0134.c147a429.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ee0c2fe7.94d0a351.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/f284c35a.08fab659.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/main.b241af3e.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/runtime~main.4ca7d2e2.js +1 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/artifact-management/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/audio-tools/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/data-analysis-tools/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/embeds/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/image-tools/index.html +81 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/index.html +14 -12
- solace_agent_mesh/assets/docs/docs/documentation/components/cli/index.html +30 -9
- solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/index.html +6 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/platform-service/index.html +33 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/plugins/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/projects/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/prompts/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/proxies/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/speech/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +5 -5
- solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/deploying/{kubernetes-deployment → kubernetes}/index.html +6 -6
- solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes/kubernetes-deployment-guide/index.html +197 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/logging/index.html +11 -6
- solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/deploying/proxy_configuration/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/create-agents/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/create-gateways/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/creating-python-tools/index.html +23 -5
- solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/evaluations/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/bedrock-agents/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/custom-agent/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/event-mesh-gateway/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mcp-integration/index.html +17 -8
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mongodb-integration/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rag-integration/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rest-gateway/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/sql-database/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/teams-integration/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/agent-builder/index.html +5 -5
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/connectors/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/openapi-tools/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/rbac-setup-guide/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/secure-user-delegated-access/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/wheel-installation/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/architecture/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +6 -5
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/vibe_coding/index.html +62 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/artifact-storage/index.html +25 -4
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/configurations/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/session-storage/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/user-feedback/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-gateway-upgrade-to-0.3.0/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-technical-migration-map/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/migrations/platform-service-split/index.html +85 -0
- solace_agent_mesh/assets/docs/lunr-index-1767712284328.json +1 -0
- solace_agent_mesh/assets/docs/lunr-index.json +1 -1
- solace_agent_mesh/assets/docs/search-doc-1767712284328.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/init_cmd/__init__.py +15 -0
- solace_agent_mesh/cli/commands/init_cmd/directory_step.py +1 -1
- solace_agent_mesh/cli/commands/init_cmd/env_step.py +29 -2
- solace_agent_mesh/cli/commands/init_cmd/platform_service_step.py +85 -0
- solace_agent_mesh/cli/commands/tools_cmd.py +315 -0
- solace_agent_mesh/cli/main.py +2 -0
- solace_agent_mesh/client/webui/frontend/static/assets/{authCallback-Dj3JtK42.js → authCallback-8Nihi8rv.js} +1 -1
- solace_agent_mesh/client/webui/frontend/static/assets/{client-ZKk9kEJ5.js → client-DYtZN8p-.js} +1 -1
- solace_agent_mesh/client/webui/frontend/static/assets/main-BYGUHQMk.js +435 -0
- solace_agent_mesh/client/webui/frontend/static/assets/main-D2CSH1bp.css +1 -0
- solace_agent_mesh/client/webui/frontend/static/assets/{vendor-BNV4kZN0.js → vendor-XBWAmrun.js} +106 -101
- 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/client/webui/frontend/static/ui-version.json +1 -1
- solace_agent_mesh/common/a2a/types.py +1 -1
- solace_agent_mesh/common/agent_registry.py +38 -11
- solace_agent_mesh/common/data_parts.py +28 -0
- solace_agent_mesh/common/error_handlers.py +83 -0
- solace_agent_mesh/common/sam_events/event_service.py +2 -2
- solace_agent_mesh/config_portal/backend/common.py +2 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/_index-ZV-jX48T.js +103 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/{manifest-ba77705e.js → manifest-ce5bc5da.js} +1 -1
- solace_agent_mesh/config_portal/frontend/static/client/index.html +1 -1
- solace_agent_mesh/core_a2a/service.py +3 -2
- solace_agent_mesh/gateway/adapter/base.py +28 -1
- solace_agent_mesh/gateway/adapter/types.py +9 -0
- solace_agent_mesh/gateway/base/auth_interface.py +103 -0
- solace_agent_mesh/gateway/base/component.py +68 -1
- solace_agent_mesh/gateway/generic/component.py +195 -30
- solace_agent_mesh/gateway/http_sse/app.py +23 -6
- solace_agent_mesh/gateway/http_sse/component.py +9 -61
- solace_agent_mesh/gateway/http_sse/dependencies.py +9 -51
- solace_agent_mesh/gateway/http_sse/main.py +28 -418
- solace_agent_mesh/gateway/http_sse/repository/chat_task_repository.py +2 -2
- solace_agent_mesh/gateway/http_sse/repository/entities/project.py +1 -1
- solace_agent_mesh/gateway/http_sse/repository/entities/project_user.py +1 -1
- solace_agent_mesh/gateway/http_sse/repository/entities/session.py +2 -2
- solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +2 -2
- solace_agent_mesh/gateway/http_sse/repository/interfaces.py +2 -2
- solace_agent_mesh/gateway/http_sse/repository/models/prompt_model.py +1 -1
- solace_agent_mesh/gateway/http_sse/repository/models/session_model.py +1 -1
- solace_agent_mesh/gateway/http_sse/repository/project_repository.py +1 -1
- solace_agent_mesh/gateway/http_sse/repository/project_user_repository.py +1 -1
- solace_agent_mesh/gateway/http_sse/repository/session_repository.py +4 -4
- solace_agent_mesh/gateway/http_sse/repository/task_repository.py +2 -2
- solace_agent_mesh/gateway/http_sse/routers/artifacts.py +16 -15
- solace_agent_mesh/gateway/http_sse/routers/auth.py +61 -132
- solace_agent_mesh/gateway/http_sse/routers/config.py +12 -8
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/session_requests.py +1 -1
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/base_responses.py +1 -1
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +2 -2
- solace_agent_mesh/gateway/http_sse/routers/feedback.py +2 -2
- solace_agent_mesh/gateway/http_sse/routers/people.py +2 -2
- solace_agent_mesh/gateway/http_sse/routers/projects.py +2 -1
- solace_agent_mesh/gateway/http_sse/routers/prompts.py +2 -1
- solace_agent_mesh/gateway/http_sse/routers/sessions.py +3 -3
- solace_agent_mesh/gateway/http_sse/routers/speech.py +1 -1
- solace_agent_mesh/gateway/http_sse/routers/tasks.py +3 -2
- solace_agent_mesh/gateway/http_sse/routers/users.py +1 -1
- solace_agent_mesh/gateway/http_sse/routers/visualization.py +2 -1
- solace_agent_mesh/gateway/http_sse/services/background_task_monitor.py +1 -1
- solace_agent_mesh/gateway/http_sse/services/data_retention_service.py +1 -1
- solace_agent_mesh/gateway/http_sse/services/feedback_service.py +1 -1
- solace_agent_mesh/gateway/http_sse/services/session_service.py +4 -4
- solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +1 -1
- solace_agent_mesh/services/platform/__init__.py +23 -12
- solace_agent_mesh/services/platform/api/dependencies.py +23 -16
- solace_agent_mesh/services/platform/api/main.py +118 -43
- solace_agent_mesh/services/platform/api/routers/__init__.py +12 -3
- solace_agent_mesh/services/platform/api/routers/health_router.py +31 -0
- solace_agent_mesh/services/platform/app.py +101 -7
- solace_agent_mesh/services/platform/component.py +552 -33
- solace_agent_mesh/shared/__init__.py +14 -0
- solace_agent_mesh/shared/api/__init__.py +42 -0
- solace_agent_mesh/shared/auth/__init__.py +26 -0
- solace_agent_mesh/shared/auth/dependencies.py +204 -0
- solace_agent_mesh/shared/auth/middleware.py +291 -0
- solace_agent_mesh/shared/database/__init__.py +20 -0
- solace_agent_mesh/{gateway/http_sse/shared → shared/database}/base_repository.py +1 -1
- solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_exceptions.py +1 -1
- solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_helpers.py +1 -1
- solace_agent_mesh/shared/exceptions/__init__.py +36 -0
- solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/exception_handlers.py +1 -1
- solace_agent_mesh/shared/utils/__init__.py +21 -0
- solace_agent_mesh/templates/platform.yaml +49 -0
- solace_agent_mesh/templates/webui.yaml +12 -3
- {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/METADATA +2 -1
- {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/RECORD +214 -258
- solace_agent_mesh/agent/adk/adk_llm.txt +0 -226
- solace_agent_mesh/agent/adk/adk_llm_detail.txt +0 -566
- solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt +0 -171
- solace_agent_mesh/agent/adk/models/models_llm.txt +0 -189
- solace_agent_mesh/agent/agent_llm.txt +0 -369
- solace_agent_mesh/agent/agent_llm_detail.txt +0 -1702
- solace_agent_mesh/agent/protocol/protocol_llm.txt +0 -81
- solace_agent_mesh/agent/protocol/protocol_llm_detail.txt +0 -92
- solace_agent_mesh/agent/proxies/a2a/a2a_llm.txt +0 -190
- solace_agent_mesh/agent/proxies/base/base_llm.txt +0 -148
- solace_agent_mesh/agent/proxies/proxies_llm.txt +0 -283
- solace_agent_mesh/agent/sac/sac_llm.txt +0 -189
- solace_agent_mesh/agent/sac/sac_llm_detail.txt +0 -200
- solace_agent_mesh/agent/testing/testing_llm.txt +0 -58
- solace_agent_mesh/agent/testing/testing_llm_detail.txt +0 -68
- solace_agent_mesh/agent/tools/tools_llm.txt +0 -276
- solace_agent_mesh/agent/tools/tools_llm_detail.txt +0 -275
- solace_agent_mesh/agent/utils/utils_llm.txt +0 -152
- solace_agent_mesh/agent/utils/utils_llm_detail.txt +0 -149
- solace_agent_mesh/assets/docs/assets/js/15ba94aa.92fea363.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/240a0364.9ad94d1b.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/2e32b5e0.33f5d75b.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/3a6c6137.f5940cfa.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/3ff0015d.2ddc75c0.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/547e15cc.2f7790c1.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/5c2bd65f.90a87880.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/64195356.c498c4d0.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/66d4869e.b77431fc.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/8024126c.fa0e7186.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/81a99df0.2484b8d9.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/9bb13469.b2333011.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/ab9708a8.245ae0ef.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/db5d6442.3daf1696.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e04b235d.52cb25ed.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e1b6eeb4.b1068f9b.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e6f9706b.4488e34c.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e92d0134.3bda61dd.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/f284c35a.250993bf.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/main.7acf7ace.js +0 -2
- solace_agent_mesh/assets/docs/assets/js/runtime~main.9e0813a2.js +0 -1
- solace_agent_mesh/assets/docs/lunr-index-1765810064709.json +0 -1
- solace_agent_mesh/assets/docs/search-doc-1765810064709.json +0 -1
- solace_agent_mesh/cli/commands/add_cmd/add_cmd_llm.txt +0 -250
- solace_agent_mesh/cli/commands/init_cmd/init_cmd_llm.txt +0 -365
- solace_agent_mesh/cli/commands/plugin_cmd/plugin_cmd_llm.txt +0 -305
- solace_agent_mesh/client/webui/frontend/static/assets/main-BcUaNZ-Q.css +0 -1
- solace_agent_mesh/client/webui/frontend/static/assets/main-vjch4RYc.js +0 -435
- solace_agent_mesh/common/a2a/a2a_llm.txt +0 -175
- solace_agent_mesh/common/a2a/a2a_llm_detail.txt +0 -193
- solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +0 -445
- solace_agent_mesh/common/a2a_spec/a2a_spec_llm_detail.txt +0 -736
- solace_agent_mesh/common/a2a_spec/schemas/schemas_llm.txt +0 -330
- solace_agent_mesh/common/common_llm.txt +0 -230
- solace_agent_mesh/common/common_llm_detail.txt +0 -2562
- solace_agent_mesh/common/middleware/middleware_llm.txt +0 -174
- solace_agent_mesh/common/middleware/middleware_llm_detail.txt +0 -185
- solace_agent_mesh/common/sac/sac_llm.txt +0 -71
- solace_agent_mesh/common/sac/sac_llm_detail.txt +0 -82
- solace_agent_mesh/common/sam_events/sam_events_llm.txt +0 -104
- solace_agent_mesh/common/sam_events/sam_events_llm_detail.txt +0 -115
- solace_agent_mesh/common/services/providers/providers_llm.txt +0 -81
- solace_agent_mesh/common/services/services_llm.txt +0 -368
- solace_agent_mesh/common/services/services_llm_detail.txt +0 -459
- solace_agent_mesh/common/utils/embeds/embeds_llm.txt +0 -220
- solace_agent_mesh/common/utils/utils_llm.txt +0 -335
- solace_agent_mesh/common/utils/utils_llm_detail.txt +0 -572
- solace_agent_mesh/config_portal/frontend/static/client/assets/_index-DiOiAjzL.js +0 -103
- solace_agent_mesh/core_a2a/core_a2a_llm.txt +0 -90
- solace_agent_mesh/core_a2a/core_a2a_llm_detail.txt +0 -101
- solace_agent_mesh/gateway/base/base_llm.txt +0 -226
- solace_agent_mesh/gateway/base/base_llm_detail.txt +0 -235
- solace_agent_mesh/gateway/gateway_llm.txt +0 -369
- solace_agent_mesh/gateway/gateway_llm_detail.txt +0 -3885
- solace_agent_mesh/gateway/http_sse/alembic/alembic_llm.txt +0 -345
- solace_agent_mesh/gateway/http_sse/alembic/versions/versions_llm.txt +0 -161
- solace_agent_mesh/gateway/http_sse/components/components_llm.txt +0 -105
- solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +0 -299
- solace_agent_mesh/gateway/http_sse/http_sse_llm_detail.txt +0 -3278
- solace_agent_mesh/gateway/http_sse/repository/entities/entities_llm.txt +0 -221
- solace_agent_mesh/gateway/http_sse/repository/models/models_llm.txt +0 -257
- solace_agent_mesh/gateway/http_sse/repository/repository_llm.txt +0 -308
- solace_agent_mesh/gateway/http_sse/routers/dto/dto_llm.txt +0 -450
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/requests_llm.txt +0 -133
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/responses_llm.txt +0 -123
- solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +0 -312
- solace_agent_mesh/gateway/http_sse/services/services_llm.txt +0 -303
- solace_agent_mesh/gateway/http_sse/shared/__init__.py +0 -146
- solace_agent_mesh/gateway/http_sse/shared/shared_llm.txt +0 -319
- solace_agent_mesh/gateway/http_sse/utils/utils_llm.txt +0 -47
- solace_agent_mesh/llm.txt +0 -228
- solace_agent_mesh/llm_detail.txt +0 -2835
- solace_agent_mesh/solace_agent_mesh_llm.txt +0 -362
- solace_agent_mesh/solace_agent_mesh_llm_detail.txt +0 -8599
- solace_agent_mesh/templates/templates_llm.txt +0 -147
- /solace_agent_mesh/assets/docs/assets/js/{main.7acf7ace.js.LICENSE.txt → main.b241af3e.js.LICENSE.txt} +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/auth_utils.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/pagination.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/response_utils.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/error_dto.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/exceptions.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/enums.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/timestamp_utils.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/types.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/utils.py +0 -0
- {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/WHEEL +0 -0
- {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/entry_points.txt +0 -0
- {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
# DEVELOPER GUIDE: core_a2a
|
|
2
|
-
|
|
3
|
-
## Quick Summary
|
|
4
|
-
The `core_a2a` directory provides a reusable service layer for core Agent-to-Agent (A2A) interactions. It handles task submission (both regular and streaming), task cancellation, and agent discovery processing while being decoupled from specific gateway implementations and SAC messaging details.
|
|
5
|
-
|
|
6
|
-
## Files Overview
|
|
7
|
-
- `__init__.py` - Package initialization file for the core A2A service layer
|
|
8
|
-
- `service.py` - Main service class that encapsulates A2A protocol logic and agent registry operations
|
|
9
|
-
|
|
10
|
-
## Developer API Reference
|
|
11
|
-
|
|
12
|
-
### __init__.py
|
|
13
|
-
**Purpose:** Package initialization for the core A2A service layer
|
|
14
|
-
**Import:** `import solace_agent_mesh.core_a2a`
|
|
15
|
-
|
|
16
|
-
No public classes, functions, or constants defined.
|
|
17
|
-
|
|
18
|
-
### service.py
|
|
19
|
-
**Purpose:** Provides the main CoreA2AService class for handling A2A protocol operations
|
|
20
|
-
**Import:** `from solace_agent_mesh.core_a2a.service import CoreA2AService`
|
|
21
|
-
|
|
22
|
-
**Classes:**
|
|
23
|
-
- `CoreA2AService(agent_registry: AgentRegistry, namespace: str)` - Main service class for A2A operations
|
|
24
|
-
- `submit_task(agent_name: str, a2a_message: A2AMessage, session_id: str, client_id: str, reply_to_topic: str, user_id: str = "default_user", a2a_user_config: Optional[Dict[str, Any]] = None, metadata_override: Optional[Dict[str, Any]] = None) -> Tuple[str, Dict, Dict]` - Constructs topic, payload, and user properties for non-streaming task requests
|
|
25
|
-
- `submit_streaming_task(agent_name: str, a2a_message: A2AMessage, session_id: str, client_id: str, reply_to_topic: str, status_to_topic: str, user_id: str = "default_user", a2a_user_config: Optional[Dict[str, Any]] = None, metadata_override: Optional[Dict[str, Any]] = None) -> Tuple[str, Dict, Dict]` - Constructs topic, payload, and user properties for streaming task requests
|
|
26
|
-
- `cancel_task(agent_name: str, task_id: str, client_id: str, user_id: str = "default_user") -> Tuple[str, Dict, Dict]` - Constructs topic, payload, and user properties for task cancellation
|
|
27
|
-
- `get_agent(agent_name: str) -> Optional[AgentCard]` - Retrieves a specific agent card by name from the registry
|
|
28
|
-
- `get_all_agents() -> List[AgentCard]` - Retrieves all currently discovered agent cards from the registry
|
|
29
|
-
- `process_discovery_message(agent_card: AgentCard)` - Processes an incoming agent card discovery message
|
|
30
|
-
- `agent_registry: AgentRegistry` - The shared agent registry instance
|
|
31
|
-
- `namespace: str` - The namespace string
|
|
32
|
-
- `log_identifier: str` - Identifier used for logging
|
|
33
|
-
|
|
34
|
-
**Functions:**
|
|
35
|
-
None (all functionality is encapsulated in the CoreA2AService class)
|
|
36
|
-
|
|
37
|
-
**Constants/Variables:**
|
|
38
|
-
None
|
|
39
|
-
|
|
40
|
-
**Usage Examples:**
|
|
41
|
-
```python
|
|
42
|
-
# Import required dependencies
|
|
43
|
-
from solace_agent_mesh.core_a2a.service import CoreA2AService
|
|
44
|
-
from solace_agent_mesh.common.agent_registry import AgentRegistry
|
|
45
|
-
from a2a.types import A2AMessage, AgentCard
|
|
46
|
-
|
|
47
|
-
# Initialize the service
|
|
48
|
-
agent_registry = AgentRegistry()
|
|
49
|
-
namespace = "my_NAMESPACE"
|
|
50
|
-
service = CoreA2AService(agent_registry, namespace)
|
|
51
|
-
|
|
52
|
-
# Submit a regular task
|
|
53
|
-
message = A2AMessage(parts=[{"type": "text", "content": "Hello"}])
|
|
54
|
-
topic, payload, user_props = service.submit_task(
|
|
55
|
-
agent_name="my_agent",
|
|
56
|
-
a2a_message=message,
|
|
57
|
-
session_id="session_123",
|
|
58
|
-
client_id="client_456",
|
|
59
|
-
reply_to_topic="responses/client_456",
|
|
60
|
-
user_id="user_789"
|
|
61
|
-
)
|
|
62
|
-
|
|
63
|
-
# Submit a streaming task
|
|
64
|
-
topic, payload, user_props = service.submit_streaming_task(
|
|
65
|
-
agent_name="my_agent",
|
|
66
|
-
a2a_message=message,
|
|
67
|
-
session_id="session_123",
|
|
68
|
-
client_id="client_456",
|
|
69
|
-
reply_to_topic="responses/client_456",
|
|
70
|
-
status_to_topic="status/client_456",
|
|
71
|
-
user_id="user_789"
|
|
72
|
-
)
|
|
73
|
-
|
|
74
|
-
# Cancel a task
|
|
75
|
-
topic, payload, user_props = service.cancel_task(
|
|
76
|
-
agent_name="my_agent",
|
|
77
|
-
task_id="task-abc123",
|
|
78
|
-
client_id="client_456"
|
|
79
|
-
)
|
|
80
|
-
|
|
81
|
-
# Get agent information
|
|
82
|
-
agent = service.get_agent("my_agent")
|
|
83
|
-
all_agents = service.get_all_agents()
|
|
84
|
-
|
|
85
|
-
# Process discovery message
|
|
86
|
-
agent_card = AgentCard(name="new_agent", description="A new agent")
|
|
87
|
-
service.process_discovery_message(agent_card)
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
# content_hash: 64e02756b1b097e39257e8e52df701d758df0f8d022ea6d6b088057f7025a6d9
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
# LLM Summary Detail File
|
|
2
|
-
|
|
3
|
-
This file is a concatenation of all individual *llm.txt files found in the 'core_a2a' directory tree. Each section below corresponds to a specific directory's summary file.
|
|
4
|
-
|
|
5
|
-
================================================================================
|
|
6
|
-
|
|
7
|
-
## Section 1: solace_agent_mesh/core_a2a/core_a2a_llm.txt
|
|
8
|
-
|
|
9
|
-
**Source file:** `solace_agent_mesh/core_a2a/core_a2a_llm.txt`
|
|
10
|
-
|
|
11
|
-
# DEVELOPER GUIDE: core_a2a
|
|
12
|
-
|
|
13
|
-
## Quick Summary
|
|
14
|
-
The `core_a2a` directory provides a reusable service layer for core Agent-to-Agent (A2A) interactions. It handles task submission (both regular and streaming), task cancellation, and agent discovery processing while being decoupled from specific gateway implementations and SAC messaging details.
|
|
15
|
-
|
|
16
|
-
## Files Overview
|
|
17
|
-
- `__init__.py` - Package initialization file for the core A2A service layer
|
|
18
|
-
- `service.py` - Main service class that encapsulates A2A protocol logic and agent registry operations
|
|
19
|
-
|
|
20
|
-
## Developer API Reference
|
|
21
|
-
|
|
22
|
-
### __init__.py
|
|
23
|
-
**Purpose:** Package initialization for the core A2A service layer
|
|
24
|
-
**Import:** `import solace_agent_mesh.core_a2a`
|
|
25
|
-
|
|
26
|
-
No public classes, functions, or constants defined.
|
|
27
|
-
|
|
28
|
-
### service.py
|
|
29
|
-
**Purpose:** Provides the main CoreA2AService class for handling A2A protocol operations
|
|
30
|
-
**Import:** `from solace_agent_mesh.core_a2a.service import CoreA2AService`
|
|
31
|
-
|
|
32
|
-
**Classes:**
|
|
33
|
-
- `CoreA2AService(agent_registry: AgentRegistry, namespace: str)` - Main service class for A2A operations
|
|
34
|
-
- `submit_task(agent_name: str, a2a_message: A2AMessage, session_id: str, client_id: str, reply_to_topic: str, user_id: str = "default_user", a2a_user_config: Optional[Dict[str, Any]] = None, metadata_override: Optional[Dict[str, Any]] = None) -> Tuple[str, Dict, Dict]` - Constructs topic, payload, and user properties for non-streaming task requests
|
|
35
|
-
- `submit_streaming_task(agent_name: str, a2a_message: A2AMessage, session_id: str, client_id: str, reply_to_topic: str, status_to_topic: str, user_id: str = "default_user", a2a_user_config: Optional[Dict[str, Any]] = None, metadata_override: Optional[Dict[str, Any]] = None) -> Tuple[str, Dict, Dict]` - Constructs topic, payload, and user properties for streaming task requests
|
|
36
|
-
- `cancel_task(agent_name: str, task_id: str, client_id: str, user_id: str = "default_user") -> Tuple[str, Dict, Dict]` - Constructs topic, payload, and user properties for task cancellation
|
|
37
|
-
- `get_agent(agent_name: str) -> Optional[AgentCard]` - Retrieves a specific agent card by name from the registry
|
|
38
|
-
- `get_all_agents() -> List[AgentCard]` - Retrieves all currently discovered agent cards from the registry
|
|
39
|
-
- `process_discovery_message(agent_card: AgentCard)` - Processes an incoming agent card discovery message
|
|
40
|
-
- `agent_registry: AgentRegistry` - The shared agent registry instance
|
|
41
|
-
- `namespace: str` - The namespace string
|
|
42
|
-
- `log_identifier: str` - Identifier used for logging
|
|
43
|
-
|
|
44
|
-
**Functions:**
|
|
45
|
-
None (all functionality is encapsulated in the CoreA2AService class)
|
|
46
|
-
|
|
47
|
-
**Constants/Variables:**
|
|
48
|
-
None
|
|
49
|
-
|
|
50
|
-
**Usage Examples:**
|
|
51
|
-
```python
|
|
52
|
-
# Import required dependencies
|
|
53
|
-
from solace_agent_mesh.core_a2a.service import CoreA2AService
|
|
54
|
-
from solace_agent_mesh.common.agent_registry import AgentRegistry
|
|
55
|
-
from a2a.types import A2AMessage, AgentCard
|
|
56
|
-
|
|
57
|
-
# Initialize the service
|
|
58
|
-
agent_registry = AgentRegistry()
|
|
59
|
-
namespace = "my_NAMESPACE"
|
|
60
|
-
service = CoreA2AService(agent_registry, namespace)
|
|
61
|
-
|
|
62
|
-
# Submit a regular task
|
|
63
|
-
message = A2AMessage(parts=[{"type": "text", "content": "Hello"}])
|
|
64
|
-
topic, payload, user_props = service.submit_task(
|
|
65
|
-
agent_name="my_agent",
|
|
66
|
-
a2a_message=message,
|
|
67
|
-
session_id="session_123",
|
|
68
|
-
client_id="client_456",
|
|
69
|
-
reply_to_topic="responses/client_456",
|
|
70
|
-
user_id="user_789"
|
|
71
|
-
)
|
|
72
|
-
|
|
73
|
-
# Submit a streaming task
|
|
74
|
-
topic, payload, user_props = service.submit_streaming_task(
|
|
75
|
-
agent_name="my_agent",
|
|
76
|
-
a2a_message=message,
|
|
77
|
-
session_id="session_123",
|
|
78
|
-
client_id="client_456",
|
|
79
|
-
reply_to_topic="responses/client_456",
|
|
80
|
-
status_to_topic="status/client_456",
|
|
81
|
-
user_id="user_789"
|
|
82
|
-
)
|
|
83
|
-
|
|
84
|
-
# Cancel a task
|
|
85
|
-
topic, payload, user_props = service.cancel_task(
|
|
86
|
-
agent_name="my_agent",
|
|
87
|
-
task_id="task-abc123",
|
|
88
|
-
client_id="client_456"
|
|
89
|
-
)
|
|
90
|
-
|
|
91
|
-
# Get agent information
|
|
92
|
-
agent = service.get_agent("my_agent")
|
|
93
|
-
all_agents = service.get_all_agents()
|
|
94
|
-
|
|
95
|
-
# Process discovery message
|
|
96
|
-
agent_card = AgentCard(name="new_agent", description="A new agent")
|
|
97
|
-
service.process_discovery_message(agent_card)
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
================================================================================
|
|
101
|
-
|
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
# DEVELOPER GUIDE: base
|
|
2
|
-
|
|
3
|
-
## Quick Summary
|
|
4
|
-
The `base` directory provides foundational abstract classes for building Gateway implementations within the Solace AI Connector. It establishes a framework for handling common gateway tasks such as application configuration, Solace broker integration, A2A (Agent-to-Agent) message protocol handling, and managing the lifecycle of requests from external platforms. Developers should subclass `BaseGatewayApp` and `BaseGatewayComponent` to create new gateways.
|
|
5
|
-
|
|
6
|
-
## Files Overview
|
|
7
|
-
- `__init__.py` - Marks the directory as a Python package
|
|
8
|
-
- `app.py` - Contains the base application class that handles configuration, schema merging, and broker setup
|
|
9
|
-
- `component.py` - Contains the core logic class for processing A2A messages and integrating with external platforms
|
|
10
|
-
- `task_context.py` - Provides a thread-safe manager for mapping A2A task IDs to their original request context
|
|
11
|
-
|
|
12
|
-
## Developer API Reference
|
|
13
|
-
|
|
14
|
-
### __init__.py
|
|
15
|
-
**Purpose:** Initializes the `gateway.base` Python package
|
|
16
|
-
**Import:** `from solace_agent_mesh.gateway.base import ...`
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
### app.py
|
|
21
|
-
**Purpose:** Provides the base application class for gateway implementations with automated configuration schema merging, Solace broker setup, and component instantiation
|
|
22
|
-
**Import:** `from solace_agent_mesh.gateway.base.app import BaseGatewayApp, BaseGatewayComponent`
|
|
23
|
-
|
|
24
|
-
**Classes:**
|
|
25
|
-
- `BaseGatewayComponent(ComponentBase)` - Base marker class for gateway components
|
|
26
|
-
- `BaseGatewayApp(app_info: Dict[str, Any], **kwargs)` - Main application class to be subclassed for new gateways
|
|
27
|
-
- `_get_gateway_component_class(self) -> Type[BaseGatewayComponent]` - **[Abstract Method]** Must return the specific gateway component class
|
|
28
|
-
- `namespace: str` - Absolute topic prefix for A2A communication (e.g., 'myorg/dev')
|
|
29
|
-
- `gateway_id: str` - Unique ID for this gateway instance (auto-generated if not provided)
|
|
30
|
-
- `artifact_service_config: Dict` - Configuration for the shared ADK Artifact Service
|
|
31
|
-
- `enable_embed_resolution: bool` - Flag to enable/disable late-stage 'artifact_content' embed resolution
|
|
32
|
-
- `gateway_max_artifact_resolve_size_bytes: int` - Maximum size for resolving artifacts (default: 104857600)
|
|
33
|
-
- `gateway_recursive_embed_depth: int` - Maximum depth for recursive embed resolution (default: 12)
|
|
34
|
-
- `artifact_handling_mode: str` - How gateway handles file parts: "reference", "embed", or "passthrough"
|
|
35
|
-
- `gateway_max_message_size_bytes: int` - Maximum message size in bytes (default: 10MB)
|
|
36
|
-
|
|
37
|
-
**Constants/Variables:**
|
|
38
|
-
- `BASE_GATEWAY_APP_SCHEMA: Dict[str, List[Dict[str, Any]]]` - Base configuration schema automatically merged with subclass parameters
|
|
39
|
-
- `SPECIFIC_APP_SCHEMA_PARAMS_ATTRIBUTE_NAME: str` - Class attribute name ("SPECIFIC_APP_SCHEMA_PARAMS") for subclass-specific config parameters
|
|
40
|
-
|
|
41
|
-
**Usage Examples:**
|
|
42
|
-
```python
|
|
43
|
-
from typing import Type, List, Dict, Any
|
|
44
|
-
from solace_agent_mesh.gateway.base.app import BaseGatewayApp, BaseGatewayComponent
|
|
45
|
-
|
|
46
|
-
class MyGatewayComponent(BaseGatewayComponent):
|
|
47
|
-
# Implementation details...
|
|
48
|
-
pass
|
|
49
|
-
|
|
50
|
-
class MyGatewayApp(BaseGatewayApp):
|
|
51
|
-
"""Custom gateway application for My Platform."""
|
|
52
|
-
|
|
53
|
-
# Define additional configuration parameters
|
|
54
|
-
SPECIFIC_APP_SCHEMA_PARAMS: List[Dict[str, Any]] = [
|
|
55
|
-
{
|
|
56
|
-
"name": "my_platform_api_key",
|
|
57
|
-
"required": True,
|
|
58
|
-
"type": "string",
|
|
59
|
-
"description": "API key for connecting to My Platform."
|
|
60
|
-
}
|
|
61
|
-
]
|
|
62
|
-
|
|
63
|
-
def _get_gateway_component_class(self) -> Type[BaseGatewayComponent]:
|
|
64
|
-
return MyGatewayComponent
|
|
65
|
-
|
|
66
|
-
# Usage in YAML config:
|
|
67
|
-
# app_config:
|
|
68
|
-
# namespace: "myorg/prod"
|
|
69
|
-
# gateway_id: "my-gateway-instance-01"
|
|
70
|
-
# artifact_service:
|
|
71
|
-
# type: "local_file"
|
|
72
|
-
# base_path: "/data/artifacts"
|
|
73
|
-
# my_platform_api_key: "secret-key-here"
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
---
|
|
77
|
-
|
|
78
|
-
### component.py
|
|
79
|
-
**Purpose:** Provides the abstract base class for gateway components containing core A2A protocol logic, service management, and external platform integration interface
|
|
80
|
-
**Import:** `from solace_agent_mesh.gateway.base.component import BaseGatewayComponent`
|
|
81
|
-
|
|
82
|
-
**Classes:**
|
|
83
|
-
- `BaseGatewayComponent(resolve_artifact_uris_in_gateway: bool = True, **kwargs: Any)` - Abstract base class for gateway components
|
|
84
|
-
- **Public Methods:**
|
|
85
|
-
- `get_config(self, key: str, default: Any = None) -> Any` - Retrieves configuration from nested app_config or component_config
|
|
86
|
-
- `authenticate_and_enrich_user(self, external_event_data: Any) -> Optional[Dict[str, Any]]` - Orchestrates user authentication and identity enrichment
|
|
87
|
-
- `submit_a2a_task(self, target_agent_name: str, a2a_parts: List[ContentPart], external_request_context: Dict[str, Any], user_identity: Any, is_streaming: bool = True, api_version: str = "v2") -> str` - Submits task to target agent, returns task_id
|
|
88
|
-
- **Abstract Methods (Must be Implemented):**
|
|
89
|
-
- `_extract_initial_claims(self, external_event_data: Any) -> Optional[Dict[str, Any]]` - Extract identity claims from platform event (must return dict with 'id' key)
|
|
90
|
-
- `_start_listener(self) -> None` - Start external platform listener (e.g., web server, WebSocket)
|
|
91
|
-
- `_stop_listener(self) -> None` - Stop external platform listener
|
|
92
|
-
- `_translate_external_input(self, external_event: Any) -> Tuple[str, List[ContentPart], Dict[str, Any]]` - Convert external event to A2A format: (target_agent_name, a2a_parts, context)
|
|
93
|
-
- `_send_update_to_external(self, external_request_context: Dict[str, Any], event_data: Union[TaskStatusUpdateEvent, TaskArtifactUpdateEvent], is_final_chunk_of_update: bool) -> None` - Send streaming update to external platform
|
|
94
|
-
- `_send_final_response_to_external(self, external_request_context: Dict[str, Any], task_data: Task) -> None` - Send final response to external platform
|
|
95
|
-
- `_send_error_to_external(self, external_request_context: Dict[str, Any], error_data: JSONRPCError) -> None` - Send error to external platform
|
|
96
|
-
- **Properties:**
|
|
97
|
-
- `namespace: str` - A2A communication namespace
|
|
98
|
-
- `gateway_id: str` - Unique gateway instance ID
|
|
99
|
-
- `agent_registry: AgentRegistry` - Registry for discovered agents
|
|
100
|
-
- `core_a2a_service: CoreA2AService` - Core A2A protocol service
|
|
101
|
-
- `shared_artifact_service: Optional[BaseArtifactService]` - Artifact service instance
|
|
102
|
-
- `task_context_manager: TaskContextManager` - Thread-safe task context storage
|
|
103
|
-
- `identity_service: Optional[BaseIdentityService]` - Identity enrichment service
|
|
104
|
-
|
|
105
|
-
**Usage Examples:**
|
|
106
|
-
```python
|
|
107
|
-
from typing import Any, Dict, List, Optional, Tuple, Union
|
|
108
|
-
from solace_agent_mesh.gateway.base.component import BaseGatewayComponent
|
|
109
|
-
from solace_agent_mesh.common.a2a.types import ContentPart
|
|
110
|
-
from a2a.types import TextPart, Task, TaskStatusUpdateEvent, TaskArtifactUpdateEvent, JSONRPCError
|
|
111
|
-
|
|
112
|
-
class MyGatewayComponent(BaseGatewayComponent):
|
|
113
|
-
|
|
114
|
-
async def _extract_initial_claims(self, external_event_data: Any) -> Optional[Dict[str, Any]]:
|
|
115
|
-
"""Extract user identity from platform-specific event."""
|
|
116
|
-
# Example for HTTP request
|
|
117
|
-
if hasattr(external_event_data, 'headers'):
|
|
118
|
-
user_id = external_event_data.headers.get('X-User-ID')
|
|
119
|
-
if user_id:
|
|
120
|
-
return {"id": user_id, "source": "http_header"}
|
|
121
|
-
return None
|
|
122
|
-
|
|
123
|
-
def _start_listener(self) -> None:
|
|
124
|
-
"""Start your platform listener (web server, etc.)."""
|
|
125
|
-
# Example: Start FastAPI server, WebSocket connection, etc.
|
|
126
|
-
pass
|
|
127
|
-
|
|
128
|
-
def _stop_listener(self) -> None:
|
|
129
|
-
"""Stop your platform listener."""
|
|
130
|
-
pass
|
|
131
|
-
|
|
132
|
-
async def _translate_external_input(self, external_event: Any) -> Tuple[str, List[ContentPart], Dict[str, Any]]:
|
|
133
|
-
"""Convert external event to A2A format."""
|
|
134
|
-
# Example translation
|
|
135
|
-
target_agent = "my-agent"
|
|
136
|
-
message_text = getattr(external_event, 'message', 'Hello')
|
|
137
|
-
a2a_parts = [TextPart(text=message_text)]
|
|
138
|
-
context = {
|
|
139
|
-
"platform": "my_platform",
|
|
140
|
-
"user_id_for_artifacts": "user123",
|
|
141
|
-
"a2a_session_id": "session456"
|
|
142
|
-
}
|
|
143
|
-
return target_agent, a2a_parts, context
|
|
144
|
-
|
|
145
|
-
async def _send_update_to_external(self, external_request_context: Dict[str, Any],
|
|
146
|
-
event_data: Union[TaskStatusUpdateEvent, TaskArtifactUpdateEvent],
|
|
147
|
-
is_final_chunk_of_update: bool) -> None:
|
|
148
|
-
"""Send streaming update back to external platform."""
|
|
149
|
-
# Extract text from event and send to your platform
|
|
150
|
-
pass
|
|
151
|
-
|
|
152
|
-
async def _send_final_response_to_external(self, external_request_context: Dict[str, Any],
|
|
153
|
-
task_data: Task) -> None:
|
|
154
|
-
"""Send final response back to external platform."""
|
|
155
|
-
# Extract final result and send to your platform
|
|
156
|
-
pass
|
|
157
|
-
|
|
158
|
-
async def _send_error_to_external(self, external_request_context: Dict[str, Any],
|
|
159
|
-
error_data: JSONRPCError) -> None:
|
|
160
|
-
"""Send error back to external platform."""
|
|
161
|
-
# Send error message to your platform
|
|
162
|
-
pass
|
|
163
|
-
|
|
164
|
-
# Usage in your handler:
|
|
165
|
-
async def handle_external_request(request):
|
|
166
|
-
# Authenticate user
|
|
167
|
-
user_identity = await component.authenticate_and_enrich_user(request)
|
|
168
|
-
if not user_identity:
|
|
169
|
-
return "Authentication failed"
|
|
170
|
-
|
|
171
|
-
# Translate request
|
|
172
|
-
target_agent, a2a_parts, context = await component._translate_external_input(request)
|
|
173
|
-
|
|
174
|
-
# Submit to A2A system
|
|
175
|
-
task_id = await component.submit_a2a_task(
|
|
176
|
-
target_agent_name=target_agent,
|
|
177
|
-
a2a_parts=a2a_parts,
|
|
178
|
-
external_request_context=context,
|
|
179
|
-
user_identity=user_identity,
|
|
180
|
-
is_streaming=True
|
|
181
|
-
)
|
|
182
|
-
|
|
183
|
-
return f"Task submitted: {task_id}"
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
---
|
|
187
|
-
|
|
188
|
-
### task_context.py
|
|
189
|
-
**Purpose:** Provides thread-safe storage for mapping A2A task IDs to their original external request context
|
|
190
|
-
**Import:** `from solace_agent_mesh.gateway.base.task_context import TaskContextManager`
|
|
191
|
-
|
|
192
|
-
**Classes:**
|
|
193
|
-
- `TaskContextManager()` - Thread-safe context storage manager
|
|
194
|
-
- `store_context(self, task_id: str, context_data: Dict[str, Any]) -> None` - Store context for a task ID
|
|
195
|
-
- `get_context(self, task_id: str) -> Optional[Dict[str, Any]]` - Retrieve context for a task ID
|
|
196
|
-
- `remove_context(self, task_id: str) -> Optional[Dict[str, Any]]` - Remove and return context for a task ID
|
|
197
|
-
- `clear_all_contexts_for_testing(self) -> None` - Clear all contexts (testing only)
|
|
198
|
-
|
|
199
|
-
**Usage Examples:**
|
|
200
|
-
```python
|
|
201
|
-
from solace_agent_mesh.gateway.base.task_context import TaskContextManager
|
|
202
|
-
|
|
203
|
-
# Initialize manager
|
|
204
|
-
context_manager = TaskContextManager()
|
|
205
|
-
|
|
206
|
-
# Store context when submitting task
|
|
207
|
-
task_id = "gdk-task-abc123"
|
|
208
|
-
context = {
|
|
209
|
-
"platform": "slack",
|
|
210
|
-
"channel_id": "C1234567890",
|
|
211
|
-
"thread_ts": "1234567890.123456",
|
|
212
|
-
"user_identity": {"id": "user123", "name": "John Doe"}
|
|
213
|
-
}
|
|
214
|
-
context_manager.store_context(task_id, context)
|
|
215
|
-
|
|
216
|
-
# Retrieve context when processing response
|
|
217
|
-
retrieved_context = context_manager.get_context(task_id)
|
|
218
|
-
if retrieved_context:
|
|
219
|
-
channel_id = retrieved_context["channel_id"]
|
|
220
|
-
# Send response back to Slack channel
|
|
221
|
-
|
|
222
|
-
# Clean up when task is complete
|
|
223
|
-
context_manager.remove_context(task_id)
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
# content_hash: 74574cc0c8234142d9ecddd116cc306b5420f938289ab4eab77feaa225adae7a
|
|
@@ -1,235 +0,0 @@
|
|
|
1
|
-
# LLM Summary Detail File
|
|
2
|
-
|
|
3
|
-
This file is a concatenation of all individual *llm.txt files found in the 'base' directory tree. Each section below corresponds to a specific directory's summary file.
|
|
4
|
-
|
|
5
|
-
================================================================================
|
|
6
|
-
|
|
7
|
-
## Section 1: solace_agent_mesh/gateway/base/base_llm.txt
|
|
8
|
-
|
|
9
|
-
**Source file:** `solace_agent_mesh/gateway/base/base_llm.txt`
|
|
10
|
-
|
|
11
|
-
# DEVELOPER GUIDE: base
|
|
12
|
-
|
|
13
|
-
## Quick Summary
|
|
14
|
-
The `base` directory provides foundational abstract classes for building Gateway implementations within the Solace AI Connector. It establishes a framework for handling common gateway tasks such as application configuration, Solace broker integration, A2A (Agent-to-Agent) message protocol handling, and managing the lifecycle of requests from external platforms. Developers should subclass `BaseGatewayApp` and `BaseGatewayComponent` to create new gateways.
|
|
15
|
-
|
|
16
|
-
## Files Overview
|
|
17
|
-
- `__init__.py` - Marks the directory as a Python package
|
|
18
|
-
- `app.py` - Contains the base application class that handles configuration, schema merging, and broker setup
|
|
19
|
-
- `component.py` - Contains the core logic class for processing A2A messages and integrating with external platforms
|
|
20
|
-
- `task_context.py` - Provides a thread-safe manager for mapping A2A task IDs to their original request context
|
|
21
|
-
|
|
22
|
-
## Developer API Reference
|
|
23
|
-
|
|
24
|
-
### __init__.py
|
|
25
|
-
**Purpose:** Initializes the `gateway.base` Python package
|
|
26
|
-
**Import:** `from solace_agent_mesh.gateway.base import ...`
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
### app.py
|
|
31
|
-
**Purpose:** Provides the base application class for gateway implementations with automated configuration schema merging, Solace broker setup, and component instantiation
|
|
32
|
-
**Import:** `from solace_agent_mesh.gateway.base.app import BaseGatewayApp, BaseGatewayComponent`
|
|
33
|
-
|
|
34
|
-
**Classes:**
|
|
35
|
-
- `BaseGatewayComponent(ComponentBase)` - Base marker class for gateway components
|
|
36
|
-
- `BaseGatewayApp(app_info: Dict[str, Any], **kwargs)` - Main application class to be subclassed for new gateways
|
|
37
|
-
- `_get_gateway_component_class(self) -> Type[BaseGatewayComponent]` - **[Abstract Method]** Must return the specific gateway component class
|
|
38
|
-
- `namespace: str` - Absolute topic prefix for A2A communication (e.g., 'myorg/dev')
|
|
39
|
-
- `gateway_id: str` - Unique ID for this gateway instance (auto-generated if not provided)
|
|
40
|
-
- `artifact_service_config: Dict` - Configuration for the shared ADK Artifact Service
|
|
41
|
-
- `enable_embed_resolution: bool` - Flag to enable/disable late-stage 'artifact_content' embed resolution
|
|
42
|
-
- `gateway_max_artifact_resolve_size_bytes: int` - Maximum size for resolving artifacts (default: 104857600)
|
|
43
|
-
- `gateway_recursive_embed_depth: int` - Maximum depth for recursive embed resolution (default: 12)
|
|
44
|
-
|
|
45
|
-
**Constants/Variables:**
|
|
46
|
-
- `BASE_GATEWAY_APP_SCHEMA: Dict[str, List[Dict[str, Any]]]` - Base configuration schema automatically merged with subclass parameters
|
|
47
|
-
- `SPECIFIC_APP_SCHEMA_PARAMS_ATTRIBUTE_NAME: str` - Class attribute name ("SPECIFIC_APP_SCHEMA_PARAMS") for subclass-specific config parameters
|
|
48
|
-
|
|
49
|
-
**Usage Examples:**
|
|
50
|
-
```python
|
|
51
|
-
from typing import Type, List, Dict, Any
|
|
52
|
-
from solace_agent_mesh.gateway.base.app import BaseGatewayApp
|
|
53
|
-
from .component import MyGatewayComponent
|
|
54
|
-
|
|
55
|
-
class MyGatewayApp(BaseGatewayApp):
|
|
56
|
-
"""Custom gateway application for My Platform."""
|
|
57
|
-
|
|
58
|
-
# Define additional configuration parameters
|
|
59
|
-
SPECIFIC_APP_SCHEMA_PARAMS: List[Dict[str, Any]] = [
|
|
60
|
-
{
|
|
61
|
-
"name": "my_platform_api_key",
|
|
62
|
-
"required": True,
|
|
63
|
-
"type": "string",
|
|
64
|
-
"description": "API key for connecting to My Platform."
|
|
65
|
-
}
|
|
66
|
-
]
|
|
67
|
-
|
|
68
|
-
def _get_gateway_component_class(self) -> Type[MyGatewayComponent]:
|
|
69
|
-
return MyGatewayComponent
|
|
70
|
-
|
|
71
|
-
# Usage in YAML config:
|
|
72
|
-
# app_config:
|
|
73
|
-
# namespace: "myorg/prod"
|
|
74
|
-
# gateway_id: "my-gateway-instance-01"
|
|
75
|
-
# artifact_service:
|
|
76
|
-
# type: "local_file"
|
|
77
|
-
# base_path: "/data/artifacts"
|
|
78
|
-
# my_platform_api_key: "secret-key-here"
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
---
|
|
82
|
-
|
|
83
|
-
### component.py
|
|
84
|
-
**Purpose:** Provides the abstract base class for gateway components containing core A2A protocol logic, service management, and external platform integration interface
|
|
85
|
-
**Import:** `from solace_agent_mesh.gateway.base.component import BaseGatewayComponent`
|
|
86
|
-
|
|
87
|
-
**Classes:**
|
|
88
|
-
- `BaseGatewayComponent(**kwargs: Any)` - Abstract base class for gateway components
|
|
89
|
-
- **Public Methods:**
|
|
90
|
-
- `get_config(self, key: str, default: Any = None) -> Any` - Retrieves configuration from nested app_config or component_config
|
|
91
|
-
- `publish_a2a_message(self, topic: str, payload: Dict, user_properties: Optional[Dict] = None) -> None` - Publishes A2A messages to Solace broker
|
|
92
|
-
- `authenticate_and_enrich_user(self, external_event_data: Any) -> Optional[Dict[str, Any]]` - Orchestrates user authentication and identity enrichment
|
|
93
|
-
- `submit_a2a_task(self, target_agent_name: str, a2a_parts: List[ContentPart], external_request_context: Dict[str, Any], user_identity: Any, is_streaming: bool = True, api_version: str = "v2") -> str` - Submits task to target agent, returns task_id
|
|
94
|
-
- `run(self) -> None` - Starts component's async operations and external platform listener
|
|
95
|
-
- `cleanup(self) -> None` - Cleans up resources and stops background threads
|
|
96
|
-
- **Abstract Methods (Must be Implemented):**
|
|
97
|
-
- `_extract_initial_claims(self, external_event_data: Any) -> Optional[Dict[str, Any]]` - Extract identity claims from platform event (must return dict with 'id' key)
|
|
98
|
-
- `_start_listener(self) -> None` - Start external platform listener (e.g., web server, WebSocket)
|
|
99
|
-
- `_stop_listener(self) -> None` - Stop external platform listener
|
|
100
|
-
- `_translate_external_input(self, external_event: Any) -> Tuple[str, List[ContentPart], Dict[str, Any]]` - Convert external event to A2A format: (target_agent_name, a2a_parts, context)
|
|
101
|
-
- `_send_update_to_external(self, external_request_context: Dict[str, Any], event_data: Union[TaskStatusUpdateEvent, TaskArtifactUpdateEvent], is_final_chunk_of_update: bool) -> None` - Send streaming update to external platform
|
|
102
|
-
- `_send_final_response_to_external(self, external_request_context: Dict[str, Any], task_data: Task) -> None` - Send final response to external platform
|
|
103
|
-
- `_send_error_to_external(self, external_request_context: Dict[str, Any], error_data: JSONRPCError) -> None` - Send error to external platform
|
|
104
|
-
- **Properties:**
|
|
105
|
-
- `namespace: str` - A2A communication namespace
|
|
106
|
-
- `gateway_id: str` - Unique gateway instance ID
|
|
107
|
-
- `agent_registry: AgentRegistry` - Registry for discovered agents
|
|
108
|
-
- `core_a2a_service: CoreA2AService` - Core A2A protocol service
|
|
109
|
-
- `shared_artifact_service: Optional[BaseArtifactService]` - Artifact service instance
|
|
110
|
-
- `task_context_manager: TaskContextManager` - Thread-safe task context storage
|
|
111
|
-
- `identity_service: Optional[BaseIdentityService]` - Identity enrichment service
|
|
112
|
-
|
|
113
|
-
**Usage Examples:**
|
|
114
|
-
```python
|
|
115
|
-
from typing import Any, Dict, List, Optional, Tuple, Union
|
|
116
|
-
from solace_agent_mesh.gateway.base.component import BaseGatewayComponent
|
|
117
|
-
from solace_agent_mesh.common.a2a.types import ContentPart
|
|
118
|
-
from a2a.types import TextPart, Task, TaskStatusUpdateEvent, TaskArtifactUpdateEvent, JSONRPCError
|
|
119
|
-
|
|
120
|
-
class MyGatewayComponent(BaseGatewayComponent):
|
|
121
|
-
|
|
122
|
-
async def _extract_initial_claims(self, external_event_data: Any) -> Optional[Dict[str, Any]]:
|
|
123
|
-
"""Extract user identity from platform-specific event."""
|
|
124
|
-
# Example for HTTP request
|
|
125
|
-
if hasattr(external_event_data, 'headers'):
|
|
126
|
-
user_id = external_event_data.headers.get('X-User-ID')
|
|
127
|
-
if user_id:
|
|
128
|
-
return {"id": user_id, "source": "http_header"}
|
|
129
|
-
return None
|
|
130
|
-
|
|
131
|
-
def _start_listener(self) -> None:
|
|
132
|
-
"""Start your platform listener (web server, etc.)."""
|
|
133
|
-
# Example: Start FastAPI server, WebSocket connection, etc.
|
|
134
|
-
pass
|
|
135
|
-
|
|
136
|
-
def _stop_listener(self) -> None:
|
|
137
|
-
"""Stop your platform listener."""
|
|
138
|
-
pass
|
|
139
|
-
|
|
140
|
-
async def _translate_external_input(self, external_event: Any) -> Tuple[str, List[ContentPart], Dict[str, Any]]:
|
|
141
|
-
"""Convert external event to A2A format."""
|
|
142
|
-
# Example translation
|
|
143
|
-
target_agent = "my-agent"
|
|
144
|
-
message_text = getattr(external_event, 'message', 'Hello')
|
|
145
|
-
a2a_parts = [TextPart(text=message_text)]
|
|
146
|
-
context = {
|
|
147
|
-
"platform": "my_platform",
|
|
148
|
-
"user_id_for_artifacts": "user123",
|
|
149
|
-
"a2a_session_id": "session456"
|
|
150
|
-
}
|
|
151
|
-
return target_agent, a2a_parts, context
|
|
152
|
-
|
|
153
|
-
async def _send_update_to_external(self, external_request_context: Dict[str, Any],
|
|
154
|
-
event_data: Union[TaskStatusUpdateEvent, TaskArtifactUpdateEvent],
|
|
155
|
-
is_final_chunk_of_update: bool) -> None:
|
|
156
|
-
"""Send streaming update back to external platform."""
|
|
157
|
-
# Extract text from event and send to your platform
|
|
158
|
-
pass
|
|
159
|
-
|
|
160
|
-
async def _send_final_response_to_external(self, external_request_context: Dict[str, Any],
|
|
161
|
-
task_data: Task) -> None:
|
|
162
|
-
"""Send final response back to external platform."""
|
|
163
|
-
# Extract final result and send to your platform
|
|
164
|
-
pass
|
|
165
|
-
|
|
166
|
-
async def _send_error_to_external(self, external_request_context: Dict[str, Any],
|
|
167
|
-
error_data: JSONRPCError) -> None:
|
|
168
|
-
"""Send error back to external platform."""
|
|
169
|
-
# Send error message to your platform
|
|
170
|
-
pass
|
|
171
|
-
|
|
172
|
-
# Usage in your handler:
|
|
173
|
-
async def handle_external_request(request):
|
|
174
|
-
# Authenticate user
|
|
175
|
-
user_identity = await component.authenticate_and_enrich_user(request)
|
|
176
|
-
if not user_identity:
|
|
177
|
-
return "Authentication failed"
|
|
178
|
-
|
|
179
|
-
# Translate request
|
|
180
|
-
target_agent, a2a_parts, context = await component._translate_external_input(request)
|
|
181
|
-
|
|
182
|
-
# Submit to A2A system
|
|
183
|
-
task_id = await component.submit_a2a_task(
|
|
184
|
-
target_agent_name=target_agent,
|
|
185
|
-
a2a_parts=a2a_parts,
|
|
186
|
-
external_request_context=context,
|
|
187
|
-
user_identity=user_identity,
|
|
188
|
-
is_streaming=True
|
|
189
|
-
)
|
|
190
|
-
|
|
191
|
-
return f"Task submitted: {task_id}"
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
---
|
|
195
|
-
|
|
196
|
-
### task_context.py
|
|
197
|
-
**Purpose:** Provides thread-safe storage for mapping A2A task IDs to their original external request context
|
|
198
|
-
**Import:** `from solace_agent_mesh.gateway.base.task_context import TaskContextManager`
|
|
199
|
-
|
|
200
|
-
**Classes:**
|
|
201
|
-
- `TaskContextManager()` - Thread-safe context storage manager
|
|
202
|
-
- `store_context(self, task_id: str, context_data: Dict[str, Any]) -> None` - Store context for a task ID
|
|
203
|
-
- `get_context(self, task_id: str) -> Optional[Dict[str, Any]]` - Retrieve context for a task ID
|
|
204
|
-
- `remove_context(self, task_id: str) -> Optional[Dict[str, Any]]` - Remove and return context for a task ID
|
|
205
|
-
- `clear_all_contexts_for_testing(self) -> None` - Clear all contexts (testing only)
|
|
206
|
-
|
|
207
|
-
**Usage Examples:**
|
|
208
|
-
```python
|
|
209
|
-
from solace_agent_mesh.gateway.base.task_context import TaskContextManager
|
|
210
|
-
|
|
211
|
-
# Initialize manager
|
|
212
|
-
context_manager = TaskContextManager()
|
|
213
|
-
|
|
214
|
-
# Store context when submitting task
|
|
215
|
-
task_id = "gdk-task-abc123"
|
|
216
|
-
context = {
|
|
217
|
-
"platform": "slack",
|
|
218
|
-
"channel_id": "C1234567890",
|
|
219
|
-
"thread_ts": "1234567890.123456",
|
|
220
|
-
"user_identity": {"id": "user123", "name": "John Doe"}
|
|
221
|
-
}
|
|
222
|
-
context_manager.store_context(task_id, context)
|
|
223
|
-
|
|
224
|
-
# Retrieve context when processing response
|
|
225
|
-
retrieved_context = context_manager.get_context(task_id)
|
|
226
|
-
if retrieved_context:
|
|
227
|
-
channel_id = retrieved_context["channel_id"]
|
|
228
|
-
# Send response back to Slack channel
|
|
229
|
-
|
|
230
|
-
# Clean up when task is complete
|
|
231
|
-
context_manager.remove_context(task_id)
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
================================================================================
|
|
235
|
-
|