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,119 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Service layer for handling A2A task submissions and cancellations.
|
|
3
|
+
Uses CoreA2AService for logic and a provided function for publishing.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import logging
|
|
7
|
+
import threading
|
|
8
|
+
from typing import Callable, Dict, Optional
|
|
9
|
+
|
|
10
|
+
from ....common import a2a
|
|
11
|
+
from ....gateway.http_sse.sse_manager import SSEManager
|
|
12
|
+
from ....core_a2a.service import CoreA2AService
|
|
13
|
+
|
|
14
|
+
log = logging.getLogger(__name__)
|
|
15
|
+
|
|
16
|
+
PublishFunc = Callable[[str, Dict, Optional[Dict]], None]
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class TaskService:
|
|
20
|
+
"""
|
|
21
|
+
Handles the logic for submitting and cancelling tasks to A2A agents.
|
|
22
|
+
Delegates A2A message construction to CoreA2AService and publishing
|
|
23
|
+
to an injected function.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
def __init__(
|
|
27
|
+
self,
|
|
28
|
+
core_a2a_service: CoreA2AService,
|
|
29
|
+
publish_func: PublishFunc,
|
|
30
|
+
namespace: str,
|
|
31
|
+
gateway_id: str,
|
|
32
|
+
sse_manager: SSEManager,
|
|
33
|
+
task_context_map: Dict[str, Dict],
|
|
34
|
+
task_context_lock: threading.Lock,
|
|
35
|
+
app_name: str,
|
|
36
|
+
):
|
|
37
|
+
"""
|
|
38
|
+
Initializes the TaskService.
|
|
39
|
+
|
|
40
|
+
Args:
|
|
41
|
+
core_a2a_service: An instance of the CoreA2AService.
|
|
42
|
+
publish_func: A callable function (provided by WebUIBackendComponent)
|
|
43
|
+
to publish messages to the A2A messaging layer.
|
|
44
|
+
Expected signature: publish_func(topic: str, payload: Dict, user_properties: Optional[Dict])
|
|
45
|
+
namespace: The namespace string.
|
|
46
|
+
gateway_id: The unique ID of this gateway instance.
|
|
47
|
+
sse_manager: An instance of the SSEManager.
|
|
48
|
+
task_context_map: Shared dictionary to store task context.
|
|
49
|
+
task_context_lock: Lock for accessing the task context map.
|
|
50
|
+
app_name: The name of the SAC application (used for artifact context).
|
|
51
|
+
"""
|
|
52
|
+
if not isinstance(core_a2a_service, CoreA2AService):
|
|
53
|
+
raise TypeError("core_a2a_service must be an instance of CoreA2AService")
|
|
54
|
+
if not callable(publish_func):
|
|
55
|
+
raise TypeError("publish_func must be a callable function")
|
|
56
|
+
if not isinstance(sse_manager, SSEManager):
|
|
57
|
+
raise TypeError("sse_manager must be an instance of SSEManager")
|
|
58
|
+
|
|
59
|
+
self.core_a2a_service = core_a2a_service
|
|
60
|
+
self._publish_func = publish_func
|
|
61
|
+
self._namespace = namespace
|
|
62
|
+
self._gateway_id = gateway_id
|
|
63
|
+
self._sse_manager = sse_manager
|
|
64
|
+
self._task_context_map = task_context_map
|
|
65
|
+
self._task_context_lock = task_context_lock
|
|
66
|
+
self._app_name = app_name
|
|
67
|
+
log.info(
|
|
68
|
+
"[TaskService] Initialized with Gateway ID: %s, App Name: %s",
|
|
69
|
+
self._gateway_id,
|
|
70
|
+
self._app_name,
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
async def cancel_task(
|
|
74
|
+
self,
|
|
75
|
+
agent_name: str,
|
|
76
|
+
task_id: str,
|
|
77
|
+
client_id: str,
|
|
78
|
+
user_id: str = "web_user",
|
|
79
|
+
):
|
|
80
|
+
"""
|
|
81
|
+
Constructs and publishes an A2A CancelTaskRequest using CoreA2AService.
|
|
82
|
+
|
|
83
|
+
Args:
|
|
84
|
+
agent_name: The name of the agent that owns the task.
|
|
85
|
+
task_id: The ID of the task to cancel.
|
|
86
|
+
client_id: The ID of the client requesting cancellation (frontend).
|
|
87
|
+
user_id: An identifier for the user (optional).
|
|
88
|
+
|
|
89
|
+
Raises:
|
|
90
|
+
Exception: If constructing or publishing the message fails.
|
|
91
|
+
"""
|
|
92
|
+
log_prefix = "[TaskService][Task:%s] " % task_id
|
|
93
|
+
log.info(
|
|
94
|
+
"%sRequesting cancellation for task owned by agent '%s'",
|
|
95
|
+
log_prefix,
|
|
96
|
+
agent_name,
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
try:
|
|
100
|
+
target_topic, payload, user_properties = self.core_a2a_service.cancel_task(
|
|
101
|
+
agent_name=agent_name,
|
|
102
|
+
task_id=task_id,
|
|
103
|
+
client_id=client_id,
|
|
104
|
+
user_id=user_id,
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
log.debug(
|
|
108
|
+
"%sPublishing CancelTaskRequest to topic: %s", log_prefix, target_topic
|
|
109
|
+
)
|
|
110
|
+
self._publish_func(
|
|
111
|
+
topic=target_topic, payload=payload, user_properties=user_properties
|
|
112
|
+
)
|
|
113
|
+
log.info("%sSuccessfully published task cancellation request.", log_prefix)
|
|
114
|
+
|
|
115
|
+
except Exception as e:
|
|
116
|
+
log.exception("%sFailed to publish cancellation request: %s", log_prefix, e)
|
|
117
|
+
raise a2a.create_internal_error(
|
|
118
|
+
message="Failed to publish cancellation request: %s" % e
|
|
119
|
+
) from e
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Manages web user sessions and mapping to A2A Client IDs.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
import uuid
|
|
7
|
+
from collections.abc import Callable
|
|
8
|
+
from typing import Any
|
|
9
|
+
|
|
10
|
+
from starlette.requests import Request
|
|
11
|
+
|
|
12
|
+
log = logging.getLogger(__name__)
|
|
13
|
+
|
|
14
|
+
SESSION_KEY_CLIENT_ID = "a2a_client_id"
|
|
15
|
+
SESSION_KEY_SESSION_ID = "a2a_session_id"
|
|
16
|
+
SESSION_KEY_ACCESS_TOKEN = "access_token"
|
|
17
|
+
SESSION_KEY_REFRESH_TOKEN = "refresh_token"
|
|
18
|
+
SESSION_KEY_USER_ID = "user_id"
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class SessionManager:
|
|
22
|
+
"""
|
|
23
|
+
Handles web user sessions using Starlette's SessionMiddleware.
|
|
24
|
+
Generates and stores unique A2A Client IDs and manages the current A2A Session ID per web session.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
def __init__(
|
|
28
|
+
self,
|
|
29
|
+
secret_key: str,
|
|
30
|
+
app_config: dict[str, Any],
|
|
31
|
+
):
|
|
32
|
+
if not secret_key:
|
|
33
|
+
raise ValueError("Session secret key cannot be empty.")
|
|
34
|
+
self.secret_key = secret_key
|
|
35
|
+
self.force_user_identity = app_config.get("force_user_identity")
|
|
36
|
+
self.use_authorization = app_config.get("frontend_use_authorization", False)
|
|
37
|
+
self._temp_code_cache = {}
|
|
38
|
+
log.info("Initialized SessionManager")
|
|
39
|
+
if self.force_user_identity:
|
|
40
|
+
log.warning(
|
|
41
|
+
f"Forcing user identity to: {self.force_user_identity}"
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
def _get_or_create_client_id(self, request: Request) -> str | None:
|
|
45
|
+
"""
|
|
46
|
+
Retrieves the A2A Client ID. It prioritizes the authenticated user from
|
|
47
|
+
`request.state.user` and falls back to session-based or generated IDs.
|
|
48
|
+
If authorization is enabled, it returns None if no user can be identified.
|
|
49
|
+
"""
|
|
50
|
+
if self.force_user_identity:
|
|
51
|
+
return self.force_user_identity
|
|
52
|
+
|
|
53
|
+
if hasattr(request.state, "user") and request.state.user:
|
|
54
|
+
user_id = request.state.user.get("id")
|
|
55
|
+
if user_id:
|
|
56
|
+
log.debug(
|
|
57
|
+
"Using authenticated user ID from request.state: %s",
|
|
58
|
+
user_id,
|
|
59
|
+
)
|
|
60
|
+
return user_id
|
|
61
|
+
else:
|
|
62
|
+
log.warning(
|
|
63
|
+
"request.state.user exists but has no 'id' field. Falling back to other methods."
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
user_id = self.get_user_id(request)
|
|
67
|
+
if user_id:
|
|
68
|
+
log.debug(
|
|
69
|
+
"Using authenticated user_id from session as A2A Client ID: %s",
|
|
70
|
+
user_id,
|
|
71
|
+
)
|
|
72
|
+
return user_id
|
|
73
|
+
|
|
74
|
+
client_id = request.session.get(SESSION_KEY_CLIENT_ID)
|
|
75
|
+
if client_id:
|
|
76
|
+
log.debug(
|
|
77
|
+
"Using existing A2A Client ID: %s for web session.",
|
|
78
|
+
client_id,
|
|
79
|
+
)
|
|
80
|
+
return client_id
|
|
81
|
+
|
|
82
|
+
if not self.use_authorization:
|
|
83
|
+
client_id = "sam_dev_user"
|
|
84
|
+
log.info(
|
|
85
|
+
"No authenticated user and auth is disabled, using client ID: %s for web session.",
|
|
86
|
+
client_id,
|
|
87
|
+
)
|
|
88
|
+
request.session[SESSION_KEY_CLIENT_ID] = client_id
|
|
89
|
+
return client_id
|
|
90
|
+
|
|
91
|
+
log.warning(
|
|
92
|
+
"Could not determine client ID and authorization is enabled."
|
|
93
|
+
)
|
|
94
|
+
return None
|
|
95
|
+
|
|
96
|
+
def get_a2a_client_id(self, request: Request) -> str | None:
|
|
97
|
+
"""
|
|
98
|
+
FastAPI dependency callable to get the A2A Client ID for the current request.
|
|
99
|
+
Ensures a client ID exists in the session if auth is disabled.
|
|
100
|
+
"""
|
|
101
|
+
return self._get_or_create_client_id(request)
|
|
102
|
+
|
|
103
|
+
def get_a2a_session_id(self, request: Request) -> str | None:
|
|
104
|
+
"""
|
|
105
|
+
FastAPI dependency callable to get the current A2A Session ID for the current request.
|
|
106
|
+
Returns None if no session has been started for the current agent in this web session.
|
|
107
|
+
"""
|
|
108
|
+
session_id = request.session.get(SESSION_KEY_SESSION_ID)
|
|
109
|
+
log.debug("Retrieving A2A Session ID: %s", session_id)
|
|
110
|
+
return session_id
|
|
111
|
+
|
|
112
|
+
def start_new_a2a_session(self, request: Request) -> str:
|
|
113
|
+
"""
|
|
114
|
+
Generates a new A2A Session ID, stores it in the web session, and returns it.
|
|
115
|
+
This should be called when the user explicitly starts a new chat or switches agents.
|
|
116
|
+
"""
|
|
117
|
+
client_id = self._get_or_create_client_id(request)
|
|
118
|
+
if not client_id:
|
|
119
|
+
# This case should ideally be prevented by middleware raising 401
|
|
120
|
+
raise RuntimeError(
|
|
121
|
+
"Cannot start a new A2A session without a client ID when authorization is enabled."
|
|
122
|
+
)
|
|
123
|
+
new_session_id = f"web-session-{uuid.uuid4().hex}"
|
|
124
|
+
request.session[SESSION_KEY_SESSION_ID] = new_session_id
|
|
125
|
+
log.info(
|
|
126
|
+
"Started new A2A Session ID: %s for Client ID: %s",
|
|
127
|
+
new_session_id,
|
|
128
|
+
client_id,
|
|
129
|
+
)
|
|
130
|
+
return new_session_id
|
|
131
|
+
|
|
132
|
+
def create_new_session_id(self, request: Request) -> str:
|
|
133
|
+
"""
|
|
134
|
+
Generates a new A2A Session ID without storing it in cookies.
|
|
135
|
+
This should be used when the frontend manages session state.
|
|
136
|
+
"""
|
|
137
|
+
client_id = self._get_or_create_client_id(request)
|
|
138
|
+
if not client_id:
|
|
139
|
+
# This case should ideally be prevented by middleware raising 401
|
|
140
|
+
raise RuntimeError(
|
|
141
|
+
"Cannot start a new A2A session without a client ID when authorization is enabled."
|
|
142
|
+
)
|
|
143
|
+
new_session_id = f"web-session-{uuid.uuid4().hex}"
|
|
144
|
+
log.info(
|
|
145
|
+
"Generated new A2A Session ID: %s for Client ID: %s (not stored in cookies)",
|
|
146
|
+
new_session_id,
|
|
147
|
+
client_id,
|
|
148
|
+
)
|
|
149
|
+
return new_session_id
|
|
150
|
+
|
|
151
|
+
def ensure_a2a_session(self, request: Request) -> str:
|
|
152
|
+
"""
|
|
153
|
+
Ensures an A2A session ID exists, creating one if necessary.
|
|
154
|
+
Use this when an operation requires a session ID but one might not have been explicitly started yet.
|
|
155
|
+
"""
|
|
156
|
+
session_id = self.get_a2a_session_id(request)
|
|
157
|
+
if not session_id:
|
|
158
|
+
session_id = self.start_new_a2a_session(request)
|
|
159
|
+
log.info(
|
|
160
|
+
"No A2A Session ID found, created new one via ensure_a2a_session: %s",
|
|
161
|
+
session_id,
|
|
162
|
+
)
|
|
163
|
+
return session_id
|
|
164
|
+
|
|
165
|
+
def store_auth_tokens(
|
|
166
|
+
self, request: Request, access_token: str, refresh_token: str | None = None
|
|
167
|
+
):
|
|
168
|
+
"""
|
|
169
|
+
Stores authentication tokens directly in the user's session.
|
|
170
|
+
"""
|
|
171
|
+
request.session[SESSION_KEY_ACCESS_TOKEN] = access_token
|
|
172
|
+
if refresh_token:
|
|
173
|
+
request.session[SESSION_KEY_REFRESH_TOKEN] = refresh_token
|
|
174
|
+
log.info("Stored auth tokens directly in session.")
|
|
175
|
+
|
|
176
|
+
def get_access_token(self, request: Request) -> str | None:
|
|
177
|
+
"""
|
|
178
|
+
Retrieves the access token from the web session.
|
|
179
|
+
"""
|
|
180
|
+
return request.session.get(SESSION_KEY_ACCESS_TOKEN)
|
|
181
|
+
|
|
182
|
+
def get_refresh_token(self, request: Request) -> str | None:
|
|
183
|
+
"""
|
|
184
|
+
Retrieves the refresh token from the web session.
|
|
185
|
+
"""
|
|
186
|
+
return request.session.get(SESSION_KEY_REFRESH_TOKEN)
|
|
187
|
+
|
|
188
|
+
def clear_auth_tokens(self, request: Request) -> None:
|
|
189
|
+
"""
|
|
190
|
+
Clears authentication tokens from the web session.
|
|
191
|
+
"""
|
|
192
|
+
request.session.pop(SESSION_KEY_ACCESS_TOKEN, None)
|
|
193
|
+
request.session.pop(SESSION_KEY_REFRESH_TOKEN, None)
|
|
194
|
+
log.info("Cleared auth tokens from session")
|
|
195
|
+
|
|
196
|
+
def store_user_id(self, request: Request, user_id: str) -> None:
|
|
197
|
+
"""
|
|
198
|
+
Stores the user ID in the web session.
|
|
199
|
+
"""
|
|
200
|
+
request.session[SESSION_KEY_USER_ID] = user_id
|
|
201
|
+
log.info("Stored user ID in session: %s", user_id)
|
|
202
|
+
|
|
203
|
+
def get_user_id(self, request: Request) -> str | None:
|
|
204
|
+
"""
|
|
205
|
+
Retrieves the user ID from the web session.
|
|
206
|
+
"""
|
|
207
|
+
return request.session.get(SESSION_KEY_USER_ID)
|
|
208
|
+
|
|
209
|
+
def dep_get_client_id(self) -> Callable[[Request], str | None]:
|
|
210
|
+
"""Returns a callable suitable for FastAPI Depends to get the client ID."""
|
|
211
|
+
return self.get_a2a_client_id
|
|
212
|
+
|
|
213
|
+
def dep_get_session_id(self) -> Callable[[Request], str | None]:
|
|
214
|
+
"""Returns a callable suitable for FastAPI Depends to get the current session ID."""
|
|
215
|
+
return self.get_a2a_session_id
|
|
216
|
+
|
|
217
|
+
def dep_ensure_session_id(self) -> Callable[[Request], str]:
|
|
218
|
+
"""Returns a callable suitable for FastAPI Depends to ensure a session ID exists."""
|
|
219
|
+
return self.ensure_a2a_session
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Shared Utilities and Constants
|
|
3
|
+
|
|
4
|
+
Contains common utilities, constants, enums, types, and exception handling
|
|
5
|
+
used across layers.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from .auth_utils import get_current_user
|
|
9
|
+
from .timestamp_utils import (
|
|
10
|
+
datetime_to_epoch_ms,
|
|
11
|
+
epoch_ms_to_datetime,
|
|
12
|
+
epoch_ms_to_iso8601,
|
|
13
|
+
iso8601_to_epoch_ms,
|
|
14
|
+
now_epoch_ms,
|
|
15
|
+
validate_epoch_ms,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
# Exception handling exports
|
|
19
|
+
from .exceptions import (
|
|
20
|
+
WebUIBackendException,
|
|
21
|
+
ValidationError,
|
|
22
|
+
EntityNotFoundError,
|
|
23
|
+
EntityAlreadyExistsError,
|
|
24
|
+
BusinessRuleViolationError,
|
|
25
|
+
ConfigurationError,
|
|
26
|
+
DataIntegrityError,
|
|
27
|
+
ExternalServiceError,
|
|
28
|
+
EntityOperation,
|
|
29
|
+
ValidationErrorBuilder,
|
|
30
|
+
)
|
|
31
|
+
from .error_dto import EventErrorDTO
|
|
32
|
+
from .exception_handlers import (
|
|
33
|
+
register_exception_handlers,
|
|
34
|
+
create_error_response,
|
|
35
|
+
validation_error_handler,
|
|
36
|
+
entity_not_found_handler,
|
|
37
|
+
entity_already_exists_handler,
|
|
38
|
+
business_rule_violation_handler,
|
|
39
|
+
configuration_error_handler,
|
|
40
|
+
data_integrity_error_handler,
|
|
41
|
+
external_service_error_handler,
|
|
42
|
+
webui_backend_exception_handler,
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
# Repository base classes
|
|
46
|
+
from .base_repository import (
|
|
47
|
+
BaseRepository,
|
|
48
|
+
PaginatedRepository,
|
|
49
|
+
ValidationMixin,
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
# Pagination utilities
|
|
53
|
+
from .pagination import (
|
|
54
|
+
PaginationParams,
|
|
55
|
+
PaginatedResponse,
|
|
56
|
+
DataResponse,
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
# Database utilities
|
|
60
|
+
from .database_exceptions import (
|
|
61
|
+
DatabaseExceptionHandler,
|
|
62
|
+
DatabaseErrorDecorator,
|
|
63
|
+
handle_database_errors,
|
|
64
|
+
)
|
|
65
|
+
# Database helpers (SimpleJSON type only - transaction management removed)
|
|
66
|
+
from .database_helpers import SimpleJSON
|
|
67
|
+
|
|
68
|
+
# Generic utilities
|
|
69
|
+
from .utils import generate_uuid, to_snake_case, to_pascal_case
|
|
70
|
+
|
|
71
|
+
# Response utilities
|
|
72
|
+
from .response_utils import (
|
|
73
|
+
create_data_response,
|
|
74
|
+
create_paginated_response,
|
|
75
|
+
create_empty_data_response,
|
|
76
|
+
create_success_response,
|
|
77
|
+
create_list_response,
|
|
78
|
+
StandardResponseMixin,
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
__all__ = [
|
|
82
|
+
# Utilities
|
|
83
|
+
"get_current_user",
|
|
84
|
+
"now_epoch_ms",
|
|
85
|
+
"epoch_ms_to_iso8601",
|
|
86
|
+
"iso8601_to_epoch_ms",
|
|
87
|
+
"datetime_to_epoch_ms",
|
|
88
|
+
"epoch_ms_to_datetime",
|
|
89
|
+
"validate_epoch_ms",
|
|
90
|
+
|
|
91
|
+
# Exception classes
|
|
92
|
+
"WebUIBackendException",
|
|
93
|
+
"ValidationError",
|
|
94
|
+
"EntityNotFoundError",
|
|
95
|
+
"EntityAlreadyExistsError",
|
|
96
|
+
"BusinessRuleViolationError",
|
|
97
|
+
"ConfigurationError",
|
|
98
|
+
"DataIntegrityError",
|
|
99
|
+
"ExternalServiceError",
|
|
100
|
+
"EntityOperation",
|
|
101
|
+
"ValidationErrorBuilder",
|
|
102
|
+
|
|
103
|
+
# Error response DTO
|
|
104
|
+
"EventErrorDTO",
|
|
105
|
+
|
|
106
|
+
# Exception handlers
|
|
107
|
+
"register_exception_handlers",
|
|
108
|
+
"create_error_response",
|
|
109
|
+
"validation_error_handler",
|
|
110
|
+
"entity_not_found_handler",
|
|
111
|
+
"entity_already_exists_handler",
|
|
112
|
+
"business_rule_violation_handler",
|
|
113
|
+
"configuration_error_handler",
|
|
114
|
+
"data_integrity_error_handler",
|
|
115
|
+
"external_service_error_handler",
|
|
116
|
+
"webui_backend_exception_handler",
|
|
117
|
+
|
|
118
|
+
# Repository base classes
|
|
119
|
+
"BaseRepository",
|
|
120
|
+
"PaginatedRepository",
|
|
121
|
+
"ValidationMixin",
|
|
122
|
+
|
|
123
|
+
# Pagination utilities
|
|
124
|
+
"PaginationParams",
|
|
125
|
+
"PaginatedResponse",
|
|
126
|
+
"DataResponse",
|
|
127
|
+
|
|
128
|
+
# Database utilities
|
|
129
|
+
"DatabaseExceptionHandler",
|
|
130
|
+
"DatabaseErrorDecorator",
|
|
131
|
+
"handle_database_errors",
|
|
132
|
+
# Database transaction functions removed - use FastAPI dependency injection
|
|
133
|
+
|
|
134
|
+
# Generic utilities
|
|
135
|
+
"generate_uuid",
|
|
136
|
+
"to_snake_case",
|
|
137
|
+
"to_pascal_case",
|
|
138
|
+
|
|
139
|
+
# Response utilities
|
|
140
|
+
"create_data_response",
|
|
141
|
+
"create_paginated_response",
|
|
142
|
+
"create_empty_data_response",
|
|
143
|
+
"create_success_response",
|
|
144
|
+
"create_list_response",
|
|
145
|
+
"StandardResponseMixin",
|
|
146
|
+
]
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Authentication utilities for the FastAPI application.
|
|
3
|
+
|
|
4
|
+
This module provides common authentication functions used across controllers.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from fastapi import Depends, Request as FastAPIRequest
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
async def get_current_user(request: FastAPIRequest) -> dict:
|
|
11
|
+
"""
|
|
12
|
+
Extracts the current user from the request state.
|
|
13
|
+
|
|
14
|
+
This function is used as a FastAPI dependency to get the authenticated user
|
|
15
|
+
information that was set by the AuthMiddleware.
|
|
16
|
+
|
|
17
|
+
Args:
|
|
18
|
+
request: The FastAPI request object with user state
|
|
19
|
+
|
|
20
|
+
Returns:
|
|
21
|
+
dict: User information dictionary containing id, name, email, etc.
|
|
22
|
+
"""
|
|
23
|
+
return getattr(request.state, "user", {
|
|
24
|
+
"id": "anonymous",
|
|
25
|
+
"name": "Anonymous User",
|
|
26
|
+
"email": "anonymous@localhost",
|
|
27
|
+
"authenticated": False,
|
|
28
|
+
"auth_method": "none"
|
|
29
|
+
})
|