solace-agent-mesh 1.6.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/app_llm_agent.py +26 -0
- solace_agent_mesh/agent/adk/artifacts/filesystem_artifact_service.py +165 -1
- solace_agent_mesh/agent/adk/artifacts/s3_artifact_service.py +163 -0
- solace_agent_mesh/agent/adk/callbacks.py +852 -109
- solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +234 -36
- 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 +77 -21
- solace_agent_mesh/agent/adk/models/oauth2_token_manager.py +24 -137
- solace_agent_mesh/agent/adk/runner.py +85 -20
- solace_agent_mesh/agent/adk/schema_migration.py +88 -0
- solace_agent_mesh/agent/adk/services.py +94 -18
- solace_agent_mesh/agent/adk/setup.py +281 -65
- solace_agent_mesh/agent/adk/stream_parser.py +231 -37
- solace_agent_mesh/agent/adk/tool_wrapper.py +3 -0
- solace_agent_mesh/agent/protocol/event_handlers.py +472 -137
- solace_agent_mesh/agent/proxies/a2a/app.py +3 -2
- 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/app.py +3 -2
- 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 +91 -3
- solace_agent_mesh/agent/sac/component.py +591 -157
- solace_agent_mesh/agent/sac/patch_adk.py +8 -16
- solace_agent_mesh/agent/sac/task_execution_context.py +146 -4
- 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 +710 -171
- solace_agent_mesh/agent/tools/deep_research_tools.py +2161 -0
- solace_agent_mesh/agent/tools/dynamic_tool.py +2 -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 +57 -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 +248 -6
- 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/2987107d.a80604f9.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/631738c7.fa471607.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/6a520c9d.b6e3f2ce.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6aaedf65.7253541d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.a5b36a60.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6d84eae0.fd23ba4a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/71da7b71.374b9d54.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/8b032486.91a91afc.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/ad87452a.9d73dad6.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/da0b5bad.b62f7b08.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/dd817ffc.c37a755e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/dd81e2b8.b682e9c2.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/de915948.44a432bc.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/ff4d71f2.74710fc1.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 +82 -68
- 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 +182 -0
- 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 -49
- solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +29 -30
- 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 +90 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +17 -16
- 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 +162 -171
- 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 +86 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/connectors/index.html +67 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +23 -19
- 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 +112 -87
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/secure-user-delegated-access/index.html +440 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +87 -64
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/wheel-installation/index.html +62 -0
- 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 -37
- 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 +311 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/configurations/index.html +39 -42
- 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 +251 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/user-feedback/index.html +88 -0
- 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/docs_cmd.py +4 -1
- 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-BTf6dqwp.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-CGk8Suyh.js +565 -0
- 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/events.py +2 -1
- solace_agent_mesh/common/a2a/protocol.py +5 -0
- solace_agent_mesh/common/a2a/types.py +2 -1
- solace_agent_mesh/common/a2a_spec/schemas/artifact_creation_progress.json +23 -6
- solace_agent_mesh/common/a2a_spec/schemas/feedback_event.json +51 -0
- solace_agent_mesh/common/agent_registry.py +38 -11
- solace_agent_mesh/common/data_parts.py +144 -4
- 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 +97 -19
- solace_agent_mesh/common/sam_events/event_service.py +2 -2
- solace_agent_mesh/common/services/employee_service.py +1 -1
- solace_agent_mesh/common/utils/embeds/constants.py +1 -0
- solace_agent_mesh/common/utils/embeds/converter.py +1 -8
- solace_agent_mesh/common/utils/embeds/modifiers.py +4 -28
- solace_agent_mesh/common/utils/embeds/resolver.py +152 -31
- solace_agent_mesh/common/utils/embeds/types.py +9 -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/pydantic_utils.py +90 -3
- 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/__init__.py +1 -0
- solace_agent_mesh/gateway/adapter/base.py +170 -0
- solace_agent_mesh/gateway/adapter/types.py +230 -0
- solace_agent_mesh/gateway/base/app.py +39 -2
- solace_agent_mesh/gateway/base/auth_interface.py +103 -0
- solace_agent_mesh/gateway/base/component.py +1027 -151
- solace_agent_mesh/gateway/generic/__init__.py +1 -0
- solace_agent_mesh/gateway/generic/app.py +50 -0
- solace_agent_mesh/gateway/generic/component.py +894 -0
- solace_agent_mesh/gateway/http_sse/alembic/env.py +0 -7
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_project_users_table.py +72 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_soft_delete_and_search.py +109 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_default_agent_to_projects.py +26 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_projects_table.py +135 -0
- 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 +40 -11
- solace_agent_mesh/gateway/http_sse/component.py +285 -160
- solace_agent_mesh/gateway/http_sse/dependencies.py +149 -114
- solace_agent_mesh/gateway/http_sse/main.py +68 -450
- solace_agent_mesh/gateway/http_sse/repository/__init__.py +19 -1
- solace_agent_mesh/gateway/http_sse/repository/chat_task_repository.py +2 -2
- solace_agent_mesh/gateway/http_sse/repository/entities/project.py +81 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/project_user.py +47 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/session.py +26 -3
- solace_agent_mesh/gateway/http_sse/repository/entities/task.py +7 -0
- solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +47 -0
- solace_agent_mesh/gateway/http_sse/repository/interfaces.py +114 -6
- solace_agent_mesh/gateway/http_sse/repository/models/__init__.py +13 -0
- solace_agent_mesh/gateway/http_sse/repository/models/project_model.py +51 -0
- solace_agent_mesh/gateway/http_sse/repository/models/project_user_model.py +75 -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 +8 -2
- solace_agent_mesh/gateway/http_sse/repository/models/task_model.py +8 -1
- solace_agent_mesh/gateway/http_sse/repository/project_repository.py +172 -0
- solace_agent_mesh/gateway/http_sse/repository/project_user_repository.py +186 -0
- solace_agent_mesh/gateway/http_sse/repository/session_repository.py +177 -11
- 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 +256 -58
- solace_agent_mesh/gateway/http_sse/routers/auth.py +168 -134
- solace_agent_mesh/gateway/http_sse/routers/config.py +302 -8
- 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/project_requests.py +48 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/session_requests.py +14 -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 +31 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +5 -2
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/version_responses.py +31 -0
- solace_agent_mesh/gateway/http_sse/routers/feedback.py +133 -2
- solace_agent_mesh/gateway/http_sse/routers/people.py +2 -2
- solace_agent_mesh/gateway/http_sse/routers/projects.py +768 -0
- solace_agent_mesh/gateway/http_sse/routers/prompts.py +1416 -0
- solace_agent_mesh/gateway/http_sse/routers/sessions.py +167 -7
- solace_agent_mesh/gateway/http_sse/routers/speech.py +355 -0
- solace_agent_mesh/gateway/http_sse/routers/sse.py +131 -8
- solace_agent_mesh/gateway/http_sse/routers/tasks.py +670 -18
- 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 +92 -9
- 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 +930 -0
- solace_agent_mesh/gateway/http_sse/services/prompt_builder_assistant.py +303 -0
- solace_agent_mesh/gateway/http_sse/services/session_service.py +361 -12
- solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +354 -4
- solace_agent_mesh/gateway/http_sse/session_manager.py +15 -15
- solace_agent_mesh/gateway/http_sse/sse_manager.py +286 -166
- 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 +19 -5
- 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.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/METADATA +31 -12
- solace_agent_mesh-1.13.2.dist-info/RECORD +591 -0
- {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/WHEEL +1 -1
- solace_agent_mesh/agent/adk/adk_llm.txt +0 -232
- 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 -142
- solace_agent_mesh/agent/agent_llm.txt +0 -378
- 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/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 -57
- solace_agent_mesh/agent/testing/testing_llm_detail.txt +0 -68
- solace_agent_mesh/agent/tools/tools_llm.txt +0 -263
- solace_agent_mesh/agent/tools/tools_llm_detail.txt +0 -274
- solace_agent_mesh/agent/utils/utils_llm.txt +0 -138
- solace_agent_mesh/agent/utils/utils_llm_detail.txt +0 -149
- solace_agent_mesh/assets/docs/assets/js/15ba94aa.932dd2db.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/17896441.a5e82f9b.js +0 -2
- solace_agent_mesh/assets/docs/assets/js/240a0364.7eac6021.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.76654dd9.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/3ff0015d.2be20244.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/547e15cc.2cbb060a.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/55b7b518.f2b1d1ba.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/5c2bd65f.eda4bcb2.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/631738c7.a8b1ef8b.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/6a520c9d.ba015d81.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.f4b15f3b.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/6d84eae0.4a5fbf39.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/71da7b71.38583438.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/8024126c.56e59919.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.b5ddb7a1.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.3e6dd091.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/c93cbaa0.eaff365e.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/da0b5bad.d08a9466.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/dd817ffc.0aa9630a.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/dd81e2b8.d590bc9e.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/de915948.27d6b065.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e3d9abda.6b9493d0.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e6f9706b.e74a984d.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e92d0134.cf6d6522.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/f284c35a.42f59cdd.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/ff4d71f2.15b02f97.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/main.b12eac43.js +0 -2
- solace_agent_mesh/assets/docs/assets/js/runtime~main.e268214e.js +0 -1
- solace_agent_mesh/assets/docs/lunr-index-1761248203150.json +0 -1
- solace_agent_mesh/assets/docs/search-doc-1761248203150.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-CaY59VuC.js +0 -25
- solace_agent_mesh/client/webui/frontend/static/assets/main-B32noGmR.js +0 -342
- solace_agent_mesh/client/webui/frontend/static/assets/main-DHJKSW1S.css +0 -1
- solace_agent_mesh/client/webui/frontend/static/assets/vendor-BEmvJSYz.js +0 -405
- solace_agent_mesh/common/a2a/a2a_llm.txt +0 -182
- solace_agent_mesh/common/a2a/a2a_llm_detail.txt +0 -193
- solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +0 -407
- solace_agent_mesh/common/a2a_spec/a2a_spec_llm_detail.txt +0 -736
- solace_agent_mesh/common/a2a_spec/schemas/schemas_llm.txt +0 -313
- solace_agent_mesh/common/common_llm.txt +0 -251
- 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 -80
- solace_agent_mesh/common/services/services_llm.txt +0 -363
- 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 -336
- 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 -224
- solace_agent_mesh/gateway/base/base_llm_detail.txt +0 -235
- solace_agent_mesh/gateway/gateway_llm.txt +0 -373
- solace_agent_mesh/gateway/gateway_llm_detail.txt +0 -3885
- solace_agent_mesh/gateway/http_sse/alembic/alembic_llm.txt +0 -295
- solace_agent_mesh/gateway/http_sse/alembic/versions/versions_llm.txt +0 -155
- 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 -263
- solace_agent_mesh/gateway/http_sse/repository/models/models_llm.txt +0 -266
- solace_agent_mesh/gateway/http_sse/repository/repository_llm.txt +0 -340
- solace_agent_mesh/gateway/http_sse/routers/dto/dto_llm.txt +0 -346
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/requests_llm.txt +0 -83
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/responses_llm.txt +0 -107
- solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +0 -314
- solace_agent_mesh/gateway/http_sse/services/services_llm.txt +0 -297
- solace_agent_mesh/gateway/http_sse/shared/__init__.py +0 -146
- solace_agent_mesh/gateway/http_sse/shared/shared_llm.txt +0 -285
- 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-1.6.1.dist-info/RECORD +0 -525
- /solace_agent_mesh/assets/docs/assets/js/{main.b12eac43.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.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/entry_points.txt +0 -0
- {solace_agent_mesh-1.6.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: 4b8a426320c6f06c621b469c79087c315f5590ef14497ccf17de02eeb66db91d
|
|
@@ -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,189 +0,0 @@
|
|
|
1
|
-
# DEVELOPER GUIDE for the directory: sac
|
|
2
|
-
|
|
3
|
-
## Quick Summary
|
|
4
|
-
The `sac` (Solace AI Connector) directory provides the core implementation for hosting a Google ADK (Agent Development Kit) agent within the Solace AI Connector framework. It acts as a bridge, enabling ADK agents to communicate using the A2A (Agent-to-Agent) protocol over Solace messaging. This allows for the creation of distributed, collaborative agent systems where agents can delegate tasks, share information, and work together to solve complex problems.
|
|
5
|
-
|
|
6
|
-
## Files Overview
|
|
7
|
-
- `__init__.py` - Empty package marker file
|
|
8
|
-
- `app.py` - Custom SAC App class that automatically configures Solace subscriptions and broker settings for A2A communication
|
|
9
|
-
- `component.py` - Main SAC Component that hosts the ADK agent, manages its lifecycle, and handles all A2A protocol messaging
|
|
10
|
-
- `patch_adk.py` - Runtime patches for the Google ADK library to enhance or correct its behavior
|
|
11
|
-
- `task_execution_context.py` - State management class that encapsulates all runtime information for a single, in-flight A2A task
|
|
12
|
-
|
|
13
|
-
## Developer API Reference
|
|
14
|
-
|
|
15
|
-
### app.py
|
|
16
|
-
**Purpose:** Provides a custom SAC App class that simplifies the configuration of an A2A agent
|
|
17
|
-
**Import:** `from solace_agent_mesh.agent.sac.app import SamAgentApp`
|
|
18
|
-
|
|
19
|
-
**Classes:**
|
|
20
|
-
- `SamAgentApp(app_info: Dict[str, Any], **kwargs)` - Custom App class for SAM Agent Host with namespace prefixing and automatic subscription generation
|
|
21
|
-
- `app_schema: Dict` - Class attribute defining comprehensive configuration schema for agent host validation
|
|
22
|
-
|
|
23
|
-
**Constants/Variables:**
|
|
24
|
-
- `info: Dict[str, str]` - Metadata dictionary about the SamAgentApp class for SAC framework discovery
|
|
25
|
-
|
|
26
|
-
**Usage Examples:**
|
|
27
|
-
```python
|
|
28
|
-
# SamAgentApp is typically instantiated by the SAC framework from YAML config
|
|
29
|
-
# Example agent-config.yaml:
|
|
30
|
-
# app:
|
|
31
|
-
# class_name: solace_agent_mesh.agent.sac.app.SamAgentApp
|
|
32
|
-
# app_config:
|
|
33
|
-
# namespace: "my-org/production"
|
|
34
|
-
# agent_name: "customer-support-agent"
|
|
35
|
-
# model: "gemini-1.5-pro-latest"
|
|
36
|
-
# tools:
|
|
37
|
-
# - tool_type: "builtin"
|
|
38
|
-
# tool_name: "file_search"
|
|
39
|
-
# agent_card:
|
|
40
|
-
# description: "An agent that can answer questions about customer accounts."
|
|
41
|
-
# agent_card_publishing:
|
|
42
|
-
# interval_seconds: 60
|
|
43
|
-
# session_service:
|
|
44
|
-
# type: "memory"
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
### component.py
|
|
48
|
-
**Purpose:** Core component that hosts a Google ADK agent and bridges communication to A2A protocol
|
|
49
|
-
**Import:** `from solace_agent_mesh.agent.sac.component import SamAgentComponent`
|
|
50
|
-
|
|
51
|
-
**Classes:**
|
|
52
|
-
- `SamAgentComponent(**kwargs)` - Solace AI Connector component that hosts a Google ADK agent
|
|
53
|
-
- `process_event(event: Event) -> None` - Main entry point for all SAC framework events
|
|
54
|
-
- `handle_timer_event(timer_data: Dict[str, Any]) -> None` - Handles scheduled timer events for agent card publishing
|
|
55
|
-
- `handle_cache_expiry_event(cache_data: Dict[str, Any]) -> None` - Handles cache expiry events for peer agent timeouts
|
|
56
|
-
- `finalize_task_success(a2a_context: Dict) -> None` - Async method to finalize successful task completion
|
|
57
|
-
- `finalize_task_canceled(a2a_context: Dict) -> None` - Finalizes task as CANCELED
|
|
58
|
-
- `finalize_task_error(exception: Exception, a2a_context: Dict) -> None` - Async method to finalize failed tasks
|
|
59
|
-
- `cleanup() -> None` - Cleans up resources on component shutdown
|
|
60
|
-
- `set_agent_specific_state(key: str, value: Any) -> None` - Sets key-value pair in agent state dictionary
|
|
61
|
-
- `get_agent_specific_state(key: str, default: Optional[Any] = None) -> Any` - Retrieves value from agent state
|
|
62
|
-
- `get_async_loop() -> Optional[asyncio.AbstractEventLoop]` - Returns dedicated asyncio event loop
|
|
63
|
-
- `set_agent_system_instruction_string(instruction_string: str) -> None` - Sets static system prompt injection
|
|
64
|
-
- `set_agent_system_instruction_callback(callback_function: Callable) -> None` - Sets dynamic system prompt callback
|
|
65
|
-
- `get_gateway_id() -> str` - Returns unique identifier for agent host instance
|
|
66
|
-
- `submit_a2a_task(target_agent_name: str, a2a_message: A2AMessage, user_id: str, user_config: Dict[str, Any], sub_task_id: str) -> str` - Submits task to peer agent
|
|
67
|
-
- `get_agent_context() -> Dict[str, Any]` - Returns agent context for middleware interactions
|
|
68
|
-
|
|
69
|
-
**Constants/Variables:**
|
|
70
|
-
- `info: Dict` - Metadata dictionary for SAC framework
|
|
71
|
-
- `CORRELATION_DATA_PREFIX: str` - Prefix for cache keys when tracking peer requests
|
|
72
|
-
- `HOST_COMPONENT_VERSION: str` - Version string of the host component
|
|
73
|
-
|
|
74
|
-
**Usage Examples:**
|
|
75
|
-
```python
|
|
76
|
-
# Custom initialization function example
|
|
77
|
-
from solace_agent_mesh.agent.sac.component import SamAgentComponent
|
|
78
|
-
|
|
79
|
-
def initialize_my_agent(host_component: SamAgentComponent, config: dict):
|
|
80
|
-
"""Custom initialization function for the agent."""
|
|
81
|
-
# Store database connection in agent state
|
|
82
|
-
db_connection = create_database_connection(config.get('db_url'))
|
|
83
|
-
host_component.set_agent_specific_state('db_connection', db_connection)
|
|
84
|
-
|
|
85
|
-
# Set custom system instruction
|
|
86
|
-
host_component.set_agent_system_instruction_string(
|
|
87
|
-
"You are a specialized customer service agent with access to our database."
|
|
88
|
-
)
|
|
89
|
-
|
|
90
|
-
# Tool accessing agent state
|
|
91
|
-
def my_custom_tool(host_component: SamAgentComponent, query: str) -> str:
|
|
92
|
-
"""Tool that uses stored database connection."""
|
|
93
|
-
db_connection = host_component.get_agent_specific_state('db_connection')
|
|
94
|
-
if db_connection:
|
|
95
|
-
return db_connection.execute_query(query)
|
|
96
|
-
return "Database not available"
|
|
97
|
-
|
|
98
|
-
# Scheduling async work from synchronous code
|
|
99
|
-
def schedule_background_task(host_component: SamAgentComponent):
|
|
100
|
-
"""Schedule async work on the component's event loop."""
|
|
101
|
-
loop = host_component.get_async_loop()
|
|
102
|
-
if loop:
|
|
103
|
-
asyncio.run_coroutine_threadsafe(my_async_task(), loop)
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
### patch_adk.py
|
|
107
|
-
**Purpose:** Contains runtime patches for the Google ADK library to enhance behavior
|
|
108
|
-
**Import:** `from solace_agent_mesh.agent.sac.patch_adk import patch_adk`
|
|
109
|
-
|
|
110
|
-
**Functions:**
|
|
111
|
-
- `patch_adk() -> None` - Applies all necessary patches to the ADK library
|
|
112
|
-
|
|
113
|
-
**Usage Examples:**
|
|
114
|
-
```python
|
|
115
|
-
from solace_agent_mesh.agent.sac.patch_adk import patch_adk
|
|
116
|
-
|
|
117
|
-
# Apply patches before using ADK
|
|
118
|
-
patch_adk()
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
### task_execution_context.py
|
|
122
|
-
**Purpose:** State management class for single, in-flight agent tasks
|
|
123
|
-
**Import:** `from solace_agent_mesh.agent.sac.task_execution_context import TaskExecutionContext`
|
|
124
|
-
|
|
125
|
-
**Classes:**
|
|
126
|
-
- `TaskExecutionContext(task_id: str, a2a_context: Dict[str, Any])` - Encapsulates runtime state for a single agent task
|
|
127
|
-
- `cancel() -> None` - Signals that the task should be cancelled
|
|
128
|
-
- `is_cancelled() -> bool` - Checks if cancellation event has been set
|
|
129
|
-
- `append_to_streaming_buffer(text: str) -> None` - Appends text to streaming buffer
|
|
130
|
-
- `flush_streaming_buffer() -> str` - Returns and clears streaming buffer content
|
|
131
|
-
- `get_streaming_buffer_content() -> str` - Returns buffer content without clearing
|
|
132
|
-
- `append_to_run_based_buffer(text: str) -> None` - Appends text to run-based response buffer
|
|
133
|
-
- `register_peer_sub_task(sub_task_id: str, correlation_data: Dict[str, Any]) -> None` - Adds peer sub-task tracking
|
|
134
|
-
- `claim_sub_task_completion(sub_task_id: str) -> Optional[Dict[str, Any]]` - Atomically retrieves and removes sub-task data
|
|
135
|
-
- `register_parallel_call_sent(invocation_id: str) -> None` - Registers new parallel tool call
|
|
136
|
-
- `handle_peer_timeout(sub_task_id: str, correlation_data: Dict, timeout_sec: int, invocation_id: str) -> bool` - Handles peer timeout
|
|
137
|
-
- `record_parallel_result(result: Dict, invocation_id: str) -> bool` - Records parallel tool call result
|
|
138
|
-
- `clear_parallel_invocation_state(invocation_id: str) -> None` - Removes completed invocation state
|
|
139
|
-
- `register_produced_artifact(filename: str, version: int) -> None` - Tracks newly created artifacts
|
|
140
|
-
- `add_artifact_signal(signal: Dict[str, Any]) -> None` - Adds artifact return signal
|
|
141
|
-
- `get_and_clear_artifact_signals() -> List[Dict[str, Any]]` - Retrieves and clears artifact signals
|
|
142
|
-
- `set_event_loop(loop: asyncio.AbstractEventLoop) -> None` - Stores event loop reference
|
|
143
|
-
- `get_event_loop() -> Optional[asyncio.AbstractEventLoop]` - Retrieves stored event loop
|
|
144
|
-
- `record_token_usage(input_tokens: int, output_tokens: int, model: str, source: str = "agent", tool_name: Optional[str] = None, cached_input_tokens: int = 0) -> None` - Records token usage for LLM calls
|
|
145
|
-
- `get_token_usage_summary() -> Dict[str, Any]` - Returns summary of all token usage for the task
|
|
146
|
-
|
|
147
|
-
**Usage Examples:**
|
|
148
|
-
```python
|
|
149
|
-
from solace_agent_mesh.agent.sac.task_execution_context import TaskExecutionContext
|
|
150
|
-
|
|
151
|
-
# Create task context
|
|
152
|
-
a2a_context = {
|
|
153
|
-
"logical_task_id": "task-123",
|
|
154
|
-
"user_id": "user-456",
|
|
155
|
-
"session_id": "session-789"
|
|
156
|
-
}
|
|
157
|
-
task_context = TaskExecutionContext("task-123", a2a_context)
|
|
158
|
-
|
|
159
|
-
# Use streaming buffer
|
|
160
|
-
task_context.append_to_streaming_buffer("Hello ")
|
|
161
|
-
task_context.append_to_streaming_buffer("world!")
|
|
162
|
-
content = task_context.flush_streaming_buffer() # Returns "Hello world!"
|
|
163
|
-
|
|
164
|
-
# Track peer sub-tasks
|
|
165
|
-
correlation_data = {
|
|
166
|
-
"peer_agent_name": "math-agent",
|
|
167
|
-
"adk_function_call_id": "call-123"
|
|
168
|
-
}
|
|
169
|
-
task_context.register_peer_sub_task("sub-task-456", correlation_data)
|
|
170
|
-
|
|
171
|
-
# Handle completion
|
|
172
|
-
completed_data = task_context.claim_sub_task_completion("sub-task-456")
|
|
173
|
-
if completed_data:
|
|
174
|
-
print(f"Sub-task completed: {completed_data}")
|
|
175
|
-
|
|
176
|
-
# Track token usage
|
|
177
|
-
task_context.record_token_usage(
|
|
178
|
-
input_tokens=100,
|
|
179
|
-
output_tokens=50,
|
|
180
|
-
model="gemini-1.5-pro",
|
|
181
|
-
source="agent"
|
|
182
|
-
)
|
|
183
|
-
|
|
184
|
-
# Get usage summary
|
|
185
|
-
usage = task_context.get_token_usage_summary()
|
|
186
|
-
print(f"Total tokens used: {usage['total_tokens']}")
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
# content_hash: 27b0000d250131d578d28ab8c4d06c2e2084d888b47102e9b3b133adbc61a169
|
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
# LLM Summary Detail File
|
|
2
|
-
|
|
3
|
-
This file is a concatenation of all individual *llm.txt files found in the 'sac' directory tree. Each section below corresponds to a specific directory's summary file.
|
|
4
|
-
|
|
5
|
-
================================================================================
|
|
6
|
-
|
|
7
|
-
## Section 1: solace_agent_mesh/agent/sac/sac_llm.txt
|
|
8
|
-
|
|
9
|
-
**Source file:** `solace_agent_mesh/agent/sac/sac_llm.txt`
|
|
10
|
-
|
|
11
|
-
# DEVELOPER GUIDE for the directory: sac
|
|
12
|
-
|
|
13
|
-
## Quick Summary
|
|
14
|
-
The `sac` (Solace AI Connector) directory provides the core implementation for hosting a Google ADK (Agent Development Kit) agent within the Solace AI Connector framework. It acts as a bridge, enabling ADK agents to communicate using the A2A (Agent-to-Agent) protocol over Solace messaging. This allows for the creation of distributed, collaborative agent systems where agents can delegate tasks, share information, and work together to solve complex problems.
|
|
15
|
-
|
|
16
|
-
## Files Overview
|
|
17
|
-
- `__init__.py` - Empty package marker file
|
|
18
|
-
- `app.py` - Custom SAC App class that automatically configures Solace subscriptions and broker settings for A2A communication
|
|
19
|
-
- `component.py` - Main SAC Component that hosts the ADK agent, manages its lifecycle, and handles all A2A protocol messaging
|
|
20
|
-
- `patch_adk.py` - Runtime patches for the Google ADK library to enhance or correct its behavior
|
|
21
|
-
- `task_execution_context.py` - State management class that encapsulates all runtime information for a single, in-flight A2A task
|
|
22
|
-
|
|
23
|
-
## Developer API Reference
|
|
24
|
-
|
|
25
|
-
### app.py
|
|
26
|
-
**Purpose:** Provides a custom SAC App class that simplifies the configuration of an A2A agent
|
|
27
|
-
**Import:** `from solace_agent_mesh.agent.sac.app import SamAgentApp`
|
|
28
|
-
|
|
29
|
-
**Classes:**
|
|
30
|
-
- `SamAgentApp(app_info: Dict[str, Any], **kwargs)` - Custom App class for SAM Agent Host with namespace prefixing and automatic subscription generation
|
|
31
|
-
- `app_schema: Dict` - Class attribute defining comprehensive configuration schema for agent host validation
|
|
32
|
-
|
|
33
|
-
**Constants/Variables:**
|
|
34
|
-
- `info: Dict[str, str]` - Metadata dictionary about the SamAgentApp class for SAC framework discovery
|
|
35
|
-
|
|
36
|
-
**Usage Examples:**
|
|
37
|
-
```python
|
|
38
|
-
# SamAgentApp is typically instantiated by the SAC framework from YAML config
|
|
39
|
-
# Example agent-config.yaml:
|
|
40
|
-
# app:
|
|
41
|
-
# class_name: solace_agent_mesh.agent.sac.app.SamAgentApp
|
|
42
|
-
# app_config:
|
|
43
|
-
# namespace: "my-org/production"
|
|
44
|
-
# agent_name: "customer-support-agent"
|
|
45
|
-
# model: "gemini-1.5-pro-latest"
|
|
46
|
-
# tools:
|
|
47
|
-
# - tool_type: "builtin"
|
|
48
|
-
# tool_name: "file_search"
|
|
49
|
-
# agent_card:
|
|
50
|
-
# description: "An agent that can answer questions about customer accounts."
|
|
51
|
-
# agent_card_publishing:
|
|
52
|
-
# interval_seconds: 60
|
|
53
|
-
# session_service:
|
|
54
|
-
# type: "memory"
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### component.py
|
|
58
|
-
**Purpose:** Core component that hosts a Google ADK agent and bridges communication to A2A protocol
|
|
59
|
-
**Import:** `from solace_agent_mesh.agent.sac.component import SamAgentComponent`
|
|
60
|
-
|
|
61
|
-
**Classes:**
|
|
62
|
-
- `SamAgentComponent(**kwargs)` - Solace AI Connector component that hosts a Google ADK agent
|
|
63
|
-
- `process_event(event: Event) -> None` - Main entry point for all SAC framework events
|
|
64
|
-
- `handle_timer_event(timer_data: Dict[str, Any]) -> None` - Handles scheduled timer events for agent card publishing
|
|
65
|
-
- `handle_cache_expiry_event(cache_data: Dict[str, Any]) -> None` - Handles cache expiry events for peer agent timeouts
|
|
66
|
-
- `finalize_task_success(a2a_context: Dict) -> None` - Async method to finalize successful task completion
|
|
67
|
-
- `finalize_task_canceled(a2a_context: Dict) -> None` - Finalizes task as CANCELED
|
|
68
|
-
- `finalize_task_error(exception: Exception, a2a_context: Dict) -> None` - Async method to finalize failed tasks
|
|
69
|
-
- `cleanup() -> None` - Cleans up resources on component shutdown
|
|
70
|
-
- `set_agent_specific_state(key: str, value: Any) -> None` - Sets key-value pair in agent state dictionary
|
|
71
|
-
- `get_agent_specific_state(key: str, default: Optional[Any] = None) -> Any` - Retrieves value from agent state
|
|
72
|
-
- `get_async_loop() -> Optional[asyncio.AbstractEventLoop]` - Returns dedicated asyncio event loop
|
|
73
|
-
- `set_agent_system_instruction_string(instruction_string: str) -> None` - Sets static system prompt injection
|
|
74
|
-
- `set_agent_system_instruction_callback(callback_function: Callable) -> None` - Sets dynamic system prompt callback
|
|
75
|
-
- `get_gateway_id() -> str` - Returns unique identifier for agent host instance
|
|
76
|
-
- `submit_a2a_task(target_agent_name: str, a2a_message: A2AMessage, user_id: str, user_config: Dict[str, Any], sub_task_id: str) -> str` - Submits task to peer agent
|
|
77
|
-
- `get_agent_context() -> Dict[str, Any]` - Returns agent context for middleware interactions
|
|
78
|
-
|
|
79
|
-
**Constants/Variables:**
|
|
80
|
-
- `info: Dict` - Metadata dictionary for SAC framework
|
|
81
|
-
- `CORRELATION_DATA_PREFIX: str` - Prefix for cache keys when tracking peer requests
|
|
82
|
-
- `HOST_COMPONENT_VERSION: str` - Version string of the host component
|
|
83
|
-
|
|
84
|
-
**Usage Examples:**
|
|
85
|
-
```python
|
|
86
|
-
# Custom initialization function example
|
|
87
|
-
from solace_agent_mesh.agent.sac.component import SamAgentComponent
|
|
88
|
-
|
|
89
|
-
def initialize_my_agent(host_component: SamAgentComponent, config: dict):
|
|
90
|
-
"""Custom initialization function for the agent."""
|
|
91
|
-
# Store database connection in agent state
|
|
92
|
-
db_connection = create_database_connection(config.get('db_url'))
|
|
93
|
-
host_component.set_agent_specific_state('db_connection', db_connection)
|
|
94
|
-
|
|
95
|
-
# Set custom system instruction
|
|
96
|
-
host_component.set_agent_system_instruction_string(
|
|
97
|
-
"You are a specialized customer service agent with access to our database."
|
|
98
|
-
)
|
|
99
|
-
|
|
100
|
-
# Tool accessing agent state
|
|
101
|
-
def my_custom_tool(host_component: SamAgentComponent, query: str) -> str:
|
|
102
|
-
"""Tool that uses stored database connection."""
|
|
103
|
-
db_connection = host_component.get_agent_specific_state('db_connection')
|
|
104
|
-
if db_connection:
|
|
105
|
-
return db_connection.execute_query(query)
|
|
106
|
-
return "Database not available"
|
|
107
|
-
|
|
108
|
-
# Scheduling async work from synchronous code
|
|
109
|
-
def schedule_background_task(host_component: SamAgentComponent):
|
|
110
|
-
"""Schedule async work on the component's event loop."""
|
|
111
|
-
loop = host_component.get_async_loop()
|
|
112
|
-
if loop:
|
|
113
|
-
asyncio.run_coroutine_threadsafe(my_async_task(), loop)
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### patch_adk.py
|
|
117
|
-
**Purpose:** Contains runtime patches for the Google ADK library to enhance behavior
|
|
118
|
-
**Import:** `from solace_agent_mesh.agent.sac.patch_adk import patch_adk`
|
|
119
|
-
|
|
120
|
-
**Functions:**
|
|
121
|
-
- `patch_adk() -> None` - Applies all necessary patches to the ADK library
|
|
122
|
-
|
|
123
|
-
**Usage Examples:**
|
|
124
|
-
```python
|
|
125
|
-
from solace_agent_mesh.agent.sac.patch_adk import patch_adk
|
|
126
|
-
|
|
127
|
-
# Apply patches before using ADK
|
|
128
|
-
patch_adk()
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
### task_execution_context.py
|
|
132
|
-
**Purpose:** State management class for single, in-flight agent tasks
|
|
133
|
-
**Import:** `from solace_agent_mesh.agent.sac.task_execution_context import TaskExecutionContext`
|
|
134
|
-
|
|
135
|
-
**Classes:**
|
|
136
|
-
- `TaskExecutionContext(task_id: str, a2a_context: Dict[str, Any])` - Encapsulates runtime state for a single agent task
|
|
137
|
-
- `cancel() -> None` - Signals that the task should be cancelled
|
|
138
|
-
- `is_cancelled() -> bool` - Checks if cancellation event has been set
|
|
139
|
-
- `append_to_streaming_buffer(text: str) -> None` - Appends text to streaming buffer
|
|
140
|
-
- `flush_streaming_buffer() -> str` - Returns and clears streaming buffer content
|
|
141
|
-
- `get_streaming_buffer_content() -> str` - Returns buffer content without clearing
|
|
142
|
-
- `append_to_run_based_buffer(text: str) -> None` - Appends text to run-based response buffer
|
|
143
|
-
- `register_peer_sub_task(sub_task_id: str, correlation_data: Dict[str, Any]) -> None` - Adds peer sub-task tracking
|
|
144
|
-
- `claim_sub_task_completion(sub_task_id: str) -> Optional[Dict[str, Any]]` - Atomically retrieves and removes sub-task data
|
|
145
|
-
- `register_parallel_call_sent(invocation_id: str) -> None` - Registers new parallel tool call
|
|
146
|
-
- `handle_peer_timeout(sub_task_id: str, correlation_data: Dict, timeout_sec: int, invocation_id: str) -> bool` - Handles peer timeout
|
|
147
|
-
- `record_parallel_result(result: Dict, invocation_id: str) -> bool` - Records parallel tool call result
|
|
148
|
-
- `clear_parallel_invocation_state(invocation_id: str) -> None` - Removes completed invocation state
|
|
149
|
-
- `register_produced_artifact(filename: str, version: int) -> None` - Tracks newly created artifacts
|
|
150
|
-
- `add_artifact_signal(signal: Dict[str, Any]) -> None` - Adds artifact return signal
|
|
151
|
-
- `get_and_clear_artifact_signals() -> List[Dict[str, Any]]` - Retrieves and clears artifact signals
|
|
152
|
-
- `set_event_loop(loop: asyncio.AbstractEventLoop) -> None` - Stores event loop reference
|
|
153
|
-
- `get_event_loop() -> Optional[asyncio.AbstractEventLoop]` - Retrieves stored event loop
|
|
154
|
-
- `record_token_usage(input_tokens: int, output_tokens: int, model: str, source: str = "agent", tool_name: Optional[str] = None, cached_input_tokens: int = 0) -> None` - Records token usage for LLM calls
|
|
155
|
-
- `get_token_usage_summary() -> Dict[str, Any]` - Returns summary of all token usage for the task
|
|
156
|
-
|
|
157
|
-
**Usage Examples:**
|
|
158
|
-
```python
|
|
159
|
-
from solace_agent_mesh.agent.sac.task_execution_context import TaskExecutionContext
|
|
160
|
-
|
|
161
|
-
# Create task context
|
|
162
|
-
a2a_context = {
|
|
163
|
-
"logical_task_id": "task-123",
|
|
164
|
-
"user_id": "user-456",
|
|
165
|
-
"session_id": "session-789"
|
|
166
|
-
}
|
|
167
|
-
task_context = TaskExecutionContext("task-123", a2a_context)
|
|
168
|
-
|
|
169
|
-
# Use streaming buffer
|
|
170
|
-
task_context.append_to_streaming_buffer("Hello ")
|
|
171
|
-
task_context.append_to_streaming_buffer("world!")
|
|
172
|
-
content = task_context.flush_streaming_buffer() # Returns "Hello world!"
|
|
173
|
-
|
|
174
|
-
# Track peer sub-tasks
|
|
175
|
-
correlation_data = {
|
|
176
|
-
"peer_agent_name": "math-agent",
|
|
177
|
-
"adk_function_call_id": "call-123"
|
|
178
|
-
}
|
|
179
|
-
task_context.register_peer_sub_task("sub-task-456", correlation_data)
|
|
180
|
-
|
|
181
|
-
# Handle completion
|
|
182
|
-
completed_data = task_context.claim_sub_task_completion("sub-task-456")
|
|
183
|
-
if completed_data:
|
|
184
|
-
print(f"Sub-task completed: {completed_data}")
|
|
185
|
-
|
|
186
|
-
# Track token usage
|
|
187
|
-
task_context.record_token_usage(
|
|
188
|
-
input_tokens=100,
|
|
189
|
-
output_tokens=50,
|
|
190
|
-
model="gemini-1.5-pro",
|
|
191
|
-
source="agent"
|
|
192
|
-
)
|
|
193
|
-
|
|
194
|
-
# Get usage summary
|
|
195
|
-
usage = task_context.get_token_usage_summary()
|
|
196
|
-
print(f"Total tokens used: {usage['total_tokens']}")
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
================================================================================
|
|
200
|
-
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
## Quick Summary
|
|
2
|
-
The `testing` directory provides utilities for testing the A2A (Agent-to-Agent) framework, with a focus on debugging tools that help developers understand test failures by providing readable representations of agent event histories.
|
|
3
|
-
|
|
4
|
-
## Files Overview
|
|
5
|
-
- `__init__.py` - Package initialization file marking the directory as a Python module
|
|
6
|
-
- `debug_utils.py` - Debugging utilities including pretty-printing for A2A event history
|
|
7
|
-
- `testing_llm.txt` - Documentation file (not a code module)
|
|
8
|
-
|
|
9
|
-
## Developer API Reference
|
|
10
|
-
|
|
11
|
-
### debug_utils.py
|
|
12
|
-
**Purpose:** Provides debugging utilities for the declarative test framework, including a pretty-printer for A2A event history
|
|
13
|
-
**Import:** `from solace_agent_mesh.agent.testing.debug_utils import pretty_print_event_history`
|
|
14
|
-
|
|
15
|
-
**Functions:**
|
|
16
|
-
- `pretty_print_event_history(event_history: List[Dict[str, Any]], max_string_length: int = 200) -> None` - Formats and prints a list of A2A event payloads for debugging, intelligently parsing different event types and truncating long strings for readability
|
|
17
|
-
|
|
18
|
-
**Usage Examples:**
|
|
19
|
-
```python
|
|
20
|
-
# Import the debugging utility
|
|
21
|
-
from solace_agent_mesh.agent.testing.debug_utils import pretty_print_event_history
|
|
22
|
-
from typing import List, Dict, Any
|
|
23
|
-
|
|
24
|
-
# Example: Debug a failed test by printing event history
|
|
25
|
-
event_history: List[Dict[str, Any]] = [
|
|
26
|
-
{
|
|
27
|
-
"result": {
|
|
28
|
-
"status": {
|
|
29
|
-
"state": "EXECUTING",
|
|
30
|
-
"message": {
|
|
31
|
-
"parts": [
|
|
32
|
-
{"type": "text", "text": "Processing your request..."}
|
|
33
|
-
]
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
"final": False
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"error": {
|
|
41
|
-
"code": "TIMEOUT_ERROR",
|
|
42
|
-
"message": "Request timed out after 30 seconds"
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
]
|
|
46
|
-
|
|
47
|
-
# Print formatted event history for debugging
|
|
48
|
-
pretty_print_event_history(event_history)
|
|
49
|
-
|
|
50
|
-
# Print with custom string truncation length
|
|
51
|
-
pretty_print_event_history(event_history, max_string_length=100)
|
|
52
|
-
|
|
53
|
-
# Handle empty event history (when test fails before any events)
|
|
54
|
-
pretty_print_event_history([])
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
# content_hash: 890ba89aa47c5be30f5ec9cdbb4a05e9ee3bd022e56a56fcc4feea72aac653e8
|