solace-agent-mesh 1.7.1__py3-none-any.whl → 1.13.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of solace-agent-mesh might be problematic. Click here for more details.
- solace_agent_mesh/agent/adk/alembic/README +74 -0
- solace_agent_mesh/agent/adk/alembic/env.py +77 -0
- solace_agent_mesh/agent/adk/alembic/script.py.mako +28 -0
- solace_agent_mesh/agent/adk/alembic/versions/e2902798564d_adk_session_db_upgrade.py +52 -0
- solace_agent_mesh/agent/adk/alembic.ini +112 -0
- solace_agent_mesh/agent/adk/artifacts/filesystem_artifact_service.py +164 -0
- solace_agent_mesh/agent/adk/artifacts/s3_artifact_service.py +163 -0
- solace_agent_mesh/agent/adk/callbacks.py +752 -127
- solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +99 -7
- solace_agent_mesh/agent/adk/intelligent_mcp_callbacks.py +52 -5
- solace_agent_mesh/agent/adk/mcp_content_processor.py +1 -1
- solace_agent_mesh/agent/adk/models/lite_llm.py +34 -16
- solace_agent_mesh/agent/adk/models/oauth2_token_manager.py +24 -137
- solace_agent_mesh/agent/adk/runner.py +66 -8
- solace_agent_mesh/agent/adk/schema_migration.py +88 -0
- solace_agent_mesh/agent/adk/services.py +41 -1
- solace_agent_mesh/agent/adk/setup.py +220 -32
- solace_agent_mesh/agent/adk/stream_parser.py +229 -40
- solace_agent_mesh/agent/protocol/event_handlers.py +219 -33
- solace_agent_mesh/agent/proxies/a2a/component.py +572 -75
- solace_agent_mesh/agent/proxies/a2a/config.py +80 -4
- solace_agent_mesh/agent/proxies/base/component.py +188 -22
- solace_agent_mesh/agent/proxies/base/proxy_task_context.py +3 -1
- solace_agent_mesh/agent/sac/app.py +37 -12
- solace_agent_mesh/agent/sac/component.py +322 -52
- solace_agent_mesh/agent/sac/patch_adk.py +8 -16
- solace_agent_mesh/agent/sac/task_execution_context.py +90 -0
- solace_agent_mesh/agent/tools/__init__.py +3 -0
- solace_agent_mesh/agent/tools/audio_tools.py +3 -3
- solace_agent_mesh/agent/tools/builtin_artifact_tools.py +698 -24
- solace_agent_mesh/agent/tools/deep_research_tools.py +2161 -0
- solace_agent_mesh/agent/tools/peer_agent_tool.py +82 -15
- solace_agent_mesh/agent/tools/time_tools.py +126 -0
- solace_agent_mesh/agent/tools/tool_config_types.py +54 -2
- solace_agent_mesh/agent/tools/web_search_tools.py +279 -0
- solace_agent_mesh/agent/tools/web_tools.py +125 -17
- solace_agent_mesh/agent/utils/artifact_helpers.py +243 -5
- solace_agent_mesh/agent/utils/context_helpers.py +17 -0
- solace_agent_mesh/assets/docs/404.html +6 -6
- solace_agent_mesh/assets/docs/assets/css/{styles.906a1503.css → styles.8162edfb.css} +1 -1
- solace_agent_mesh/assets/docs/assets/js/05749d90.19ac4f35.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/15ba94aa.e186750d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/15e40e79.434bb30f.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/17896441.e612dfb4.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2279.550aa580.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/{17896441.a5e82f9b.js.LICENSE.txt → 2279.550aa580.js.LICENSE.txt} +6 -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.7f7ab1c1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3ff0015d.e53c9b78.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/41adc471.0e95b87c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4667dc50.bf2ad456.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/49eed117.493d6f99.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/{509e993c.4c7a1a6d.js → 509e993c.a1fbf45a.js} +1 -1
- solace_agent_mesh/assets/docs/assets/js/547e15cc.8e6da617.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/55b7b518.29d6e75d.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/60702c0e.a8bdd79b.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/6aaedf65.7253541d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6d84eae0.fd23ba4a.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.7ed65d45.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/82fbfb93.161823a5.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/924ffdeb.975e428a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/94e8668d.16083b3f.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/a94703ab.3e5fbcb3.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e563275.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/c93cbaa0.0e0d8baf.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/cab03b5b.6a073091.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/cbe2e9ea.07e170dd.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/e3d9abda.1476f570.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.cc97854c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/main.d634009f.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/runtime~main.27bb82a7.js +1 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +68 -68
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/artifact-management/index.html +50 -50
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/audio-tools/index.html +42 -42
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/data-analysis-tools/index.html +55 -55
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/embeds/index.html +75 -75
- 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 +67 -50
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/research-tools/index.html +136 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/cli/index.html +178 -144
- solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +43 -42
- solace_agent_mesh/assets/docs/docs/documentation/components/index.html +20 -18
- solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +23 -23
- 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 +45 -45
- solace_agent_mesh/assets/docs/docs/documentation/components/projects/index.html +98 -112
- solace_agent_mesh/assets/docs/docs/documentation/components/prompts/index.html +147 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/proxies/index.html +208 -125
- solace_agent_mesh/assets/docs/docs/documentation/components/speech/index.html +52 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +28 -28
- solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +29 -29
- solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +14 -14
- solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes/index.html +47 -0
- 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 +67 -53
- solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +17 -17
- solace_agent_mesh/assets/docs/docs/documentation/deploying/proxy_configuration/index.html +49 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/create-agents/index.html +38 -38
- solace_agent_mesh/assets/docs/docs/documentation/developing/create-gateways/index.html +87 -87
- solace_agent_mesh/assets/docs/docs/documentation/developing/creating-python-tools/index.html +67 -49
- solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +17 -17
- solace_agent_mesh/assets/docs/docs/documentation/developing/evaluations/index.html +51 -51
- solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +22 -22
- solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +27 -27
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/bedrock-agents/index.html +135 -135
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/custom-agent/index.html +66 -66
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/event-mesh-gateway/index.html +51 -51
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mcp-integration/index.html +50 -38
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mongodb-integration/index.html +86 -86
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rag-integration/index.html +51 -51
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rest-gateway/index.html +24 -24
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +30 -30
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/sql-database/index.html +44 -44
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/teams-integration/index.html +115 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/agent-builder/index.html +50 -23
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/connectors/index.html +29 -24
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +21 -21
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +40 -37
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/openapi-tools/index.html +324 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/rbac-setup-guide/index.html +96 -66
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/secure-user-delegated-access/index.html +181 -181
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +75 -75
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/wheel-installation/index.html +27 -27
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/architecture/index.html +44 -44
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +39 -38
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +30 -30
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +18 -18
- 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 +135 -114
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/configurations/index.html +37 -37
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +14 -14
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +27 -25
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +69 -69
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +72 -72
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/session-storage/index.html +112 -112
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/user-feedback/index.html +28 -28
- solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-gateway-upgrade-to-0.3.0/index.html +42 -42
- solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-technical-migration-map/index.html +20 -20
- solace_agent_mesh/assets/docs/docs/documentation/migrations/platform-service-split/index.html +85 -0
- solace_agent_mesh/assets/docs/lunr-index-1768329217460.json +1 -0
- solace_agent_mesh/assets/docs/lunr-index.json +1 -1
- solace_agent_mesh/assets/docs/search-doc-1768329217460.json +1 -0
- solace_agent_mesh/assets/docs/search-doc.json +1 -1
- solace_agent_mesh/assets/docs/sitemap.xml +1 -1
- solace_agent_mesh/cli/__init__.py +1 -1
- solace_agent_mesh/cli/commands/add_cmd/__init__.py +3 -1
- solace_agent_mesh/cli/commands/add_cmd/agent_cmd.py +6 -1
- solace_agent_mesh/cli/commands/add_cmd/proxy_cmd.py +100 -0
- solace_agent_mesh/cli/commands/eval_cmd.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 +30 -3
- solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +3 -4
- solace_agent_mesh/cli/commands/init_cmd/platform_service_step.py +85 -0
- solace_agent_mesh/cli/commands/init_cmd/webui_gateway_step.py +16 -3
- solace_agent_mesh/cli/commands/plugin_cmd/add_cmd.py +2 -1
- solace_agent_mesh/cli/commands/plugin_cmd/catalog_cmd.py +1 -0
- solace_agent_mesh/cli/commands/plugin_cmd/create_cmd.py +3 -3
- solace_agent_mesh/cli/commands/run_cmd.py +64 -49
- solace_agent_mesh/cli/commands/tools_cmd.py +315 -0
- solace_agent_mesh/cli/main.py +15 -0
- solace_agent_mesh/client/webui/frontend/static/assets/{authCallback-tcIFZLis.js → authCallback-KnKMP_vb.js} +1 -1
- solace_agent_mesh/client/webui/frontend/static/assets/client-DpBL2stg.js +25 -0
- solace_agent_mesh/client/webui/frontend/static/assets/main-Cd498TV2.js +435 -0
- solace_agent_mesh/client/webui/frontend/static/assets/main-rSf8Vu29.css +1 -0
- solace_agent_mesh/client/webui/frontend/static/assets/{vendor-CINwxvwV.js → vendor-CGk8Suyh.js} +189 -94
- 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/mockServiceWorker.js +336 -0
- solace_agent_mesh/client/webui/frontend/static/ui-version.json +6 -0
- 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 +124 -0
- solace_agent_mesh/common/error_handlers.py +83 -0
- solace_agent_mesh/common/exceptions.py +24 -0
- solace_agent_mesh/common/oauth/__init__.py +17 -0
- solace_agent_mesh/common/oauth/oauth_client.py +408 -0
- solace_agent_mesh/common/oauth/utils.py +50 -0
- solace_agent_mesh/common/rag_dto.py +156 -0
- solace_agent_mesh/common/sac/sam_component_base.py +73 -1
- solace_agent_mesh/common/sam_events/event_service.py +2 -2
- solace_agent_mesh/common/utils/embeds/converter.py +1 -8
- solace_agent_mesh/common/utils/embeds/modifiers.py +2 -27
- solace_agent_mesh/common/utils/embeds/resolver.py +94 -25
- solace_agent_mesh/common/utils/embeds/types.py +1 -0
- solace_agent_mesh/common/utils/log_formatters.py +20 -0
- solace_agent_mesh/common/utils/mime_helpers.py +12 -5
- solace_agent_mesh/common/utils/rbac_utils.py +69 -0
- solace_agent_mesh/common/utils/templates/__init__.py +8 -0
- solace_agent_mesh/common/utils/templates/liquid_renderer.py +210 -0
- solace_agent_mesh/common/utils/templates/template_resolver.py +161 -0
- solace_agent_mesh/config_portal/backend/common.py +12 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/_index-CljP4_mv.js +103 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/{components-Rk0n-9cK.js → components-CaC6hG8d.js} +22 -22
- solace_agent_mesh/config_portal/frontend/static/client/assets/{entry.client-mvZjNKiz.js → entry.client-H_TM0YBt.js} +3 -3
- solace_agent_mesh/config_portal/frontend/static/client/assets/{index-DzNKzXrc.js → index-CnFykb2v.js} +16 -16
- solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-f8439d40.js +1 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/root-BIMqslJB.css +1 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/root-mJmTIdIk.js +10 -0
- solace_agent_mesh/config_portal/frontend/static/client/index.html +3 -3
- 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/app.py +10 -0
- solace_agent_mesh/gateway/base/auth_interface.py +103 -0
- solace_agent_mesh/gateway/base/component.py +451 -10
- solace_agent_mesh/gateway/generic/component.py +274 -30
- solace_agent_mesh/gateway/http_sse/alembic/env.py +0 -7
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_soft_delete_and_search.py +2 -43
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_default_agent_to_projects.py +2 -2
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251108_create_prompt_tables_with_sharing.py +154 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251115_add_parent_task_id.py +32 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251126_add_background_task_fields.py +47 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251202_add_versioned_fields_to_prompts.py +52 -0
- solace_agent_mesh/gateway/http_sse/alembic.ini +0 -36
- solace_agent_mesh/gateway/http_sse/app.py +23 -6
- solace_agent_mesh/gateway/http_sse/component.py +158 -73
- solace_agent_mesh/gateway/http_sse/dependencies.py +50 -57
- solace_agent_mesh/gateway/http_sse/main.py +58 -482
- 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 +3 -2
- solace_agent_mesh/gateway/http_sse/repository/entities/task.py +7 -0
- 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/__init__.py +5 -0
- solace_agent_mesh/gateway/http_sse/repository/models/prompt_model.py +159 -0
- solace_agent_mesh/gateway/http_sse/repository/models/session_model.py +1 -1
- solace_agent_mesh/gateway/http_sse/repository/models/task_model.py +8 -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 +12 -107
- solace_agent_mesh/gateway/http_sse/repository/task_repository.py +86 -2
- solace_agent_mesh/gateway/http_sse/routers/agent_cards.py +38 -7
- solace_agent_mesh/gateway/http_sse/routers/artifacts.py +113 -7
- solace_agent_mesh/gateway/http_sse/routers/auth.py +69 -132
- solace_agent_mesh/gateway/http_sse/routers/config.py +235 -10
- solace_agent_mesh/gateway/http_sse/routers/dto/project_dto.py +69 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/prompt_dto.py +255 -0
- 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/project_responses.py +1 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +3 -2
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/version_responses.py +31 -0
- 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 +250 -24
- solace_agent_mesh/gateway/http_sse/routers/prompts.py +1416 -0
- solace_agent_mesh/gateway/http_sse/routers/sessions.py +14 -5
- solace_agent_mesh/gateway/http_sse/routers/speech.py +355 -0
- solace_agent_mesh/gateway/http_sse/routers/sse.py +117 -4
- solace_agent_mesh/gateway/http_sse/routers/tasks.py +509 -149
- solace_agent_mesh/gateway/http_sse/routers/users.py +1 -1
- solace_agent_mesh/gateway/http_sse/routers/version.py +343 -0
- solace_agent_mesh/gateway/http_sse/routers/visualization.py +2 -1
- solace_agent_mesh/gateway/http_sse/services/audio_service.py +1227 -0
- solace_agent_mesh/gateway/http_sse/services/background_task_monitor.py +186 -0
- 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/project_service.py +539 -12
- solace_agent_mesh/gateway/http_sse/services/prompt_builder_assistant.py +303 -0
- solace_agent_mesh/gateway/http_sse/services/session_service.py +198 -21
- solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +354 -4
- solace_agent_mesh/gateway/http_sse/sse_manager.py +280 -169
- solace_agent_mesh/gateway/http_sse/utils/artifact_copy_utils.py +370 -0
- solace_agent_mesh/gateway/http_sse/utils/stim_utils.py +41 -1
- solace_agent_mesh/services/__init__.py +0 -0
- solace_agent_mesh/services/platform/__init__.py +29 -0
- solace_agent_mesh/services/platform/alembic/env.py +85 -0
- solace_agent_mesh/services/platform/alembic/script.py.mako +28 -0
- solace_agent_mesh/services/platform/alembic.ini +109 -0
- solace_agent_mesh/services/platform/api/__init__.py +3 -0
- solace_agent_mesh/services/platform/api/dependencies.py +154 -0
- solace_agent_mesh/services/platform/api/main.py +314 -0
- solace_agent_mesh/services/platform/api/middleware.py +51 -0
- solace_agent_mesh/services/platform/api/routers/__init__.py +33 -0
- solace_agent_mesh/services/platform/api/routers/health_router.py +31 -0
- solace_agent_mesh/services/platform/app.py +215 -0
- solace_agent_mesh/services/platform/component.py +777 -0
- 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 +347 -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/logging_config_template.yaml +48 -0
- solace_agent_mesh/templates/main_orchestrator.yaml +12 -1
- solace_agent_mesh/templates/platform.yaml +49 -0
- solace_agent_mesh/templates/plugin_readme_template.md +3 -25
- solace_agent_mesh/templates/plugin_tool_config_template.yaml +109 -0
- solace_agent_mesh/templates/proxy_template.yaml +62 -0
- solace_agent_mesh/templates/webui.yaml +148 -6
- solace_agent_mesh/tools/web_search/__init__.py +18 -0
- solace_agent_mesh/tools/web_search/base.py +84 -0
- solace_agent_mesh/tools/web_search/google_search.py +247 -0
- solace_agent_mesh/tools/web_search/models.py +99 -0
- {solace_agent_mesh-1.7.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/METADATA +29 -8
- {solace_agent_mesh-1.7.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/RECORD +334 -313
- {solace_agent_mesh-1.7.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/WHEEL +1 -1
- 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/05749d90.c70b2be9.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/15ba94aa.92fea363.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/15e40e79.36003774.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/17896441.a5e82f9b.js +0 -2
- solace_agent_mesh/assets/docs/assets/js/240a0364.c39f8388.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/3ac1795d.e4870a49.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/3ff0015d.b63ee53a.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/547e15cc.2f7790c1.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/55b7b518.f2b1d1ba.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/5c2bd65f.45b32c2b.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/64195356.c498c4d0.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/66d4869e.830d443f.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/6d84eae0.4a5fbf39.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/8024126c.fa0e7186.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/81a99df0.07034dd9.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/82fbfb93.139a1a1f.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/924ffdeb.8095e148.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/94e8668d.09ed9234.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/9bb13469.dd1c9b54.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/a94703ab.0438dbc2.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/ab9708a8.245ae0ef.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/c93cbaa0.eaff365e.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/cbe2e9ea.f902fad8.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/db5d6442.3daf1696.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e04b235d.c9c50c7b.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e3d9abda.d11c67a7.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e6f9706b.045d0fa1.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e92d0134.3bda61dd.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/f284c35a.5099c51e.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/main.f213fe0c.js +0 -2
- solace_agent_mesh/assets/docs/assets/js/runtime~main.d9606d6a.js +0 -1
- solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes-deployment/index.html +0 -47
- solace_agent_mesh/assets/docs/lunr-index-1762283454666.json +0 -1
- solace_agent_mesh/assets/docs/search-doc-1762283454666.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/client-CRYdKo2Q.js +0 -25
- solace_agent_mesh/client/webui/frontend/static/assets/main-CojeY_1w.css +0 -1
- solace_agent_mesh/client/webui/frontend/static/assets/main-ILja9MCG.js +0 -353
- 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-ByU1X1HD.js +0 -98
- solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-61038fc6.js +0 -1
- solace_agent_mesh/config_portal/frontend/static/client/assets/root-BWvk5-gF.js +0 -10
- solace_agent_mesh/config_portal/frontend/static/client/assets/root-DxRwaWiE.css +0 -1
- 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/20251023_add_fulltext_search_indexes.py +0 -92
- 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/logging_config_template.ini +0 -45
- solace_agent_mesh/templates/templates_llm.txt +0 -147
- /solace_agent_mesh/assets/docs/assets/js/{main.f213fe0c.js.LICENSE.txt → main.d634009f.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.7.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/entry_points.txt +0 -0
- {solace_agent_mesh-1.7.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
# DEVELOPER GUIDE: protocol
|
|
2
|
-
|
|
3
|
-
## Quick Summary
|
|
4
|
-
The `protocol` directory implements the core logic for Agent-to-Agent (A2A) communication. It handles receiving and processing requests, responses, and discovery messages (Agent Cards) over the Solace event mesh. It acts as the bridge between the A2A protocol and the underlying Google ADK execution environment.
|
|
5
|
-
|
|
6
|
-
## Files Overview
|
|
7
|
-
- `__init__.py` - Empty package initialization file
|
|
8
|
-
- `event_handlers.py` - Contains the primary logic for handling all A2A protocol events, including routing incoming messages, managing task execution, and handling agent discovery
|
|
9
|
-
|
|
10
|
-
## Developer API Reference
|
|
11
|
-
|
|
12
|
-
### __init__.py
|
|
13
|
-
**Purpose:** Standard Python package initialization file
|
|
14
|
-
**Import:** `from solace_agent_mesh.agent.protocol import *`
|
|
15
|
-
|
|
16
|
-
This is an empty package initialization file and has no public interfaces.
|
|
17
|
-
|
|
18
|
-
### event_handlers.py
|
|
19
|
-
**Purpose:** Central hub for processing all events related to the A2A protocol. Routes events to appropriate handlers and manages task lifecycle.
|
|
20
|
-
**Import:** `from solace_agent_mesh.agent.protocol.event_handlers import process_event, handle_a2a_request, handle_agent_card_message, handle_a2a_response, publish_agent_card, handle_sam_event, cleanup_agent_session`
|
|
21
|
-
|
|
22
|
-
**Functions:**
|
|
23
|
-
- `process_event(component, event: Event) -> None` - Main event router that processes incoming events and delegates to specific handlers based on event type and topic
|
|
24
|
-
- `handle_a2a_request(component, message: SolaceMessage) -> None` - Handles incoming A2A request messages, starts ADK runner for SendTask requests, and processes CancelTask requests
|
|
25
|
-
- `handle_agent_card_message(component, message: SolaceMessage) -> None` - Processes incoming Agent Card discovery messages and updates peer agent registry
|
|
26
|
-
- `handle_a2a_response(component, message: SolaceMessage) -> None` - Handles responses and status updates from peer agents, manages parallel task completion
|
|
27
|
-
- `publish_agent_card(component) -> None` - Publishes the agent's capabilities and information to the discovery topic
|
|
28
|
-
- `handle_sam_event(component, message: SolaceMessage, topic: str) -> None` - Handles incoming SAM system events like session deletion
|
|
29
|
-
- `cleanup_agent_session(component, session_id: str, user_id: str) -> None` - Cleans up agent-side session data when sessions are deleted
|
|
30
|
-
|
|
31
|
-
**Internal Helper Functions:**
|
|
32
|
-
- `_register_peer_artifacts_in_parent_context(parent_task_context: "TaskExecutionContext", peer_task_object: Task, log_identifier: str) -> None` - Registers artifacts produced by peer agents in the parent task context
|
|
33
|
-
- `_publish_peer_tool_result_notification(component: "SamAgentComponent", correlation_data: Dict[str, Any], payload_to_queue: Any, log_identifier: str) -> None` - Publishes a ToolResultData status update for a completed peer tool call
|
|
34
|
-
|
|
35
|
-
**Usage Examples:**
|
|
36
|
-
```python
|
|
37
|
-
# Main event processing (typically called by the SAC framework)
|
|
38
|
-
from solace_agent_mesh.agent.protocol.event_handlers import process_event
|
|
39
|
-
from solace_ai_connector.common.event import Event, EventType
|
|
40
|
-
|
|
41
|
-
# Process an incoming event
|
|
42
|
-
await process_event(component, event)
|
|
43
|
-
|
|
44
|
-
# Publish agent discovery card
|
|
45
|
-
from solace_agent_mesh.agent.protocol.event_handlers import publish_agent_card
|
|
46
|
-
|
|
47
|
-
publish_agent_card(component)
|
|
48
|
-
|
|
49
|
-
# Handle specific message types (usually called internally by process_event)
|
|
50
|
-
from solace_agent_mesh.agent.protocol.event_handlers import handle_a2a_request
|
|
51
|
-
|
|
52
|
-
await handle_a2a_request(component, solace_message)
|
|
53
|
-
|
|
54
|
-
# Handle SAM system events
|
|
55
|
-
from solace_agent_mesh.agent.protocol.event_handlers import handle_sam_event
|
|
56
|
-
|
|
57
|
-
handle_sam_event(component, message, topic)
|
|
58
|
-
|
|
59
|
-
# Clean up session data
|
|
60
|
-
from solace_agent_mesh.agent.protocol.event_handlers import cleanup_agent_session
|
|
61
|
-
|
|
62
|
-
await cleanup_agent_session(component, "session_123", "user_456")
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
**Key Event Flow:**
|
|
66
|
-
1. `process_event()` receives all events and routes based on type (MESSAGE, TIMER, CACHE_EXPIRY)
|
|
67
|
-
2. For MESSAGE events, routes to specific handlers based on topic patterns:
|
|
68
|
-
- Agent request topics → `handle_a2a_request()`
|
|
69
|
-
- Discovery topics → `handle_agent_card_message()`
|
|
70
|
-
- Response/status topics → `handle_a2a_response()`
|
|
71
|
-
- SAM events topics → `handle_sam_event()`
|
|
72
|
-
3. For TIMER events, handles periodic agent card publishing
|
|
73
|
-
4. For CACHE_EXPIRY events, delegates to component's cache handling
|
|
74
|
-
|
|
75
|
-
**Dependencies:**
|
|
76
|
-
- Requires `SamAgentComponent` instance with proper configuration
|
|
77
|
-
- Uses A2A protocol types from `a2a.types`
|
|
78
|
-
- Integrates with Google ADK for task execution
|
|
79
|
-
- Manages task contexts through `TaskExecutionContext`
|
|
80
|
-
|
|
81
|
-
# content_hash: 02e6f51922fe92594201d9e7a07ae8469cad977a13297c53db5a75534ca1e9f7
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
# LLM Summary Detail File
|
|
2
|
-
|
|
3
|
-
This file is a concatenation of all individual *llm.txt files found in the 'protocol' directory tree. Each section below corresponds to a specific directory's summary file.
|
|
4
|
-
|
|
5
|
-
================================================================================
|
|
6
|
-
|
|
7
|
-
## Section 1: solace_agent_mesh/agent/protocol/protocol_llm.txt
|
|
8
|
-
|
|
9
|
-
**Source file:** `solace_agent_mesh/agent/protocol/protocol_llm.txt`
|
|
10
|
-
|
|
11
|
-
# DEVELOPER GUIDE: protocol
|
|
12
|
-
|
|
13
|
-
## Quick Summary
|
|
14
|
-
The `protocol` directory implements the core logic for Agent-to-Agent (A2A) communication. It handles receiving and processing requests, responses, and discovery messages (Agent Cards) over the Solace event mesh. It acts as the bridge between the A2A protocol and the underlying Google ADK execution environment.
|
|
15
|
-
|
|
16
|
-
## Files Overview
|
|
17
|
-
- `__init__.py` - Empty package initialization file
|
|
18
|
-
- `event_handlers.py` - Contains the primary logic for handling all A2A protocol events, including routing incoming messages, managing task execution, and handling agent discovery
|
|
19
|
-
|
|
20
|
-
## Developer API Reference
|
|
21
|
-
|
|
22
|
-
### __init__.py
|
|
23
|
-
**Purpose:** Standard Python package initialization file
|
|
24
|
-
**Import:** `from solace_agent_mesh.agent.protocol import *`
|
|
25
|
-
|
|
26
|
-
This is an empty package initialization file and has no public interfaces.
|
|
27
|
-
|
|
28
|
-
### event_handlers.py
|
|
29
|
-
**Purpose:** Central hub for processing all events related to the A2A protocol. Routes events to appropriate handlers and manages task lifecycle.
|
|
30
|
-
**Import:** `from solace_agent_mesh.agent.protocol.event_handlers import process_event, handle_a2a_request, handle_agent_card_message, handle_a2a_response, publish_agent_card, handle_sam_event, cleanup_agent_session`
|
|
31
|
-
|
|
32
|
-
**Functions:**
|
|
33
|
-
- `process_event(component, event: Event) -> None` - Main event router that processes incoming events and delegates to specific handlers based on event type and topic
|
|
34
|
-
- `handle_a2a_request(component, message: SolaceMessage) -> None` - Handles incoming A2A request messages, starts ADK runner for SendTask requests, and processes CancelTask requests
|
|
35
|
-
- `handle_agent_card_message(component, message: SolaceMessage) -> None` - Processes incoming Agent Card discovery messages and updates peer agent registry
|
|
36
|
-
- `handle_a2a_response(component, message: SolaceMessage) -> None` - Handles responses and status updates from peer agents, manages parallel task completion
|
|
37
|
-
- `publish_agent_card(component) -> None` - Publishes the agent's capabilities and information to the discovery topic
|
|
38
|
-
- `handle_sam_event(component, message: SolaceMessage, topic: str) -> None` - Handles incoming SAM system events like session deletion
|
|
39
|
-
- `cleanup_agent_session(component, session_id: str, user_id: str) -> None` - Cleans up agent-side session data when sessions are deleted
|
|
40
|
-
|
|
41
|
-
**Internal Helper Functions:**
|
|
42
|
-
- `_register_peer_artifacts_in_parent_context(parent_task_context: "TaskExecutionContext", peer_task_object: Task, log_identifier: str) -> None` - Registers artifacts produced by peer agents in the parent task context
|
|
43
|
-
- `_publish_peer_tool_result_notification(component: "SamAgentComponent", correlation_data: Dict[str, Any], payload_to_queue: Any, log_identifier: str) -> None` - Publishes a ToolResultData status update for a completed peer tool call
|
|
44
|
-
|
|
45
|
-
**Usage Examples:**
|
|
46
|
-
```python
|
|
47
|
-
# Main event processing (typically called by the SAC framework)
|
|
48
|
-
from solace_agent_mesh.agent.protocol.event_handlers import process_event
|
|
49
|
-
from solace_ai_connector.common.event import Event, EventType
|
|
50
|
-
|
|
51
|
-
# Process an incoming event
|
|
52
|
-
await process_event(component, event)
|
|
53
|
-
|
|
54
|
-
# Publish agent discovery card
|
|
55
|
-
from solace_agent_mesh.agent.protocol.event_handlers import publish_agent_card
|
|
56
|
-
|
|
57
|
-
publish_agent_card(component)
|
|
58
|
-
|
|
59
|
-
# Handle specific message types (usually called internally by process_event)
|
|
60
|
-
from solace_agent_mesh.agent.protocol.event_handlers import handle_a2a_request
|
|
61
|
-
|
|
62
|
-
await handle_a2a_request(component, solace_message)
|
|
63
|
-
|
|
64
|
-
# Handle SAM system events
|
|
65
|
-
from solace_agent_mesh.agent.protocol.event_handlers import handle_sam_event
|
|
66
|
-
|
|
67
|
-
handle_sam_event(component, message, topic)
|
|
68
|
-
|
|
69
|
-
# Clean up session data
|
|
70
|
-
from solace_agent_mesh.agent.protocol.event_handlers import cleanup_agent_session
|
|
71
|
-
|
|
72
|
-
await cleanup_agent_session(component, "session_123", "user_456")
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
**Key Event Flow:**
|
|
76
|
-
1. `process_event()` receives all events and routes based on type (MESSAGE, TIMER, CACHE_EXPIRY)
|
|
77
|
-
2. For MESSAGE events, routes to specific handlers based on topic patterns:
|
|
78
|
-
- Agent request topics → `handle_a2a_request()`
|
|
79
|
-
- Discovery topics → `handle_agent_card_message()`
|
|
80
|
-
- Response/status topics → `handle_a2a_response()`
|
|
81
|
-
- SAM events topics → `handle_sam_event()`
|
|
82
|
-
3. For TIMER events, handles periodic agent card publishing
|
|
83
|
-
4. For CACHE_EXPIRY events, delegates to component's cache handling
|
|
84
|
-
|
|
85
|
-
**Dependencies:**
|
|
86
|
-
- Requires `SamAgentComponent` instance with proper configuration
|
|
87
|
-
- Uses A2A protocol types from `a2a.types`
|
|
88
|
-
- Integrates with Google ADK for task execution
|
|
89
|
-
- Manages task contexts through `TaskExecutionContext`
|
|
90
|
-
|
|
91
|
-
================================================================================
|
|
92
|
-
|
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
# DEVELOPER GUIDE: a2a
|
|
2
|
-
|
|
3
|
-
## Quick Summary
|
|
4
|
-
The `a2a` directory provides a concrete implementation for proxying standard A2A-over-HTTPS agents. It enables the Solace Agent Mesh to communicate with downstream agents that implement the A2A (Agent-to-Agent) protocol over HTTP/HTTPS, handling authentication, request forwarding, and response processing.
|
|
5
|
-
|
|
6
|
-
## Files Overview
|
|
7
|
-
- `__init__.py` - Package initialization for A2A-over-HTTPS proxy implementation
|
|
8
|
-
- `app.py` - Main application class that validates A2A-specific configuration
|
|
9
|
-
- `component.py` - Core proxy component that handles A2A protocol communication and request forwarding
|
|
10
|
-
- `config.py` - Pydantic configuration models for A2A proxy settings and authentication
|
|
11
|
-
- `oauth_token_cache.py` - OAuth 2.0 token caching system with automatic expiration
|
|
12
|
-
|
|
13
|
-
## Developer API Reference
|
|
14
|
-
|
|
15
|
-
### app.py
|
|
16
|
-
**Purpose:** Provides the main application class for A2A proxy with configuration validation
|
|
17
|
-
**Import:** `from solace_agent_mesh.agent.proxies.a2a.app import A2AProxyApp`
|
|
18
|
-
|
|
19
|
-
**Classes:**
|
|
20
|
-
- `A2AProxyApp(app_info: Dict[str, Any], **kwargs)` - Main A2A proxy application class
|
|
21
|
-
- Inherits from `BaseProxyApp` and adds A2A-specific configuration validation
|
|
22
|
-
- Validates authentication settings, URLs, and other A2A-specific parameters
|
|
23
|
-
|
|
24
|
-
**Usage Examples:**
|
|
25
|
-
```python
|
|
26
|
-
from solace_agent_mesh.agent.proxies.a2a.app import A2AProxyApp
|
|
27
|
-
|
|
28
|
-
# Create A2A proxy app with configuration
|
|
29
|
-
app_info = {
|
|
30
|
-
"app_config": {
|
|
31
|
-
"proxied_agents": [
|
|
32
|
-
{
|
|
33
|
-
"name": "my-agent",
|
|
34
|
-
"url": "https://agent.example.com",
|
|
35
|
-
"authentication": {
|
|
36
|
-
"type": "oauth2_client_credentials",
|
|
37
|
-
"token_url": "https://auth.example.com/token",
|
|
38
|
-
"client_id": "my-client-id",
|
|
39
|
-
"client_secret": "my-secret"
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
]
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
app = A2AProxyApp(app_info)
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
### component.py
|
|
50
|
-
**Purpose:** Core component that handles A2A protocol communication, authentication, and request forwarding
|
|
51
|
-
**Import:** `from solace_agent_mesh.agent.proxies.a2a.component import A2AProxyComponent`
|
|
52
|
-
|
|
53
|
-
**Classes:**
|
|
54
|
-
- `A2AProxyComponent(**kwargs: Any)` - Main proxy component for A2A-over-HTTPS agents
|
|
55
|
-
- `clear_client_cache() -> None` - Clears all cached A2A clients and OAuth tokens
|
|
56
|
-
- `cleanup() -> None` - Cleans up resources on component shutdown
|
|
57
|
-
|
|
58
|
-
**Usage Examples:**
|
|
59
|
-
```python
|
|
60
|
-
from solace_agent_mesh.agent.proxies.a2a.component import A2AProxyComponent
|
|
61
|
-
|
|
62
|
-
# Create component (typically done by the framework)
|
|
63
|
-
component = A2AProxyComponent(
|
|
64
|
-
proxied_agents_config=[
|
|
65
|
-
{
|
|
66
|
-
"name": "my-agent",
|
|
67
|
-
"url": "https://agent.example.com",
|
|
68
|
-
"authentication": {
|
|
69
|
-
"type": "static_bearer",
|
|
70
|
-
"token": "my-bearer-token"
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
]
|
|
74
|
-
)
|
|
75
|
-
|
|
76
|
-
# Clear cache if needed (useful for testing)
|
|
77
|
-
component.clear_client_cache()
|
|
78
|
-
|
|
79
|
-
# Cleanup when shutting down
|
|
80
|
-
component.cleanup()
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### config.py
|
|
84
|
-
**Purpose:** Pydantic configuration models for A2A proxy settings and authentication validation
|
|
85
|
-
**Import:** `from solace_agent_mesh.agent.proxies.a2a.config import A2AProxyAppConfig, AuthenticationConfig, A2AProxiedAgentConfig`
|
|
86
|
-
|
|
87
|
-
**Classes:**
|
|
88
|
-
- `AuthenticationConfig()` - Authentication configuration for downstream A2A agents
|
|
89
|
-
- `type: Optional[Literal["static_bearer", "static_apikey", "oauth2_client_credentials"]]` - Authentication type
|
|
90
|
-
- `token: Optional[str]` - Authentication token (for static types)
|
|
91
|
-
- `token_url: Optional[str]` - OAuth 2.0 token endpoint URL
|
|
92
|
-
- `client_id: Optional[str]` - OAuth 2.0 client identifier
|
|
93
|
-
- `client_secret: Optional[str]` - OAuth 2.0 client secret
|
|
94
|
-
- `scope: Optional[str]` - OAuth 2.0 scope string
|
|
95
|
-
- `token_cache_duration_seconds: int` - Token cache duration (default: 3300)
|
|
96
|
-
|
|
97
|
-
- `A2AProxiedAgentConfig()` - Configuration for a single A2A agent
|
|
98
|
-
- `url: str` - Base URL of the downstream A2A agent
|
|
99
|
-
- `authentication: Optional[AuthenticationConfig]` - Authentication details
|
|
100
|
-
|
|
101
|
-
- `A2AProxyAppConfig()` - Complete configuration for A2A proxy application
|
|
102
|
-
- `proxied_agents: List[A2AProxiedAgentConfig]` - List of agents to proxy
|
|
103
|
-
|
|
104
|
-
**Usage Examples:**
|
|
105
|
-
```python
|
|
106
|
-
from solace_agent_mesh.agent.proxies.a2a.config import (
|
|
107
|
-
A2AProxyAppConfig,
|
|
108
|
-
A2AProxiedAgentConfig,
|
|
109
|
-
AuthenticationConfig
|
|
110
|
-
)
|
|
111
|
-
|
|
112
|
-
# OAuth 2.0 authentication
|
|
113
|
-
oauth_auth = AuthenticationConfig(
|
|
114
|
-
type="oauth2_client_credentials",
|
|
115
|
-
token_url="https://auth.example.com/token",
|
|
116
|
-
client_id="my-client-id",
|
|
117
|
-
client_secret="my-secret",
|
|
118
|
-
scope="agent:read agent:write",
|
|
119
|
-
token_cache_duration_seconds=3300
|
|
120
|
-
)
|
|
121
|
-
|
|
122
|
-
# Static bearer token authentication
|
|
123
|
-
bearer_auth = AuthenticationConfig(
|
|
124
|
-
type="static_bearer",
|
|
125
|
-
token="my-bearer-token"
|
|
126
|
-
)
|
|
127
|
-
|
|
128
|
-
# Agent configuration
|
|
129
|
-
agent_config = A2AProxiedAgentConfig(
|
|
130
|
-
name="my-agent",
|
|
131
|
-
url="https://agent.example.com",
|
|
132
|
-
authentication=oauth_auth
|
|
133
|
-
)
|
|
134
|
-
|
|
135
|
-
# Complete app configuration
|
|
136
|
-
app_config = A2AProxyAppConfig(
|
|
137
|
-
proxied_agents=[agent_config]
|
|
138
|
-
)
|
|
139
|
-
|
|
140
|
-
# Validate configuration
|
|
141
|
-
validated_config = A2AProxyAppConfig.model_validate({
|
|
142
|
-
"proxied_agents": [
|
|
143
|
-
{
|
|
144
|
-
"name": "test-agent",
|
|
145
|
-
"url": "https://agent.example.com",
|
|
146
|
-
"authentication": {
|
|
147
|
-
"type": "static_bearer",
|
|
148
|
-
"token": "abc123"
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
]
|
|
152
|
-
})
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
### oauth_token_cache.py
|
|
156
|
-
**Purpose:** Thread-safe OAuth 2.0 token caching with automatic expiration
|
|
157
|
-
**Import:** `from solace_agent_mesh.agent.proxies.a2a.oauth_token_cache import OAuth2TokenCache, CachedToken`
|
|
158
|
-
|
|
159
|
-
**Classes:**
|
|
160
|
-
- `CachedToken(access_token: str, expires_at: float)` - Represents a cached token with expiration
|
|
161
|
-
- `access_token: str` - The OAuth 2.0 access token
|
|
162
|
-
- `expires_at: float` - Unix timestamp when token expires
|
|
163
|
-
|
|
164
|
-
- `OAuth2TokenCache()` - Thread-safe in-memory cache for OAuth tokens
|
|
165
|
-
- `get(agent_name: str) -> Optional[str]` - Retrieves cached token if valid
|
|
166
|
-
- `set(agent_name: str, access_token: str, cache_duration_seconds: int) -> None` - Caches token with expiration
|
|
167
|
-
- `invalidate(agent_name: str) -> None` - Removes token from cache
|
|
168
|
-
|
|
169
|
-
**Usage Examples:**
|
|
170
|
-
```python
|
|
171
|
-
from solace_agent_mesh.agent.proxies.a2a.oauth_token_cache import OAuth2TokenCache
|
|
172
|
-
|
|
173
|
-
# Create token cache
|
|
174
|
-
cache = OAuth2TokenCache()
|
|
175
|
-
|
|
176
|
-
# Cache a token for 1 hour
|
|
177
|
-
await cache.set("my-agent", "access_token_123", 3600)
|
|
178
|
-
|
|
179
|
-
# Retrieve cached token
|
|
180
|
-
token = await cache.get("my-agent")
|
|
181
|
-
if token:
|
|
182
|
-
print(f"Using cached token: {token}")
|
|
183
|
-
else:
|
|
184
|
-
print("No valid cached token found")
|
|
185
|
-
|
|
186
|
-
# Invalidate cached token
|
|
187
|
-
await cache.invalidate("my-agent")
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
# content_hash: 7bb671773b0ece239704f18e12a92ac5dc3f97dd0ebb154ac56f53e0d277a1b7
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
# DEVELOPER GUIDE: base
|
|
2
|
-
|
|
3
|
-
## Quick Summary
|
|
4
|
-
The `base` directory contains protocol-agnostic abstract base classes for implementing proxy applications in the Solace Agent Mesh. These classes handle common functionality like A2A message routing, agent discovery, task lifecycle management, and artifact resolution, allowing concrete proxy implementations to focus on protocol-specific details.
|
|
5
|
-
|
|
6
|
-
## Files Overview
|
|
7
|
-
- `__init__.py` - Package initialization for base proxy classes
|
|
8
|
-
- `app.py` - Abstract base class for proxy applications with configuration validation and component setup
|
|
9
|
-
- `component.py` - Abstract base class for proxy components handling Solace interaction and task management
|
|
10
|
-
- `config.py` - Pydantic configuration models for proxy applications
|
|
11
|
-
- `proxy_task_context.py` - Runtime state container for individual proxied agent tasks
|
|
12
|
-
|
|
13
|
-
## Developer API Reference
|
|
14
|
-
|
|
15
|
-
### __init__.py
|
|
16
|
-
**Purpose:** Package initialization file for base proxy classes
|
|
17
|
-
**Import:** `from solace_agent_mesh.agent.proxies.base import *`
|
|
18
|
-
|
|
19
|
-
This file contains only package documentation and no public API.
|
|
20
|
-
|
|
21
|
-
### app.py
|
|
22
|
-
**Purpose:** Abstract base class for proxy applications that handles configuration validation and automatic component setup
|
|
23
|
-
**Import:** `from solace_agent_mesh.agent.proxies.base.app import BaseProxyApp`
|
|
24
|
-
|
|
25
|
-
**Classes:**
|
|
26
|
-
- `BaseProxyApp(app_info: Dict[str, Any], **kwargs)` - Abstract base for proxy apps that automatically configures subscriptions and components
|
|
27
|
-
- `_get_component_class() -> Type[BaseProxyComponent]` - Abstract method to return the specific proxy component class
|
|
28
|
-
|
|
29
|
-
**Usage Examples:**
|
|
30
|
-
```python
|
|
31
|
-
from solace_agent_mesh.agent.proxies.base.app import BaseProxyApp
|
|
32
|
-
from solace_agent_mesh.agent.proxies.base.component import BaseProxyComponent
|
|
33
|
-
|
|
34
|
-
class MyProxyApp(BaseProxyApp):
|
|
35
|
-
def _get_component_class(self):
|
|
36
|
-
return MyProxyComponent
|
|
37
|
-
|
|
38
|
-
# App will automatically:
|
|
39
|
-
# - Validate configuration against BaseProxyAppConfig
|
|
40
|
-
# - Generate Solace subscriptions for all proxied agents
|
|
41
|
-
# - Create component instance with proper broker settings
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
### component.py
|
|
45
|
-
**Purpose:** Abstract base class for proxy components that handles Solace interaction, discovery, and task lifecycle
|
|
46
|
-
**Import:** `from solace_agent_mesh.agent.proxies.base.component import BaseProxyComponent`
|
|
47
|
-
|
|
48
|
-
**Classes:**
|
|
49
|
-
- `BaseProxyComponent(**kwargs: Any)` - Abstract base for proxy components with async event processing
|
|
50
|
-
- `process_event(event: Event) -> None` - Processes incoming Solace events
|
|
51
|
-
- `invoke(message: SolaceMessage, data: dict) -> dict` - Placeholder invoke method (not used)
|
|
52
|
-
- `run() -> None` - Starts component operations and discovery timers
|
|
53
|
-
- `cleanup() -> None` - Cleans up resources on shutdown
|
|
54
|
-
- `clear_client_cache() -> None` - Clears cached clients (override in subclasses)
|
|
55
|
-
- `_fetch_agent_card(agent_config: dict) -> Optional[AgentCard]` - Abstract method to fetch agent cards
|
|
56
|
-
- `_forward_request(task_context: ProxyTaskContext, request: A2ARequest, agent_name: str) -> None` - Abstract method to forward requests
|
|
57
|
-
|
|
58
|
-
**Usage Examples:**
|
|
59
|
-
```python
|
|
60
|
-
from solace_agent_mesh.agent.proxies.base.component import BaseProxyComponent
|
|
61
|
-
from a2a.types import AgentCard, A2ARequest
|
|
62
|
-
|
|
63
|
-
class MyProxyComponent(BaseProxyComponent):
|
|
64
|
-
async def _fetch_agent_card(self, agent_config: dict) -> Optional[AgentCard]:
|
|
65
|
-
# Implement protocol-specific agent discovery
|
|
66
|
-
url = agent_config.get("url")
|
|
67
|
-
# ... fetch and return AgentCard
|
|
68
|
-
|
|
69
|
-
async def _forward_request(self, task_context, request: A2ARequest, agent_name: str):
|
|
70
|
-
# Implement protocol-specific request forwarding
|
|
71
|
-
# ... forward request to downstream agent
|
|
72
|
-
# ... handle responses and publish back to Solace
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### config.py
|
|
76
|
-
**Purpose:** Pydantic configuration models for proxy applications
|
|
77
|
-
**Import:** `from solace_agent_mesh.agent.proxies.base.config import BaseProxyAppConfig, ProxiedAgentConfig, ArtifactServiceConfig`
|
|
78
|
-
|
|
79
|
-
**Classes:**
|
|
80
|
-
- `ArtifactServiceConfig()` - Configuration for artifact service
|
|
81
|
-
- `type: str` - Service type ('memory', 'gcs', 'filesystem')
|
|
82
|
-
- `base_path: Optional[str]` - Base directory for filesystem type
|
|
83
|
-
- `bucket_name: Optional[str]` - GCS bucket name
|
|
84
|
-
- `artifact_scope: Literal["namespace", "app", "custom"]` - Scope for artifacts
|
|
85
|
-
- `artifact_scope_value: Optional[str]` - Custom scope identifier
|
|
86
|
-
|
|
87
|
-
- `ProxiedAgentConfig()` - Configuration for individual proxied agents
|
|
88
|
-
- `name: str` - Agent name on Solace mesh
|
|
89
|
-
- `request_timeout_seconds: Optional[int]` - Timeout override for this agent
|
|
90
|
-
|
|
91
|
-
- `BaseProxyAppConfig()` - Base configuration for proxy applications
|
|
92
|
-
- `namespace: str` - Topic prefix for A2A communication
|
|
93
|
-
- `proxied_agents: List[ProxiedAgentConfig]` - List of agents to proxy
|
|
94
|
-
- `artifact_service: ArtifactServiceConfig` - Artifact service configuration
|
|
95
|
-
- `discovery_interval_seconds: int` - Agent discovery interval (default: 60)
|
|
96
|
-
- `default_request_timeout_seconds: int` - Default request timeout (default: 300)
|
|
97
|
-
|
|
98
|
-
**Usage Examples:**
|
|
99
|
-
```python
|
|
100
|
-
from solace_agent_mesh.agent.proxies.base.config import BaseProxyAppConfig
|
|
101
|
-
|
|
102
|
-
# Configuration validation
|
|
103
|
-
config_dict = {
|
|
104
|
-
"namespace": "myorg/dev",
|
|
105
|
-
"proxied_agents": [
|
|
106
|
-
{"name": "my-agent", "request_timeout_seconds": 120}
|
|
107
|
-
],
|
|
108
|
-
"artifact_service": {"type": "memory"},
|
|
109
|
-
"discovery_interval_seconds": 30
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
config = BaseProxyAppConfig.model_validate(config_dict)
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### proxy_task_context.py
|
|
116
|
-
**Purpose:** Runtime state container for individual proxied agent tasks
|
|
117
|
-
**Import:** `from solace_agent_mesh.agent.proxies.base.proxy_task_context import ProxyTaskContext`
|
|
118
|
-
|
|
119
|
-
**Classes:**
|
|
120
|
-
- `ProxyTaskContext(task_id: str, a2a_context: Dict[str, Any])` - Runtime state for a proxied task
|
|
121
|
-
- `task_id: str` - Unique identifier for the task
|
|
122
|
-
- `a2a_context: Dict[str, Any]` - A2A protocol context information
|
|
123
|
-
|
|
124
|
-
**Usage Examples:**
|
|
125
|
-
```python
|
|
126
|
-
from solace_agent_mesh.agent.proxies.base.proxy_task_context import ProxyTaskContext
|
|
127
|
-
|
|
128
|
-
# Create task context when handling new request
|
|
129
|
-
a2a_context = {
|
|
130
|
-
"jsonrpc_request_id": "req-123",
|
|
131
|
-
"logical_task_id": "task-456",
|
|
132
|
-
"session_id": "session-789",
|
|
133
|
-
"user_id": "user123",
|
|
134
|
-
"status_topic": "status/topic",
|
|
135
|
-
"reply_to_topic": "reply/topic",
|
|
136
|
-
"is_streaming": False
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
task_context = ProxyTaskContext(
|
|
140
|
-
task_id="task-456",
|
|
141
|
-
a2a_context=a2a_context
|
|
142
|
-
)
|
|
143
|
-
|
|
144
|
-
# Store in active tasks for lifecycle management
|
|
145
|
-
self.active_tasks[task_context.task_id] = task_context
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
# content_hash: 40cb6427440b8b946d69d0d721d47ca5994dd19621e6e631544e8e39b7a96624
|