solace-agent-mesh 1.6.3__py3-none-any.whl → 1.7.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of solace-agent-mesh might be problematic. Click here for more details.
- solace_agent_mesh/agent/adk/adk_llm.txt +12 -18
- solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt +1 -1
- solace_agent_mesh/agent/adk/callbacks.py +138 -20
- solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +2 -0
- solace_agent_mesh/agent/adk/models/lite_llm.py +38 -5
- solace_agent_mesh/agent/adk/models/models_llm.txt +82 -35
- solace_agent_mesh/agent/adk/runner.py +9 -0
- solace_agent_mesh/agent/adk/stream_parser.py +6 -1
- solace_agent_mesh/agent/adk/tool_wrapper.py +3 -0
- solace_agent_mesh/agent/agent_llm.txt +61 -70
- solace_agent_mesh/agent/protocol/event_handlers.py +29 -1
- solace_agent_mesh/agent/protocol/protocol_llm.txt +1 -1
- solace_agent_mesh/agent/proxies/a2a/a2a_llm.txt +190 -0
- solace_agent_mesh/agent/proxies/base/base_llm.txt +148 -0
- solace_agent_mesh/agent/proxies/proxies_llm.txt +283 -0
- solace_agent_mesh/agent/sac/app.py +22 -0
- solace_agent_mesh/agent/sac/component.py +76 -40
- solace_agent_mesh/agent/sac/sac_llm.txt +1 -1
- solace_agent_mesh/agent/sac/task_execution_context.py +21 -0
- solace_agent_mesh/agent/testing/testing_llm.txt +2 -1
- solace_agent_mesh/agent/tools/builtin_artifact_tools.py +13 -148
- solace_agent_mesh/agent/tools/dynamic_tool.py +2 -0
- solace_agent_mesh/agent/tools/tools_llm.txt +93 -80
- solace_agent_mesh/agent/tools/tools_llm_detail.txt +3 -2
- solace_agent_mesh/agent/utils/artifact_helpers.py +4 -0
- solace_agent_mesh/agent/utils/utils_llm.txt +16 -2
- solace_agent_mesh/assets/docs/404.html +3 -3
- solace_agent_mesh/assets/docs/assets/js/05749d90.c70b2be9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/15ba94aa.92fea363.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/15e40e79.36003774.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2987107d.a80604f9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3ac1795d.e4870a49.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3ff0015d.b63ee53a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/547e15cc.2f7790c1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5c2bd65f.45b32c2b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/631738c7.fa471607.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/64195356.c498c4d0.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6a520c9d.b6e3f2ce.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.a5b36a60.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/71da7b71.374b9d54.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8024126c.fa0e7186.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8b032486.91a91afc.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/94e8668d.09ed9234.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/{ab9708a8.3e6dd091.js → ab9708a8.245ae0ef.js} +1 -1
- solace_agent_mesh/assets/docs/assets/js/ad87452a.9d73dad6.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/cbe2e9ea.f902fad8.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/da0b5bad.b62f7b08.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/db5d6442.3daf1696.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.c9c50c7b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e3d9abda.d11c67a7.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/{e6f9706b.e74a984d.js → e6f9706b.045d0fa1.js} +1 -1
- solace_agent_mesh/assets/docs/assets/js/e92d0134.3bda61dd.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/f284c35a.5099c51e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ff4d71f2.74710fc1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/main.e6488e8b.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/runtime~main.d9606d6a.js +1 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/artifact-management/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/audio-tools/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/data-analysis-tools/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/embeds/index.html +18 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/cli/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +5 -5
- solace_agent_mesh/assets/docs/docs/documentation/components/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/plugins/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/projects/index.html +196 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/proxies/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +5 -5
- solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +6 -7
- solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes-deployment/index.html +47 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/logging/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/create-agents/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/create-gateways/index.html +160 -169
- solace_agent_mesh/assets/docs/docs/documentation/developing/creating-python-tools/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/evaluations/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/bedrock-agents/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/custom-agent/index.html +5 -5
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/event-mesh-gateway/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mcp-integration/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mongodb-integration/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rag-integration/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rest-gateway/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/sql-database/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/agent-builder/index.html +59 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/connectors/index.html +62 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +10 -6
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/rbac-setup-guide/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/secure-user-delegated-access/index.html +440 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +27 -4
- 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 +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +5 -4
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +3 -3
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +3 -3
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/artifact-storage/index.html +290 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/configurations/index.html +9 -9
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/session-storage/index.html +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 +3 -3
- solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-technical-migration-map/index.html +3 -3
- solace_agent_mesh/assets/docs/lunr-index-1762189824009.json +1 -0
- solace_agent_mesh/assets/docs/lunr-index.json +1 -1
- solace_agent_mesh/assets/docs/search-doc-1762189824009.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/docs_cmd.py +4 -1
- solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +1 -1
- solace_agent_mesh/client/webui/frontend/static/assets/{authCallback-D4_RMYRh.js → authCallback-tcIFZLis.js} +1 -1
- solace_agent_mesh/client/webui/frontend/static/assets/{client-UZ3qU6Bq.js → client-CRYdKo2Q.js} +3 -3
- solace_agent_mesh/client/webui/frontend/static/assets/main-CojeY_1w.css +1 -0
- solace_agent_mesh/client/webui/frontend/static/assets/main-ILja9MCG.js +353 -0
- solace_agent_mesh/client/webui/frontend/static/assets/vendor-CINwxvwV.js +470 -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/common/a2a/a2a_llm.txt +13 -20
- solace_agent_mesh/common/a2a/protocol.py +5 -0
- solace_agent_mesh/common/a2a/types.py +1 -0
- solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +49 -11
- 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/a2a_spec/schemas/schemas_llm.txt +26 -9
- solace_agent_mesh/common/common_llm.txt +13 -34
- solace_agent_mesh/common/data_parts.py +20 -4
- solace_agent_mesh/common/middleware/middleware_llm.txt +1 -1
- solace_agent_mesh/common/sac/sac_llm.txt +1 -1
- solace_agent_mesh/common/sam_events/sam_events_llm.txt +1 -1
- solace_agent_mesh/common/services/employee_service.py +1 -1
- solace_agent_mesh/common/services/providers/providers_llm.txt +3 -2
- solace_agent_mesh/common/services/services_llm.txt +9 -4
- solace_agent_mesh/common/utils/embeds/constants.py +1 -0
- solace_agent_mesh/common/utils/embeds/embeds_llm.txt +1 -1
- solace_agent_mesh/common/utils/embeds/modifiers.py +2 -1
- solace_agent_mesh/common/utils/embeds/resolver.py +58 -6
- solace_agent_mesh/common/utils/embeds/types.py +8 -0
- solace_agent_mesh/common/utils/utils_llm.txt +5 -6
- solace_agent_mesh/core_a2a/core_a2a_llm.txt +1 -1
- solace_agent_mesh/gateway/adapter/__init__.py +1 -0
- solace_agent_mesh/gateway/adapter/base.py +143 -0
- solace_agent_mesh/gateway/adapter/types.py +221 -0
- solace_agent_mesh/gateway/base/app.py +29 -2
- solace_agent_mesh/gateway/base/base_llm.txt +10 -8
- solace_agent_mesh/gateway/base/component.py +573 -142
- solace_agent_mesh/gateway/gateway_llm.txt +55 -59
- 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 +650 -0
- solace_agent_mesh/gateway/http_sse/alembic/alembic_llm.txt +99 -49
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_fulltext_search_indexes.py +92 -0
- 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 +150 -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/versions_llm.txt +26 -20
- solace_agent_mesh/gateway/http_sse/app.py +0 -14
- solace_agent_mesh/gateway/http_sse/component.py +17 -56
- solace_agent_mesh/gateway/http_sse/components/components_llm.txt +1 -1
- solace_agent_mesh/gateway/http_sse/dependencies.py +21 -3
- solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +8 -8
- solace_agent_mesh/gateway/http_sse/main.py +23 -5
- solace_agent_mesh/gateway/http_sse/repository/__init__.py +19 -1
- solace_agent_mesh/gateway/http_sse/repository/entities/entities_llm.txt +56 -98
- 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 +23 -1
- solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +47 -0
- solace_agent_mesh/gateway/http_sse/repository/interfaces.py +112 -4
- solace_agent_mesh/gateway/http_sse/repository/models/__init__.py +9 -1
- solace_agent_mesh/gateway/http_sse/repository/models/models_llm.txt +51 -60
- 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/session_model.py +7 -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/repository_llm.txt +125 -157
- solace_agent_mesh/gateway/http_sse/repository/session_repository.py +269 -8
- solace_agent_mesh/gateway/http_sse/routers/artifacts.py +143 -51
- solace_agent_mesh/gateway/http_sse/routers/config.py +69 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/dto_llm.txt +198 -94
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/project_requests.py +48 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/requests_llm.txt +68 -18
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/session_requests.py +13 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/project_responses.py +30 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/responses_llm.txt +51 -35
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +2 -0
- solace_agent_mesh/gateway/http_sse/routers/feedback.py +133 -2
- solace_agent_mesh/gateway/http_sse/routers/projects.py +542 -0
- solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +9 -11
- solace_agent_mesh/gateway/http_sse/routers/sessions.py +154 -3
- solace_agent_mesh/gateway/http_sse/routers/tasks.py +296 -4
- solace_agent_mesh/gateway/http_sse/services/project_service.py +403 -0
- solace_agent_mesh/gateway/http_sse/services/services_llm.txt +16 -10
- solace_agent_mesh/gateway/http_sse/services/session_service.py +178 -6
- solace_agent_mesh/gateway/http_sse/shared/exception_handlers.py +2 -3
- solace_agent_mesh/gateway/http_sse/shared/shared_llm.txt +48 -14
- solace_agent_mesh/solace_agent_mesh_llm.txt +1 -1
- {solace_agent_mesh-1.6.3.dist-info → solace_agent_mesh-1.7.0.dist-info}/METADATA +3 -5
- {solace_agent_mesh-1.6.3.dist-info → solace_agent_mesh-1.7.0.dist-info}/RECORD +218 -175
- solace_agent_mesh/assets/docs/assets/js/15ba94aa.932dd2db.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/5c2bd65f.eda4bcb2.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/631738c7.7c4594c9.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/71da7b71.ddbdfbe2.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/8024126c.56e59919.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/94e8668d.3b883666.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/e92d0134.4f395c6b.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/f284c35a.720d2ef2.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/ff4d71f2.15b02f97.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/main.ed05b14d.js +0 -2
- solace_agent_mesh/assets/docs/assets/js/runtime~main.a8a75e0b.js +0 -1
- solace_agent_mesh/assets/docs/lunr-index-1761744323675.json +0 -1
- solace_agent_mesh/assets/docs/search-doc-1761744323675.json +0 -1
- solace_agent_mesh/client/webui/frontend/static/assets/main--3yJYl7S.css +0 -1
- solace_agent_mesh/client/webui/frontend/static/assets/main-DojKHS49.js +0 -342
- solace_agent_mesh/client/webui/frontend/static/assets/vendor-DSqhjwq_.js +0 -405
- /solace_agent_mesh/assets/docs/assets/js/{main.ed05b14d.js.LICENSE.txt → main.e6488e8b.js.LICENSE.txt} +0 -0
- {solace_agent_mesh-1.6.3.dist-info → solace_agent_mesh-1.7.0.dist-info}/WHEEL +0 -0
- {solace_agent_mesh-1.6.3.dist-info → solace_agent_mesh-1.7.0.dist-info}/entry_points.txt +0 -0
- {solace_agent_mesh-1.6.3.dist-info → solace_agent_mesh-1.7.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/assets/favicon-BLgzUch9.ico" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>Solace Agent Mesh</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/authCallback-
|
|
9
|
-
<link rel="modulepreload" crossorigin href="/assets/vendor-
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/client-
|
|
8
|
+
<script type="module" crossorigin src="/assets/authCallback-tcIFZLis.js"></script>
|
|
9
|
+
<link rel="modulepreload" crossorigin href="/assets/vendor-CINwxvwV.js">
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/client-CRYdKo2Q.js">
|
|
11
11
|
</head>
|
|
12
12
|
<body>
|
|
13
13
|
<div id="root"></div>
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/assets/favicon-BLgzUch9.ico" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>Solace Agent Mesh</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/main-
|
|
9
|
-
<link rel="modulepreload" crossorigin href="/assets/vendor-
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/client-
|
|
11
|
-
<link rel="stylesheet" crossorigin href="/assets/main
|
|
8
|
+
<script type="module" crossorigin src="/assets/main-ILja9MCG.js"></script>
|
|
9
|
+
<link rel="modulepreload" crossorigin href="/assets/vendor-CINwxvwV.js">
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/client-CRYdKo2Q.js">
|
|
11
|
+
<link rel="stylesheet" crossorigin href="/assets/main-CojeY_1w.css">
|
|
12
12
|
</head>
|
|
13
13
|
<body>
|
|
14
14
|
<div id="root"></div>
|
|
@@ -34,6 +34,8 @@ This file re-exports all public functions from the other modules, allowing devel
|
|
|
34
34
|
- `get_artifact_id(artifact: Artifact) -> str` - Safely retrieves the ID from an Artifact
|
|
35
35
|
- `get_artifact_name(artifact: Artifact) -> Optional[str]` - Safely retrieves the name from an Artifact
|
|
36
36
|
- `get_parts_from_artifact(artifact: Artifact) -> List[ContentPart]` - Extracts unwrapped content parts from an Artifact
|
|
37
|
+
- `is_text_only_artifact(artifact: Artifact) -> bool` - Checks if an artifact contains only TextParts
|
|
38
|
+
- `get_text_content_from_artifact(artifact: Artifact) -> List[str]` - Extracts all text content from TextParts in an artifact
|
|
37
39
|
|
|
38
40
|
**Usage Examples:**
|
|
39
41
|
```python
|
|
@@ -61,6 +63,8 @@ artifact_id = get_artifact_id(artifact)
|
|
|
61
63
|
- `get_message_from_status_update(event: TaskStatusUpdateEvent) -> Optional[Message]` - Extracts Message from TaskStatusUpdateEvent
|
|
62
64
|
- `get_data_parts_from_status_update(event: TaskStatusUpdateEvent) -> List[DataPart]` - Extracts DataPart objects from status update
|
|
63
65
|
- `get_artifact_from_artifact_update(event: TaskArtifactUpdateEvent) -> Optional[Artifact]` - Extracts Artifact from TaskArtifactUpdateEvent
|
|
66
|
+
- `is_task_status_update(obj: Any) -> bool` - Checks if an object is a TaskStatusUpdateEvent
|
|
67
|
+
- `is_task_artifact_update(obj: Any) -> bool` - Checks if an object is a TaskArtifactUpdateEvent
|
|
64
68
|
|
|
65
69
|
**Usage Examples:**
|
|
66
70
|
```python
|
|
@@ -106,6 +110,11 @@ status_event = create_status_update(
|
|
|
106
110
|
- `get_bytes_from_file_part(part: FilePart) -> Optional[bytes]` - Gets decoded bytes from FilePart
|
|
107
111
|
- `get_filename_from_file_part(part: FilePart) -> Optional[str]` - Gets filename from FilePart
|
|
108
112
|
- `get_mimetype_from_file_part(part: FilePart) -> Optional[str]` - Gets MIME type from FilePart
|
|
113
|
+
- `is_text_part(part: Part) -> bool` - Checks if a Part contains a TextPart
|
|
114
|
+
- `is_file_part(part: Part) -> bool` - Checks if a Part contains a FilePart
|
|
115
|
+
- `is_data_part(part: Part) -> bool` - Checks if a Part contains a DataPart
|
|
116
|
+
- `is_file_part_bytes(part: FilePart) -> bool` - Checks if a FilePart uses FileWithBytes
|
|
117
|
+
- `is_file_part_uri(part: FilePart) -> bool` - Checks if a FilePart uses FileWithUri
|
|
109
118
|
|
|
110
119
|
**Usage Examples:**
|
|
111
120
|
```python
|
|
@@ -150,6 +159,8 @@ user_message = create_user_message(
|
|
|
150
159
|
- `get_client_response_topic(namespace: str, client_id: str) -> str` - Returns topic for publishing response to client
|
|
151
160
|
- `get_client_status_topic(namespace: str, client_id: str, task_id: str) -> str` - Returns topic for publishing status to client
|
|
152
161
|
- `get_client_status_subscription_topic(namespace: str, client_id: str) -> str` - Returns wildcard topic for client to receive status
|
|
162
|
+
- `get_sam_events_topic(namespace: str, category: str, action: str) -> str` - Returns SAM system events topic
|
|
163
|
+
- `get_sam_events_subscription_topic(namespace: str, category: str) -> str` - Returns SAM system events subscription topic
|
|
153
164
|
- `create_send_message_request(message: Message, task_id: str, metadata: Optional[Dict[str, Any]] = None) -> SendMessageRequest` - Creates SendMessageRequest object
|
|
154
165
|
- `create_send_streaming_message_request(message: Message, task_id: str, metadata: Optional[Dict[str, Any]] = None) -> SendStreamingMessageRequest` - Creates SendStreamingMessageRequest object
|
|
155
166
|
- `create_success_response(result: Any, request_id: Optional[Union[str, int]]) -> JSONRPCResponse` - Creates successful JSON-RPC response
|
|
@@ -159,24 +170,6 @@ user_message = create_user_message(
|
|
|
159
170
|
- `get_request_id(request: A2ARequest) -> str | int` - Gets JSON-RPC request ID
|
|
160
171
|
- `get_request_method(request: A2ARequest) -> str` - Gets JSON-RPC method name
|
|
161
172
|
- `get_message_from_send_request(request: A2ARequest) -> Optional[Message]` - Gets Message from send request
|
|
162
|
-
- `
|
|
163
|
-
- `get_response_id(response: JSONRPCResponse) -> Optional[Union[str, int]]` - Gets response ID
|
|
164
|
-
- `get_response_result(response: JSONRPCResponse) -> Optional[Any]` - Gets response result
|
|
165
|
-
- `get_response_error(response: JSONRPCResponse) -> Optional[JSONRPCError]` - Gets response error
|
|
166
|
-
- `topic_matches_subscription(topic: str, subscription: str) -> bool` - Checks if topic matches Solace subscription pattern
|
|
167
|
-
- `subscription_to_regex(subscription: str) -> str` - Converts Solace subscription to regex
|
|
168
|
-
- `extract_task_id_from_topic(topic: str, subscription_pattern: str, log_identifier: str) -> Optional[str]` - Extracts task ID from topic
|
|
173
|
+
- `
|
|
169
174
|
|
|
170
|
-
|
|
171
|
-
```python
|
|
172
|
-
from solace_agent_mesh.common.a2a.protocol import get_agent_request_topic, create_send_message_request
|
|
173
|
-
from solace_agent_mesh.common.a2a.message import create_agent_text_message
|
|
174
|
-
|
|
175
|
-
# Get topic for sending request to an agent
|
|
176
|
-
topic = get_agent_request_topic("my-namespace", "my-agent")
|
|
177
|
-
|
|
178
|
-
# Create a send message request
|
|
179
|
-
message = create_agent_text_message("Hello agent!")
|
|
180
|
-
request = create_sen
|
|
181
|
-
|
|
182
|
-
# content_hash: 9b1778648fd65100e79527a9b08867fe94c18b13a52bbe33d86f2e4a6cd62269
|
|
175
|
+
# content_hash: 71c64edf65fe99d8d5cc67d5522436b870fc5b1ead118fc5ef38689b6f26689e
|
|
@@ -188,6 +188,11 @@ def get_sam_events_topic(namespace: str, category: str, action: str) -> str:
|
|
|
188
188
|
return f"{namespace.rstrip('/')}/sam/events/{category}/{action}"
|
|
189
189
|
|
|
190
190
|
|
|
191
|
+
def get_feedback_topic(namespace: str) -> str:
|
|
192
|
+
"""Returns the topic for publishing user feedback events."""
|
|
193
|
+
return f"{namespace.rstrip('/')}/sam/v1/feedback/submit"
|
|
194
|
+
|
|
195
|
+
|
|
191
196
|
def get_sam_events_subscription_topic(namespace: str, category: str) -> str:
|
|
192
197
|
"""Returns SAM system events subscription topic."""
|
|
193
198
|
if not namespace:
|
|
@@ -35,6 +35,7 @@ class ArtifactInfo(BaseModel):
|
|
|
35
35
|
uri: Optional[str] = None
|
|
36
36
|
version: Optional[Union[int, str]] = None
|
|
37
37
|
version_count: int
|
|
38
|
+
source: Optional[str] = None # Optional: Source of the artifact (e.g., "project")
|
|
38
39
|
|
|
39
40
|
model_config = ConfigDict(populate_by_name=True)
|
|
40
41
|
|
|
@@ -7,6 +7,7 @@ The `a2a_spec` directory contains the complete Agent-to-Agent (A2A) communicatio
|
|
|
7
7
|
- **Direct files:**
|
|
8
8
|
- `a2a.json` - Complete JSON Schema specification for A2A protocol including all data types, requests, responses, and error definitions
|
|
9
9
|
- `a2a_spec_llm.txt` - Developer guide documentation for the A2A specification
|
|
10
|
+
- `a2a_spec_llm_detail.txt` - Concatenated detailed documentation from all subdirectories
|
|
10
11
|
- **Subdirectories:**
|
|
11
12
|
- `schemas/` - JSON Schema definitions for agent communication signals (progress updates, tool invocations, LLM calls, artifact creation)
|
|
12
13
|
|
|
@@ -62,6 +63,10 @@ Task {
|
|
|
62
63
|
**Purpose:** Developer documentation and usage guide for the A2A specification
|
|
63
64
|
**Import:** Documentation file for reference
|
|
64
65
|
|
|
66
|
+
#### a2a_spec_llm_detail.txt
|
|
67
|
+
**Purpose:** Comprehensive documentation combining all subdirectory guides
|
|
68
|
+
**Import:** Documentation file for reference
|
|
69
|
+
|
|
65
70
|
### Subdirectory APIs
|
|
66
71
|
|
|
67
72
|
#### schemas/
|
|
@@ -79,10 +84,10 @@ with open('solace_agent_mesh/common/a2a_spec/schemas/agent_progress_update.json'
|
|
|
79
84
|
|
|
80
85
|
**Available Schemas:**
|
|
81
86
|
- `agent_progress_update.json` - General progress status messages
|
|
82
|
-
- `artifact_creation_progress.json` - File/artifact creation tracking with chunked data
|
|
83
|
-
- `llm_invocation.json` - LLM model invocation signals
|
|
87
|
+
- `artifact_creation_progress.json` - File/artifact creation tracking with chunked data and status
|
|
88
|
+
- `llm_invocation.json` - LLM model invocation signals with usage tracking
|
|
84
89
|
- `tool_invocation_start.json` - Tool execution start notifications
|
|
85
|
-
- `tool_result.json` - Tool execution completion results
|
|
90
|
+
- `tool_result.json` - Tool execution completion results with optional LLM usage
|
|
86
91
|
|
|
87
92
|
## Complete Usage Guide
|
|
88
93
|
|
|
@@ -215,21 +220,33 @@ agent_card = {
|
|
|
215
220
|
validate_agent_card(agent_card)
|
|
216
221
|
```
|
|
217
222
|
|
|
218
|
-
### 5. Artifact Creation Progress Tracking
|
|
223
|
+
### 5. Enhanced Artifact Creation Progress Tracking
|
|
219
224
|
|
|
220
225
|
```python
|
|
221
226
|
# Load artifact creation schema
|
|
222
227
|
with open('solace_agent_mesh/common/a2a_spec/schemas/artifact_creation_progress.json') as f:
|
|
223
228
|
artifact_schema = json.load(f)
|
|
224
229
|
|
|
225
|
-
# Track artifact creation with chunked data
|
|
230
|
+
# Track artifact creation in progress with chunked data
|
|
226
231
|
artifact_progress = {
|
|
227
232
|
"type": "artifact_creation_progress",
|
|
228
233
|
"filename": "report.pdf",
|
|
229
|
-
"
|
|
234
|
+
"description": "Monthly sales report",
|
|
235
|
+
"status": "in-progress",
|
|
236
|
+
"bytes_transferred": 1024,
|
|
230
237
|
"artifact_chunk": "JVBERi0xLjQKJcOkw7zDtsO..." # Base64 encoded chunk
|
|
231
238
|
}
|
|
232
239
|
validate(instance=artifact_progress, schema=artifact_schema)
|
|
240
|
+
|
|
241
|
+
# Track artifact completion
|
|
242
|
+
artifact_completed = {
|
|
243
|
+
"type": "artifact_creation_progress",
|
|
244
|
+
"filename": "report.pdf",
|
|
245
|
+
"status": "completed",
|
|
246
|
+
"bytes_transferred": 5120,
|
|
247
|
+
"mime_type": "application/pdf"
|
|
248
|
+
}
|
|
249
|
+
validate(instance=artifact_completed, schema=artifact_schema)
|
|
233
250
|
```
|
|
234
251
|
|
|
235
252
|
### 6. LLM Invocation Tracking
|
|
@@ -239,13 +256,19 @@ validate(instance=artifact_progress, schema=artifact_schema)
|
|
|
239
256
|
with open('solace_agent_mesh/common/a2a_spec/schemas/llm_invocation.json') as f:
|
|
240
257
|
llm_schema = json.load(f)
|
|
241
258
|
|
|
242
|
-
# Track LLM calls
|
|
259
|
+
# Track LLM calls with usage information
|
|
243
260
|
llm_invocation = {
|
|
244
261
|
"type": "llm_invocation",
|
|
245
262
|
"request": {
|
|
246
263
|
"model": "gpt-4",
|
|
247
264
|
"messages": [{"role": "user", "content": "Analyze this data"}],
|
|
248
265
|
"temperature": 0.7
|
|
266
|
+
},
|
|
267
|
+
"usage": {
|
|
268
|
+
"input_tokens": 150,
|
|
269
|
+
"output_tokens": 75,
|
|
270
|
+
"cached_input_tokens": 50,
|
|
271
|
+
"model": "gpt-4"
|
|
249
272
|
}
|
|
250
273
|
}
|
|
251
274
|
validate(instance=llm_invocation, schema=llm_schema)
|
|
@@ -296,14 +319,16 @@ def track_tool_invocation(tool_name, args, call_id):
|
|
|
296
319
|
validate(instance=invocation, schema=tool_schema)
|
|
297
320
|
return invocation
|
|
298
321
|
|
|
299
|
-
# 4. Track tool results
|
|
300
|
-
def track_tool_result(tool_name, result_data, call_id):
|
|
322
|
+
# 4. Track tool results with LLM usage
|
|
323
|
+
def track_tool_result(tool_name, result_data, call_id, llm_usage=None):
|
|
301
324
|
result = {
|
|
302
325
|
"type": "tool_result",
|
|
303
326
|
"tool_name": tool_name,
|
|
304
327
|
"result_data": result_data,
|
|
305
328
|
"function_call_id": call_id
|
|
306
329
|
}
|
|
330
|
+
if llm_usage:
|
|
331
|
+
result["llm_usage"] = llm_usage
|
|
307
332
|
validate(instance=result, schema=result_schema)
|
|
308
333
|
return result
|
|
309
334
|
```
|
|
@@ -402,6 +427,19 @@ error_response = {
|
|
|
402
427
|
validator.validate_definition(error_response, 'JSONRPCErrorResponse')
|
|
403
428
|
```
|
|
404
429
|
|
|
405
|
-
|
|
430
|
+
### 10. Working with Different Transport Protocols
|
|
431
|
+
|
|
432
|
+
```python
|
|
433
|
+
# Create agent card with multiple transport interfaces
|
|
434
|
+
agent_card_multi_transport = {
|
|
435
|
+
"name": "Multi-Transport Agent",
|
|
436
|
+
"description": "Agent supporting multiple transport protocols",
|
|
437
|
+
"url": "https://api.example.com/jsonrpc",
|
|
438
|
+
"preferredTransport": "JSONRPC",
|
|
439
|
+
"additionalInterfaces": [
|
|
440
|
+
{
|
|
441
|
+
"url": "https://api.example.com/jsonrpc",
|
|
442
|
+
"transport": "JSONRPC"
|
|
443
|
+
},
|
|
406
444
|
|
|
407
|
-
# content_hash:
|
|
445
|
+
# content_hash: b8b4bc87e9300c50f2500efdd840bb765e107bfbc1de283800934528e8092614
|
|
@@ -13,19 +13,36 @@
|
|
|
13
13
|
"type": "string",
|
|
14
14
|
"description": "The name of the artifact being created."
|
|
15
15
|
},
|
|
16
|
-
"
|
|
16
|
+
"description": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"description": "An optional description of the artifact being created."
|
|
19
|
+
},
|
|
20
|
+
"status": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"enum": ["in-progress", "completed", "failed"],
|
|
23
|
+
"description": "The status of the artifact creation."
|
|
24
|
+
},
|
|
25
|
+
"bytes_transferred": {
|
|
17
26
|
"type": "integer",
|
|
18
|
-
"description": "The number of bytes
|
|
27
|
+
"description": "The number of bytes transferred so far."
|
|
19
28
|
},
|
|
20
29
|
"artifact_chunk": {
|
|
21
30
|
"type": "string",
|
|
22
|
-
"description": "The chunk of artifact data that was
|
|
31
|
+
"description": "The chunk of artifact data that was transferred in this progress update. Only present for 'in-progress' status."
|
|
32
|
+
},
|
|
33
|
+
"mime_type": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"description": "The MIME type of the artifact. Only present for 'completed' status."
|
|
36
|
+
},
|
|
37
|
+
"version": {
|
|
38
|
+
"type": "integer",
|
|
39
|
+
"description": "The version number of the artifact being created or updated."
|
|
23
40
|
}
|
|
24
41
|
},
|
|
25
42
|
"required": [
|
|
26
43
|
"type",
|
|
27
44
|
"filename",
|
|
28
|
-
"
|
|
29
|
-
"
|
|
45
|
+
"status",
|
|
46
|
+
"bytes_transferred"
|
|
30
47
|
]
|
|
31
|
-
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "FeedbackEvent",
|
|
4
|
+
"description": "Schema for a user feedback event published by a gateway.",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"id": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"description": "A unique identifier for this feedback submission."
|
|
10
|
+
},
|
|
11
|
+
"session_id": {
|
|
12
|
+
"type": "string",
|
|
13
|
+
"description": "The A2A session ID associated with the task."
|
|
14
|
+
},
|
|
15
|
+
"task_id": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"description": "The ID of the task this feedback is for."
|
|
18
|
+
},
|
|
19
|
+
"user_id": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"description": "The identifier of the user who provided the feedback."
|
|
22
|
+
},
|
|
23
|
+
"rating": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"enum": ["up", "down"],
|
|
26
|
+
"description": "The rating provided by the user."
|
|
27
|
+
},
|
|
28
|
+
"comment": {
|
|
29
|
+
"type": ["string", "null"],
|
|
30
|
+
"description": "Optional text comment provided by the user."
|
|
31
|
+
},
|
|
32
|
+
"created_time": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"format": "date-time",
|
|
35
|
+
"description": "The ISO 8601 timestamp (UTC) when the feedback was submitted."
|
|
36
|
+
},
|
|
37
|
+
"gateway_id": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"description": "The ID of the gateway that collected the feedback."
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"required": [
|
|
43
|
+
"id",
|
|
44
|
+
"session_id",
|
|
45
|
+
"task_id",
|
|
46
|
+
"user_id",
|
|
47
|
+
"rating",
|
|
48
|
+
"created_time",
|
|
49
|
+
"gateway_id"
|
|
50
|
+
]
|
|
51
|
+
}
|
|
@@ -9,7 +9,6 @@ This directory contains JSON Schema definitions for various agent-to-agent (A2A)
|
|
|
9
9
|
- `llm_invocation.json` - Schema for LLM model invocation signals with usage tracking
|
|
10
10
|
- `tool_invocation_start.json` - Schema for tool execution start notifications
|
|
11
11
|
- `tool_result.json` - Schema for tool execution completion results with optional LLM usage
|
|
12
|
-
- `schemas_llm.txt` - Previous developer guide (legacy documentation)
|
|
13
12
|
|
|
14
13
|
## Developer API Reference
|
|
15
14
|
|
|
@@ -52,7 +51,7 @@ validate(instance=data, schema=schema)
|
|
|
52
51
|
```
|
|
53
52
|
|
|
54
53
|
### artifact_creation_progress.json
|
|
55
|
-
**Purpose:** Defines the schema for tracking progress during file or artifact creation operations with chunked data transfer.
|
|
54
|
+
**Purpose:** Defines the schema for tracking progress during file or artifact creation operations with status tracking and chunked data transfer.
|
|
56
55
|
|
|
57
56
|
**Import:** Load as JSON schema for validation
|
|
58
57
|
```python
|
|
@@ -65,16 +64,22 @@ from jsonschema import validate
|
|
|
65
64
|
{
|
|
66
65
|
"type": "artifact_creation_progress",
|
|
67
66
|
"filename": "string",
|
|
68
|
-
"
|
|
69
|
-
"
|
|
67
|
+
"description": "string",
|
|
68
|
+
"status": "in-progress|completed|failed",
|
|
69
|
+
"bytes_transferred": "integer",
|
|
70
|
+
"artifact_chunk": "string",
|
|
71
|
+
"mime_type": "string"
|
|
70
72
|
}
|
|
71
73
|
```
|
|
72
74
|
|
|
73
75
|
**Properties:**
|
|
74
76
|
- `type: "artifact_creation_progress"` - Constant identifier for this signal type (required)
|
|
75
77
|
- `filename: string` - Name of the artifact being created (required)
|
|
76
|
-
- `
|
|
77
|
-
- `
|
|
78
|
+
- `description: string` - Optional description of the artifact being created (optional)
|
|
79
|
+
- `status: string` - Status of artifact creation: "in-progress", "completed", or "failed" (required)
|
|
80
|
+
- `bytes_transferred: integer` - Number of bytes transferred so far (required)
|
|
81
|
+
- `artifact_chunk: string` - Chunk of artifact data transferred in this update (optional, only for 'in-progress')
|
|
82
|
+
- `mime_type: string` - MIME type of the artifact (optional, only for 'completed')
|
|
78
83
|
|
|
79
84
|
**Usage Examples:**
|
|
80
85
|
```python
|
|
@@ -85,14 +90,26 @@ from jsonschema import validate
|
|
|
85
90
|
with open('solace_agent_mesh/common/a2a_spec/schemas/artifact_creation_progress.json') as f:
|
|
86
91
|
schema = json.load(f)
|
|
87
92
|
|
|
88
|
-
#
|
|
93
|
+
# In-progress example
|
|
89
94
|
data = {
|
|
90
95
|
"type": "artifact_creation_progress",
|
|
91
96
|
"filename": "report.pdf",
|
|
92
|
-
"
|
|
97
|
+
"description": "Monthly sales report",
|
|
98
|
+
"status": "in-progress",
|
|
99
|
+
"bytes_transferred": 1024,
|
|
93
100
|
"artifact_chunk": "JVBERi0xLjQKJcOkw7zDtsO..."
|
|
94
101
|
}
|
|
95
102
|
validate(instance=data, schema=schema)
|
|
103
|
+
|
|
104
|
+
# Completed example
|
|
105
|
+
completed_data = {
|
|
106
|
+
"type": "artifact_creation_progress",
|
|
107
|
+
"filename": "report.pdf",
|
|
108
|
+
"status": "completed",
|
|
109
|
+
"bytes_transferred": 5120,
|
|
110
|
+
"mime_type": "application/pdf"
|
|
111
|
+
}
|
|
112
|
+
validate(instance=completed_data, schema=schema)
|
|
96
113
|
```
|
|
97
114
|
|
|
98
115
|
### llm_invocation.json
|
|
@@ -310,4 +327,4 @@ schemas = {
|
|
|
310
327
|
}
|
|
311
328
|
```
|
|
312
329
|
|
|
313
|
-
# content_hash:
|
|
330
|
+
# content_hash: 9b18c2ba0e0aa3d52a27ecd90f45376713fe2738cee386219f988fd84da93a51
|
|
@@ -68,9 +68,12 @@ Together, these components form a cohesive ecosystem, enabling developers to eit
|
|
|
68
68
|
|
|
69
69
|
**Classes/Functions/Constants:**
|
|
70
70
|
- **`AgentRegistry`**: A thread-safe class for storing and managing agent cards.
|
|
71
|
-
- `add_or_update_agent(self, agent_card: AgentCard)`: Adds a new agent or updates an existing one.
|
|
71
|
+
- `add_or_update_agent(self, agent_card: AgentCard) -> bool`: Adds a new agent or updates an existing one, returns True if new.
|
|
72
72
|
- `get_agent(self, agent_name: str) -> Optional[AgentCard]`: Retrieves an agent card by its unique name.
|
|
73
73
|
- `get_agent_names(self) -> List[str]`: Returns a sorted list of all discovered agent names.
|
|
74
|
+
- `get_last_seen(self, agent_name: str) -> Optional[float]`: Returns the timestamp when the agent was last seen.
|
|
75
|
+
- `check_ttl_expired(self, agent_name: str, ttl_seconds: int) -> Tuple[bool, int]`: Checks if an agent's TTL has expired.
|
|
76
|
+
- `remove_agent(self, agent_name: str) -> bool`: Removes an agent from the registry.
|
|
74
77
|
- `clear(self)`: Clears all agents from the registry.
|
|
75
78
|
|
|
76
79
|
#### constants.py
|
|
@@ -79,6 +82,8 @@ Together, these components form a cohesive ecosystem, enabling developers to eit
|
|
|
79
82
|
|
|
80
83
|
**Classes/Functions/Constants:**
|
|
81
84
|
- `DEFAULT_COMMUNICATION_TIMEOUT: int`: Default timeout for communication operations (600 seconds / 10 minutes).
|
|
85
|
+
- `HEALTH_CHECK_TTL_SECONDS: int`: Time after which a health check is considered stale (60 seconds).
|
|
86
|
+
- `HEALTH_CHECK_INTERVAL_SECONDS: int`: Interval between health checks (10 seconds).
|
|
82
87
|
- `TEXT_ARTIFACT_CONTEXT_MAX_LENGTH_CAPACITY: int`: Maximum number of characters that can be loaded from a text artifact (200,000).
|
|
83
88
|
- `TEXT_ARTIFACT_CONTEXT_DEFAULT_LENGTH: int`: Default number of characters to load from a text artifact (100,000).
|
|
84
89
|
|
|
@@ -102,8 +107,11 @@ Together, these components form a cohesive ecosystem, enabling developers to eit
|
|
|
102
107
|
- **`ArtifactCreationProgressData`**: Data model for artifact creation progress signals.
|
|
103
108
|
- `type: Literal["artifact_creation_progress"]`: The constant type identifier.
|
|
104
109
|
- `filename: str`: The name of the artifact being created.
|
|
105
|
-
- `
|
|
106
|
-
- `
|
|
110
|
+
- `status: Literal["in-progress", "completed", "failed"]`: The status of the artifact creation.
|
|
111
|
+
- `bytes_transferred: int`: The number of bytes transferred so far.
|
|
112
|
+
- `description: Optional[str]`: An optional description of the artifact being created.
|
|
113
|
+
- `artifact_chunk: Optional[str]`: The chunk of artifact data that was transferred in this progress update.
|
|
114
|
+
- `mime_type: Optional[str]`: The MIME type of the artifact (for completed status).
|
|
107
115
|
- **`ToolResultData`**: Data model for tool execution result signals.
|
|
108
116
|
- `type: Literal["tool_result"]`: The constant type identifier.
|
|
109
117
|
- `tool_name: str`: The name of the tool that was called.
|
|
@@ -217,35 +225,6 @@ from solace_agent_mesh.common.services.identity_service import create_identity_s
|
|
|
217
225
|
|
|
218
226
|
#### utils/
|
|
219
227
|
**Purpose:** A collection of cross-cutting utilities for caching, logging, MIME type handling, and dynamic content processing.
|
|
220
|
-
**Key Exports:** `InMemoryCache`, `is_text_based_mime_type`, `
|
|
221
|
-
**Import Examples:**
|
|
222
|
-
```python
|
|
223
|
-
from solace_agent_mesh.common.utils.in_memory_cache import InMemoryCache
|
|
224
|
-
from solace_agent_mesh.common.utils import is_text_based_mime_type
|
|
225
|
-
from solace_agent_mesh.common.utils.embeds import resolve_embeds_recursively_in_string
|
|
226
|
-
```
|
|
228
|
+
**Key Exports:** `InMemoryCache`, `is_text_based_mime_type`, `resolve_emb
|
|
227
229
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
### 1. Basic A2A Protocol Usage
|
|
231
|
-
This example shows how to use the core protocol functions and types to build A2A communication.
|
|
232
|
-
|
|
233
|
-
```python
|
|
234
|
-
import uuid
|
|
235
|
-
from datetime import datetime, timezone
|
|
236
|
-
from solace_agent_mesh.common.a2a_protocol import (
|
|
237
|
-
get_agent_request_topic,
|
|
238
|
-
get_gateway_status_topic,
|
|
239
|
-
translate_a2a_to_adk_content
|
|
240
|
-
)
|
|
241
|
-
from solace_agent_mesh.common.types import (
|
|
242
|
-
Message,
|
|
243
|
-
TextPart,
|
|
244
|
-
Task,
|
|
245
|
-
TaskStatus,
|
|
246
|
-
TaskState,
|
|
247
|
-
AgentCard
|
|
248
|
-
)
|
|
249
|
-
from solace_
|
|
250
|
-
|
|
251
|
-
# content_hash: 4cbf98260b5f5bef314fae44cf680520f4581948d2bfd8b08e7c6455bbcac1bc
|
|
230
|
+
# content_hash: 6fd3be2d2c731f45200e4f3968c7ff82a85f6d57e8269b276fd56cd4444013c9
|
|
@@ -71,10 +71,26 @@ class ArtifactCreationProgressData(BaseModel):
|
|
|
71
71
|
description="The constant type for this data part.",
|
|
72
72
|
)
|
|
73
73
|
filename: str = Field(..., description="The name of the artifact being created.")
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
74
|
+
status: Literal["in-progress", "completed", "failed"] = Field(
|
|
75
|
+
..., description="The status of the artifact creation."
|
|
76
|
+
)
|
|
77
|
+
bytes_transferred: int = Field(
|
|
78
|
+
..., description="The number of bytes transferred so far."
|
|
79
|
+
)
|
|
80
|
+
description: Optional[str] = Field(
|
|
81
|
+
None, description="An optional description of the artifact being created."
|
|
82
|
+
)
|
|
83
|
+
artifact_chunk: Optional[str] = Field(
|
|
84
|
+
None,
|
|
85
|
+
description="The chunk of artifact data that was transferred in this progress update. Only present for 'in-progress' status.",
|
|
86
|
+
)
|
|
87
|
+
mime_type: Optional[str] = Field(
|
|
88
|
+
None,
|
|
89
|
+
description="The MIME type of the artifact. Only present for 'completed' status.",
|
|
90
|
+
)
|
|
91
|
+
version: Optional[int] = Field(
|
|
92
|
+
None,
|
|
93
|
+
description="The version number of the artifact being created or updated.",
|
|
78
94
|
)
|
|
79
95
|
|
|
80
96
|
|
|
@@ -171,4 +171,4 @@ MiddlewareRegistry.reset_bindings()
|
|
|
171
171
|
print(f"Registry Status after reset: {MiddlewareRegistry.get_registry_status()}")
|
|
172
172
|
```
|
|
173
173
|
|
|
174
|
-
# content_hash:
|
|
174
|
+
# content_hash: eb6f60d7fdc4a0fb198bf8cc5644c3d372a72ebf46870c79282f230b07637095
|
|
@@ -101,4 +101,4 @@ topic = SamEventService.get_event_topic("my_namespace", "session.deleted")
|
|
|
101
101
|
print(topic) # Returns the proper SAM events topic
|
|
102
102
|
```
|
|
103
103
|
|
|
104
|
-
# content_hash:
|
|
104
|
+
# content_hash: 2a249adbac594bbf8a551a6b4f606218b7b8fce41753efe31954b8acc50cc126
|
|
@@ -66,7 +66,7 @@ class BaseEmployeeService(ABC):
|
|
|
66
66
|
pass
|
|
67
67
|
|
|
68
68
|
@abstractmethod
|
|
69
|
-
async def get_time_off_data(self, employee_id: str) -> List[Dict[str, Any]]:
|
|
69
|
+
async def get_time_off_data(self, employee_id: str, start_date: Optional[str] = None, end_date: Optional[str] = None) -> List[Dict[str, Any]]:
|
|
70
70
|
"""
|
|
71
71
|
Retrieves a list of raw time-off entries for an employee.
|
|
72
72
|
|
|
@@ -18,7 +18,7 @@ This file contains no public classes or functions - it serves only as package do
|
|
|
18
18
|
**Import:** `from solace_agent_mesh.common.services.providers.local_file_identity_service import LocalFileIdentityService`
|
|
19
19
|
|
|
20
20
|
**Classes:**
|
|
21
|
-
- `LocalFileIdentityService(config: Dict[str, Any])` - Identity service that sources user data from a local JSON file
|
|
21
|
+
- `LocalFileIdentityService(config: Dict[str, Any], component: Optional[SamComponentBase] = None)` - Identity service that sources user data from a local JSON file
|
|
22
22
|
- `async get_user_profile(auth_claims: Dict[str, Any]) -> Optional[Dict[str, Any]]` - Looks up a user profile using the lookup key from auth claims
|
|
23
23
|
- `async search_users(query: str, limit: int = 10) -> List[Dict[str, Any]]` - Performs case-insensitive search on user names and emails
|
|
24
24
|
- `file_path: str` - Path to the JSON file containing user data
|
|
@@ -30,6 +30,7 @@ This file contains no public classes or functions - it serves only as package do
|
|
|
30
30
|
```python
|
|
31
31
|
import asyncio
|
|
32
32
|
import json
|
|
33
|
+
from typing import Dict, Any
|
|
33
34
|
from solace_agent_mesh.common.services.providers.local_file_identity_service import LocalFileIdentityService
|
|
34
35
|
|
|
35
36
|
# Create sample users.json file
|
|
@@ -77,4 +78,4 @@ async def main():
|
|
|
77
78
|
asyncio.run(main())
|
|
78
79
|
```
|
|
79
80
|
|
|
80
|
-
# content_hash:
|
|
81
|
+
# content_hash: 26b677e947bf60f1e211b6e119bf6382f0a269d46c0f102751bae9faab3c8435
|
|
@@ -36,10 +36,10 @@ The core architecture revolves around factory functions (`create_identity_servic
|
|
|
36
36
|
|
|
37
37
|
**Classes/Functions/Constants:**
|
|
38
38
|
- **`class BaseIdentityService(ABC)`**: The abstract base class for identity service providers.
|
|
39
|
-
- **`__init__(self, config: Dict[str, Any])`**: Initializes the service, setting up configuration and an optional in-memory cache.
|
|
39
|
+
- **`__init__(self, config: Dict[str, Any], component: Optional[SamComponentBase] = None)`**: Initializes the service, setting up configuration and an optional in-memory cache.
|
|
40
40
|
- **`async def get_user_profile(self, auth_claims: Dict[str, Any]) -> Optional[Dict[str, Any]]`**: (Abstract) Fetches additional profile details for an authenticated user based on claims.
|
|
41
41
|
- **`async def search_users(self, query: str, limit: int = 10) -> List[Dict[str, Any]]`**: (Abstract) Searches for users based on a query string (e.g., for autocomplete).
|
|
42
|
-
- **`def create_identity_service(config: Optional[Dict[str, Any]]) -> Optional[BaseIdentityService]`**: A factory function that instantiates an identity service provider. It has special handling for the built-in `local_file` provider and uses Python entry points for all other provider types.
|
|
42
|
+
- **`def create_identity_service(config: Optional[Dict[str, Any]], component: Optional[SamComponentBase] = None) -> Optional[BaseIdentityService]`**: A factory function that instantiates an identity service provider. It has special handling for the built-in `local_file` provider and uses Python entry points for all other provider types.
|
|
43
43
|
|
|
44
44
|
### Subdirectory APIs
|
|
45
45
|
|
|
@@ -358,6 +358,11 @@ async def setup_file_based_identity():
|
|
|
358
358
|
asyncio.run(setup_file_based_identity())
|
|
359
359
|
```
|
|
360
360
|
|
|
361
|
-
|
|
361
|
+
### 6. Advanced Usage: Custom Identity Service with Component Integration
|
|
362
|
+
|
|
363
|
+
```python
|
|
364
|
+
import asyncio
|
|
365
|
+
from typing import Any, Dict, List, Optional
|
|
366
|
+
from solace_agent
|
|
362
367
|
|
|
363
|
-
# content_hash:
|
|
368
|
+
# content_hash: 4532aa73f5067694fc253bc1875f79148f7b8778d1d46680c423d2b3da8456e6
|
|
@@ -26,7 +26,7 @@ except ImportError:
|
|
|
26
26
|
|
|
27
27
|
from google.adk.artifacts import BaseArtifactService
|
|
28
28
|
|
|
29
|
-
from .types import DataFormat
|
|
29
|
+
from .types import DataFormat, ResolutionMode
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
def _apply_jsonpath(
|
|
@@ -661,6 +661,7 @@ async def _apply_template(
|
|
|
661
661
|
context=context,
|
|
662
662
|
resolver_func=evaluate_embed,
|
|
663
663
|
types_to_resolve=EARLY_EMBED_TYPES.union(LATE_EMBED_TYPES),
|
|
664
|
+
resolution_mode=ResolutionMode.RECURSIVE_ARTIFACT_CONTENT,
|
|
664
665
|
log_identifier=f"{log_id}[TemplateEmbeds]",
|
|
665
666
|
config=resolver_config,
|
|
666
667
|
max_depth=resolver_config.get("gateway_recursive_embed_depth", 12),
|