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,134 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Standardized Response Utilities
|
|
3
|
+
|
|
4
|
+
Provides consistent response formatting across all API endpoints.
|
|
5
|
+
Ensures uniform {data: ...} and {data: [...], meta: ...} response structure.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from typing import TypeVar, Generic, Any, Dict, List
|
|
9
|
+
from pydantic import BaseModel
|
|
10
|
+
from .pagination import PaginationParams, PaginatedResponse, DataResponse
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
T = TypeVar('T')
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def create_data_response(data: T) -> DataResponse[T]:
|
|
17
|
+
"""
|
|
18
|
+
Create a standardized data response.
|
|
19
|
+
|
|
20
|
+
Args:
|
|
21
|
+
data: The response data
|
|
22
|
+
|
|
23
|
+
Returns:
|
|
24
|
+
DataResponse with format: {data: T}
|
|
25
|
+
|
|
26
|
+
Example:
|
|
27
|
+
create_data_response({"id": 1, "name": "test"})
|
|
28
|
+
# Returns: {"data": {"id": 1, "name": "test"}}
|
|
29
|
+
"""
|
|
30
|
+
return DataResponse.create(data)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def create_paginated_response(
|
|
34
|
+
data: List[T],
|
|
35
|
+
total_count: int,
|
|
36
|
+
pagination_params: PaginationParams
|
|
37
|
+
) -> PaginatedResponse[T]:
|
|
38
|
+
"""
|
|
39
|
+
Create a standardized paginated response.
|
|
40
|
+
|
|
41
|
+
Args:
|
|
42
|
+
data: List of items for current page
|
|
43
|
+
total_count: Total number of items across all pages
|
|
44
|
+
pagination_params: Pagination parameters used for the request
|
|
45
|
+
|
|
46
|
+
Returns:
|
|
47
|
+
PaginatedResponse with format: {data: [T], meta: {pagination: {...}}}
|
|
48
|
+
|
|
49
|
+
Example:
|
|
50
|
+
create_paginated_response([{"id": 1}, {"id": 2}], 50, params)
|
|
51
|
+
# Returns: {
|
|
52
|
+
# "data": [{"id": 1}, {"id": 2}],
|
|
53
|
+
# "meta": {
|
|
54
|
+
# "pagination": {
|
|
55
|
+
# "pageNumber": 1,
|
|
56
|
+
# "pageSize": 20,
|
|
57
|
+
# "totalPages": 3,
|
|
58
|
+
# "count": 50,
|
|
59
|
+
# "nextPage": 2
|
|
60
|
+
# }
|
|
61
|
+
# }
|
|
62
|
+
# }
|
|
63
|
+
"""
|
|
64
|
+
return PaginatedResponse.create(data, total_count, pagination_params)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def create_empty_data_response() -> DataResponse[None]:
|
|
68
|
+
"""
|
|
69
|
+
Create a standardized empty data response.
|
|
70
|
+
|
|
71
|
+
Returns:
|
|
72
|
+
DataResponse with format: {data: null}
|
|
73
|
+
"""
|
|
74
|
+
return DataResponse.create(None)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def create_success_response(message: str = "Success") -> DataResponse[Dict[str, str]]:
|
|
78
|
+
"""
|
|
79
|
+
Create a standardized success response.
|
|
80
|
+
|
|
81
|
+
Args:
|
|
82
|
+
message: Success message
|
|
83
|
+
|
|
84
|
+
Returns:
|
|
85
|
+
DataResponse with format: {data: {message: "Success"}}
|
|
86
|
+
"""
|
|
87
|
+
return DataResponse.create({"message": message})
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def create_list_response(items: List[T]) -> DataResponse[List[T]]:
|
|
91
|
+
"""
|
|
92
|
+
Create a standardized list response (non-paginated).
|
|
93
|
+
|
|
94
|
+
Args:
|
|
95
|
+
items: List of items
|
|
96
|
+
|
|
97
|
+
Returns:
|
|
98
|
+
DataResponse with format: {data: [T]}
|
|
99
|
+
|
|
100
|
+
Example:
|
|
101
|
+
create_list_response([{"id": 1}, {"id": 2}])
|
|
102
|
+
# Returns: {"data": [{"id": 1}, {"id": 2}]}
|
|
103
|
+
"""
|
|
104
|
+
return DataResponse.create(items)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
class StandardResponseMixin:
|
|
108
|
+
"""
|
|
109
|
+
Mixin class to add standard response methods to services or controllers.
|
|
110
|
+
"""
|
|
111
|
+
|
|
112
|
+
@staticmethod
|
|
113
|
+
def data_response(data: T) -> DataResponse[T]:
|
|
114
|
+
"""Create a data response."""
|
|
115
|
+
return create_data_response(data)
|
|
116
|
+
|
|
117
|
+
@staticmethod
|
|
118
|
+
def paginated_response(
|
|
119
|
+
data: List[T],
|
|
120
|
+
total_count: int,
|
|
121
|
+
pagination_params: PaginationParams
|
|
122
|
+
) -> PaginatedResponse[T]:
|
|
123
|
+
"""Create a paginated response."""
|
|
124
|
+
return create_paginated_response(data, total_count, pagination_params)
|
|
125
|
+
|
|
126
|
+
@staticmethod
|
|
127
|
+
def success_response(message: str = "Success") -> DataResponse[Dict[str, str]]:
|
|
128
|
+
"""Create a success response."""
|
|
129
|
+
return create_success_response(message)
|
|
130
|
+
|
|
131
|
+
@staticmethod
|
|
132
|
+
def list_response(items: List[T]) -> DataResponse[List[T]]:
|
|
133
|
+
"""Create a list response."""
|
|
134
|
+
return create_list_response(items)
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
# DEVELOPER GUIDE: shared
|
|
2
|
+
|
|
3
|
+
## Quick Summary
|
|
4
|
+
The `shared` directory contains common utilities, constants, enums, types, and exception handling used across all layers of the HTTP SSE gateway. It provides authentication helpers, timestamp utilities, standardized exception handling, database utilities, pagination support, and response formatting for consistent API behavior.
|
|
5
|
+
|
|
6
|
+
## Files Overview
|
|
7
|
+
- `__init__.py` - Central exports for all shared utilities and components
|
|
8
|
+
- `auth_utils.py` - Authentication utilities for FastAPI applications
|
|
9
|
+
- `timestamp_utils.py` - Epoch timestamp utilities matching Java backend patterns
|
|
10
|
+
- `exceptions.py` - Generic web exceptions for HTTP/REST APIs
|
|
11
|
+
- `error_dto.py` - Standardized error response DTOs
|
|
12
|
+
- `exception_handlers.py` - FastAPI exception handlers for consistent HTTP error responses
|
|
13
|
+
- `base_repository.py` - Base repository classes with proper transaction management
|
|
14
|
+
- `pagination.py` - Pagination utilities for API responses
|
|
15
|
+
- `database_exceptions.py` - Database exception handling and conversion
|
|
16
|
+
- `database_helpers.py` - Database utility functions and custom types
|
|
17
|
+
- `response_utils.py` - Standardized response formatting utilities
|
|
18
|
+
- `enums.py` - Enumerations for message types, task status, and validation errors
|
|
19
|
+
- `types.py` - Custom types and type aliases for better type safety
|
|
20
|
+
- `utils.py` - Generic utility functions
|
|
21
|
+
|
|
22
|
+
## Developer API Reference
|
|
23
|
+
|
|
24
|
+
### auth_utils.py
|
|
25
|
+
**Purpose:** Provides authentication utilities for FastAPI controllers
|
|
26
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.shared import get_current_user`
|
|
27
|
+
|
|
28
|
+
**Functions:**
|
|
29
|
+
- `get_current_user(request: FastAPIRequest) -> dict` - Extracts authenticated user from request state, returns user info or anonymous default
|
|
30
|
+
|
|
31
|
+
**Usage Examples:**
|
|
32
|
+
```python
|
|
33
|
+
from fastapi import Depends
|
|
34
|
+
from solace_agent_mesh.gateway.http_sse.shared import get_current_user
|
|
35
|
+
|
|
36
|
+
@app.get("/protected")
|
|
37
|
+
async def protected_endpoint(user: dict = Depends(get_current_user)):
|
|
38
|
+
return {"user_id": user["id"], "name": user["name"]}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### timestamp_utils.py
|
|
42
|
+
**Purpose:** Provides epoch timestamp utilities for database portability and timezone handling
|
|
43
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.shared import now_epoch_ms, epoch_ms_to_iso8601, iso8601_to_epoch_ms`
|
|
44
|
+
|
|
45
|
+
**Functions:**
|
|
46
|
+
- `now_epoch_ms() -> int` - Get current time as milliseconds since epoch
|
|
47
|
+
- `epoch_ms_to_iso8601(epoch_ms: int) -> str` - Convert epoch milliseconds to ISO 8601 string
|
|
48
|
+
- `iso8601_to_epoch_ms(iso8601_string: str) -> int` - Convert ISO 8601 string to epoch milliseconds
|
|
49
|
+
- `datetime_to_epoch_ms(dt: datetime) -> int` - Convert datetime object to epoch milliseconds
|
|
50
|
+
- `epoch_ms_to_datetime(epoch_ms: int) -> datetime` - Convert epoch milliseconds to datetime object
|
|
51
|
+
- `validate_epoch_ms(epoch_ms: int | None) -> bool` - Validate that an epoch milliseconds value is reasonable
|
|
52
|
+
|
|
53
|
+
**Usage Examples:**
|
|
54
|
+
```python
|
|
55
|
+
from solace_agent_mesh.gateway.http_sse.shared import (
|
|
56
|
+
now_epoch_ms, epoch_ms_to_iso8601, iso8601_to_epoch_ms
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
# Get current timestamp for database storage
|
|
60
|
+
created_time = now_epoch_ms()
|
|
61
|
+
|
|
62
|
+
# Convert for API response
|
|
63
|
+
iso_string = epoch_ms_to_iso8601(created_time)
|
|
64
|
+
|
|
65
|
+
# Parse from API request
|
|
66
|
+
timestamp = iso8601_to_epoch_ms("2024-01-01T00:00:00Z")
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### exceptions.py
|
|
70
|
+
**Purpose:** Generic web exceptions for HTTP/REST APIs
|
|
71
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.shared import ValidationError, EntityNotFoundError, EntityAlreadyExistsError`
|
|
72
|
+
|
|
73
|
+
**Classes:**
|
|
74
|
+
- `WebUIBackendException(message: str, details: Optional[Dict[str, Any]] = None)` - Base exception for all web UI backend errors
|
|
75
|
+
- `ValidationError(message: str, validation_details: Optional[Dict[str, List[str]]] = None, entity_type: Optional[str] = None, entity_identifier: Optional[str] = None)` - Exception for validation errors with field-level details
|
|
76
|
+
- `EntityNotFoundError(entity_type: str, entity_id: str)` - Generic exception for when an entity is not found
|
|
77
|
+
- `EntityAlreadyExistsError(entity_type: str, identifier: str, value: Any = None)` - Exception for when an entity already exists
|
|
78
|
+
- `BusinessRuleViolationError(rule: str, message: str)` - Exception for business rule violations
|
|
79
|
+
- `ConfigurationError(component: str, message: str)` - Exception for configuration-related errors
|
|
80
|
+
- `DataIntegrityError(constraint: str, message: str)` - Exception for data integrity violations
|
|
81
|
+
- `ExternalServiceError(service: str, message: str, status_code: Optional[int] = None)` - Exception for external service communication errors
|
|
82
|
+
- `ValidationErrorBuilder()` - Builder for constructing ValidationError instances with fluent API
|
|
83
|
+
|
|
84
|
+
**Usage Examples:**
|
|
85
|
+
```python
|
|
86
|
+
from solace_agent_mesh.gateway.http_sse.shared import (
|
|
87
|
+
ValidationError, EntityNotFoundError, ValidationErrorBuilder
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
# Simple validation error
|
|
91
|
+
raise ValidationError("Invalid input data")
|
|
92
|
+
|
|
93
|
+
# Entity not found
|
|
94
|
+
raise EntityNotFoundError("User", "123")
|
|
95
|
+
|
|
96
|
+
# Complex validation with builder
|
|
97
|
+
error = ValidationError.builder() \
|
|
98
|
+
.message("Invalid user data") \
|
|
99
|
+
.validation_detail("email", ["Invalid email format"]) \
|
|
100
|
+
.entity_type("User") \
|
|
101
|
+
.build()
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### error_dto.py
|
|
105
|
+
**Purpose:** Standardized error response DTOs for HTTP APIs
|
|
106
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.shared import EventErrorDTO`
|
|
107
|
+
|
|
108
|
+
**Classes:**
|
|
109
|
+
- `EventErrorDTO(message: str, validationDetails: Optional[Dict[str, List[str]]] = None)` - Simplified and standardized error response format
|
|
110
|
+
- `create(message: str, validation_details: Optional[Dict[str, List[str]]] = None) -> EventErrorDTO` - Create a new EventErrorDTO
|
|
111
|
+
- `not_found(entity_type: str, entity_id: str) -> EventErrorDTO` - Create a 404 Not Found error
|
|
112
|
+
- `validation_error(message: str, validation_details: Dict[str, List[str]]) -> EventErrorDTO` - Create a validation error
|
|
113
|
+
|
|
114
|
+
**Usage Examples:**
|
|
115
|
+
```python
|
|
116
|
+
from solace_agent_mesh.gateway.http_sse.shared import EventErrorDTO
|
|
117
|
+
|
|
118
|
+
# Simple error
|
|
119
|
+
error = EventErrorDTO.create("Something went wrong")
|
|
120
|
+
|
|
121
|
+
# Not found error
|
|
122
|
+
error = EventErrorDTO.not_found("User", "123")
|
|
123
|
+
|
|
124
|
+
# Validation error
|
|
125
|
+
error = EventErrorDTO.validation_error(
|
|
126
|
+
"Invalid data",
|
|
127
|
+
{"email": ["Invalid format"], "age": ["Must be positive"]}
|
|
128
|
+
)
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### exception_handlers.py
|
|
132
|
+
**Purpose:** FastAPI exception handlers for consistent HTTP error responses
|
|
133
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.shared import register_exception_handlers`
|
|
134
|
+
|
|
135
|
+
**Functions:**
|
|
136
|
+
- `register_exception_handlers(app)` - Register all exception handlers with a FastAPI app
|
|
137
|
+
- `create_error_response(status_code: int, message: str, validation_details: dict = None) -> JSONResponse` - Create standardized error response
|
|
138
|
+
|
|
139
|
+
**Usage Examples:**
|
|
140
|
+
```python
|
|
141
|
+
from fastapi import FastAPI
|
|
142
|
+
from solace_agent_mesh.gateway.http_sse.shared import register_exception_handlers
|
|
143
|
+
|
|
144
|
+
app = FastAPI()
|
|
145
|
+
register_exception_handlers(app)
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### base_repository.py
|
|
149
|
+
**Purpose:** Base repository classes with proper transaction management
|
|
150
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.shared import BaseRepository, PaginatedRepository, ValidationMixin`
|
|
151
|
+
|
|
152
|
+
**Classes:**
|
|
153
|
+
- `BaseRepository(model_class: Type[ModelType], entity_class: Type[EntityType])` - Abstract base class for repositories
|
|
154
|
+
- `create(session: Session, create_data: Dict[str, Any]) -> EntityType` - Create a new entity
|
|
155
|
+
- `get_by_id(session: Session, entity_id: Any) -> EntityType` - Get entity by ID
|
|
156
|
+
- `get_all(session: Session, limit: Optional[int] = None, offset: Optional[int] = None) -> List[EntityType]` - Get all entities
|
|
157
|
+
- `update(session: Session, entity_id: Any, update_data: Dict[str, Any]) -> EntityType` - Update an entity
|
|
158
|
+
- `delete(session: Session, entity_id: Any) -> None` - Delete an entity
|
|
159
|
+
- `PaginatedRepository(model_class: Type[ModelType], entity_class: Type[EntityType])` - Base repository with enhanced pagination support
|
|
160
|
+
- `ValidationMixin` - Mixin for repositories that need validation logic
|
|
161
|
+
|
|
162
|
+
**Usage Examples:**
|
|
163
|
+
```python
|
|
164
|
+
from solace_agent_mesh.gateway.http_sse.shared import BaseRepository
|
|
165
|
+
from sqlalchemy.orm import Session
|
|
166
|
+
|
|
167
|
+
class UserRepository(BaseRepository[UserModel, UserEntity]):
|
|
168
|
+
@property
|
|
169
|
+
def entity_name(self) -> str:
|
|
170
|
+
return "User"
|
|
171
|
+
|
|
172
|
+
# Usage
|
|
173
|
+
repo = UserRepository(UserModel, UserEntity)
|
|
174
|
+
user = repo.create(session, {"name": "John", "email": "john@example.com"})
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### pagination.py
|
|
178
|
+
**Purpose:** Pagination utilities for API responses
|
|
179
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.shared import PaginationParams, PaginatedResponse, DataResponse`
|
|
180
|
+
|
|
181
|
+
**Classes:**
|
|
182
|
+
- `PaginationParams(page_number: int = 1, page_size: int = 20)` - Request parameters for pagination
|
|
183
|
+
- `offset: int` - Calculate the offset for database queries
|
|
184
|
+
- `PaginatedResponse[T](data: list[T], meta: Meta)` - Generic paginated response with data and metadata
|
|
185
|
+
- `create(data: list[T], total_count: int, pagination: PaginationParams) -> PaginatedResponse[T]` - Create paginated response
|
|
186
|
+
- `DataResponse[T](data: T)` - Simple data response wrapper
|
|
187
|
+
- `create(data: T) -> DataResponse[T]` - Create data response
|
|
188
|
+
|
|
189
|
+
**Constants/Variables:**
|
|
190
|
+
- `DEFAULT_PAGE_NUMBER: int` - Default page number (1)
|
|
191
|
+
- `DEFAULT_PAGE_SIZE: int` - Default page size (20)
|
|
192
|
+
- `MAX_PAGE_SIZE: int` - Maximum allowed page size (100)
|
|
193
|
+
|
|
194
|
+
**Usage Examples:**
|
|
195
|
+
```python
|
|
196
|
+
from solace_agent_mesh.gateway.http_sse.shared import PaginationParams, PaginatedResponse
|
|
197
|
+
|
|
198
|
+
# Create pagination params
|
|
199
|
+
pagination = PaginationParams(page_number=1, page_size=20)
|
|
200
|
+
|
|
201
|
+
# Create paginated response
|
|
202
|
+
response = PaginatedResponse.create(users, total_count=100, pagination=pagination)
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### response_utils.py
|
|
206
|
+
**Purpose:** Standardized response formatting utilities
|
|
207
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.shared import create_data_response, create_paginated_response, StandardResponseMixin`
|
|
208
|
+
|
|
209
|
+
**Functions:**
|
|
210
|
+
- `create_data_response(data: T) -> DataResponse[T]` - Create a standardized data response
|
|
211
|
+
- `create_paginated_response(data: List[T], total_count: int, pagination_params: PaginationParams) -> PaginatedResponse[T]` - Create a standardized paginated response
|
|
212
|
+
- `create_success_response(message: str = "Success") -> DataResponse[Dict[str, str]]` - Create a standardized success response
|
|
213
|
+
- `create_list_response(items: List[T]) -> DataResponse[List[T]]` - Create a standardized list response
|
|
214
|
+
|
|
215
|
+
**Classes:**
|
|
216
|
+
- `StandardResponseMixin` - Mixin class to add standard response methods to services or controllers
|
|
217
|
+
|
|
218
|
+
**Usage Examples:**
|
|
219
|
+
```python
|
|
220
|
+
from solace_agent_mesh.gateway.http_sse.shared import create_data_response, create_paginated_response
|
|
221
|
+
|
|
222
|
+
# Simple data response
|
|
223
|
+
response = create_data_response({"id": 1, "name": "test"})
|
|
224
|
+
|
|
225
|
+
# Paginated response
|
|
226
|
+
response = create_paginated_response(users, 100, pagination_params)
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### database_exceptions.py
|
|
230
|
+
**Purpose:** Database exception handling and conversion
|
|
231
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.shared import DatabaseExceptionHandler, handle_database_errors`
|
|
232
|
+
|
|
233
|
+
**Classes:**
|
|
234
|
+
- `DatabaseExceptionHandler` - Centralized handler for converting SQLAlchemy exceptions to domain exceptions
|
|
235
|
+
- `handle_integrity_error(e: IntegrityError, entity_type: str = "Resource") -> ValidationError` - Convert integrity constraint violations
|
|
236
|
+
- `handle_operational_error(e: OperationalError, entity_type: str = "Resource") -> DataIntegrityError` - Handle operational errors
|
|
237
|
+
- `handle_database_error(e: DatabaseError, entity_type: str = "Resource") -> DataIntegrityError` - Handle general database errors
|
|
238
|
+
- `handle_sqlalchemy_error(e: SQLAlchemyError, entity_type: str = "Resource") -> DataIntegrityError` - Handle any other SQLAlchemy errors
|
|
239
|
+
|
|
240
|
+
**Functions:**
|
|
241
|
+
- `handle_database_errors(entity_type: str = "Resource")` - Convenience decorator for database exception handling
|
|
242
|
+
|
|
243
|
+
**Usage Examples:**
|
|
244
|
+
```python
|
|
245
|
+
from solace_agent_mesh.gateway.http_sse.shared import handle_database_errors
|
|
246
|
+
|
|
247
|
+
class UserRepository:
|
|
248
|
+
@handle_database_errors("User")
|
|
249
|
+
def create_user(self, session, data):
|
|
250
|
+
# Repository method implementation
|
|
251
|
+
pass
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### database_helpers.py
|
|
255
|
+
**Purpose:** Database utility functions and custom types
|
|
256
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.shared import SimpleJSON`
|
|
257
|
+
|
|
258
|
+
**Classes:**
|
|
259
|
+
- `SimpleJSON(TypeDecorator)` - Simple JSON type using Text storage for all databases
|
|
260
|
+
- `process_bind_param(value, dialect)` - Convert Python object to JSON string for storage
|
|
261
|
+
- `process_result_value(value, dialect)` - Convert JSON string back to Python object
|
|
262
|
+
|
|
263
|
+
**Usage Examples:**
|
|
264
|
+
```python
|
|
265
|
+
from sqlalchemy import Column, String
|
|
266
|
+
from solace_agent_mesh.gateway.http_sse.shared import SimpleJSON
|
|
267
|
+
|
|
268
|
+
class MyModel(Base):
|
|
269
|
+
id = Column(String, primary_key=True)
|
|
270
|
+
metadata = Column(SimpleJSON) # Stores JSON as text
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
### enums.py
|
|
274
|
+
**Purpose:** Enumerations used throughout the application
|
|
275
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.shared.enums import SenderType, TaskStatus, MessageType`
|
|
276
|
+
|
|
277
|
+
**Classes:**
|
|
278
|
+
- `SenderType(str, Enum)` - Types of message senders (USER, AGENT, SYSTEM)
|
|
279
|
+
- `TaskStatus(str, Enum)` - Task execution status (PENDING, RUNNING, COMPLETED, FAILED, CANCELLED)
|
|
280
|
+
- `MessageType(str, Enum)` - Types of messages (TEXT, FILE, IMAGE, DOCUMENT)
|
|
281
|
+
- `ValidationErrorType(str, Enum)` - Types of validation errors (REQUIRED_FIELD, INVALID_FORMAT, etc.)
|
|
282
|
+
|
|
283
|
+
**Usage Examples:**
|
|
284
|
+
```python
|
|
285
|
+
from solace_agent_mesh.gateway.http_sse.shared.enums import SenderType, TaskStatus
|
|
286
|
+
|
|
287
|
+
# Use in message handling
|
|
288
|
+
if sender_type == SenderType.USER:
|
|
289
|
+
process_user_message()
|
|
290
|
+
|
|
291
|
+
# Use in task management
|
|
292
|
+
task.status = TaskStatus.RUNNING
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### types.py
|
|
296
|
+
**Purpose:** Custom types and type aliases for better type safety
|
|
297
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.shared.types import UserId, JsonDict, Timestamp`
|
|
298
|
+
|
|
299
|
+
**Type Aliases:**
|
|
300
|
+
- `UserId: str` - User identifier type
|
|
301
|
+
- `SessionId: str` - Session identifier type
|
|
302
|
+
- `MessageId: str` - Message identifier type
|
|
303
|
+
- `TaskId: str` - Task identifier type
|
|
304
|
+
- `AgentId: str` - Agent identifier type
|
|
305
|
+
- `JsonDict: dict[str, Any]` - JSON dictionary type
|
|
306
|
+
- `Headers: dict[str, str]` - HTTP headers type
|
|
307
|
+
- `QueryParams: dict[str, str | list[str]]` - Query parameters type
|
|
308
|
+
|
|
309
|
+
**Classes:**
|
|
310
|
+
- `Timestamp(BaseModel)` - Standardized timestamp representation using epoch milliseconds
|
|
311
|
+
- `created_time: int` - Creation time in epoch milliseconds
|
|
312
|
+
- `updated_time: int | None` - Update time in epoch milliseconds
|
|
313
|
+
- `SortInfo(BaseModel)` - Sorting information for list requests
|
|
314
|
+
- `field: str` - Field to sort by
|
|
315
|
+
- `direction: str` - Sort direction (asc or desc)
|
|
316
|
+
- `FilterInfo(BaseModel)` - Filtering information for list requests
|
|
317
|
+
- `field: str` - Field to filter
|
|
318
|
+
|
|
319
|
+
# content_hash: 646c6eedceab05f3b8573660906cf739cefbc0807c5b28dffe25161746299b67
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Epoch timestamp utilities for database portability and timezone handling.
|
|
3
|
+
|
|
4
|
+
Matches the Java backend pattern:
|
|
5
|
+
- Store as epoch milliseconds in database
|
|
6
|
+
- Return as ISO 8601 strings via API
|
|
7
|
+
- UI handles timezone conversion
|
|
8
|
+
|
|
9
|
+
This provides a consistent approach across the platform.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
import time
|
|
13
|
+
from datetime import datetime, timezone
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def now_epoch_ms() -> int:
|
|
17
|
+
"""
|
|
18
|
+
Get current time as milliseconds since epoch (matches Java pattern).
|
|
19
|
+
|
|
20
|
+
Returns:
|
|
21
|
+
Current time as epoch milliseconds
|
|
22
|
+
"""
|
|
23
|
+
return int(time.time() * 1000)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def epoch_ms_to_iso8601(epoch_ms: int) -> str:
|
|
27
|
+
"""
|
|
28
|
+
Convert epoch milliseconds to ISO 8601 string (matches Java epochLongToIso8601String).
|
|
29
|
+
|
|
30
|
+
Args:
|
|
31
|
+
epoch_ms: Time in milliseconds since epoch
|
|
32
|
+
|
|
33
|
+
Returns:
|
|
34
|
+
ISO 8601 formatted string in UTC timezone
|
|
35
|
+
"""
|
|
36
|
+
return datetime.fromtimestamp(epoch_ms / 1000, tz=timezone.utc).isoformat()
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def iso8601_to_epoch_ms(iso8601_string: str) -> int:
|
|
40
|
+
"""
|
|
41
|
+
Convert ISO 8601 string to epoch milliseconds (matches Java iso8601StringToEpochLong).
|
|
42
|
+
|
|
43
|
+
Args:
|
|
44
|
+
iso8601_string: ISO 8601 formatted datetime string
|
|
45
|
+
|
|
46
|
+
Returns:
|
|
47
|
+
Time as epoch milliseconds
|
|
48
|
+
"""
|
|
49
|
+
dt = datetime.fromisoformat(iso8601_string.replace("Z", "+00:00"))
|
|
50
|
+
return int(dt.timestamp() * 1000)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def datetime_to_epoch_ms(dt: datetime) -> int:
|
|
54
|
+
"""
|
|
55
|
+
Convert datetime object to epoch milliseconds.
|
|
56
|
+
|
|
57
|
+
Args:
|
|
58
|
+
dt: Python datetime object
|
|
59
|
+
|
|
60
|
+
Returns:
|
|
61
|
+
Time as epoch milliseconds
|
|
62
|
+
"""
|
|
63
|
+
return int(dt.timestamp() * 1000)
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def epoch_ms_to_datetime(epoch_ms: int) -> datetime:
|
|
67
|
+
"""
|
|
68
|
+
Convert epoch milliseconds to datetime object.
|
|
69
|
+
|
|
70
|
+
Args:
|
|
71
|
+
epoch_ms: Time in milliseconds since epoch
|
|
72
|
+
|
|
73
|
+
Returns:
|
|
74
|
+
Python datetime object in UTC
|
|
75
|
+
"""
|
|
76
|
+
return datetime.fromtimestamp(epoch_ms / 1000, tz=timezone.utc)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def validate_epoch_ms(epoch_ms: int | None) -> bool:
|
|
80
|
+
"""
|
|
81
|
+
Validate that an epoch milliseconds value is reasonable.
|
|
82
|
+
|
|
83
|
+
Args:
|
|
84
|
+
epoch_ms: Time in milliseconds since epoch
|
|
85
|
+
|
|
86
|
+
Returns:
|
|
87
|
+
True if the timestamp appears valid
|
|
88
|
+
"""
|
|
89
|
+
if epoch_ms is None:
|
|
90
|
+
return False
|
|
91
|
+
|
|
92
|
+
# Check if timestamp is in reasonable range
|
|
93
|
+
# After 1970-01-01 and before year 2100
|
|
94
|
+
min_epoch_ms = 0
|
|
95
|
+
max_epoch_ms = 4102444800000 # 2100-01-01 00:00:00 UTC
|
|
96
|
+
|
|
97
|
+
return min_epoch_ms <= epoch_ms <= max_epoch_ms
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Custom types and type aliases used throughout the application.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from datetime import datetime
|
|
6
|
+
from typing import Any
|
|
7
|
+
|
|
8
|
+
from pydantic import BaseModel
|
|
9
|
+
|
|
10
|
+
# Basic type aliases
|
|
11
|
+
UserId = str
|
|
12
|
+
SessionId = str
|
|
13
|
+
MessageId = str
|
|
14
|
+
TaskId = str
|
|
15
|
+
AgentId = str
|
|
16
|
+
|
|
17
|
+
# Dictionary types
|
|
18
|
+
JsonDict = dict[str, Any]
|
|
19
|
+
Headers = dict[str, str]
|
|
20
|
+
QueryParams = dict[str, str | list[str]]
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
# Common data structures
|
|
24
|
+
class Timestamp(BaseModel):
|
|
25
|
+
"""Standardized timestamp representation using epoch milliseconds."""
|
|
26
|
+
|
|
27
|
+
created_time: int # Epoch milliseconds
|
|
28
|
+
updated_time: int | None = None # Epoch milliseconds
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class LegacyTimestamp(BaseModel):
|
|
32
|
+
"""Legacy timestamp representation (deprecated - use Timestamp instead)."""
|
|
33
|
+
|
|
34
|
+
created_at: datetime
|
|
35
|
+
updated_at: datetime | None = None
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class SortInfo(BaseModel):
|
|
39
|
+
"""Sorting information for list requests."""
|
|
40
|
+
|
|
41
|
+
field: str
|
|
42
|
+
direction: str = "asc" # asc or desc
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class FilterInfo(BaseModel):
|
|
46
|
+
"""Filtering information for list requests."""
|
|
47
|
+
|
|
48
|
+
field: str
|
|
49
|
+
operator: str # eq, ne, gt, lt, gte, lte, contains, in
|
|
50
|
+
value: Any
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Shared utility functions.
|
|
3
|
+
|
|
4
|
+
Contains generic utility functions used across the application.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import uuid
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def generate_uuid() -> str:
|
|
11
|
+
"""Generate a UUID string for database storage."""
|
|
12
|
+
return str(uuid.uuid4())
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def to_snake_case(name: str) -> str:
|
|
16
|
+
"""Convert a string to snake_case."""
|
|
17
|
+
return name.replace(" ", "_").lower()
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def to_pascal_case(name: str) -> str:
|
|
21
|
+
"""Convert a string to PascalCase."""
|
|
22
|
+
return "".join(word.capitalize() for word in name.split())
|