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,46 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Repository layer containing all data access logic organized by entity type.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
# Interfaces
|
|
6
|
+
from .interfaces import (
|
|
7
|
+
IChatTaskRepository,
|
|
8
|
+
IFeedbackRepository,
|
|
9
|
+
IProjectRepository,
|
|
10
|
+
ISessionRepository,
|
|
11
|
+
ITaskRepository,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
# Implementations
|
|
15
|
+
from .chat_task_repository import ChatTaskRepository
|
|
16
|
+
from .feedback_repository import FeedbackRepository
|
|
17
|
+
from .project_repository import ProjectRepository
|
|
18
|
+
from .session_repository import SessionRepository
|
|
19
|
+
from .task_repository import TaskRepository
|
|
20
|
+
|
|
21
|
+
# Entities (re-exported for convenience)
|
|
22
|
+
from .entities.session import Session
|
|
23
|
+
|
|
24
|
+
# Models (re-exported for convenience)
|
|
25
|
+
from .models.base import Base
|
|
26
|
+
from .models.session_model import SessionModel
|
|
27
|
+
|
|
28
|
+
__all__ = [
|
|
29
|
+
# Interfaces
|
|
30
|
+
"IChatTaskRepository",
|
|
31
|
+
"IFeedbackRepository",
|
|
32
|
+
"IProjectRepository",
|
|
33
|
+
"ISessionRepository",
|
|
34
|
+
"ITaskRepository",
|
|
35
|
+
# Implementations
|
|
36
|
+
"ChatTaskRepository",
|
|
37
|
+
"FeedbackRepository",
|
|
38
|
+
"ProjectRepository",
|
|
39
|
+
"SessionRepository",
|
|
40
|
+
"TaskRepository",
|
|
41
|
+
# Entities
|
|
42
|
+
"Session",
|
|
43
|
+
# Models
|
|
44
|
+
"Base",
|
|
45
|
+
"SessionModel",
|
|
46
|
+
]
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"""
|
|
2
|
+
ChatTask repository implementation using SQLAlchemy.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from typing import List, Optional
|
|
6
|
+
|
|
7
|
+
from sqlalchemy.orm import Session as DBSession
|
|
8
|
+
|
|
9
|
+
from ..shared import now_epoch_ms
|
|
10
|
+
from ..shared.types import SessionId, UserId
|
|
11
|
+
from .entities import ChatTask
|
|
12
|
+
from .interfaces import IChatTaskRepository
|
|
13
|
+
from .models import ChatTaskModel
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class ChatTaskRepository(IChatTaskRepository):
|
|
17
|
+
"""SQLAlchemy implementation of chat task repository."""
|
|
18
|
+
|
|
19
|
+
def save(self, session: DBSession, task: ChatTask) -> ChatTask:
|
|
20
|
+
"""Save or update a chat task (upsert)."""
|
|
21
|
+
existing = session.query(ChatTaskModel).filter(
|
|
22
|
+
ChatTaskModel.id == task.id
|
|
23
|
+
).first()
|
|
24
|
+
|
|
25
|
+
if existing:
|
|
26
|
+
# Update existing task - store strings directly
|
|
27
|
+
existing.user_message = task.user_message
|
|
28
|
+
existing.message_bubbles = task.message_bubbles # Already a string
|
|
29
|
+
existing.task_metadata = task.task_metadata # Already a string
|
|
30
|
+
existing.updated_time = now_epoch_ms()
|
|
31
|
+
else:
|
|
32
|
+
# Create new task - store strings directly
|
|
33
|
+
model = ChatTaskModel(
|
|
34
|
+
id=task.id,
|
|
35
|
+
session_id=task.session_id,
|
|
36
|
+
user_id=task.user_id,
|
|
37
|
+
user_message=task.user_message,
|
|
38
|
+
message_bubbles=task.message_bubbles, # Already a string
|
|
39
|
+
task_metadata=task.task_metadata, # Already a string
|
|
40
|
+
created_time=task.created_time,
|
|
41
|
+
updated_time=task.updated_time
|
|
42
|
+
)
|
|
43
|
+
session.add(model)
|
|
44
|
+
|
|
45
|
+
session.flush()
|
|
46
|
+
|
|
47
|
+
# Reload to get updated values
|
|
48
|
+
model = session.query(ChatTaskModel).filter(
|
|
49
|
+
ChatTaskModel.id == task.id
|
|
50
|
+
).first()
|
|
51
|
+
|
|
52
|
+
return self._model_to_entity(model)
|
|
53
|
+
|
|
54
|
+
def find_by_session(
|
|
55
|
+
self,
|
|
56
|
+
session: DBSession,
|
|
57
|
+
session_id: SessionId,
|
|
58
|
+
user_id: UserId
|
|
59
|
+
) -> List[ChatTask]:
|
|
60
|
+
"""Find all tasks for a session."""
|
|
61
|
+
models = session.query(ChatTaskModel).filter(
|
|
62
|
+
ChatTaskModel.session_id == session_id,
|
|
63
|
+
ChatTaskModel.user_id == user_id
|
|
64
|
+
).order_by(ChatTaskModel.created_time.asc()).all()
|
|
65
|
+
|
|
66
|
+
return [self._model_to_entity(m) for m in models]
|
|
67
|
+
|
|
68
|
+
def find_by_id(
|
|
69
|
+
self,
|
|
70
|
+
session: DBSession,
|
|
71
|
+
task_id: str,
|
|
72
|
+
user_id: UserId
|
|
73
|
+
) -> Optional[ChatTask]:
|
|
74
|
+
"""Find a specific task."""
|
|
75
|
+
model = session.query(ChatTaskModel).filter(
|
|
76
|
+
ChatTaskModel.id == task_id,
|
|
77
|
+
ChatTaskModel.user_id == user_id
|
|
78
|
+
).first()
|
|
79
|
+
|
|
80
|
+
return self._model_to_entity(model) if model else None
|
|
81
|
+
|
|
82
|
+
def delete_by_session(self, session: DBSession, session_id: SessionId) -> bool:
|
|
83
|
+
"""Delete all tasks for a session."""
|
|
84
|
+
result = session.query(ChatTaskModel).filter(
|
|
85
|
+
ChatTaskModel.session_id == session_id
|
|
86
|
+
).delete()
|
|
87
|
+
session.flush()
|
|
88
|
+
return result > 0
|
|
89
|
+
|
|
90
|
+
def _model_to_entity(self, model: ChatTaskModel) -> ChatTask:
|
|
91
|
+
"""Convert SQLAlchemy model to domain entity."""
|
|
92
|
+
# No deserialization - just pass strings through
|
|
93
|
+
return ChatTask(
|
|
94
|
+
id=model.id,
|
|
95
|
+
session_id=model.session_id,
|
|
96
|
+
user_id=model.user_id,
|
|
97
|
+
user_message=model.user_message,
|
|
98
|
+
message_bubbles=model.message_bubbles, # String (opaque)
|
|
99
|
+
task_metadata=model.task_metadata, # String (opaque)
|
|
100
|
+
created_time=model.created_time,
|
|
101
|
+
updated_time=model.updated_time
|
|
102
|
+
)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Domain entities for the repository layer.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from .chat_task import ChatTask
|
|
6
|
+
from .feedback import Feedback
|
|
7
|
+
from .session import Session
|
|
8
|
+
from .task import Task
|
|
9
|
+
from .task_event import TaskEvent
|
|
10
|
+
|
|
11
|
+
__all__ = ["ChatTask", "Feedback", "Session", "Task", "TaskEvent"]
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"""
|
|
2
|
+
ChatTask domain entity.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
from typing import Any, Dict, Optional
|
|
7
|
+
|
|
8
|
+
from pydantic import BaseModel, ConfigDict, field_validator
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ChatTask(BaseModel):
|
|
12
|
+
"""ChatTask domain entity with business logic."""
|
|
13
|
+
|
|
14
|
+
model_config = ConfigDict(from_attributes=True)
|
|
15
|
+
|
|
16
|
+
id: str
|
|
17
|
+
session_id: str
|
|
18
|
+
user_id: str
|
|
19
|
+
user_message: Optional[str] = None
|
|
20
|
+
message_bubbles: str # JSON string (opaque to backend)
|
|
21
|
+
task_metadata: Optional[str] = None # JSON string (opaque to backend)
|
|
22
|
+
created_time: int
|
|
23
|
+
updated_time: Optional[int] = None
|
|
24
|
+
|
|
25
|
+
@field_validator("message_bubbles")
|
|
26
|
+
@classmethod
|
|
27
|
+
def validate_message_bubbles(cls, v: str) -> str:
|
|
28
|
+
"""Validate that message_bubbles is a non-empty JSON string."""
|
|
29
|
+
if not v or not v.strip():
|
|
30
|
+
raise ValueError("message_bubbles cannot be empty")
|
|
31
|
+
|
|
32
|
+
# Validate it's valid JSON (but don't validate structure)
|
|
33
|
+
try:
|
|
34
|
+
parsed = json.loads(v)
|
|
35
|
+
if not isinstance(parsed, list) or len(parsed) == 0:
|
|
36
|
+
raise ValueError("message_bubbles must be a non-empty JSON array")
|
|
37
|
+
except json.JSONDecodeError as e:
|
|
38
|
+
raise ValueError(f"message_bubbles must be valid JSON: {e}")
|
|
39
|
+
|
|
40
|
+
return v
|
|
41
|
+
|
|
42
|
+
@field_validator("task_metadata")
|
|
43
|
+
@classmethod
|
|
44
|
+
def validate_task_metadata(cls, v: Optional[str]) -> Optional[str]:
|
|
45
|
+
"""Validate that task_metadata is valid JSON if provided."""
|
|
46
|
+
if v is None or not v.strip():
|
|
47
|
+
return None
|
|
48
|
+
|
|
49
|
+
# Validate it's valid JSON (but don't validate structure)
|
|
50
|
+
try:
|
|
51
|
+
json.loads(v)
|
|
52
|
+
except json.JSONDecodeError as e:
|
|
53
|
+
raise ValueError(f"task_metadata must be valid JSON: {e}")
|
|
54
|
+
|
|
55
|
+
return v
|
|
56
|
+
|
|
57
|
+
def add_feedback(self, feedback_type: str, feedback_text: Optional[str] = None) -> None:
|
|
58
|
+
"""Add or update feedback for this task."""
|
|
59
|
+
# Parse metadata, update, re-serialize
|
|
60
|
+
metadata = json.loads(self.task_metadata) if self.task_metadata else {}
|
|
61
|
+
|
|
62
|
+
metadata["feedback"] = {
|
|
63
|
+
"type": feedback_type,
|
|
64
|
+
"text": feedback_text,
|
|
65
|
+
"submitted": True
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
self.task_metadata = json.dumps(metadata)
|
|
69
|
+
|
|
70
|
+
def get_feedback(self) -> Optional[Dict[str, Any]]:
|
|
71
|
+
"""Get feedback for this task."""
|
|
72
|
+
if self.task_metadata:
|
|
73
|
+
metadata = json.loads(self.task_metadata)
|
|
74
|
+
return metadata.get("feedback")
|
|
75
|
+
return None
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
# DEVELOPER GUIDE: entities
|
|
2
|
+
|
|
3
|
+
## Quick Summary
|
|
4
|
+
The entities directory contains domain entities for the repository layer, providing core business objects for managing chat sessions, tasks, feedback, and events with built-in validation and business logic.
|
|
5
|
+
|
|
6
|
+
## Files Overview
|
|
7
|
+
- `__init__.py` - Exports the main domain entities (ChatTask, Feedback, Session, Task, TaskEvent)
|
|
8
|
+
- `chat_task.py` - ChatTask entity for managing chat conversations with JSON validation
|
|
9
|
+
- `feedback.py` - Feedback entity for user ratings and comments on tasks
|
|
10
|
+
- `session.py` - Session entity with name management and access control
|
|
11
|
+
- `task.py` - Task entity for tracking user tasks with token usage metrics
|
|
12
|
+
- `task_event.py` - TaskEvent entity for tracking events related to tasks
|
|
13
|
+
|
|
14
|
+
## Developer API Reference
|
|
15
|
+
|
|
16
|
+
### __init__.py
|
|
17
|
+
**Purpose:** Provides centralized imports for all domain entities
|
|
18
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.repository.entities import ChatTask, Feedback, Session, Task, TaskEvent`
|
|
19
|
+
|
|
20
|
+
### chat_task.py
|
|
21
|
+
**Purpose:** Defines the ChatTask domain entity for managing chat conversations with JSON validation
|
|
22
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.repository.entities import ChatTask`
|
|
23
|
+
|
|
24
|
+
**Classes:**
|
|
25
|
+
- `ChatTask(id: str, session_id: str, user_id: str, message_bubbles: str, created_time: int, user_message: str | None = None, task_metadata: str | None = None, updated_time: int | None = None)` - ChatTask domain entity with business logic
|
|
26
|
+
- `add_feedback(feedback_type: str, feedback_text: str | None = None) -> None` - Add or update feedback for this task
|
|
27
|
+
- `get_feedback() -> dict[str, Any] | None` - Get feedback for this task
|
|
28
|
+
- `id: str` - Unique task identifier
|
|
29
|
+
- `session_id: str` - Associated session identifier
|
|
30
|
+
- `user_id: str` - User who owns the task
|
|
31
|
+
- `user_message: str | None` - Optional user message
|
|
32
|
+
- `message_bubbles: str` - JSON string containing message bubbles (must be non-empty JSON array)
|
|
33
|
+
- `task_metadata: str | None` - Optional JSON string for task metadata
|
|
34
|
+
- `created_time: int` - Task creation timestamp
|
|
35
|
+
- `updated_time: int | None` - Last update timestamp
|
|
36
|
+
|
|
37
|
+
**Usage Examples:**
|
|
38
|
+
```python
|
|
39
|
+
from solace_agent_mesh.gateway.http_sse.repository.entities import ChatTask
|
|
40
|
+
import json
|
|
41
|
+
|
|
42
|
+
# Create a chat task
|
|
43
|
+
message_bubbles = json.dumps([
|
|
44
|
+
{"type": "user", "content": "Hello"},
|
|
45
|
+
{"type": "agent", "content": "Hi there!"}
|
|
46
|
+
])
|
|
47
|
+
|
|
48
|
+
chat_task = ChatTask(
|
|
49
|
+
id="chat_123",
|
|
50
|
+
session_id="session_456",
|
|
51
|
+
user_id="user_789",
|
|
52
|
+
user_message="Hello",
|
|
53
|
+
message_bubbles=message_bubbles,
|
|
54
|
+
created_time=1640995200000
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
# Add feedback
|
|
58
|
+
chat_task.add_feedback("positive", "Great response!")
|
|
59
|
+
|
|
60
|
+
# Get feedback
|
|
61
|
+
feedback = chat_task.get_feedback()
|
|
62
|
+
if feedback:
|
|
63
|
+
print(f"Feedback type: {feedback['type']}")
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### feedback.py
|
|
67
|
+
**Purpose:** Defines the Feedback domain entity for user ratings and comments
|
|
68
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.repository.entities import Feedback`
|
|
69
|
+
|
|
70
|
+
**Classes:**
|
|
71
|
+
- `Feedback(id: str, session_id: str, task_id: str, user_id: str, rating: str, created_time: int, comment: str | None = None)` - Feedback domain entity
|
|
72
|
+
- `id: str` - Unique feedback identifier
|
|
73
|
+
- `session_id: str` - Associated session identifier
|
|
74
|
+
- `task_id: str` - Associated task identifier
|
|
75
|
+
- `user_id: str` - User who provided feedback
|
|
76
|
+
- `rating: str` - User rating
|
|
77
|
+
- `comment: str | None` - Optional feedback comment
|
|
78
|
+
- `created_time: int` - Feedback creation timestamp
|
|
79
|
+
|
|
80
|
+
**Usage Examples:**
|
|
81
|
+
```python
|
|
82
|
+
from solace_agent_mesh.gateway.http_sse.repository.entities import Feedback
|
|
83
|
+
|
|
84
|
+
# Create feedback
|
|
85
|
+
feedback = Feedback(
|
|
86
|
+
id="feedback_123",
|
|
87
|
+
session_id="session_456",
|
|
88
|
+
task_id="task_789",
|
|
89
|
+
user_id="user_123",
|
|
90
|
+
rating="5",
|
|
91
|
+
comment="Great service!",
|
|
92
|
+
created_time=1640995200000
|
|
93
|
+
)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### session.py
|
|
97
|
+
**Purpose:** Defines the Session domain entity with business logic for chat sessions
|
|
98
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.repository.entities import Session`
|
|
99
|
+
|
|
100
|
+
**Classes:**
|
|
101
|
+
- `Session(id: SessionId, user_id: UserId, created_time: int, name: str | None = None, agent_id: AgentId | None = None, updated_time: int | None = None)` - Session domain entity with business logic
|
|
102
|
+
- `update_name(new_name: str) -> None` - Updates session name with validation and sets updated_time
|
|
103
|
+
- `mark_activity() -> None` - Marks session as having recent activity by updating timestamp
|
|
104
|
+
- `can_be_deleted_by_user(user_id: UserId) -> bool` - Checks if user can delete this session
|
|
105
|
+
- `can_be_accessed_by_user(user_id: UserId) -> bool` - Checks if user can access this session
|
|
106
|
+
- `id: SessionId` - Unique session identifier
|
|
107
|
+
- `user_id: UserId` - Owner user identifier
|
|
108
|
+
- `name: str | None` - Optional session name
|
|
109
|
+
- `agent_id: AgentId | None` - Optional associated agent identifier
|
|
110
|
+
- `created_time: int` - Session creation timestamp
|
|
111
|
+
- `updated_time: int | None` - Last update timestamp
|
|
112
|
+
|
|
113
|
+
**Usage Examples:**
|
|
114
|
+
```python
|
|
115
|
+
from solace_agent_mesh.gateway.http_sse.repository.entities import Session
|
|
116
|
+
|
|
117
|
+
# Create a new session
|
|
118
|
+
session = Session(
|
|
119
|
+
id="session_123",
|
|
120
|
+
user_id="user_456",
|
|
121
|
+
name="Customer Support Chat",
|
|
122
|
+
agent_id="agent_789",
|
|
123
|
+
created_time=1640995200000
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
# Update session name
|
|
127
|
+
session.update_name("Updated Chat Name")
|
|
128
|
+
|
|
129
|
+
# Mark activity
|
|
130
|
+
session.mark_activity()
|
|
131
|
+
|
|
132
|
+
# Check permissions
|
|
133
|
+
if session.can_be_accessed_by_user("user_456"):
|
|
134
|
+
print("User can access this session")
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### task.py
|
|
138
|
+
**Purpose:** Defines the Task domain entity for tracking user tasks with token usage metrics
|
|
139
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.repository.entities import Task`
|
|
140
|
+
|
|
141
|
+
**Classes:**
|
|
142
|
+
- `Task(id: str, user_id: str, start_time: int, end_time: int | None = None, status: str | None = None, initial_request_text: str | None = None, total_input_tokens: int | None = None, total_output_tokens: int | None = None, total_cached_input_tokens: int | None = None, token_usage_details: dict | None = None)` - Task domain entity with token usage tracking
|
|
143
|
+
- `id: str` - Unique task identifier
|
|
144
|
+
- `user_id: str` - User who owns the task
|
|
145
|
+
- `start_time: int` - Task start timestamp
|
|
146
|
+
- `end_time: int | None` - Optional task end timestamp
|
|
147
|
+
- `status: str | None` - Optional task status
|
|
148
|
+
- `initial_request_text: str | None` - Optional initial request text
|
|
149
|
+
- `total_input_tokens: int | None` - Total input tokens used
|
|
150
|
+
- `total_output_tokens: int | None` - Total output tokens generated
|
|
151
|
+
- `total_cached_input_tokens: int | None` - Total cached input tokens used
|
|
152
|
+
- `token_usage_details: dict | None` - Detailed token usage information
|
|
153
|
+
|
|
154
|
+
**Usage Examples:**
|
|
155
|
+
```python
|
|
156
|
+
from solace_agent_mesh.gateway.http_sse.repository.entities import Task
|
|
157
|
+
|
|
158
|
+
# Create a task
|
|
159
|
+
task = Task(
|
|
160
|
+
id="task_123",
|
|
161
|
+
user_id="user_456",
|
|
162
|
+
start_time=1640995200000,
|
|
163
|
+
status="in_progress",
|
|
164
|
+
initial_request_text="Help me with my order"
|
|
165
|
+
)
|
|
166
|
+
|
|
167
|
+
# Task with token usage tracking
|
|
168
|
+
task_with_tokens = Task(
|
|
169
|
+
id="task_124",
|
|
170
|
+
user_id="user_456",
|
|
171
|
+
start_time=1640995200000,
|
|
172
|
+
end_time=1640995800000,
|
|
173
|
+
status="completed",
|
|
174
|
+
total_input_tokens=150,
|
|
175
|
+
total_output_tokens=300,
|
|
176
|
+
total_cached_input_tokens=50,
|
|
177
|
+
token_usage_details={"model": "gpt-4", "cost": 0.05}
|
|
178
|
+
)
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### task_event.py
|
|
182
|
+
**Purpose:** Defines the TaskEvent domain entity for tracking events related to tasks
|
|
183
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.repository.entities import TaskEvent`
|
|
184
|
+
|
|
185
|
+
**Classes:**
|
|
186
|
+
- `TaskEvent(id: str, task_id: str, created_time: int, topic: str, direction: str, payload: dict[str, Any], user_id: str | None = None)` - TaskEvent domain entity
|
|
187
|
+
- `id: str` - Unique event identifier
|
|
188
|
+
- `task_id: str` - Associated task identifier
|
|
189
|
+
- `user_id: str | None` - Optional user identifier
|
|
190
|
+
- `created_time: int` - Event creation timestamp
|
|
191
|
+
- `topic: str` - Event topic
|
|
192
|
+
- `direction: str` - Event direction
|
|
193
|
+
- `payload: dict[str, Any]` - Event payload data
|
|
194
|
+
|
|
195
|
+
**Usage Examples:**
|
|
196
|
+
```python
|
|
197
|
+
from solace_agent_mesh.gateway.http_sse.repository.entities import TaskEvent
|
|
198
|
+
|
|
199
|
+
# Create a task event
|
|
200
|
+
event = TaskEvent(
|
|
201
|
+
id="event_123",
|
|
202
|
+
task_id="task_456",
|
|
203
|
+
user_id="user_789",
|
|
204
|
+
created_time=1640995200000,
|
|
205
|
+
topic="task.status.changed",
|
|
206
|
+
direction="outbound",
|
|
207
|
+
payload={"status": "completed", "result": "success"}
|
|
208
|
+
)
|
|
209
|
+
|
|
210
|
+
# Event without user
|
|
211
|
+
system_event = TaskEvent(
|
|
212
|
+
id="event_124",
|
|
213
|
+
task_id="task_456",
|
|
214
|
+
created_time=1640995200000,
|
|
215
|
+
topic="task.system.notification",
|
|
216
|
+
direction="inbound",
|
|
217
|
+
payload={"message": "Task processing started"}
|
|
218
|
+
)
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
# content_hash: d7b07fd8577e43715a286030d4119267ddff5483180284a16dc6d8aab19fd089
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Feedback domain entity.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from pydantic import BaseModel
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Feedback(BaseModel):
|
|
9
|
+
"""Feedback domain entity."""
|
|
10
|
+
|
|
11
|
+
id: str
|
|
12
|
+
session_id: str
|
|
13
|
+
task_id: str
|
|
14
|
+
user_id: str
|
|
15
|
+
rating: str
|
|
16
|
+
comment: str | None = None
|
|
17
|
+
created_time: int
|
|
18
|
+
|
|
19
|
+
class Config:
|
|
20
|
+
from_attributes = True
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Project domain entity.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from typing import Optional
|
|
6
|
+
from pydantic import BaseModel, Field
|
|
7
|
+
|
|
8
|
+
from ...shared import now_epoch_ms
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class Project(BaseModel):
|
|
12
|
+
"""Project domain entity with business logic."""
|
|
13
|
+
|
|
14
|
+
id: str
|
|
15
|
+
name: str = Field(..., min_length=1, max_length=255)
|
|
16
|
+
user_id: str
|
|
17
|
+
description: Optional[str] = Field(None, max_length=1000)
|
|
18
|
+
system_prompt: Optional[str] = Field(None, max_length=4000)
|
|
19
|
+
default_agent_id: Optional[str] = None
|
|
20
|
+
created_at: int
|
|
21
|
+
updated_at: Optional[int] = None
|
|
22
|
+
deleted_at: Optional[int] = None
|
|
23
|
+
deleted_by: Optional[str] = None
|
|
24
|
+
|
|
25
|
+
def update_name(self, new_name: str) -> None:
|
|
26
|
+
"""Update project name with validation."""
|
|
27
|
+
if not new_name or len(new_name.strip()) == 0:
|
|
28
|
+
raise ValueError("Project name cannot be empty")
|
|
29
|
+
if len(new_name) > 255:
|
|
30
|
+
raise ValueError("Project name cannot exceed 255 characters")
|
|
31
|
+
|
|
32
|
+
self.name = new_name.strip()
|
|
33
|
+
self.updated_at = now_epoch_ms()
|
|
34
|
+
|
|
35
|
+
def update_description(self, new_description: Optional[str]) -> None:
|
|
36
|
+
"""Update project description with validation."""
|
|
37
|
+
if new_description is not None:
|
|
38
|
+
if len(new_description) > 1000:
|
|
39
|
+
raise ValueError("Project description cannot exceed 1000 characters")
|
|
40
|
+
self.description = new_description.strip() if new_description else None
|
|
41
|
+
else:
|
|
42
|
+
self.description = None
|
|
43
|
+
|
|
44
|
+
self.updated_at = now_epoch_ms()
|
|
45
|
+
|
|
46
|
+
def update_default_agent(self, agent_id: Optional[str]) -> None:
|
|
47
|
+
"""Update project default agent."""
|
|
48
|
+
self.default_agent_id = agent_id
|
|
49
|
+
self.updated_at = now_epoch_ms()
|
|
50
|
+
|
|
51
|
+
def soft_delete(self, user_id: str) -> None:
|
|
52
|
+
"""Soft delete the project."""
|
|
53
|
+
if not self.can_be_deleted_by_user(user_id):
|
|
54
|
+
raise ValueError("User does not have permission to delete this project")
|
|
55
|
+
|
|
56
|
+
self.deleted_at = now_epoch_ms()
|
|
57
|
+
self.deleted_by = user_id
|
|
58
|
+
self.updated_at = now_epoch_ms()
|
|
59
|
+
|
|
60
|
+
def is_deleted(self) -> bool:
|
|
61
|
+
"""Check if project is soft deleted."""
|
|
62
|
+
return self.deleted_at is not None
|
|
63
|
+
|
|
64
|
+
def can_be_accessed_by_user(self, user_id: str) -> bool:
|
|
65
|
+
"""Check if project can be accessed by the given user."""
|
|
66
|
+
# User projects are only accessible by their owner and not deleted
|
|
67
|
+
return self.user_id == user_id and not self.is_deleted()
|
|
68
|
+
|
|
69
|
+
def can_be_edited_by_user(self, user_id: str) -> bool:
|
|
70
|
+
"""Check if project can be edited by the given user."""
|
|
71
|
+
# Users can only edit their own projects that are not deleted
|
|
72
|
+
return self.user_id == user_id and not self.is_deleted()
|
|
73
|
+
|
|
74
|
+
def can_be_deleted_by_user(self, user_id: str) -> bool:
|
|
75
|
+
"""Check if project can be deleted by the given user."""
|
|
76
|
+
# Users can only delete their own projects that are not already deleted
|
|
77
|
+
return self.user_id == user_id and not self.is_deleted()
|
|
78
|
+
|
|
79
|
+
def mark_as_updated(self) -> None:
|
|
80
|
+
"""Mark project as updated."""
|
|
81
|
+
self.updated_at = now_epoch_ms()
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Project user access domain entity.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from typing import Optional
|
|
6
|
+
from pydantic import BaseModel, Field
|
|
7
|
+
|
|
8
|
+
from ...shared import now_epoch_ms
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ProjectUser(BaseModel):
|
|
12
|
+
"""
|
|
13
|
+
Project user access domain entity.
|
|
14
|
+
|
|
15
|
+
Represents a user's access to a project with a specific role.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
id: str
|
|
19
|
+
project_id: str
|
|
20
|
+
user_id: str
|
|
21
|
+
role: str = Field(..., pattern="^(owner|editor|viewer)$")
|
|
22
|
+
added_at: int
|
|
23
|
+
added_by_user_id: str
|
|
24
|
+
|
|
25
|
+
def can_edit_project(self) -> bool:
|
|
26
|
+
"""Check if this user can edit the project based on their role."""
|
|
27
|
+
return self.role in ["owner", "editor"]
|
|
28
|
+
|
|
29
|
+
def can_manage_users(self) -> bool:
|
|
30
|
+
"""Check if this user can manage other users' access to the project."""
|
|
31
|
+
return self.role == "owner"
|
|
32
|
+
|
|
33
|
+
def can_view_project(self) -> bool:
|
|
34
|
+
"""Check if this user can view the project."""
|
|
35
|
+
return self.role in ["owner", "editor", "viewer"]
|
|
36
|
+
|
|
37
|
+
def update_role(self, new_role: str) -> None:
|
|
38
|
+
"""Update the user's role with validation."""
|
|
39
|
+
valid_roles = ["owner", "editor", "viewer"]
|
|
40
|
+
if new_role not in valid_roles:
|
|
41
|
+
raise ValueError(f"Invalid role. Must be one of: {', '.join(valid_roles)}")
|
|
42
|
+
|
|
43
|
+
self.role = new_role
|
|
44
|
+
|
|
45
|
+
class Config:
|
|
46
|
+
"""Pydantic configuration."""
|
|
47
|
+
frozen = False
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Session domain entity.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from pydantic import BaseModel, ConfigDict
|
|
6
|
+
|
|
7
|
+
from ...shared import now_epoch_ms
|
|
8
|
+
from ...shared.types import AgentId, SessionId, UserId
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class Session(BaseModel):
|
|
12
|
+
"""Session domain entity with business logic."""
|
|
13
|
+
|
|
14
|
+
model_config = ConfigDict(from_attributes=True)
|
|
15
|
+
|
|
16
|
+
id: SessionId
|
|
17
|
+
user_id: UserId
|
|
18
|
+
name: str | None = None
|
|
19
|
+
agent_id: AgentId | None = None
|
|
20
|
+
project_id: str | None = None
|
|
21
|
+
project_name: str | None = None
|
|
22
|
+
has_running_background_task: bool = False # Enriched field, not stored in DB
|
|
23
|
+
created_time: int
|
|
24
|
+
updated_time: int | None = None
|
|
25
|
+
deleted_at: int | None = None
|
|
26
|
+
deleted_by: str | None = None
|
|
27
|
+
|
|
28
|
+
def update_name(self, new_name: str) -> None:
|
|
29
|
+
"""Update session name with validation."""
|
|
30
|
+
if not new_name or len(new_name.strip()) == 0:
|
|
31
|
+
raise ValueError("Session name cannot be empty")
|
|
32
|
+
if len(new_name) > 255:
|
|
33
|
+
raise ValueError("Session name cannot exceed 255 characters")
|
|
34
|
+
|
|
35
|
+
self.name = new_name.strip()
|
|
36
|
+
self.updated_time = now_epoch_ms()
|
|
37
|
+
|
|
38
|
+
def mark_activity(self) -> None:
|
|
39
|
+
"""Mark session as having recent activity."""
|
|
40
|
+
self.updated_time = now_epoch_ms()
|
|
41
|
+
|
|
42
|
+
def soft_delete(self, user_id: UserId) -> None:
|
|
43
|
+
"""Soft delete the session."""
|
|
44
|
+
if not self.can_be_deleted_by_user(user_id):
|
|
45
|
+
raise ValueError("User does not have permission to delete this session")
|
|
46
|
+
|
|
47
|
+
self.deleted_at = now_epoch_ms()
|
|
48
|
+
self.deleted_by = user_id
|
|
49
|
+
self.updated_time = now_epoch_ms()
|
|
50
|
+
|
|
51
|
+
def is_deleted(self) -> bool:
|
|
52
|
+
"""Check if session is soft deleted."""
|
|
53
|
+
return self.deleted_at is not None
|
|
54
|
+
|
|
55
|
+
def move_to_project(self, new_project_id: str | None) -> None:
|
|
56
|
+
"""Move session to a different project."""
|
|
57
|
+
self.project_id = new_project_id
|
|
58
|
+
self.updated_time = now_epoch_ms()
|
|
59
|
+
|
|
60
|
+
def can_be_deleted_by_user(self, user_id: UserId) -> bool:
|
|
61
|
+
"""Check if user can delete this session."""
|
|
62
|
+
return self.user_id == user_id
|
|
63
|
+
|
|
64
|
+
def can_be_accessed_by_user(self, user_id: UserId) -> bool:
|
|
65
|
+
"""Check if user can access this session."""
|
|
66
|
+
return self.user_id == user_id and not self.is_deleted()
|
|
File without changes
|