solace-agent-mesh 1.11.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.
- solace_agent_mesh/__init__.py +0 -0
- solace_agent_mesh/agent/__init__.py +0 -0
- solace_agent_mesh/agent/adk/__init__.py +0 -0
- solace_agent_mesh/agent/adk/adk_llm.txt +226 -0
- solace_agent_mesh/agent/adk/adk_llm_detail.txt +566 -0
- 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 +52 -0
- solace_agent_mesh/agent/adk/artifacts/__init__.py +1 -0
- solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt +171 -0
- solace_agent_mesh/agent/adk/artifacts/filesystem_artifact_service.py +545 -0
- solace_agent_mesh/agent/adk/artifacts/s3_artifact_service.py +609 -0
- solace_agent_mesh/agent/adk/callbacks.py +2318 -0
- solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +406 -0
- solace_agent_mesh/agent/adk/intelligent_mcp_callbacks.py +415 -0
- solace_agent_mesh/agent/adk/mcp_content_processor.py +666 -0
- solace_agent_mesh/agent/adk/models/lite_llm.py +1026 -0
- solace_agent_mesh/agent/adk/models/models_llm.txt +189 -0
- solace_agent_mesh/agent/adk/models/oauth2_token_manager.py +132 -0
- solace_agent_mesh/agent/adk/runner.py +390 -0
- solace_agent_mesh/agent/adk/schema_migration.py +88 -0
- solace_agent_mesh/agent/adk/services.py +468 -0
- solace_agent_mesh/agent/adk/setup.py +1325 -0
- solace_agent_mesh/agent/adk/stream_parser.py +415 -0
- solace_agent_mesh/agent/adk/tool_wrapper.py +165 -0
- solace_agent_mesh/agent/agent_llm.txt +369 -0
- solace_agent_mesh/agent/agent_llm_detail.txt +1702 -0
- solace_agent_mesh/agent/protocol/__init__.py +0 -0
- solace_agent_mesh/agent/protocol/event_handlers.py +2041 -0
- solace_agent_mesh/agent/protocol/protocol_llm.txt +81 -0
- solace_agent_mesh/agent/protocol/protocol_llm_detail.txt +92 -0
- solace_agent_mesh/agent/proxies/__init__.py +0 -0
- solace_agent_mesh/agent/proxies/a2a/__init__.py +3 -0
- solace_agent_mesh/agent/proxies/a2a/a2a_llm.txt +190 -0
- solace_agent_mesh/agent/proxies/a2a/app.py +56 -0
- solace_agent_mesh/agent/proxies/a2a/component.py +1585 -0
- solace_agent_mesh/agent/proxies/a2a/config.py +216 -0
- solace_agent_mesh/agent/proxies/a2a/oauth_token_cache.py +104 -0
- solace_agent_mesh/agent/proxies/base/__init__.py +3 -0
- solace_agent_mesh/agent/proxies/base/app.py +100 -0
- solace_agent_mesh/agent/proxies/base/base_llm.txt +148 -0
- solace_agent_mesh/agent/proxies/base/component.py +816 -0
- solace_agent_mesh/agent/proxies/base/config.py +85 -0
- solace_agent_mesh/agent/proxies/base/proxy_task_context.py +19 -0
- solace_agent_mesh/agent/proxies/proxies_llm.txt +283 -0
- solace_agent_mesh/agent/sac/__init__.py +0 -0
- solace_agent_mesh/agent/sac/app.py +595 -0
- solace_agent_mesh/agent/sac/component.py +3668 -0
- solace_agent_mesh/agent/sac/patch_adk.py +103 -0
- solace_agent_mesh/agent/sac/sac_llm.txt +189 -0
- solace_agent_mesh/agent/sac/sac_llm_detail.txt +200 -0
- solace_agent_mesh/agent/sac/task_execution_context.py +415 -0
- solace_agent_mesh/agent/testing/__init__.py +3 -0
- solace_agent_mesh/agent/testing/debug_utils.py +135 -0
- solace_agent_mesh/agent/testing/testing_llm.txt +58 -0
- solace_agent_mesh/agent/testing/testing_llm_detail.txt +68 -0
- solace_agent_mesh/agent/tools/__init__.py +16 -0
- solace_agent_mesh/agent/tools/audio_tools.py +1740 -0
- solace_agent_mesh/agent/tools/builtin_artifact_tools.py +2500 -0
- solace_agent_mesh/agent/tools/builtin_data_analysis_tools.py +244 -0
- solace_agent_mesh/agent/tools/dynamic_tool.py +396 -0
- solace_agent_mesh/agent/tools/general_agent_tools.py +572 -0
- solace_agent_mesh/agent/tools/image_tools.py +1185 -0
- solace_agent_mesh/agent/tools/peer_agent_tool.py +363 -0
- solace_agent_mesh/agent/tools/registry.py +38 -0
- solace_agent_mesh/agent/tools/test_tools.py +136 -0
- solace_agent_mesh/agent/tools/time_tools.py +126 -0
- solace_agent_mesh/agent/tools/tool_config_types.py +93 -0
- solace_agent_mesh/agent/tools/tool_definition.py +53 -0
- solace_agent_mesh/agent/tools/tools_llm.txt +276 -0
- solace_agent_mesh/agent/tools/tools_llm_detail.txt +275 -0
- solace_agent_mesh/agent/tools/web_tools.py +392 -0
- solace_agent_mesh/agent/utils/__init__.py +0 -0
- solace_agent_mesh/agent/utils/artifact_helpers.py +1353 -0
- solace_agent_mesh/agent/utils/config_parser.py +49 -0
- solace_agent_mesh/agent/utils/context_helpers.py +77 -0
- solace_agent_mesh/agent/utils/utils_llm.txt +152 -0
- solace_agent_mesh/agent/utils/utils_llm_detail.txt +149 -0
- solace_agent_mesh/assets/docs/404.html +16 -0
- solace_agent_mesh/assets/docs/assets/css/styles.8162edfb.css +1 -0
- solace_agent_mesh/assets/docs/assets/images/Solace_AI_Framework_With_Broker-85f0a306a9bcdd20b390b7a949f6d862.png +0 -0
- solace_agent_mesh/assets/docs/assets/images/sam-enterprise-credentials-b269f095349473118b2b33bdfcc40122.png +0 -0
- solace_agent_mesh/assets/docs/assets/js/032c2d61.f3d37824.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/05749d90.19ac4f35.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/0bcf40b7.c019ad46.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/1001.0182a8bd.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/1039.0bd46aa1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/149.b797a808.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/15ba94aa.92fea363.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/15e40e79.434bb30f.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/165.6a39807d.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/165.6a39807d.js.LICENSE.txt +9 -0
- solace_agent_mesh/assets/docs/assets/js/17896441.e612dfb4.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2130.ab9fd314.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2131ec11.5c7a1f6e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2237.5e477fc6.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2279.550aa580.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/2279.550aa580.js.LICENSE.txt +13 -0
- solace_agent_mesh/assets/docs/assets/js/2334.1cf50a20.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/240a0364.9ad94d1b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2987107d.a80604f9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2e32b5e0.33f5d75b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3219.adc1d663.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/341393d4.0fac2613.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3624.0eaa1fd0.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/375.708d48db.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3834.b6cd790e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3a6c6137.f5940cfa.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3ac1795d.28b7c67b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3ff0015d.2ddc75c0.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/41adc471.48b12a4e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4250.95455b28.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4356.d169ab5b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4458.518e66fa.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4488.c7cc3442.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4494.6ee23046.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4855.fc4444b6.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4866.22daefc0.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4950.ca4caeda.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/509e993c.a1fbf45a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5388.7a136447.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/547e15cc.2f7790c1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/55b7b518.29d6e75d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5607.081356f8.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5864.b0d0e9de.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5c2bd65f.90a87880.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5e95c892.558d5167.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6063ff4c.ef84f702.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/60702c0e.a8bdd79b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6143.0a1464c9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/631738c7.fa471607.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6395.e9c73649.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/64195356.c498c4d0.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/66d4869e.b77431fc.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6796.51d2c9b7.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6976.379be23b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6978.ee0b945c.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/6fdfefc7.99de744e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7040.cb436723.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7195.412f418a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/71da7b71.374b9d54.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/722f809d.965da774.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7280.3fb73bdb.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/742f027b.46c07808.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/77cf947d.48cb18a2.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7845.e33e7c4c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7900.69516146.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8024126c.fa0e7186.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/81a99df0.2484b8d9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/82fbfb93.161823a5.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8356.8a379c04.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8567.4732c6b7.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8573.cb04eda5.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8577.1d54e766.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8591.5d015485.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/8591.5d015485.js.LICENSE.txt +61 -0
- solace_agent_mesh/assets/docs/assets/js/8709.7ecd4047.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8731.6c1dbf0c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8908.f9d1b506.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8b032486.91a91afc.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9157.b4093d07.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/924ffdeb.975e428a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9278.a4fd875d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/945fb41e.6f4cdffd.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/94e8668d.16083b3f.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9616.b75c2f6d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9793.c6d16376.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9bb13469.b2333011.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9e9d0a82.570c057b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/a7bd4aaa.2204d2f7.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/a94703ab.3e5fbcb3.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ab9708a8.245ae0ef.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/aba21aa0.c42a534c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ad71b5ed.af3ecfd1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ad87452a.9d73dad6.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/c198a0dc.8f31f867.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/ceb2a7a6.5d92d7d0.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/db924877.e98d12a1.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/de5f4c65.e8241890.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/de915948.44a432bc.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e04b235d.52cb25ed.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e1b6eeb4.b1068f9b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e3d9abda.1476f570.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e6f9706b.4488e34c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e92d0134.3bda61dd.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/f284c35a.250993bf.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ff4d71f2.74710fc1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/main.7acf7ace.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/main.7acf7ace.js.LICENSE.txt +81 -0
- solace_agent_mesh/assets/docs/assets/js/runtime~main.9e0813a2.js +1 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +154 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/artifact-management/index.html +99 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/audio-tools/index.html +90 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/data-analysis-tools/index.html +107 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/embeds/index.html +166 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/index.html +101 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/cli/index.html +219 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +92 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/index.html +29 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +55 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/plugins/index.html +110 -0
- 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 +345 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/speech/index.html +52 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +83 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +84 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +25 -0
- 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 +85 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +60 -0
- 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 +144 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/create-gateways/index.html +191 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/creating-python-tools/index.html +128 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +54 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/evaluations/index.html +135 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +34 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +55 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/bedrock-agents/index.html +267 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/custom-agent/index.html +142 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/event-mesh-gateway/index.html +116 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mcp-integration/index.html +86 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mongodb-integration/index.html +164 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rag-integration/index.html +140 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rest-gateway/index.html +57 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +72 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/sql-database/index.html +102 -0
- 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 +37 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +86 -0
- 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 +247 -0
- 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 +184 -0
- 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 +75 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +54 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +85 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +41 -0
- 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 +78 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +25 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +78 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +160 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +142 -0
- 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 +100 -0
- solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-technical-migration-map/index.html +52 -0
- solace_agent_mesh/assets/docs/img/Solace_AI_Framework_With_Broker.png +0 -0
- solace_agent_mesh/assets/docs/img/logo.png +0 -0
- solace_agent_mesh/assets/docs/img/sac-flows.png +0 -0
- solace_agent_mesh/assets/docs/img/sac_parts_of_a_component.png +0 -0
- solace_agent_mesh/assets/docs/img/sam-enterprise-credentials.png +0 -0
- solace_agent_mesh/assets/docs/img/solace-logo-text.svg +18 -0
- solace_agent_mesh/assets/docs/img/solace-logo.png +0 -0
- solace_agent_mesh/assets/docs/lunr-index-1765810064709.json +1 -0
- solace_agent_mesh/assets/docs/lunr-index.json +1 -0
- solace_agent_mesh/assets/docs/search-doc-1765810064709.json +1 -0
- solace_agent_mesh/assets/docs/search-doc.json +1 -0
- solace_agent_mesh/assets/docs/sitemap.xml +1 -0
- solace_agent_mesh/cli/__init__.py +1 -0
- solace_agent_mesh/cli/commands/__init__.py +0 -0
- solace_agent_mesh/cli/commands/add_cmd/__init__.py +15 -0
- solace_agent_mesh/cli/commands/add_cmd/add_cmd_llm.txt +250 -0
- solace_agent_mesh/cli/commands/add_cmd/agent_cmd.py +729 -0
- solace_agent_mesh/cli/commands/add_cmd/gateway_cmd.py +322 -0
- solace_agent_mesh/cli/commands/add_cmd/web_add_agent_step.py +102 -0
- solace_agent_mesh/cli/commands/add_cmd/web_add_gateway_step.py +114 -0
- solace_agent_mesh/cli/commands/docs_cmd.py +60 -0
- solace_agent_mesh/cli/commands/eval_cmd.py +46 -0
- solace_agent_mesh/cli/commands/init_cmd/__init__.py +439 -0
- solace_agent_mesh/cli/commands/init_cmd/broker_step.py +201 -0
- solace_agent_mesh/cli/commands/init_cmd/database_step.py +91 -0
- solace_agent_mesh/cli/commands/init_cmd/directory_step.py +28 -0
- solace_agent_mesh/cli/commands/init_cmd/env_step.py +238 -0
- solace_agent_mesh/cli/commands/init_cmd/init_cmd_llm.txt +365 -0
- solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +464 -0
- solace_agent_mesh/cli/commands/init_cmd/project_files_step.py +38 -0
- solace_agent_mesh/cli/commands/init_cmd/web_init_step.py +119 -0
- solace_agent_mesh/cli/commands/init_cmd/webui_gateway_step.py +215 -0
- solace_agent_mesh/cli/commands/plugin_cmd/__init__.py +20 -0
- solace_agent_mesh/cli/commands/plugin_cmd/add_cmd.py +137 -0
- solace_agent_mesh/cli/commands/plugin_cmd/build_cmd.py +86 -0
- solace_agent_mesh/cli/commands/plugin_cmd/catalog_cmd.py +144 -0
- solace_agent_mesh/cli/commands/plugin_cmd/create_cmd.py +306 -0
- solace_agent_mesh/cli/commands/plugin_cmd/install_cmd.py +283 -0
- solace_agent_mesh/cli/commands/plugin_cmd/official_registry.py +175 -0
- solace_agent_mesh/cli/commands/plugin_cmd/plugin_cmd_llm.txt +305 -0
- solace_agent_mesh/cli/commands/run_cmd.py +215 -0
- solace_agent_mesh/cli/main.py +52 -0
- solace_agent_mesh/cli/utils.py +262 -0
- solace_agent_mesh/client/webui/frontend/static/assets/authCallback-Dj3JtK42.js +1 -0
- solace_agent_mesh/client/webui/frontend/static/assets/client-ZKk9kEJ5.js +25 -0
- solace_agent_mesh/client/webui/frontend/static/assets/favicon-BLgzUch9.ico +0 -0
- solace_agent_mesh/client/webui/frontend/static/assets/main-BcUaNZ-Q.css +1 -0
- solace_agent_mesh/client/webui/frontend/static/assets/main-vjch4RYc.js +435 -0
- solace_agent_mesh/client/webui/frontend/static/assets/vendor-BNV4kZN0.js +535 -0
- solace_agent_mesh/client/webui/frontend/static/auth-callback.html +15 -0
- solace_agent_mesh/client/webui/frontend/static/index.html +16 -0
- 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/__init__.py +1 -0
- solace_agent_mesh/common/a2a/__init__.py +241 -0
- solace_agent_mesh/common/a2a/a2a_llm.txt +175 -0
- solace_agent_mesh/common/a2a/a2a_llm_detail.txt +193 -0
- solace_agent_mesh/common/a2a/artifact.py +368 -0
- solace_agent_mesh/common/a2a/events.py +213 -0
- solace_agent_mesh/common/a2a/message.py +375 -0
- solace_agent_mesh/common/a2a/protocol.py +689 -0
- solace_agent_mesh/common/a2a/task.py +127 -0
- solace_agent_mesh/common/a2a/translation.py +655 -0
- solace_agent_mesh/common/a2a/types.py +55 -0
- solace_agent_mesh/common/a2a_spec/a2a.json +2576 -0
- solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +445 -0
- solace_agent_mesh/common/a2a_spec/a2a_spec_llm_detail.txt +736 -0
- solace_agent_mesh/common/a2a_spec/schemas/agent_progress_update.json +18 -0
- solace_agent_mesh/common/a2a_spec/schemas/artifact_creation_progress.json +48 -0
- solace_agent_mesh/common/a2a_spec/schemas/feedback_event.json +51 -0
- solace_agent_mesh/common/a2a_spec/schemas/llm_invocation.json +41 -0
- solace_agent_mesh/common/a2a_spec/schemas/schemas_llm.txt +330 -0
- solace_agent_mesh/common/a2a_spec/schemas/tool_invocation_start.json +26 -0
- solace_agent_mesh/common/a2a_spec/schemas/tool_result.json +48 -0
- solace_agent_mesh/common/agent_registry.py +122 -0
- solace_agent_mesh/common/common_llm.txt +230 -0
- solace_agent_mesh/common/common_llm_detail.txt +2562 -0
- solace_agent_mesh/common/constants.py +6 -0
- solace_agent_mesh/common/data_parts.py +150 -0
- solace_agent_mesh/common/exceptions.py +49 -0
- solace_agent_mesh/common/middleware/__init__.py +12 -0
- solace_agent_mesh/common/middleware/config_resolver.py +132 -0
- solace_agent_mesh/common/middleware/middleware_llm.txt +174 -0
- solace_agent_mesh/common/middleware/middleware_llm_detail.txt +185 -0
- solace_agent_mesh/common/middleware/registry.py +127 -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/sac/__init__.py +0 -0
- solace_agent_mesh/common/sac/sac_llm.txt +71 -0
- solace_agent_mesh/common/sac/sac_llm_detail.txt +82 -0
- solace_agent_mesh/common/sac/sam_component_base.py +730 -0
- solace_agent_mesh/common/sam_events/__init__.py +9 -0
- solace_agent_mesh/common/sam_events/event_service.py +208 -0
- solace_agent_mesh/common/sam_events/sam_events_llm.txt +104 -0
- solace_agent_mesh/common/sam_events/sam_events_llm_detail.txt +115 -0
- solace_agent_mesh/common/services/__init__.py +4 -0
- solace_agent_mesh/common/services/employee_service.py +164 -0
- solace_agent_mesh/common/services/identity_service.py +134 -0
- solace_agent_mesh/common/services/providers/__init__.py +4 -0
- solace_agent_mesh/common/services/providers/local_file_identity_service.py +151 -0
- solace_agent_mesh/common/services/providers/providers_llm.txt +81 -0
- solace_agent_mesh/common/services/services_llm.txt +368 -0
- solace_agent_mesh/common/services/services_llm_detail.txt +459 -0
- solace_agent_mesh/common/utils/__init__.py +7 -0
- solace_agent_mesh/common/utils/artifact_utils.py +31 -0
- solace_agent_mesh/common/utils/asyncio_macos_fix.py +88 -0
- solace_agent_mesh/common/utils/embeds/__init__.py +33 -0
- solace_agent_mesh/common/utils/embeds/constants.py +56 -0
- solace_agent_mesh/common/utils/embeds/converter.py +447 -0
- solace_agent_mesh/common/utils/embeds/embeds_llm.txt +220 -0
- solace_agent_mesh/common/utils/embeds/evaluators.py +395 -0
- solace_agent_mesh/common/utils/embeds/modifiers.py +793 -0
- solace_agent_mesh/common/utils/embeds/resolver.py +967 -0
- solace_agent_mesh/common/utils/embeds/types.py +23 -0
- solace_agent_mesh/common/utils/in_memory_cache.py +108 -0
- solace_agent_mesh/common/utils/initializer.py +52 -0
- solace_agent_mesh/common/utils/log_formatters.py +64 -0
- solace_agent_mesh/common/utils/message_utils.py +80 -0
- solace_agent_mesh/common/utils/mime_helpers.py +172 -0
- solace_agent_mesh/common/utils/push_notification_auth.py +135 -0
- solace_agent_mesh/common/utils/pydantic_utils.py +159 -0
- 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/common/utils/type_utils.py +28 -0
- solace_agent_mesh/common/utils/utils_llm.txt +335 -0
- solace_agent_mesh/common/utils/utils_llm_detail.txt +572 -0
- solace_agent_mesh/config_portal/__init__.py +0 -0
- solace_agent_mesh/config_portal/backend/__init__.py +0 -0
- solace_agent_mesh/config_portal/backend/common.py +77 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog/__init__.py +0 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog/constants.py +24 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog/models.py +49 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog/registry_manager.py +166 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog/scraper.py +521 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog_server.py +217 -0
- solace_agent_mesh/config_portal/backend/server.py +644 -0
- solace_agent_mesh/config_portal/frontend/static/client/Solace_community_logo.png +0 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/_index-DiOiAjzL.js +103 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/components-Rk0n-9cK.js +140 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/entry.client-mvZjNKiz.js +19 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/index-DzNKzXrc.js +68 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-ba77705e.js +1 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/root-B17tZKK7.css +1 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/root-V2BeTIUc.js +10 -0
- solace_agent_mesh/config_portal/frontend/static/client/favicon.ico +0 -0
- solace_agent_mesh/config_portal/frontend/static/client/index.html +7 -0
- solace_agent_mesh/core_a2a/__init__.py +1 -0
- solace_agent_mesh/core_a2a/core_a2a_llm.txt +90 -0
- solace_agent_mesh/core_a2a/core_a2a_llm_detail.txt +101 -0
- solace_agent_mesh/core_a2a/service.py +307 -0
- solace_agent_mesh/evaluation/__init__.py +0 -0
- solace_agent_mesh/evaluation/evaluator.py +691 -0
- solace_agent_mesh/evaluation/message_organizer.py +553 -0
- solace_agent_mesh/evaluation/report/benchmark_info.html +35 -0
- solace_agent_mesh/evaluation/report/chart_section.html +141 -0
- solace_agent_mesh/evaluation/report/detailed_breakdown.html +28 -0
- solace_agent_mesh/evaluation/report/modal.html +59 -0
- solace_agent_mesh/evaluation/report/modal_chart_functions.js +411 -0
- solace_agent_mesh/evaluation/report/modal_script.js +296 -0
- solace_agent_mesh/evaluation/report/modal_styles.css +340 -0
- solace_agent_mesh/evaluation/report/performance_metrics_styles.css +93 -0
- solace_agent_mesh/evaluation/report/templates/footer.html +2 -0
- solace_agent_mesh/evaluation/report/templates/header.html +340 -0
- solace_agent_mesh/evaluation/report_data_processor.py +970 -0
- solace_agent_mesh/evaluation/report_generator.py +607 -0
- solace_agent_mesh/evaluation/run.py +954 -0
- solace_agent_mesh/evaluation/shared/__init__.py +92 -0
- solace_agent_mesh/evaluation/shared/constants.py +47 -0
- solace_agent_mesh/evaluation/shared/exceptions.py +50 -0
- solace_agent_mesh/evaluation/shared/helpers.py +35 -0
- solace_agent_mesh/evaluation/shared/test_case_loader.py +167 -0
- solace_agent_mesh/evaluation/shared/test_suite_loader.py +280 -0
- solace_agent_mesh/evaluation/subscriber.py +776 -0
- solace_agent_mesh/evaluation/summary_builder.py +880 -0
- solace_agent_mesh/gateway/__init__.py +0 -0
- 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/__init__.py +1 -0
- solace_agent_mesh/gateway/base/app.py +345 -0
- solace_agent_mesh/gateway/base/base_llm.txt +226 -0
- solace_agent_mesh/gateway/base/base_llm_detail.txt +235 -0
- solace_agent_mesh/gateway/base/component.py +2030 -0
- solace_agent_mesh/gateway/base/task_context.py +75 -0
- solace_agent_mesh/gateway/gateway_llm.txt +369 -0
- solace_agent_mesh/gateway/gateway_llm_detail.txt +3885 -0
- 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 +727 -0
- solace_agent_mesh/gateway/http_sse/__init__.py +0 -0
- solace_agent_mesh/gateway/http_sse/alembic/alembic_llm.txt +345 -0
- solace_agent_mesh/gateway/http_sse/alembic/env.py +87 -0
- solace_agent_mesh/gateway/http_sse/alembic/script.py.mako +28 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20250910_d5b3f8f2e9a0_create_initial_database.py +58 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20250911_b1c2d3e4f5g6_add_database_indexes.py +83 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20250916_f6e7d8c9b0a1_convert_timestamps_to_epoch_and_align_columns.py +412 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251006_98882922fa59_add_tasks_events_feedback_chat_tasks.py +190 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251015_add_session_performance_indexes.py +70 -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 +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/versions/versions_llm.txt +161 -0
- solace_agent_mesh/gateway/http_sse/alembic.ini +109 -0
- solace_agent_mesh/gateway/http_sse/app.py +351 -0
- solace_agent_mesh/gateway/http_sse/component.py +2360 -0
- solace_agent_mesh/gateway/http_sse/components/__init__.py +7 -0
- solace_agent_mesh/gateway/http_sse/components/components_llm.txt +105 -0
- solace_agent_mesh/gateway/http_sse/components/task_logger_forwarder.py +109 -0
- solace_agent_mesh/gateway/http_sse/components/visualization_forwarder_component.py +110 -0
- solace_agent_mesh/gateway/http_sse/dependencies.py +653 -0
- solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +299 -0
- solace_agent_mesh/gateway/http_sse/http_sse_llm_detail.txt +3278 -0
- solace_agent_mesh/gateway/http_sse/main.py +789 -0
- solace_agent_mesh/gateway/http_sse/repository/__init__.py +46 -0
- solace_agent_mesh/gateway/http_sse/repository/chat_task_repository.py +102 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/__init__.py +11 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/chat_task.py +75 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/entities_llm.txt +221 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/feedback.py +20 -0
- 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 +66 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/session_history.py +0 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/task.py +32 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/task_event.py +21 -0
- solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +125 -0
- solace_agent_mesh/gateway/http_sse/repository/interfaces.py +239 -0
- solace_agent_mesh/gateway/http_sse/repository/models/__init__.py +34 -0
- solace_agent_mesh/gateway/http_sse/repository/models/base.py +7 -0
- solace_agent_mesh/gateway/http_sse/repository/models/chat_task_model.py +31 -0
- solace_agent_mesh/gateway/http_sse/repository/models/feedback_model.py +21 -0
- solace_agent_mesh/gateway/http_sse/repository/models/models_llm.txt +257 -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 +53 -0
- solace_agent_mesh/gateway/http_sse/repository/models/task_event_model.py +25 -0
- solace_agent_mesh/gateway/http_sse/repository/models/task_model.py +39 -0
- 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 +308 -0
- solace_agent_mesh/gateway/http_sse/repository/session_repository.py +268 -0
- solace_agent_mesh/gateway/http_sse/repository/task_repository.py +248 -0
- solace_agent_mesh/gateway/http_sse/routers/__init__.py +4 -0
- solace_agent_mesh/gateway/http_sse/routers/agent_cards.py +74 -0
- solace_agent_mesh/gateway/http_sse/routers/artifacts.py +1137 -0
- solace_agent_mesh/gateway/http_sse/routers/auth.py +311 -0
- solace_agent_mesh/gateway/http_sse/routers/config.py +371 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/__init__.py +10 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/dto_llm.txt +450 -0
- 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/__init__.py +15 -0
- 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 +133 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/session_requests.py +33 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/task_requests.py +58 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/__init__.py +18 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/base_responses.py +42 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/project_responses.py +31 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/responses_llm.txt +123 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +33 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/task_responses.py +30 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/version_responses.py +31 -0
- solace_agent_mesh/gateway/http_sse/routers/feedback.py +168 -0
- solace_agent_mesh/gateway/http_sse/routers/people.py +38 -0
- solace_agent_mesh/gateway/http_sse/routers/projects.py +767 -0
- solace_agent_mesh/gateway/http_sse/routers/prompts.py +1415 -0
- solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +312 -0
- solace_agent_mesh/gateway/http_sse/routers/sessions.py +634 -0
- solace_agent_mesh/gateway/http_sse/routers/speech.py +355 -0
- solace_agent_mesh/gateway/http_sse/routers/sse.py +230 -0
- solace_agent_mesh/gateway/http_sse/routers/tasks.py +1089 -0
- solace_agent_mesh/gateway/http_sse/routers/users.py +83 -0
- solace_agent_mesh/gateway/http_sse/routers/version.py +343 -0
- solace_agent_mesh/gateway/http_sse/routers/visualization.py +1220 -0
- solace_agent_mesh/gateway/http_sse/services/__init__.py +4 -0
- solace_agent_mesh/gateway/http_sse/services/agent_card_service.py +71 -0
- 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 +273 -0
- solace_agent_mesh/gateway/http_sse/services/feedback_service.py +250 -0
- solace_agent_mesh/gateway/http_sse/services/people_service.py +78 -0
- 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/services_llm.txt +303 -0
- solace_agent_mesh/gateway/http_sse/services/session_service.py +702 -0
- solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +593 -0
- solace_agent_mesh/gateway/http_sse/services/task_service.py +119 -0
- solace_agent_mesh/gateway/http_sse/session_manager.py +219 -0
- solace_agent_mesh/gateway/http_sse/shared/__init__.py +146 -0
- solace_agent_mesh/gateway/http_sse/shared/auth_utils.py +29 -0
- solace_agent_mesh/gateway/http_sse/shared/base_repository.py +252 -0
- solace_agent_mesh/gateway/http_sse/shared/database_exceptions.py +274 -0
- solace_agent_mesh/gateway/http_sse/shared/database_helpers.py +43 -0
- solace_agent_mesh/gateway/http_sse/shared/enums.py +40 -0
- solace_agent_mesh/gateway/http_sse/shared/error_dto.py +107 -0
- solace_agent_mesh/gateway/http_sse/shared/exception_handlers.py +217 -0
- solace_agent_mesh/gateway/http_sse/shared/exceptions.py +192 -0
- solace_agent_mesh/gateway/http_sse/shared/pagination.py +138 -0
- solace_agent_mesh/gateway/http_sse/shared/response_utils.py +134 -0
- solace_agent_mesh/gateway/http_sse/shared/shared_llm.txt +319 -0
- solace_agent_mesh/gateway/http_sse/shared/timestamp_utils.py +97 -0
- solace_agent_mesh/gateway/http_sse/shared/types.py +50 -0
- solace_agent_mesh/gateway/http_sse/shared/utils.py +22 -0
- solace_agent_mesh/gateway/http_sse/sse_event_buffer.py +88 -0
- solace_agent_mesh/gateway/http_sse/sse_manager.py +491 -0
- solace_agent_mesh/gateway/http_sse/utils/__init__.py +1 -0
- solace_agent_mesh/gateway/http_sse/utils/artifact_copy_utils.py +370 -0
- solace_agent_mesh/gateway/http_sse/utils/stim_utils.py +72 -0
- solace_agent_mesh/gateway/http_sse/utils/utils_llm.txt +47 -0
- solace_agent_mesh/llm.txt +228 -0
- solace_agent_mesh/llm_detail.txt +2835 -0
- solace_agent_mesh/services/__init__.py +0 -0
- solace_agent_mesh/services/platform/__init__.py +18 -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 +147 -0
- solace_agent_mesh/services/platform/api/main.py +280 -0
- solace_agent_mesh/services/platform/api/middleware.py +51 -0
- solace_agent_mesh/services/platform/api/routers/__init__.py +24 -0
- solace_agent_mesh/services/platform/app.py +114 -0
- solace_agent_mesh/services/platform/component.py +235 -0
- solace_agent_mesh/solace_agent_mesh_llm.txt +362 -0
- solace_agent_mesh/solace_agent_mesh_llm_detail.txt +8599 -0
- solace_agent_mesh/templates/agent_template.yaml +53 -0
- solace_agent_mesh/templates/eval_backend_template.yaml +54 -0
- solace_agent_mesh/templates/gateway_app_template.py +75 -0
- solace_agent_mesh/templates/gateway_component_template.py +484 -0
- solace_agent_mesh/templates/gateway_config_template.yaml +38 -0
- solace_agent_mesh/templates/logging_config_template.yaml +48 -0
- solace_agent_mesh/templates/main_orchestrator.yaml +66 -0
- solace_agent_mesh/templates/plugin_agent_config_template.yaml +122 -0
- solace_agent_mesh/templates/plugin_custom_config_template.yaml +27 -0
- solace_agent_mesh/templates/plugin_custom_template.py +10 -0
- solace_agent_mesh/templates/plugin_gateway_config_template.yaml +60 -0
- solace_agent_mesh/templates/plugin_pyproject_template.toml +32 -0
- solace_agent_mesh/templates/plugin_readme_template.md +12 -0
- solace_agent_mesh/templates/plugin_tool_config_template.yaml +109 -0
- solace_agent_mesh/templates/plugin_tools_template.py +224 -0
- solace_agent_mesh/templates/shared_config.yaml +112 -0
- solace_agent_mesh/templates/templates_llm.txt +147 -0
- solace_agent_mesh/templates/webui.yaml +177 -0
- solace_agent_mesh-1.11.2.dist-info/METADATA +504 -0
- solace_agent_mesh-1.11.2.dist-info/RECORD +624 -0
- solace_agent_mesh-1.11.2.dist-info/WHEEL +4 -0
- solace_agent_mesh-1.11.2.dist-info/entry_points.txt +3 -0
- solace_agent_mesh-1.11.2.dist-info/licenses/LICENSE +201 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"""
|
|
2
|
+
SAM Events - System-level event messaging for Solace Agent Mesh.
|
|
3
|
+
|
|
4
|
+
Provides clean separation between A2A task communication and system events.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from .event_service import SamEventService, SamEvent, SessionDeletedEvent
|
|
8
|
+
|
|
9
|
+
__all__ = ["SamEventService", "SamEvent", "SessionDeletedEvent"]
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
"""
|
|
2
|
+
SAM Events Service - Clean system-level event messaging.
|
|
3
|
+
|
|
4
|
+
Provides event publishing and subscription for system events like session lifecycle,
|
|
5
|
+
agent health, configuration changes, etc.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import logging
|
|
9
|
+
import uuid
|
|
10
|
+
from datetime import datetime, timezone
|
|
11
|
+
from dataclasses import dataclass, asdict
|
|
12
|
+
from typing import Any, Dict, Optional, Callable, List
|
|
13
|
+
|
|
14
|
+
from ..a2a.protocol import get_sam_events_topic
|
|
15
|
+
|
|
16
|
+
log = logging.getLogger(__name__)
|
|
17
|
+
|
|
18
|
+
@dataclass
|
|
19
|
+
class SamEvent:
|
|
20
|
+
"""Base class for all SAM system events."""
|
|
21
|
+
event_type: str
|
|
22
|
+
event_id: str
|
|
23
|
+
timestamp: str
|
|
24
|
+
source_component: str
|
|
25
|
+
namespace: str
|
|
26
|
+
data: Dict[str, Any]
|
|
27
|
+
|
|
28
|
+
@classmethod
|
|
29
|
+
def create(cls, event_type: str, source_component: str, namespace: str, data: Dict[str, Any]) -> "SamEvent":
|
|
30
|
+
"""Create a new SAM event with auto-generated ID and timestamp."""
|
|
31
|
+
return cls(
|
|
32
|
+
event_type=event_type,
|
|
33
|
+
event_id=uuid.uuid4().hex,
|
|
34
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
35
|
+
source_component=source_component,
|
|
36
|
+
namespace=namespace,
|
|
37
|
+
data=data
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
41
|
+
"""Convert event to dictionary for messaging."""
|
|
42
|
+
return asdict(self)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
@dataclass
|
|
46
|
+
class SessionDeletedEvent(SamEvent):
|
|
47
|
+
"""System event for session deletion."""
|
|
48
|
+
|
|
49
|
+
@classmethod
|
|
50
|
+
def create(cls, namespace: str, source_component: str, session_id: str,
|
|
51
|
+
user_id: str, agent_id: str, gateway_id: str) -> "SessionDeletedEvent":
|
|
52
|
+
"""Create a session deleted event."""
|
|
53
|
+
data = {
|
|
54
|
+
"session_id": session_id,
|
|
55
|
+
"user_id": user_id,
|
|
56
|
+
"agent_id": agent_id,
|
|
57
|
+
"gateway_id": gateway_id
|
|
58
|
+
}
|
|
59
|
+
return super().create("session.deleted", source_component, namespace, data)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
class SamEventService:
|
|
63
|
+
"""Service for publishing and subscribing to SAM system events."""
|
|
64
|
+
|
|
65
|
+
def __init__(self, namespace: str, component_name: str, publish_func: Callable[[str, Dict, Optional[Dict]], None]):
|
|
66
|
+
"""
|
|
67
|
+
Initialize the SAM event service.
|
|
68
|
+
|
|
69
|
+
Args:
|
|
70
|
+
namespace: The SAM namespace
|
|
71
|
+
component_name: Name of the component using this service
|
|
72
|
+
publish_func: Function to publish messages (from WebUIBackendComponent.publish_a2a)
|
|
73
|
+
"""
|
|
74
|
+
self.namespace = namespace
|
|
75
|
+
self.component_name = component_name
|
|
76
|
+
self.publish_func = publish_func
|
|
77
|
+
self._subscribers: Dict[str, List[Callable]] = {}
|
|
78
|
+
|
|
79
|
+
log.info(f"[SamEventService] Initialized for component {component_name} in namespace {namespace}")
|
|
80
|
+
|
|
81
|
+
def publish_event(self, event: SamEvent) -> bool:
|
|
82
|
+
"""
|
|
83
|
+
Publish a SAM system event.
|
|
84
|
+
|
|
85
|
+
Args:
|
|
86
|
+
event: The system event to publish
|
|
87
|
+
|
|
88
|
+
Returns:
|
|
89
|
+
bool: True if published successfully, False otherwise
|
|
90
|
+
"""
|
|
91
|
+
try:
|
|
92
|
+
# Extract category and action from event_type (e.g., "session.deleted" -> "session", "deleted")
|
|
93
|
+
parts = event.event_type.split(".", 1)
|
|
94
|
+
if len(parts) != 2:
|
|
95
|
+
raise ValueError(f"Invalid event_type format: {event.event_type}. Expected 'category.action'")
|
|
96
|
+
|
|
97
|
+
category, action = parts
|
|
98
|
+
topic = get_sam_events_topic(self.namespace, category, action)
|
|
99
|
+
payload = event.to_dict()
|
|
100
|
+
|
|
101
|
+
log.info(f"[SamEventService] Publishing {event.event_type} event (ID: {event.event_id}) to topic {topic}")
|
|
102
|
+
|
|
103
|
+
# Use the component's publish function (which goes through proper A2A infrastructure)
|
|
104
|
+
self.publish_func(topic, payload, {"eventType": event.event_type, "eventId": event.event_id})
|
|
105
|
+
|
|
106
|
+
log.info(f"[SamEventService] Successfully published event {event.event_id}")
|
|
107
|
+
return True
|
|
108
|
+
|
|
109
|
+
except Exception as e:
|
|
110
|
+
log.error(f"[SamEventService] Failed to publish event {event.event_id}: {e}")
|
|
111
|
+
return False
|
|
112
|
+
|
|
113
|
+
def publish_session_deleted(self, session_id: str, user_id: str, agent_id: str, gateway_id: str) -> bool:
|
|
114
|
+
"""
|
|
115
|
+
Convenience method to publish session deleted event.
|
|
116
|
+
|
|
117
|
+
Args:
|
|
118
|
+
session_id: The deleted session ID
|
|
119
|
+
user_id: The user who owned the session
|
|
120
|
+
agent_id: The agent that was handling the session
|
|
121
|
+
gateway_id: The gateway that deleted the session
|
|
122
|
+
|
|
123
|
+
Returns:
|
|
124
|
+
bool: True if published successfully
|
|
125
|
+
"""
|
|
126
|
+
event = SessionDeletedEvent.create(
|
|
127
|
+
namespace=self.namespace,
|
|
128
|
+
source_component=self.component_name,
|
|
129
|
+
session_id=session_id,
|
|
130
|
+
user_id=user_id,
|
|
131
|
+
agent_id=agent_id,
|
|
132
|
+
gateway_id=gateway_id
|
|
133
|
+
)
|
|
134
|
+
return self.publish_event(event)
|
|
135
|
+
|
|
136
|
+
def subscribe_to_events(self, event_type: str, handler: Callable[[SamEvent], None]) -> bool:
|
|
137
|
+
"""
|
|
138
|
+
Subscribe to system events of a specific type.
|
|
139
|
+
|
|
140
|
+
Args:
|
|
141
|
+
event_type: The type of events to subscribe to (e.g., "session.deleted")
|
|
142
|
+
handler: Function to call when event is received
|
|
143
|
+
|
|
144
|
+
Returns:
|
|
145
|
+
bool: True if subscription was successful
|
|
146
|
+
"""
|
|
147
|
+
try:
|
|
148
|
+
if event_type not in self._subscribers:
|
|
149
|
+
self._subscribers[event_type] = []
|
|
150
|
+
|
|
151
|
+
self._subscribers[event_type].append(handler)
|
|
152
|
+
|
|
153
|
+
log.info(f"[SamEventService] Subscribed to {event_type} events")
|
|
154
|
+
return True
|
|
155
|
+
|
|
156
|
+
except Exception as e:
|
|
157
|
+
log.error(f"[SamEventService] Failed to subscribe to {event_type} events: {e}")
|
|
158
|
+
return False
|
|
159
|
+
|
|
160
|
+
def handle_incoming_event(self, topic: str, payload: Dict[str, Any]) -> None:
|
|
161
|
+
"""
|
|
162
|
+
Handle incoming SAM event from messaging system.
|
|
163
|
+
|
|
164
|
+
Args:
|
|
165
|
+
topic: The topic the event was received on
|
|
166
|
+
payload: Event payload
|
|
167
|
+
"""
|
|
168
|
+
try:
|
|
169
|
+
event_type = payload.get("event_type")
|
|
170
|
+
|
|
171
|
+
if not event_type:
|
|
172
|
+
log.warning(f"[SamEventService] Received event without event_type on topic {topic}")
|
|
173
|
+
return
|
|
174
|
+
|
|
175
|
+
# Create event object
|
|
176
|
+
event = SamEvent(**payload)
|
|
177
|
+
|
|
178
|
+
# Call registered handlers
|
|
179
|
+
handlers = self._subscribers.get(event_type, [])
|
|
180
|
+
for handler in handlers:
|
|
181
|
+
try:
|
|
182
|
+
handler(event)
|
|
183
|
+
except Exception as e:
|
|
184
|
+
log.error(f"[SamEventService] Error in event handler for {event_type}: {e}")
|
|
185
|
+
|
|
186
|
+
log.debug(f"[SamEventService] Processed event {event.event_id} with {len(handlers)} handlers")
|
|
187
|
+
|
|
188
|
+
except Exception as e:
|
|
189
|
+
log.error(f"[SamEventService] Error handling event from topic {topic}: {e}")
|
|
190
|
+
|
|
191
|
+
@staticmethod
|
|
192
|
+
def get_event_topic(namespace: str, event_type: str) -> str:
|
|
193
|
+
"""
|
|
194
|
+
Get the topic for a specific event type.
|
|
195
|
+
|
|
196
|
+
Args:
|
|
197
|
+
namespace: The SAM namespace
|
|
198
|
+
event_type: Event type in format "category.action"
|
|
199
|
+
|
|
200
|
+
Returns:
|
|
201
|
+
str: The topic for the event
|
|
202
|
+
"""
|
|
203
|
+
parts = event_type.split(".", 1)
|
|
204
|
+
if len(parts) != 2:
|
|
205
|
+
raise ValueError(f"Invalid event_type format: {event_type}. Expected 'category.action'")
|
|
206
|
+
|
|
207
|
+
category, action = parts
|
|
208
|
+
return get_sam_events_topic(namespace, category, action)
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# DEVELOPER GUIDE: sam_events
|
|
2
|
+
|
|
3
|
+
## Quick Summary
|
|
4
|
+
The `sam_events` directory provides system-level event messaging for Solace Agent Mesh (SAM). It enables clean separation between agent-to-agent (A2A) task communication and system events like session lifecycle, agent health, and configuration changes.
|
|
5
|
+
|
|
6
|
+
## Files Overview
|
|
7
|
+
- `__init__.py` - Package initialization and public API exports
|
|
8
|
+
- `event_service.py` - Core event service implementation with publishing/subscription capabilities
|
|
9
|
+
|
|
10
|
+
## Developer API Reference
|
|
11
|
+
|
|
12
|
+
### __init__.py
|
|
13
|
+
**Purpose:** Package entry point that exports the main classes for SAM event handling
|
|
14
|
+
**Import:** `from solace_agent_mesh.common.sam_events import SamEventService, SamEvent, SessionDeletedEvent`
|
|
15
|
+
|
|
16
|
+
### event_service.py
|
|
17
|
+
**Purpose:** Implements the core event messaging service for system-level events in SAM
|
|
18
|
+
**Import:** `from solace_agent_mesh.common.sam_events.event_service import SamEventService, SamEvent, SessionDeletedEvent`
|
|
19
|
+
|
|
20
|
+
**Classes:**
|
|
21
|
+
|
|
22
|
+
- `SamEvent(event_type: str, event_id: str, timestamp: str, source_component: str, namespace: str, data: Dict[str, Any])` - Base class for all SAM system events
|
|
23
|
+
- `create(event_type: str, source_component: str, namespace: str, data: Dict[str, Any]) -> SamEvent` - Create a new event with auto-generated ID and timestamp
|
|
24
|
+
- `to_dict() -> Dict[str, Any]` - Convert event to dictionary for messaging
|
|
25
|
+
- `event_type: str` - Type of event (e.g., "session.deleted")
|
|
26
|
+
- `event_id: str` - Unique identifier for the event
|
|
27
|
+
- `timestamp: str` - ISO format timestamp when event was created
|
|
28
|
+
- `source_component: str` - Component that generated the event
|
|
29
|
+
- `namespace: str` - SAM namespace
|
|
30
|
+
- `data: Dict[str, Any]` - Event-specific data payload
|
|
31
|
+
|
|
32
|
+
- `SessionDeletedEvent(SamEvent)` - Specialized event for session deletion notifications
|
|
33
|
+
- `create(namespace: str, source_component: str, session_id: str, user_id: str, agent_id: str, gateway_id: str) -> SessionDeletedEvent` - Create a session deleted event
|
|
34
|
+
|
|
35
|
+
- `SamEventService(namespace: str, component_name: str, publish_func: Callable[[str, Dict, Optional[Dict]], None])` - Service for publishing and subscribing to SAM system events
|
|
36
|
+
- `publish_event(event: SamEvent) -> bool` - Publish a system event
|
|
37
|
+
- `publish_session_deleted(session_id: str, user_id: str, agent_id: str, gateway_id: str) -> bool` - Convenience method to publish session deleted event
|
|
38
|
+
- `subscribe_to_events(event_type: str, handler: Callable[[SamEvent], None]) -> bool` - Subscribe to events of a specific type
|
|
39
|
+
- `handle_incoming_event(topic: str, payload: Dict[str, Any]) -> None` - Handle incoming events from messaging system
|
|
40
|
+
- `namespace: str` - The SAM namespace
|
|
41
|
+
- `component_name: str` - Name of the component using this service
|
|
42
|
+
|
|
43
|
+
**Functions:**
|
|
44
|
+
|
|
45
|
+
- `SamEventService.get_event_topic(namespace: str, event_type: str) -> str` - Get the topic for a specific event type
|
|
46
|
+
|
|
47
|
+
**Usage Examples:**
|
|
48
|
+
|
|
49
|
+
```python
|
|
50
|
+
# Basic event service setup
|
|
51
|
+
from solace_agent_mesh.common.sam_events import SamEventService, SamEvent, SessionDeletedEvent
|
|
52
|
+
|
|
53
|
+
# Initialize the event service
|
|
54
|
+
def my_publish_func(topic: str, payload: dict, headers: dict = None):
|
|
55
|
+
# Your A2A publishing implementation
|
|
56
|
+
pass
|
|
57
|
+
|
|
58
|
+
event_service = SamEventService(
|
|
59
|
+
namespace="my_namespace",
|
|
60
|
+
component_name="my_component",
|
|
61
|
+
publish_func=my_publish_func
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
# Create and publish a custom event
|
|
65
|
+
custom_event = SamEvent.create(
|
|
66
|
+
event_type="agent.health_check",
|
|
67
|
+
source_component="health_monitor",
|
|
68
|
+
namespace="my_namespace",
|
|
69
|
+
data={"status": "healthy", "cpu_usage": 45.2}
|
|
70
|
+
)
|
|
71
|
+
success = event_service.publish_event(custom_event)
|
|
72
|
+
|
|
73
|
+
# Publish a session deleted event (convenience method)
|
|
74
|
+
success = event_service.publish_session_deleted(
|
|
75
|
+
session_id="sess_123",
|
|
76
|
+
user_id="user_456",
|
|
77
|
+
agent_id="agent_789",
|
|
78
|
+
gateway_id="gateway_001"
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
# Subscribe to events
|
|
82
|
+
def handle_session_deleted(event: SamEvent):
|
|
83
|
+
session_id = event.data["session_id"]
|
|
84
|
+
print(f"Session {session_id} was deleted")
|
|
85
|
+
|
|
86
|
+
event_service.subscribe_to_events("session.deleted", handle_session_deleted)
|
|
87
|
+
|
|
88
|
+
# Handle incoming events (typically called by your messaging infrastructure)
|
|
89
|
+
incoming_payload = {
|
|
90
|
+
"event_type": "session.deleted",
|
|
91
|
+
"event_id": "evt_123",
|
|
92
|
+
"timestamp": "2024-01-01T12:00:00Z",
|
|
93
|
+
"source_component": "gateway",
|
|
94
|
+
"namespace": "my_namespace",
|
|
95
|
+
"data": {"session_id": "sess_123", "user_id": "user_456"}
|
|
96
|
+
}
|
|
97
|
+
event_service.handle_incoming_event("sam/events/session/deleted", incoming_payload)
|
|
98
|
+
|
|
99
|
+
# Get topic for an event type
|
|
100
|
+
topic = SamEventService.get_event_topic("my_namespace", "session.deleted")
|
|
101
|
+
print(topic) # Returns the proper SAM events topic
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
# content_hash: 2a249adbac594bbf8a551a6b4f606218b7b8fce41753efe31954b8acc50cc126
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# LLM Summary Detail File
|
|
2
|
+
|
|
3
|
+
This file is a concatenation of all individual *llm.txt files found in the 'sam_events' directory tree. Each section below corresponds to a specific directory's summary file.
|
|
4
|
+
|
|
5
|
+
================================================================================
|
|
6
|
+
|
|
7
|
+
## Section 1: solace_agent_mesh/common/sam_events/sam_events_llm.txt
|
|
8
|
+
|
|
9
|
+
**Source file:** `solace_agent_mesh/common/sam_events/sam_events_llm.txt`
|
|
10
|
+
|
|
11
|
+
# DEVELOPER GUIDE: sam_events
|
|
12
|
+
|
|
13
|
+
## Quick Summary
|
|
14
|
+
The `sam_events` directory provides system-level event messaging for Solace Agent Mesh (SAM). It enables clean separation between agent-to-agent (A2A) task communication and system events like session lifecycle, agent health, and configuration changes.
|
|
15
|
+
|
|
16
|
+
## Files Overview
|
|
17
|
+
- `__init__.py` - Package initialization and public API exports
|
|
18
|
+
- `event_service.py` - Core event service implementation with publishing/subscription capabilities
|
|
19
|
+
|
|
20
|
+
## Developer API Reference
|
|
21
|
+
|
|
22
|
+
### __init__.py
|
|
23
|
+
**Purpose:** Package entry point that exports the main classes for SAM event handling
|
|
24
|
+
**Import:** `from solace_agent_mesh.common.sam_events import SamEventService, SamEvent, SessionDeletedEvent`
|
|
25
|
+
|
|
26
|
+
### event_service.py
|
|
27
|
+
**Purpose:** Implements the core event messaging service for system-level events in SAM
|
|
28
|
+
**Import:** `from solace_agent_mesh.common.sam_events.event_service import SamEventService, SamEvent, SessionDeletedEvent`
|
|
29
|
+
|
|
30
|
+
**Classes:**
|
|
31
|
+
|
|
32
|
+
- `SamEvent(event_type: str, event_id: str, timestamp: str, source_component: str, namespace: str, data: Dict[str, Any])` - Base class for all SAM system events
|
|
33
|
+
- `create(event_type: str, source_component: str, namespace: str, data: Dict[str, Any]) -> SamEvent` - Create a new event with auto-generated ID and timestamp
|
|
34
|
+
- `to_dict() -> Dict[str, Any]` - Convert event to dictionary for messaging
|
|
35
|
+
- `event_type: str` - Type of event (e.g., "session.deleted")
|
|
36
|
+
- `event_id: str` - Unique identifier for the event
|
|
37
|
+
- `timestamp: str` - ISO format timestamp when event was created
|
|
38
|
+
- `source_component: str` - Component that generated the event
|
|
39
|
+
- `namespace: str` - SAM namespace
|
|
40
|
+
- `data: Dict[str, Any]` - Event-specific data payload
|
|
41
|
+
|
|
42
|
+
- `SessionDeletedEvent(SamEvent)` - Specialized event for session deletion notifications
|
|
43
|
+
- `create(namespace: str, source_component: str, session_id: str, user_id: str, agent_id: str, gateway_id: str) -> SessionDeletedEvent` - Create a session deleted event
|
|
44
|
+
|
|
45
|
+
- `SamEventService(namespace: str, component_name: str, publish_func: Callable[[str, Dict, Optional[Dict]], None])` - Service for publishing and subscribing to SAM system events
|
|
46
|
+
- `publish_event(event: SamEvent) -> bool` - Publish a system event
|
|
47
|
+
- `publish_session_deleted(session_id: str, user_id: str, agent_id: str, gateway_id: str) -> bool` - Convenience method to publish session deleted event
|
|
48
|
+
- `subscribe_to_events(event_type: str, handler: Callable[[SamEvent], None]) -> bool` - Subscribe to events of a specific type
|
|
49
|
+
- `handle_incoming_event(topic: str, payload: Dict[str, Any]) -> None` - Handle incoming events from messaging system
|
|
50
|
+
- `namespace: str` - The SAM namespace
|
|
51
|
+
- `component_name: str` - Name of the component using this service
|
|
52
|
+
|
|
53
|
+
**Functions:**
|
|
54
|
+
|
|
55
|
+
- `SamEventService.get_event_topic(namespace: str, event_type: str) -> str` - Get the topic for a specific event type
|
|
56
|
+
|
|
57
|
+
**Usage Examples:**
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
# Basic event service setup
|
|
61
|
+
from solace_agent_mesh.common.sam_events import SamEventService, SamEvent, SessionDeletedEvent
|
|
62
|
+
|
|
63
|
+
# Initialize the event service
|
|
64
|
+
def my_publish_func(topic: str, payload: dict, headers: dict = None):
|
|
65
|
+
# Your A2A publishing implementation
|
|
66
|
+
pass
|
|
67
|
+
|
|
68
|
+
event_service = SamEventService(
|
|
69
|
+
namespace="my_namespace",
|
|
70
|
+
component_name="my_component",
|
|
71
|
+
publish_func=my_publish_func
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
# Create and publish a custom event
|
|
75
|
+
custom_event = SamEvent.create(
|
|
76
|
+
event_type="agent.health_check",
|
|
77
|
+
source_component="health_monitor",
|
|
78
|
+
namespace="my_namespace",
|
|
79
|
+
data={"status": "healthy", "cpu_usage": 45.2}
|
|
80
|
+
)
|
|
81
|
+
success = event_service.publish_event(custom_event)
|
|
82
|
+
|
|
83
|
+
# Publish a session deleted event (convenience method)
|
|
84
|
+
success = event_service.publish_session_deleted(
|
|
85
|
+
session_id="sess_123",
|
|
86
|
+
user_id="user_456",
|
|
87
|
+
agent_id="agent_789",
|
|
88
|
+
gateway_id="gateway_001"
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
# Subscribe to events
|
|
92
|
+
def handle_session_deleted(event: SamEvent):
|
|
93
|
+
session_id = event.data["session_id"]
|
|
94
|
+
print(f"Session {session_id} was deleted")
|
|
95
|
+
|
|
96
|
+
event_service.subscribe_to_events("session.deleted", handle_session_deleted)
|
|
97
|
+
|
|
98
|
+
# Handle incoming events (typically called by your messaging infrastructure)
|
|
99
|
+
incoming_payload = {
|
|
100
|
+
"event_type": "session.deleted",
|
|
101
|
+
"event_id": "evt_123",
|
|
102
|
+
"timestamp": "2024-01-01T12:00:00Z",
|
|
103
|
+
"source_component": "gateway",
|
|
104
|
+
"namespace": "my_namespace",
|
|
105
|
+
"data": {"session_id": "sess_123", "user_id": "user_456"}
|
|
106
|
+
}
|
|
107
|
+
event_service.handle_incoming_event("sam/events/session/deleted", incoming_payload)
|
|
108
|
+
|
|
109
|
+
# Get topic for an event type
|
|
110
|
+
topic = SamEventService.get_event_topic("my_namespace", "session.deleted")
|
|
111
|
+
print(topic) # Returns the proper SAM events topic
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
================================================================================
|
|
115
|
+
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Defines the abstract base class and factory for creating Employee Service providers.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
import importlib
|
|
7
|
+
from abc import ABC, abstractmethod
|
|
8
|
+
from typing import Any, Dict, List, Optional
|
|
9
|
+
import importlib.metadata as metadata
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
from ..utils.in_memory_cache import InMemoryCache
|
|
13
|
+
import pandas as pd
|
|
14
|
+
|
|
15
|
+
log = logging.getLogger(__name__)
|
|
16
|
+
|
|
17
|
+
class BaseEmployeeService(ABC):
|
|
18
|
+
"""
|
|
19
|
+
Abstract base class for Employee Service providers.
|
|
20
|
+
|
|
21
|
+
This class defines a "thin provider" contract. Implementations should focus
|
|
22
|
+
solely on fetching data from a source system (like an HR platform) and
|
|
23
|
+
mapping it to the canonical format. All complex business logic, such as
|
|
24
|
+
building organizational charts or calculating availability schedules, should
|
|
25
|
+
be handled by the tools that consume this service.
|
|
26
|
+
|
|
27
|
+
Canonical Employee Schema
|
|
28
|
+
This schema defines the standard fields that all EmployeeService providers should aim to return.
|
|
29
|
+
- id (string): A unique, stable, and lowercase identifier for the employee (e.g., email, GUID).
|
|
30
|
+
- displayName (string): The employee's full name for display purposes.
|
|
31
|
+
- workEmail (string): The employee's primary work email address.
|
|
32
|
+
- jobTitle (string): The employee's official job title.
|
|
33
|
+
- department (string): The department the employee belongs to.
|
|
34
|
+
- location (string): The physical or regional location of the employee.
|
|
35
|
+
- supervisorId (string): The unique id of the employee's direct manager.
|
|
36
|
+
- hireDate (string): The date the employee was hired (ISO 8601: YYYY-MM-DD).
|
|
37
|
+
- mobilePhone (string): The employee's mobile phone number (optional).
|
|
38
|
+
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
def __init__(self, config: Dict[str, Any]):
|
|
42
|
+
"""
|
|
43
|
+
Initializes the service with its specific configuration block.
|
|
44
|
+
|
|
45
|
+
Args:
|
|
46
|
+
config: The dictionary of configuration parameters for this provider.
|
|
47
|
+
"""
|
|
48
|
+
self.config = config
|
|
49
|
+
self.log_identifier = f"[{self.__class__.__name__}]"
|
|
50
|
+
self.cache_ttl = config.get("cache_ttl_seconds", 3600)
|
|
51
|
+
self.cache = InMemoryCache() if self.cache_ttl > 0 else None
|
|
52
|
+
log.info(
|
|
53
|
+
"%s Initialized. Cache TTL: %d seconds.",
|
|
54
|
+
self.log_identifier,
|
|
55
|
+
self.cache_ttl,
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
@abstractmethod
|
|
59
|
+
async def get_employee_dataframe(self) -> pd.DataFrame:
|
|
60
|
+
"""Returns the entire employee directory as a pandas DataFrame."""
|
|
61
|
+
pass
|
|
62
|
+
|
|
63
|
+
@abstractmethod
|
|
64
|
+
async def get_employee_profile(self, employee_id: str) -> Optional[Dict[str, Any]]:
|
|
65
|
+
"""Fetches the profile for a single employee."""
|
|
66
|
+
pass
|
|
67
|
+
|
|
68
|
+
@abstractmethod
|
|
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
|
+
"""
|
|
71
|
+
Retrieves a list of raw time-off entries for an employee.
|
|
72
|
+
|
|
73
|
+
The tool consuming this data is responsible for interpreting it.
|
|
74
|
+
Each dictionary in the list MUST contain the following keys:
|
|
75
|
+
- 'start' (str): The start date of the leave (YYYY-MM-DD).
|
|
76
|
+
- 'end' (str): The end date of the leave (YYYY-MM-DD).
|
|
77
|
+
- 'type' (str): The category of leave (e.g., 'Vacation', 'Sick', 'Holiday').
|
|
78
|
+
- 'amount' (str): The amount of time taken, must be one of 'full_day' or 'half_day'.
|
|
79
|
+
|
|
80
|
+
Example:
|
|
81
|
+
[
|
|
82
|
+
{'start': '2025-07-04', 'end': '2025-07-04', 'type': 'Holiday', 'amount': 'full_day'},
|
|
83
|
+
{'start': '2025-08-15', 'end': '2025-08-15', 'type': 'Vacation', 'amount': 'full_day'}
|
|
84
|
+
]
|
|
85
|
+
|
|
86
|
+
Args:
|
|
87
|
+
employee_id: The unique identifier for the employee.
|
|
88
|
+
|
|
89
|
+
Returns:
|
|
90
|
+
A list of dictionaries, each representing a time-off entry.
|
|
91
|
+
"""
|
|
92
|
+
pass
|
|
93
|
+
|
|
94
|
+
@abstractmethod
|
|
95
|
+
async def get_employee_profile_picture(self, employee_id: str) -> Optional[str]:
|
|
96
|
+
"""
|
|
97
|
+
Fetches an employee's profile picture and returns it as a data URI.
|
|
98
|
+
|
|
99
|
+
Args:
|
|
100
|
+
employee_id: The unique identifier for the employee.
|
|
101
|
+
|
|
102
|
+
Returns:
|
|
103
|
+
A string containing the data URI (e.g., 'data:image/jpeg;base64,...')
|
|
104
|
+
or None if not available.
|
|
105
|
+
"""
|
|
106
|
+
pass
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
def create_employee_service(
|
|
110
|
+
config: Optional[Dict[str, Any]],
|
|
111
|
+
) -> Optional[BaseEmployeeService]:
|
|
112
|
+
"""
|
|
113
|
+
Factory function to create an instance of an Employee Service provider
|
|
114
|
+
based on the provided configuration.
|
|
115
|
+
"""
|
|
116
|
+
if not config:
|
|
117
|
+
log.info(
|
|
118
|
+
"[EmployeeFactory] No 'employee_service' configuration found. Skipping creation."
|
|
119
|
+
)
|
|
120
|
+
return None
|
|
121
|
+
|
|
122
|
+
provider_type = config.get("type")
|
|
123
|
+
if not provider_type:
|
|
124
|
+
raise ValueError("Employee service config must contain a 'type' key.")
|
|
125
|
+
|
|
126
|
+
log.info(
|
|
127
|
+
f"[EmployeeFactory] Attempting to create employee service of type: {provider_type}"
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
try:
|
|
131
|
+
entry_points = metadata.entry_points(group="solace_agent_mesh.plugins")
|
|
132
|
+
provider_info_entry = next(
|
|
133
|
+
(ep for ep in entry_points if ep.name == provider_type), None
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
if not provider_info_entry:
|
|
137
|
+
raise ValueError(
|
|
138
|
+
f"No plugin provider found for type '{provider_type}' under the 'solace_agent_mesh.plugins' entry point."
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
provider_info = provider_info_entry.load()
|
|
142
|
+
class_path = provider_info.get("class_path")
|
|
143
|
+
if not class_path:
|
|
144
|
+
raise ValueError(
|
|
145
|
+
f"Plugin '{provider_type}' is missing 'class_path' in its info dictionary."
|
|
146
|
+
)
|
|
147
|
+
|
|
148
|
+
module_path, class_name = class_path.rsplit(".", 1)
|
|
149
|
+
module = importlib.import_module(module_path)
|
|
150
|
+
provider_class = getattr(module, class_name)
|
|
151
|
+
|
|
152
|
+
if not issubclass(provider_class, BaseEmployeeService):
|
|
153
|
+
raise TypeError(
|
|
154
|
+
f"Provider class '{class_path}' does not inherit from BaseEmployeeService."
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
log.info(f"Successfully loaded employee provider plugin: {provider_type}")
|
|
158
|
+
return provider_class(config)
|
|
159
|
+
except (ImportError, AttributeError, TypeError, ValueError) as e:
|
|
160
|
+
log.exception(
|
|
161
|
+
f"[EmployeeFactory] Failed to load employee provider plugin '{provider_type}'. "
|
|
162
|
+
"Ensure the plugin is installed and the entry point is correct."
|
|
163
|
+
)
|
|
164
|
+
raise ValueError(f"Could not load employee provider plugin: {e}") from e
|