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
|
@@ -7,7 +7,7 @@ Provides database sessions, component instance access, and user authentication.
|
|
|
7
7
|
import logging
|
|
8
8
|
from typing import TYPE_CHECKING, Generator
|
|
9
9
|
|
|
10
|
-
from fastapi import HTTPException,
|
|
10
|
+
from fastapi import HTTPException, status
|
|
11
11
|
from sqlalchemy import create_engine, event, pool
|
|
12
12
|
from sqlalchemy.engine.url import make_url
|
|
13
13
|
from sqlalchemy.orm import Session, sessionmaker
|
|
@@ -124,24 +124,31 @@ def get_platform_db() -> Generator[Session, None, None]:
|
|
|
124
124
|
db.close()
|
|
125
125
|
|
|
126
126
|
|
|
127
|
-
def
|
|
127
|
+
def get_heartbeat_tracker():
|
|
128
128
|
"""
|
|
129
|
-
|
|
129
|
+
Get the heartbeat tracker from platform component.
|
|
130
130
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
Args:
|
|
134
|
-
request: FastAPI Request object.
|
|
131
|
+
Used by deployer status endpoint to check if deployer is online.
|
|
135
132
|
|
|
136
133
|
Returns:
|
|
137
|
-
|
|
134
|
+
HeartbeatTracker instance if initialized, None otherwise.
|
|
135
|
+
"""
|
|
136
|
+
if platform_component_instance is None:
|
|
137
|
+
log.warning("Platform component not initialized - heartbeat tracker unavailable")
|
|
138
|
+
return None
|
|
139
|
+
return platform_component_instance.get_heartbeat_tracker()
|
|
138
140
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
+
|
|
142
|
+
def get_agent_registry():
|
|
141
143
|
"""
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
144
|
+
Get the agent registry from platform component.
|
|
145
|
+
|
|
146
|
+
Used for deployment status monitoring.
|
|
147
|
+
|
|
148
|
+
Returns:
|
|
149
|
+
AgentRegistry instance if initialized, None otherwise.
|
|
150
|
+
"""
|
|
151
|
+
if platform_component_instance is None:
|
|
152
|
+
log.warning("Platform component not initialized - agent registry unavailable")
|
|
153
|
+
return None
|
|
154
|
+
return platform_component_instance.get_agent_registry()
|
|
@@ -100,7 +100,7 @@ def _run_enterprise_migrations(database_url: str) -> None:
|
|
|
100
100
|
database_url: Database connection string.
|
|
101
101
|
"""
|
|
102
102
|
try:
|
|
103
|
-
from solace_agent_mesh_enterprise.
|
|
103
|
+
from solace_agent_mesh_enterprise.platform_service.migration_runner import run_migrations
|
|
104
104
|
|
|
105
105
|
log.info("Starting enterprise platform migrations...")
|
|
106
106
|
run_migrations(database_url)
|
|
@@ -166,15 +166,6 @@ def setup_dependencies(component: "PlatformServiceComponent", database_url: str)
|
|
|
166
166
|
|
|
167
167
|
dependencies.set_component_instance(component)
|
|
168
168
|
|
|
169
|
-
# ALSO set gateway dependencies to allow webui_backend routers to work
|
|
170
|
-
# webui_backend routers use ValidatedUserConfig which expects sac_component_instance
|
|
171
|
-
try:
|
|
172
|
-
from solace_agent_mesh.gateway.http_sse import dependencies as gateway_deps
|
|
173
|
-
gateway_deps.sac_component_instance = component
|
|
174
|
-
log.info("Gateway dependencies configured to use platform component")
|
|
175
|
-
except ImportError:
|
|
176
|
-
log.debug("Gateway module not available - skipping gateway dependency setup")
|
|
177
|
-
|
|
178
169
|
# Initialize database and run migrations
|
|
179
170
|
if database_url:
|
|
180
171
|
_setup_database(database_url)
|
|
@@ -192,18 +183,102 @@ def setup_dependencies(component: "PlatformServiceComponent", database_url: str)
|
|
|
192
183
|
log.info("Platform Service dependencies initialized successfully")
|
|
193
184
|
|
|
194
185
|
|
|
186
|
+
async def _start_enterprise_platform_tasks(component: "PlatformServiceComponent") -> None:
|
|
187
|
+
"""
|
|
188
|
+
Start enterprise platform background tasks if enterprise package is available.
|
|
189
|
+
|
|
190
|
+
This follows the exact same pattern as WebUI Gateway:
|
|
191
|
+
- Community calls enterprise function
|
|
192
|
+
- Enterprise owns all background task logic
|
|
193
|
+
- Graceful degradation if enterprise not available
|
|
194
|
+
|
|
195
|
+
Background tasks (enterprise-only):
|
|
196
|
+
- Heartbeat listener (deployer monitoring)
|
|
197
|
+
- Deployment status checker (agent deployment monitoring)
|
|
198
|
+
- Agent registry (tracks deployed agents)
|
|
199
|
+
|
|
200
|
+
Args:
|
|
201
|
+
component: PlatformServiceComponent instance
|
|
202
|
+
"""
|
|
203
|
+
try:
|
|
204
|
+
from solace_agent_mesh_enterprise.init_enterprise import (
|
|
205
|
+
start_platform_background_tasks,
|
|
206
|
+
)
|
|
207
|
+
|
|
208
|
+
log.info("Starting enterprise platform background tasks...")
|
|
209
|
+
await start_platform_background_tasks(component)
|
|
210
|
+
log.info("Enterprise platform background tasks started successfully")
|
|
211
|
+
|
|
212
|
+
except ImportError:
|
|
213
|
+
log.info(
|
|
214
|
+
"Enterprise package not available - platform background tasks will not start. "
|
|
215
|
+
"Platform Service will run without deployment monitoring and deployer heartbeat tracking."
|
|
216
|
+
)
|
|
217
|
+
except RuntimeError as enterprise_err:
|
|
218
|
+
log.warning(
|
|
219
|
+
"Enterprise platform tasks disabled: %s - Platform Service will continue without deployment monitoring",
|
|
220
|
+
enterprise_err,
|
|
221
|
+
)
|
|
222
|
+
except Exception as enterprise_err:
|
|
223
|
+
log.error(
|
|
224
|
+
"Failed to start enterprise platform tasks: %s - Platform Service will continue",
|
|
225
|
+
enterprise_err,
|
|
226
|
+
exc_info=True,
|
|
227
|
+
)
|
|
228
|
+
|
|
229
|
+
|
|
195
230
|
def _setup_middleware(component: "PlatformServiceComponent"):
|
|
196
231
|
"""
|
|
197
232
|
Add middleware to the FastAPI application.
|
|
198
233
|
|
|
199
234
|
1. CORS middleware - allows cross-origin requests
|
|
200
|
-
2. OAuth2 middleware - authentication (
|
|
235
|
+
2. OAuth2 middleware - authentication (real token validation)
|
|
201
236
|
|
|
202
237
|
Args:
|
|
203
238
|
component: PlatformServiceComponent instance for configuration access.
|
|
204
239
|
"""
|
|
205
|
-
# CORS middleware
|
|
206
|
-
|
|
240
|
+
# CORS middleware - automatically trust configured UI origins
|
|
241
|
+
configured_origins = component.get_cors_origins().copy()
|
|
242
|
+
|
|
243
|
+
# Automatically add frontend and platform service URLs as trusted origins
|
|
244
|
+
# These are admin-controlled values that should always be trusted
|
|
245
|
+
frontend_url = os.getenv("FRONTEND_SERVER_URL", "").strip()
|
|
246
|
+
platform_url = os.getenv("PLATFORM_SERVICE_URL", "").strip()
|
|
247
|
+
|
|
248
|
+
# Auto-construct frontend URL if not provided
|
|
249
|
+
if not frontend_url:
|
|
250
|
+
# Read WebUI Gateway configuration from environment variables
|
|
251
|
+
fastapi_host = os.getenv("FASTAPI_HOST", "127.0.0.1").strip()
|
|
252
|
+
fastapi_port = os.getenv("FASTAPI_PORT", "8000").strip()
|
|
253
|
+
ssl_keyfile = os.getenv("SSL_KEYFILE", "").strip()
|
|
254
|
+
ssl_certfile = os.getenv("SSL_CERTFILE", "").strip()
|
|
255
|
+
|
|
256
|
+
# Determine protocol and port based on SSL configuration
|
|
257
|
+
if ssl_keyfile and ssl_certfile:
|
|
258
|
+
protocol = "https"
|
|
259
|
+
port = os.getenv("FASTAPI_HTTPS_PORT", "8443").strip()
|
|
260
|
+
else:
|
|
261
|
+
protocol = "http"
|
|
262
|
+
port = fastapi_port
|
|
263
|
+
|
|
264
|
+
# Use 'localhost' if host is 127.0.0.1 for better compatibility
|
|
265
|
+
host = "localhost" if fastapi_host == "127.0.0.1" else fastapi_host
|
|
266
|
+
frontend_url = f"{protocol}://{host}:{port}"
|
|
267
|
+
|
|
268
|
+
log.info(
|
|
269
|
+
"FRONTEND_SERVER_URL not configured, auto-constructed from WebUI Gateway settings: %s",
|
|
270
|
+
frontend_url
|
|
271
|
+
)
|
|
272
|
+
|
|
273
|
+
auto_trusted_origins = []
|
|
274
|
+
if frontend_url:
|
|
275
|
+
auto_trusted_origins.append(frontend_url)
|
|
276
|
+
if platform_url:
|
|
277
|
+
auto_trusted_origins.append(platform_url)
|
|
278
|
+
|
|
279
|
+
# Combine and deduplicate
|
|
280
|
+
allowed_origins = list(set(auto_trusted_origins + configured_origins))
|
|
281
|
+
|
|
207
282
|
app.add_middleware(
|
|
208
283
|
CORSMiddleware,
|
|
209
284
|
allow_origins=allowed_origins,
|
|
@@ -212,53 +287,61 @@ def _setup_middleware(component: "PlatformServiceComponent"):
|
|
|
212
287
|
allow_headers=["*"],
|
|
213
288
|
)
|
|
214
289
|
log.info(f"CORS middleware added with origins: {allowed_origins}")
|
|
290
|
+
if auto_trusted_origins:
|
|
291
|
+
log.info(f" Auto-added trusted origins: {auto_trusted_origins}")
|
|
215
292
|
|
|
216
|
-
# OAuth2 middleware
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
# app.middleware("http")(oauth2_stub_middleware)
|
|
228
|
-
# log.info("OAuth2 stub middleware added (development mode - no enterprise package)")
|
|
293
|
+
# OAuth2 authentication middleware
|
|
294
|
+
from solace_agent_mesh.shared.auth.middleware import create_oauth_middleware
|
|
295
|
+
|
|
296
|
+
oauth_middleware_class = create_oauth_middleware(component)
|
|
297
|
+
app.add_middleware(oauth_middleware_class, component=component)
|
|
298
|
+
|
|
299
|
+
use_auth = component.get_config("frontend_use_authorization", False)
|
|
300
|
+
if use_auth:
|
|
301
|
+
log.info("OAuth2 middleware added (real token validation enabled)")
|
|
302
|
+
else:
|
|
303
|
+
log.info("OAuth2 middleware added (development mode - frontend_use_authorization=false)")
|
|
229
304
|
|
|
230
305
|
|
|
231
306
|
def _setup_routers():
|
|
232
307
|
"""
|
|
233
308
|
Mount community and enterprise routers to the FastAPI application.
|
|
234
309
|
|
|
235
|
-
|
|
310
|
+
All platform service routers (both community and enterprise) are mounted
|
|
311
|
+
under the PLATFORM_SERVICE_PREFIX. This ensures a consistent API structure
|
|
312
|
+
where /api/v1/platform/* contains all platform management endpoints.
|
|
313
|
+
|
|
314
|
+
Community routers: Loaded from .routers
|
|
236
315
|
Enterprise routers: Dynamically loaded from enterprise package if available
|
|
237
316
|
"""
|
|
238
|
-
#
|
|
317
|
+
# Define the platform service API prefix
|
|
318
|
+
# This is the single source of truth for all platform service endpoints
|
|
319
|
+
PLATFORM_SERVICE_PREFIX = "/api/v1/platform"
|
|
320
|
+
|
|
321
|
+
# Load community platform routers
|
|
239
322
|
from .routers import get_community_platform_routers
|
|
240
323
|
|
|
241
324
|
community_routers = get_community_platform_routers()
|
|
242
325
|
for router_config in community_routers:
|
|
243
326
|
app.include_router(
|
|
244
327
|
router_config["router"],
|
|
245
|
-
prefix=
|
|
328
|
+
prefix=PLATFORM_SERVICE_PREFIX,
|
|
246
329
|
tags=router_config["tags"],
|
|
247
330
|
)
|
|
248
331
|
log.info(f"Mounted {len(community_routers)} community platform routers")
|
|
249
332
|
|
|
250
333
|
# Try to load enterprise platform routers
|
|
251
334
|
try:
|
|
252
|
-
from solace_agent_mesh_enterprise.
|
|
335
|
+
from solace_agent_mesh_enterprise.platform_service.routers import get_enterprise_routers
|
|
253
336
|
|
|
254
337
|
enterprise_routers = get_enterprise_routers()
|
|
255
338
|
for router_config in enterprise_routers:
|
|
256
339
|
app.include_router(
|
|
257
340
|
router_config["router"],
|
|
258
|
-
prefix=
|
|
341
|
+
prefix=PLATFORM_SERVICE_PREFIX,
|
|
259
342
|
tags=router_config["tags"],
|
|
260
343
|
)
|
|
261
|
-
log.info(f"Mounted {len(enterprise_routers)} enterprise platform routers")
|
|
344
|
+
log.info(f"Mounted {len(enterprise_routers)} enterprise platform routers under {PLATFORM_SERVICE_PREFIX}")
|
|
262
345
|
|
|
263
346
|
except ImportError:
|
|
264
347
|
log.info(
|
|
@@ -267,14 +350,6 @@ def _setup_routers():
|
|
|
267
350
|
except Exception as e:
|
|
268
351
|
log.warning(f"Failed to load enterprise platform routers: {e}")
|
|
269
352
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
"""
|
|
274
|
-
Platform Service health check endpoint.
|
|
275
|
-
|
|
276
|
-
Returns:
|
|
277
|
-
Dictionary with status and service name.
|
|
278
|
-
"""
|
|
279
|
-
log.debug("Health check endpoint '/health' called")
|
|
280
|
-
return {"status": "healthy", "service": "Platform Service"}
|
|
353
|
+
from solace_agent_mesh.shared.exceptions.exception_handlers import register_exception_handlers
|
|
354
|
+
register_exception_handlers(app)
|
|
355
|
+
log.info("Registered shared exception handlers")
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Community platform routers for Platform Service.
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
Provides foundational platform service endpoints available to all deployments.
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
7
|
|
|
@@ -9,16 +9,25 @@ def get_community_platform_routers() -> list:
|
|
|
9
9
|
"""
|
|
10
10
|
Return list of community platform routers.
|
|
11
11
|
|
|
12
|
+
Format:
|
|
12
13
|
[
|
|
13
14
|
{
|
|
14
15
|
"router": router_instance,
|
|
15
|
-
"prefix": "/api/v1/platform",
|
|
16
16
|
"tags": ["Platform"]
|
|
17
17
|
},
|
|
18
18
|
...
|
|
19
19
|
]
|
|
20
20
|
|
|
21
|
+
Note: The prefix "/api/v1/platform" is applied by main.py when mounting these routers.
|
|
22
|
+
|
|
21
23
|
Returns:
|
|
22
24
|
Community platform routers list.
|
|
23
25
|
"""
|
|
24
|
-
|
|
26
|
+
from .health_router import router as health_router
|
|
27
|
+
|
|
28
|
+
return [
|
|
29
|
+
{
|
|
30
|
+
"router": health_router,
|
|
31
|
+
"tags": ["Health"],
|
|
32
|
+
}
|
|
33
|
+
]
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Platform Service health check router.
|
|
3
|
+
|
|
4
|
+
Provides health status endpoint for monitoring and load balancer health checks.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import logging
|
|
8
|
+
from fastapi import APIRouter
|
|
9
|
+
|
|
10
|
+
log = logging.getLogger(__name__)
|
|
11
|
+
|
|
12
|
+
router = APIRouter()
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@router.get("/health", tags=["Health"])
|
|
16
|
+
async def health_check():
|
|
17
|
+
"""
|
|
18
|
+
Platform Service health check endpoint.
|
|
19
|
+
|
|
20
|
+
This endpoint is used by:
|
|
21
|
+
- Kubernetes liveness/readiness probes
|
|
22
|
+
- Load balancer health checks (ALB, NGINX)
|
|
23
|
+
- External monitoring systems
|
|
24
|
+
|
|
25
|
+
Returns:
|
|
26
|
+
dict: Health status with service name.
|
|
27
|
+
- status (str): "healthy" if service is operational
|
|
28
|
+
- service (str): Service identifier
|
|
29
|
+
"""
|
|
30
|
+
log.debug("Health check endpoint '/api/v1/platform/health' called")
|
|
31
|
+
return {"status": "healthy", "service": "Platform Service"}
|
|
@@ -9,6 +9,7 @@ from typing import Any, Dict, List
|
|
|
9
9
|
from solace_ai_connector.flow.app import App
|
|
10
10
|
|
|
11
11
|
from .component import PlatformServiceComponent
|
|
12
|
+
from ...common.a2a import get_discovery_topic
|
|
12
13
|
|
|
13
14
|
log = logging.getLogger(__name__)
|
|
14
15
|
|
|
@@ -53,6 +54,34 @@ class PlatformServiceApp(App):
|
|
|
53
54
|
"default": 8001,
|
|
54
55
|
"description": "Port for the embedded FastAPI server.",
|
|
55
56
|
},
|
|
57
|
+
{
|
|
58
|
+
"name": "fastapi_https_port",
|
|
59
|
+
"required": False,
|
|
60
|
+
"type": "integer",
|
|
61
|
+
"default": 8444,
|
|
62
|
+
"description": "Port for the embedded FastAPI server when SSL is enabled.",
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"name": "ssl_keyfile",
|
|
66
|
+
"required": False,
|
|
67
|
+
"type": "string",
|
|
68
|
+
"default": "",
|
|
69
|
+
"description": "The file path to the SSL private key.",
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"name": "ssl_certfile",
|
|
73
|
+
"required": False,
|
|
74
|
+
"type": "string",
|
|
75
|
+
"default": "",
|
|
76
|
+
"description": "The file path to the SSL certificate.",
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"name": "ssl_keyfile_password",
|
|
80
|
+
"required": False,
|
|
81
|
+
"type": "string",
|
|
82
|
+
"default": "",
|
|
83
|
+
"description": "The passphrase for the SSL private key.",
|
|
84
|
+
},
|
|
56
85
|
{
|
|
57
86
|
"name": "cors_allowed_origins",
|
|
58
87
|
"required": False,
|
|
@@ -70,28 +99,93 @@ class PlatformServiceApp(App):
|
|
|
70
99
|
"name": "external_auth_provider",
|
|
71
100
|
"required": False,
|
|
72
101
|
"type": "string",
|
|
73
|
-
"default": "
|
|
74
|
-
"description": "
|
|
102
|
+
"default": "",
|
|
103
|
+
"description": "The external authentication provider.",
|
|
75
104
|
},
|
|
76
105
|
{
|
|
77
|
-
"name": "
|
|
106
|
+
"name": "frontend_use_authorization",
|
|
78
107
|
"required": False,
|
|
79
108
|
"type": "boolean",
|
|
80
|
-
"default":
|
|
81
|
-
"description": "Enable OAuth2 token validation.
|
|
109
|
+
"default": False,
|
|
110
|
+
"description": "Enable OAuth2 token validation. When true, all API requests must include valid OAuth2 bearer tokens.",
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"name": "max_message_size_bytes",
|
|
114
|
+
"required": False,
|
|
115
|
+
"type": "integer",
|
|
116
|
+
"default": 10000000,
|
|
117
|
+
"description": "Maximum message size in bytes for A2A messages (default: 10MB).",
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"name": "deployment_timeout_minutes",
|
|
121
|
+
"required": False,
|
|
122
|
+
"type": "integer",
|
|
123
|
+
"default": 5,
|
|
124
|
+
"description": "Timeout for agent deployments (default: 5 minutes).",
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"name": "heartbeat_timeout_seconds",
|
|
128
|
+
"required": False,
|
|
129
|
+
"type": "integer",
|
|
130
|
+
"default": 90,
|
|
131
|
+
"description": "Deployer heartbeat timeout in seconds (default: 90 seconds).",
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"name": "deployment_check_interval_seconds",
|
|
135
|
+
"required": False,
|
|
136
|
+
"type": "integer",
|
|
137
|
+
"default": 60,
|
|
138
|
+
"description": "Interval for checking deployment status in seconds (default: 60 seconds).",
|
|
82
139
|
},
|
|
83
140
|
]
|
|
84
141
|
|
|
85
142
|
def __init__(self, app_info: Dict[str, Any], **kwargs):
|
|
86
143
|
"""
|
|
87
144
|
Initialize the PlatformServiceApp.
|
|
88
|
-
|
|
145
|
+
Programmatically creates the component and configures broker before calling parent App.__init__().
|
|
89
146
|
"""
|
|
90
147
|
log.debug(
|
|
91
148
|
"%s Initializing PlatformServiceApp...",
|
|
92
149
|
app_info.get("name", "PlatformServiceApp"),
|
|
93
150
|
)
|
|
94
|
-
|
|
151
|
+
|
|
152
|
+
modified_app_info = app_info.copy()
|
|
153
|
+
app_config = modified_app_info.get("app_config", {})
|
|
154
|
+
|
|
155
|
+
# Get namespace from config
|
|
156
|
+
namespace = app_config.get("namespace", "")
|
|
157
|
+
if not namespace:
|
|
158
|
+
raise ValueError("Namespace is required in app_config for PlatformServiceApp")
|
|
159
|
+
|
|
160
|
+
# Create subscriptions for agent discovery
|
|
161
|
+
subscriptions = [
|
|
162
|
+
{"topic": get_discovery_topic(namespace)},
|
|
163
|
+
]
|
|
164
|
+
|
|
165
|
+
# Create component definition with subscriptions
|
|
166
|
+
# (SAC framework looks for subscriptions in component definition for simplified apps)
|
|
167
|
+
component_definition = {
|
|
168
|
+
"name": f"{app_info.get('name', 'platform_service')}_component",
|
|
169
|
+
"component_class": PlatformServiceComponent,
|
|
170
|
+
"component_config": {"app_config": app_config},
|
|
171
|
+
"subscriptions": subscriptions,
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
modified_app_info["components"] = [component_definition]
|
|
175
|
+
|
|
176
|
+
# Configure broker connection
|
|
177
|
+
broker_config = modified_app_info.setdefault("broker", {})
|
|
178
|
+
broker_config["input_enabled"] = True
|
|
179
|
+
broker_config["output_enabled"] = True
|
|
180
|
+
|
|
181
|
+
log.info(
|
|
182
|
+
"Configured broker for Platform Service with namespace: %s and %d subscription(s): %s",
|
|
183
|
+
namespace,
|
|
184
|
+
len(subscriptions),
|
|
185
|
+
subscriptions
|
|
186
|
+
)
|
|
187
|
+
|
|
188
|
+
super().__init__(modified_app_info, **kwargs)
|
|
95
189
|
log.debug("%s PlatformServiceApp initialization complete.", self.name)
|
|
96
190
|
|
|
97
191
|
def get_component(self) -> PlatformServiceComponent | None:
|