agentkernel 0.3.2__tar.gz → 0.4.0__tar.gz

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.
Files changed (159) hide show
  1. {agentkernel-0.3.2 → agentkernel-0.4.0}/PKG-INFO +34 -9
  2. {agentkernel-0.3.2 → agentkernel-0.4.0}/README.md +21 -7
  3. {agentkernel-0.3.2 → agentkernel-0.4.0}/pyproject.toml +19 -3
  4. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/__init__.py +5 -0
  5. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/api/a2a/a2a.py +1 -1
  6. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/api/http.py +0 -6
  7. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/cli/cli.py +5 -8
  8. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/config.py +14 -1
  9. agentkernel-0.4.0/src/agentkernel/core/logger.py +99 -0
  10. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/storage/dynamodb.py +1 -1
  11. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/storage/in_memory.py +1 -1
  12. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/storage/redis.py +1 -1
  13. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/storage/session_cache.py +1 -1
  14. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/storage/storage_manager.py +1 -1
  15. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/tools.py +1 -1
  16. agentkernel-0.4.0/src/agentkernel/core/util/error_util.py +77 -0
  17. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/core/response_store/handler.py +2 -2
  18. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/serverless/akagentrunner.py +0 -9
  19. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/serverless/aklambda.py +0 -6
  20. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/serverless/akresponsehandler.py +1 -1
  21. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/azure/akfunction.py +7 -1
  22. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/common/response_store.py +1 -1
  23. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/framework/adk/adk.py +16 -7
  24. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/framework/crewai/crewai.py +8 -4
  25. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/framework/langgraph/langgraph.py +31 -1
  26. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/framework/openai/openai.py +4 -2
  27. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/guardrail/bedrock.py +1 -1
  28. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/guardrail/openai.py +1 -1
  29. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/guardrail/walledai.py +0 -22
  30. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/gmail/README.md +16 -4
  31. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/messenger/README.md +16 -4
  32. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/slack/slack_chat.py +2 -1
  33. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/telegram/README.md +16 -4
  34. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/whatsapp/README.md +16 -4
  35. agentkernel-0.4.0/src/agentkernel/knowledgebase/__init__.py +1 -0
  36. agentkernel-0.4.0/src/agentkernel/knowledgebase/base.py +120 -0
  37. agentkernel-0.4.0/src/agentkernel/knowledgebase/chroma.py +124 -0
  38. agentkernel-0.4.0/src/agentkernel/knowledgebase/knowledgebuilder.py +190 -0
  39. agentkernel-0.4.0/src/agentkernel/knowledgebase/neo4j.py +156 -0
  40. agentkernel-0.4.0/src/agentkernel/knowledgebase/starburst.py +233 -0
  41. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-test/SKILL.md +12 -4
  42. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-test/evals/evals.json +4 -2
  43. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/langfuse/adk.py +9 -4
  44. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/langfuse/crewai.py +9 -4
  45. agentkernel-0.4.0/src/agentkernel/trace/langfuse/langgraph.py +66 -0
  46. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/langfuse/openai.py +9 -4
  47. agentkernel-0.3.2/src/agentkernel/trace/langfuse/langgraph.py +0 -60
  48. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/adk.py +0 -0
  49. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/api/__init__.py +0 -0
  50. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/api/a2a/__init__.py +0 -0
  51. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/api/a2a/handler.py +0 -0
  52. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/api/handler.py +0 -0
  53. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/api/mcp/__init__.py +0 -0
  54. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/api/mcp/akmcp.py +0 -0
  55. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/auth/__init__.py +0 -0
  56. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/auth/handler.py +0 -0
  57. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/auth.py +0 -0
  58. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/aws.py +0 -0
  59. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/azure.py +0 -0
  60. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/cli/__init__.py +0 -0
  61. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/cli/ak.py +0 -0
  62. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/__init__.py +0 -0
  63. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/base.py +0 -0
  64. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/builder.py +0 -0
  65. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/hooks.py +0 -0
  66. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/model.py +0 -0
  67. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/module.py +0 -0
  68. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/__init__.py +0 -0
  69. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/factory.py +0 -0
  70. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/hooks.py +0 -0
  71. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/storage/__init__.py +0 -0
  72. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/storage/base.py +0 -0
  73. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/runtime.py +0 -0
  74. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/service.py +0 -0
  75. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/session/__init__.py +0 -0
  76. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/session/base.py +0 -0
  77. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/session/cosmosdb.py +0 -0
  78. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/session/dynamodb.py +0 -0
  79. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/session/in_memory.py +0 -0
  80. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/session/redis.py +0 -0
  81. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/session/serde.py +0 -0
  82. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/tool.py +0 -0
  83. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/util/config_yaml_util.py +0 -0
  84. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/util/key_value_cache.py +0 -0
  85. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/crewai.py +0 -0
  86. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/__init__.py +0 -0
  87. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/__init__.py +0 -0
  88. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/core/__init__.py +0 -0
  89. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/core/response_store/__init__.py +0 -0
  90. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/core/response_store/dynamodb.py +0 -0
  91. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/core/response_store/redis.py +0 -0
  92. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/core/sqs_handler.py +0 -0
  93. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/serverless/__init__.py +0 -0
  94. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/serverless/akauthorizer.py +0 -0
  95. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/serverless/core/__init__.py +0 -0
  96. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/serverless/core/default_endpoints.py +0 -0
  97. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/serverless/core/sqs_consumer.py +0 -0
  98. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/azure/__init__.py +0 -0
  99. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/common/__init__.py +0 -0
  100. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/common/chat_service.py +0 -0
  101. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/framework/__init__.py +0 -0
  102. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/framework/adk/__init__.py +0 -0
  103. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/framework/crewai/__init__.py +0 -0
  104. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/framework/langgraph/__init__.py +0 -0
  105. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/framework/openai/__init__.py +0 -0
  106. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/gmail.py +0 -0
  107. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/guardrail/__init__.py +0 -0
  108. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/guardrail/guardrail.py +0 -0
  109. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/instagram.py +0 -0
  110. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/__init__.py +0 -0
  111. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/gmail/__init__.py +0 -0
  112. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/gmail/gmail_chat.py +0 -0
  113. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/instagram/README.md +0 -0
  114. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/instagram/__init__.py +0 -0
  115. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/instagram/instagram_chat.py +0 -0
  116. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/messenger/__init__.py +0 -0
  117. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/messenger/messenger_chat.py +0 -0
  118. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/slack/README.md +0 -0
  119. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/slack/__init__.py +0 -0
  120. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/teams/README.md +0 -0
  121. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/teams/__init__.py +0 -0
  122. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/teams/teams_chat.py +0 -0
  123. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/telegram/__init__.py +0 -0
  124. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/telegram/telegram_chat.py +0 -0
  125. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/whatsapp/__init__.py +0 -0
  126. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/whatsapp/whatsapp_chat.py +0 -0
  127. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/langgraph.py +0 -0
  128. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/mcp.py +0 -0
  129. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/messenger.py +0 -0
  130. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/openai.py +0 -0
  131. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/__init__.py +0 -0
  132. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-add-capabilities/SKILL.md +0 -0
  133. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-add-capabilities/evals/evals.json +0 -0
  134. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-add-integration/SKILL.md +0 -0
  135. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-add-integration/evals/evals.json +0 -0
  136. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-build/SKILL.md +0 -0
  137. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-build/evals/evals.json +0 -0
  138. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-cloud-deploy/SKILL.md +0 -0
  139. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-cloud-deploy/evals/evals.json +0 -0
  140. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-init/SKILL.md +0 -0
  141. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-init/evals/evals.json +0 -0
  142. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/skills.py +0 -0
  143. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/slack.py +0 -0
  144. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/teams.py +0 -0
  145. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/telegram.py +0 -0
  146. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/test/__init__.py +0 -0
  147. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/test/test.py +0 -0
  148. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/__init__.py +0 -0
  149. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/base.py +0 -0
  150. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/langfuse/__init__.py +0 -0
  151. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/langfuse/langfuse.py +0 -0
  152. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/openllmetry/__init__.py +0 -0
  153. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/openllmetry/adk.py +0 -0
  154. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/openllmetry/crewai.py +0 -0
  155. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/openllmetry/langgraph.py +0 -0
  156. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/openllmetry/openai.py +0 -0
  157. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/openllmetry/openllmetry.py +0 -0
  158. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/trace.py +0 -0
  159. {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/whatsapp.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: agentkernel
3
- Version: 0.3.2
3
+ Version: 0.4.0
4
4
  Summary: Agent Kernel - Unified AI Agents Runtime
5
5
  Author: Yaala Labs
6
6
  Author-email: Yaala Labs <agentkernel@yaalalabs.com>
@@ -22,6 +22,7 @@ Requires-Dist: boto3>=1.41.4 ; extra == 'aws'
22
22
  Requires-Dist: azure-functions>=1.24.0 ; extra == 'azure'
23
23
  Requires-Dist: azure-data-tables>=12.4.0 ; extra == 'azure'
24
24
  Requires-Dist: azure-core>=1.26.0 ; extra == 'azure'
25
+ Requires-Dist: chromadb>=0.4.0 ; extra == 'chromadb'
25
26
  Requires-Dist: crewai>=0.150.0 ; extra == 'crewai'
26
27
  Requires-Dist: openinference-instrumentation-crewai>=0.1.16 ; extra == 'crewai'
27
28
  Requires-Dist: openinference-instrumentation-litellm>=0.1.28 ; extra == 'crewai'
@@ -30,7 +31,7 @@ Requires-Dist: google-auth-oauthlib>=1.0.0 ; extra == 'gmail'
30
31
  Requires-Dist: google-auth-httplib2>=0.2.0 ; extra == 'gmail'
31
32
  Requires-Dist: google-api-python-client>=2.0.0 ; extra == 'gmail'
32
33
  Requires-Dist: httpx>=0.27.0 ; extra == 'instagram'
33
- Requires-Dist: langfuse>=3.9.2 ; extra == 'langfuse'
34
+ Requires-Dist: langfuse>=4.2.0 ; extra == 'langfuse'
34
35
  Requires-Dist: nest-asyncio>=1.6.0 ; extra == 'langfuse'
35
36
  Requires-Dist: langgraph~=1.0.5 ; extra == 'langgraph'
36
37
  Requires-Dist: langchain~=1.2.3 ; extra == 'langgraph'
@@ -39,6 +40,7 @@ Requires-Dist: litellm~=1.74.9 ; extra == 'langgraph'
39
40
  Requires-Dist: fastmcp>=2.12.4 ; extra == 'mcp'
40
41
  Requires-Dist: httpx>=0.27.0 ; extra == 'messenger'
41
42
  Requires-Dist: litellm>=1.74.9 ; extra == 'multimodal'
43
+ Requires-Dist: neo4j>=5.0.0 ; extra == 'neo4j'
42
44
  Requires-Dist: openai-agents>=0.6.5 ; extra == 'openai'
43
45
  Requires-Dist: openinference-instrumentation-openai-agents>=1.4.0 ; extra == 'openai'
44
46
  Requires-Dist: openai-guardrails>=0.2.1 ; extra == 'openai'
@@ -46,6 +48,10 @@ Requires-Dist: traceloop-sdk>=0.48.0 ; extra == 'openllmetry'
46
48
  Requires-Dist: redis>=7.1.0 ; extra == 'redis'
47
49
  Requires-Dist: slack-bolt==1.22.0 ; extra == 'slack'
48
50
  Requires-Dist: httpx>=0.27.0 ; extra == 'slack'
51
+ Requires-Dist: botbuilder-core>=4.17.0 ; extra == 'teams'
52
+ Requires-Dist: botbuilder-schema>=4.17.0 ; extra == 'teams'
53
+ Requires-Dist: msal>=1.31.1 ; extra == 'teams'
54
+ Requires-Dist: httpx>=0.27.0 ; extra == 'teams'
49
55
  Requires-Dist: httpx>=0.27.0 ; extra == 'telegram'
50
56
  Requires-Dist: pytest>=8.4.1 ; extra == 'test'
51
57
  Requires-Dist: pytest-asyncio>=1.2.0 ; extra == 'test'
@@ -57,6 +63,7 @@ Requires-Dist: ragas>=0.4.1 ; extra == 'test'
57
63
  Requires-Dist: datasets>=2.14.0 ; extra == 'test'
58
64
  Requires-Dist: pandas>=2.0.0 ; extra == 'test'
59
65
  Requires-Dist: litellm>=1.74.9 ; extra == 'test'
66
+ Requires-Dist: trino>=0.337.0 ; extra == 'trino'
60
67
  Requires-Dist: walledai>=4.9.3 ; extra == 'walledai'
61
68
  Requires-Dist: httpx>=0.27.0 ; extra == 'whatsapp'
62
69
  Requires-Python: >=3.12, <3.14
@@ -66,6 +73,7 @@ Provides-Extra: api
66
73
  Provides-Extra: auth
67
74
  Provides-Extra: aws
68
75
  Provides-Extra: azure
76
+ Provides-Extra: chromadb
69
77
  Provides-Extra: cli
70
78
  Provides-Extra: crewai
71
79
  Provides-Extra: gmail
@@ -75,12 +83,15 @@ Provides-Extra: langgraph
75
83
  Provides-Extra: mcp
76
84
  Provides-Extra: messenger
77
85
  Provides-Extra: multimodal
86
+ Provides-Extra: neo4j
78
87
  Provides-Extra: openai
79
88
  Provides-Extra: openllmetry
80
89
  Provides-Extra: redis
81
90
  Provides-Extra: slack
91
+ Provides-Extra: teams
82
92
  Provides-Extra: telegram
83
93
  Provides-Extra: test
94
+ Provides-Extra: trino
84
95
  Provides-Extra: walledai
85
96
  Provides-Extra: whatsapp
86
97
  Description-Content-Type: text/markdown
@@ -100,6 +111,7 @@ Agent Kernel is a lightweight **multi-cloud AI agent runtime** and adapter layer
100
111
  - **Multi-Framework Support**: OpenAI Agents SDK, CrewAI, LangGraph, Google ADK
101
112
  - **Multi-Cloud Deployment**: Deploy to AWS (Lambda, ECS/Fargate) or Azure (Functions, Container Apps) with the same code
102
113
  - **Session Management**: Built-in session abstraction with multi-cloud storage (Redis, DynamoDB, Cosmos DB)
114
+ - **Knowledge Bases**: Unified `KnowledgeBase` interface with ChromaDB, Neo4j, and Starburst/Trino backends via `KnowledgeBuilder`
103
115
  - **Flexible Deployment**: Interactive CLI, REST API, serverless (AWS Lambda, Azure Functions), containerized (AWS ECS, Azure Container Apps)
104
116
  - **Pluggable Architecture**: Easy to extend with custom framework adapters and cloud providers
105
117
  - **MCP Server**: Built-in Model Context Protocol server for exposing agents as MCP tools and exposing any custom tool
@@ -113,6 +125,14 @@ Agent Kernel is a lightweight **multi-cloud AI agent runtime** and adapter layer
113
125
  pip install agentkernel
114
126
  ```
115
127
 
128
+ Install optional knowledge base extras as needed:
129
+
130
+ ```bash
131
+ pip install "agentkernel[chromadb]"
132
+ pip install "agentkernel[neo4j]"
133
+ pip install "agentkernel[trino]"
134
+ ```
135
+
116
136
  **Requirements:**
117
137
  - Python 3.12+
118
138
 
@@ -364,13 +384,19 @@ Supported formats: `.yaml`, `.yml`, `.json`
364
384
 
365
385
  ### Configuration Options
366
386
 
367
- #### Debug Mode
387
+ #### Logging Configuration
368
388
 
369
- - **Field**: `debug`
370
- - **Type**: boolean
371
- - **Default**: `false`
372
- - **Description**: Enable debug mode across the library
373
- - **Environment Variable**: `AK_DEBUG`
389
+ - **Field**: `logging.ak.level`
390
+ - **Type**: string
391
+ - **Default**: `WARNING`
392
+ - **Description**: Agent Kernel logger level (INFO, DEBUG, ERROR, WARNING, CRITICAL)
393
+ - **Environment Variable**: `AK_LOGGING__AK__LEVEL`
394
+
395
+ - **Field**: `logging.system.level`
396
+ - **Type**: string
397
+ - **Default**: `WARNING`
398
+ - **Description**: System/root logger level (INFO, DEBUG, ERROR, WARNING, CRITICAL)
399
+ - **Environment Variable**: `AK_LOGGING__SYSTEM__LEVEL`
374
400
 
375
401
  #### Session Store
376
402
 
@@ -956,7 +982,6 @@ AK_TRACE__TYPE=langfuse # or openllmetry
956
982
  #### config.yaml
957
983
 
958
984
  ```yaml
959
- debug: false
960
985
  session:
961
986
  type: redis
962
987
  redis:
@@ -13,6 +13,7 @@ Agent Kernel is a lightweight **multi-cloud AI agent runtime** and adapter layer
13
13
  - **Multi-Framework Support**: OpenAI Agents SDK, CrewAI, LangGraph, Google ADK
14
14
  - **Multi-Cloud Deployment**: Deploy to AWS (Lambda, ECS/Fargate) or Azure (Functions, Container Apps) with the same code
15
15
  - **Session Management**: Built-in session abstraction with multi-cloud storage (Redis, DynamoDB, Cosmos DB)
16
+ - **Knowledge Bases**: Unified `KnowledgeBase` interface with ChromaDB, Neo4j, and Starburst/Trino backends via `KnowledgeBuilder`
16
17
  - **Flexible Deployment**: Interactive CLI, REST API, serverless (AWS Lambda, Azure Functions), containerized (AWS ECS, Azure Container Apps)
17
18
  - **Pluggable Architecture**: Easy to extend with custom framework adapters and cloud providers
18
19
  - **MCP Server**: Built-in Model Context Protocol server for exposing agents as MCP tools and exposing any custom tool
@@ -26,6 +27,14 @@ Agent Kernel is a lightweight **multi-cloud AI agent runtime** and adapter layer
26
27
  pip install agentkernel
27
28
  ```
28
29
 
30
+ Install optional knowledge base extras as needed:
31
+
32
+ ```bash
33
+ pip install "agentkernel[chromadb]"
34
+ pip install "agentkernel[neo4j]"
35
+ pip install "agentkernel[trino]"
36
+ ```
37
+
29
38
  **Requirements:**
30
39
  - Python 3.12+
31
40
 
@@ -277,13 +286,19 @@ Supported formats: `.yaml`, `.yml`, `.json`
277
286
 
278
287
  ### Configuration Options
279
288
 
280
- #### Debug Mode
289
+ #### Logging Configuration
281
290
 
282
- - **Field**: `debug`
283
- - **Type**: boolean
284
- - **Default**: `false`
285
- - **Description**: Enable debug mode across the library
286
- - **Environment Variable**: `AK_DEBUG`
291
+ - **Field**: `logging.ak.level`
292
+ - **Type**: string
293
+ - **Default**: `WARNING`
294
+ - **Description**: Agent Kernel logger level (INFO, DEBUG, ERROR, WARNING, CRITICAL)
295
+ - **Environment Variable**: `AK_LOGGING__AK__LEVEL`
296
+
297
+ - **Field**: `logging.system.level`
298
+ - **Type**: string
299
+ - **Default**: `WARNING`
300
+ - **Description**: System/root logger level (INFO, DEBUG, ERROR, WARNING, CRITICAL)
301
+ - **Environment Variable**: `AK_LOGGING__SYSTEM__LEVEL`
287
302
 
288
303
  #### Session Store
289
304
 
@@ -869,7 +884,6 @@ AK_TRACE__TYPE=langfuse # or openllmetry
869
884
  #### config.yaml
870
885
 
871
886
  ```yaml
872
- debug: false
873
887
  session:
874
888
  type: redis
875
889
  redis:
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "agentkernel"
7
- version = "0.3.2"
7
+ version = "0.4.0"
8
8
  description = "Agent Kernel - Unified AI Agents Runtime"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12,<3.14"
@@ -25,7 +25,7 @@ auth = [
25
25
  "PyJWT>=2.0.0",
26
26
  ]
27
27
  langfuse = [
28
- "langfuse>=3.9.2",
28
+ "langfuse>=4.2.0",
29
29
  "nest-asyncio>=1.6.0",
30
30
  ]
31
31
  openllmetry = [
@@ -57,6 +57,17 @@ azure = [
57
57
  redis = [
58
58
  "redis>=7.1.0",
59
59
  ]
60
+
61
+ neo4j = [
62
+ "neo4j>=5.0.0",
63
+ ]
64
+ chromadb = [
65
+ "chromadb>=0.4.0",
66
+ ]
67
+ trino = [
68
+ "trino>=0.337.0",
69
+ ]
70
+
60
71
  openai = [
61
72
  "openai-agents>=0.6.5",
62
73
  "openinference-instrumentation-openai-agents>=1.4.0",
@@ -91,6 +102,12 @@ instagram = [
91
102
  telegram = [
92
103
  "httpx>=0.27.0"
93
104
  ]
105
+ teams = [
106
+ "botbuilder-core>=4.17.0",
107
+ "botbuilder-schema>=4.17.0",
108
+ "msal>=1.31.1",
109
+ "httpx>=0.27.0",
110
+ ]
94
111
  gmail = [
95
112
  "google-auth>=2.0.0",
96
113
  "google-auth-oauthlib>=1.0.0",
@@ -150,4 +167,3 @@ target-version = ["py312"]
150
167
 
151
168
  [tool.pytest.ini_options]
152
169
  addopts = "--cov=src --cov-report=term --cov-report=html --html=report.html"
153
-
@@ -19,3 +19,8 @@ except importlib.metadata.PackageNotFoundError:
19
19
  __version__ = "0.1.0"
20
20
 
21
21
  from .core import *
22
+
23
+ # Auto-configure logging on import if not already configured (handled inside the "configure_from_config()" function)
24
+ from .core.logger import AKLogger
25
+
26
+ AKLogger.configure_from_config()
@@ -31,7 +31,7 @@ class A2A:
31
31
  """
32
32
  Card built flag
33
33
  """
34
- _log = logging.getLogger(__name__)
34
+ _log = logging.getLogger("ak.a2a")
35
35
 
36
36
  class Executor(AgentExecutor):
37
37
 
@@ -9,12 +9,6 @@ from ..auth import AuthValidator, ValidationContext
9
9
  from ..core.config import AKConfig
10
10
  from .handler import AgentRESTRequestHandler, RESTRequestHandler
11
11
 
12
- logging.basicConfig(
13
- level=logging.DEBUG,
14
- format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
15
- force=True,
16
- )
17
-
18
12
 
19
13
  class RESTAPI:
20
14
  """
@@ -3,17 +3,14 @@ import logging
3
3
  import readline # Enables line editing and history features for input() in the CLI
4
4
 
5
5
  from ..core import AgentService
6
+ from ..core.config import AKConfig
6
7
 
7
- # Configure logger only to print agent kernel logs
8
- ak_logger = logging.getLogger("ak")
9
- ak_logger.setLevel(logging.INFO)
10
- ak_logger.propagate = False
8
+ ak_cli_logger = logging.getLogger("ak.cli")
11
9
 
12
- if not ak_logger.handlers:
10
+ if not ak_cli_logger.handlers:
13
11
  handler = logging.StreamHandler()
14
- handler.setLevel(logging.INFO)
15
12
  handler.setFormatter(logging.Formatter("\033[36m(kernel) >> %(message)s\033[0m"))
16
- ak_logger.addHandler(handler)
13
+ ak_cli_logger.addHandler(handler)
17
14
 
18
15
 
19
16
  class CLI:
@@ -101,7 +98,7 @@ class CLI:
101
98
  raise
102
99
  except Exception as e:
103
100
  self._print(f"Error: {e}")
104
- ak_logger.error("Exception in CLI run loop", exc_info=True)
101
+ ak_cli_logger.error("Exception in CLI run loop", exc_info=True)
105
102
 
106
103
  @classmethod
107
104
  def main(cls):
@@ -238,6 +238,19 @@ class _QueuesConfig(BaseModel):
238
238
  output: _OutputQueueConfig = Field(default_factory=_OutputQueueConfig, description="Output SQS queue configuration for async execution mode")
239
239
 
240
240
 
241
+ class _LogLevelConfig(BaseModel):
242
+ level: Optional[str] = Field(
243
+ default=None,
244
+ pattern="^(INFO|DEBUG|ERROR|WARNING|CRITICAL)$",
245
+ description="Log level. Options: INFO, DEBUG, ERROR, WARNING, CRITICAL",
246
+ )
247
+
248
+
249
+ class _LoggingConfig(BaseModel):
250
+ ak: _LogLevelConfig = Field(description="Agent Kernel logging configuration", default_factory=_LogLevelConfig)
251
+ system: _LogLevelConfig = Field(description="System logging configuration", default_factory=_LogLevelConfig)
252
+
253
+
241
254
  class _ExecutionConfig(BaseModel):
242
255
  mode: Optional[ExecutionMode] = Field(
243
256
  default=None,
@@ -252,7 +265,6 @@ class _ExecutionConfig(BaseModel):
252
265
 
253
266
 
254
267
  class AKConfig(YamlBaseSettingsModified):
255
- debug: bool = Field(default=False, description="Enable debug mode")
256
268
  session: _SessionStoreConfig = Field(
257
269
  description="Agent session / memory related configurations",
258
270
  default_factory=_SessionStoreConfig,
@@ -275,6 +287,7 @@ class AKConfig(YamlBaseSettingsModified):
275
287
  test: _TestConfig = Field(description="Test related configurations", default_factory=_TestConfig)
276
288
  guardrail: _GuardrailConfig = Field(description="Guardrail related configurations", default_factory=_GuardrailConfig)
277
289
  execution: _ExecutionConfig = Field(description="Execution mode and queue related configurations", default_factory=_ExecutionConfig)
290
+ logging: _LoggingConfig = Field(description="Logging related configurations", default_factory=_LoggingConfig)
278
291
  library_version: str = Field(default=_get_ak_version(), description="Library version")
279
292
 
280
293
  @classmethod
@@ -0,0 +1,99 @@
1
+ import logging
2
+
3
+ from .config import AKConfig
4
+
5
+
6
+ class AKLogger:
7
+ """Agent Kernel logger configuration utility."""
8
+
9
+ _initialized = False
10
+
11
+ @staticmethod
12
+ def resolve_level(level: str | int) -> int:
13
+ """Resolve log level from string or int.
14
+
15
+ :param level: Log level as string or int.
16
+ :return: Resolved log level as int.
17
+ """
18
+ if isinstance(level, int):
19
+ return level
20
+
21
+ level_name = str(level).upper()
22
+
23
+ get_mapping = getattr(logging, "getLevelNamesMapping", None)
24
+ if callable(get_mapping):
25
+ return get_mapping().get(level_name, logging.WARNING)
26
+
27
+ return logging.WARNING
28
+
29
+ @staticmethod
30
+ def attach_stream_handler(logger: logging.Logger, attach_formatter=False) -> None:
31
+ """Attach a stream handler to the logger.
32
+
33
+ :param logger: Logger instance to attach handler to.
34
+ :param attach_formatter: Whether to attach a default formatter.
35
+ :return: None.
36
+ """
37
+ for handler in logger.handlers[:]:
38
+ logger.removeHandler(handler)
39
+ handler.close()
40
+ handler = logging.StreamHandler()
41
+ if attach_formatter:
42
+ handler.setFormatter(logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s"))
43
+ logger.addHandler(handler)
44
+
45
+ @staticmethod
46
+ def set_handlers_level(logger: logging.Logger, level: int) -> None:
47
+ """Set the level for all handlers on a logger.
48
+
49
+ :param logger: Logger instance to set handler levels for.
50
+ :param level: Log level to set.
51
+ :return: None.
52
+ """
53
+ for handler in logger.handlers:
54
+ handler.setLevel(level)
55
+
56
+ @staticmethod
57
+ def set_ak_log_level(level: str):
58
+ """Set the log level for the AK logger.
59
+
60
+ :param level: Log level as string.
61
+ :return: None.
62
+ """
63
+ resolved_level = AKLogger.resolve_level(level)
64
+ ak_logger = logging.getLogger("ak")
65
+ ak_logger.setLevel(resolved_level)
66
+ ak_logger.propagate = False # stopping the propagation here so that it won't propagate to the root, so loggers like "ak.api" with propagate=True (propagate is True by default, which is the case here) won't propagate to the root, propagation will stop at this level ("ak" level)
67
+ AKLogger.attach_stream_handler(logger=ak_logger, attach_formatter=True)
68
+ AKLogger.set_handlers_level(logger=ak_logger, level=resolved_level)
69
+
70
+ @staticmethod
71
+ def set_system_log_level(level: str):
72
+ """Set the log level for the system root logger.
73
+
74
+ :param level: Log level as string.
75
+ :return: None.
76
+ """
77
+ resolved_level = AKLogger.resolve_level(level)
78
+ root_logger = logging.getLogger()
79
+ root_logger.setLevel(resolved_level)
80
+ root_logger.propagate = False # the root logger has nowhere to propagate to because it is the root
81
+ AKLogger.attach_stream_handler(logger=root_logger, attach_formatter=True)
82
+ AKLogger.set_handlers_level(logger=root_logger, level=resolved_level)
83
+
84
+ @classmethod
85
+ def configure_from_config(cls):
86
+ """Configure loggers from AKConfig settings.
87
+
88
+ :return: None.
89
+ """
90
+ if cls._initialized:
91
+ return
92
+ config = AKConfig.get()
93
+ ak_level = config.logging.ak.level
94
+ system_level = config.logging.system.level
95
+ if system_level:
96
+ cls.set_system_log_level(system_level)
97
+ if ak_level:
98
+ cls.set_ak_log_level(ak_level)
99
+ cls._initialized = True
@@ -24,7 +24,7 @@ class DynamoDBAttachmentDriver:
24
24
  raw DynamoDB attachment operations.
25
25
  """
26
26
 
27
- _log = logging.getLogger("ak.core.multimodal.storage.dynamodb.driver")
27
+ _log = logging.getLogger("ak.multimodal.storage.dynamodb.driver")
28
28
 
29
29
  def __init__(self, table_name: str, ttl: int):
30
30
  """
@@ -16,7 +16,7 @@ class InMemoryAttachmentStore(AttachmentStore):
16
16
  # Shared across all instances — survives across multiple instantiations per request
17
17
  _attachments: ClassVar[dict[str, dict]] = {} # "session_id:attachment_id" -> attachment
18
18
  _index: ClassVar[dict[str, list[str]]] = {} # session_id -> [attachment_ids]
19
- _log = logging.getLogger("ak.core.multimodal.storage.inmemory")
19
+ _log = logging.getLogger("ak.multimodal.storage.inmemory")
20
20
 
21
21
  def __init__(self, session_id: str):
22
22
  """
@@ -19,7 +19,7 @@ class RedisAttachmentDriver:
19
19
  raw Redis attachment operations.
20
20
  """
21
21
 
22
- _log = logging.getLogger("ak.core.multimodal.storage.redis.driver")
22
+ _log = logging.getLogger("ak.multimodal.storage.redis.driver")
23
23
  _redis_client = None
24
24
 
25
25
  def __init__(self, url: str, ttl: int, prefix: str):
@@ -23,7 +23,7 @@ class SessionNonVolatileCacheAttachmentStore(AttachmentStore):
23
23
  simple but causes session size to grow with each attachment.
24
24
  """
25
25
 
26
- _log = logging.getLogger("ak.core.multimodal.storage.session_cache")
26
+ _log = logging.getLogger("ak.multimodal.storage.session_cache")
27
27
 
28
28
  def __init__(self, session_id: str):
29
29
  """
@@ -13,7 +13,7 @@ from .base import (
13
13
  AttachmentStore,
14
14
  )
15
15
 
16
- _log = logging.getLogger("ak.core.multimodal.storage")
16
+ _log = logging.getLogger("ak.multimodal.storage")
17
17
 
18
18
 
19
19
  class AttachmentStorageManager:
@@ -11,7 +11,7 @@ from ..model import SystemTool
11
11
  from ..tool import ToolContext
12
12
  from .storage import AttachmentStorageManager
13
13
 
14
- _log = logging.getLogger(__name__)
14
+ _log = logging.getLogger("ak.multimodal.tools")
15
15
 
16
16
 
17
17
  def _analyze_attachments(attachment_ids: list[str], prompt: str) -> str:
@@ -0,0 +1,77 @@
1
+ class ErrorCategory:
2
+ RATE_LIMIT = "rate_limit"
3
+ SERVER = "server"
4
+ CONNECTION = "connection"
5
+ AUTH = "auth"
6
+ NOT_FOUND = "not_found"
7
+ UNKNOWN = "unknown"
8
+
9
+
10
+ class ErrorUtil:
11
+ @staticmethod
12
+ def _get_status_code(error: Exception) -> int | None:
13
+ """Extracts HTTP status code from error attributes if they exist."""
14
+ for attr in ["status_code", "code", "status"]:
15
+ val = getattr(error, attr, None)
16
+ if isinstance(val, int):
17
+ return val
18
+ if isinstance(val, str) and val.isdigit():
19
+ return int(val)
20
+ return None
21
+
22
+ @staticmethod
23
+ def _classify(error: Exception, status_code: int | None) -> str:
24
+ """Categorizes the error based on code, name, or message content."""
25
+ error_name = error.__class__.__name__.lower()
26
+ message = str(error).lower()
27
+
28
+ if status_code == 429:
29
+ return ErrorCategory.RATE_LIMIT
30
+
31
+ if status_code in [500, 502, 503, 504]:
32
+ return ErrorCategory.SERVER
33
+
34
+ if "timeout" in error_name or "connection" in error_name:
35
+ return ErrorCategory.CONNECTION
36
+
37
+ if "auth" in error_name or "unauthorized" in error_name:
38
+ return ErrorCategory.AUTH
39
+
40
+ if any(k in error_name for k in ["notfound", "invalid", "badrequest"]):
41
+ return ErrorCategory.NOT_FOUND
42
+
43
+ if any(t in message for t in ["overloaded", "temporarily unavailable", "high demand"]):
44
+ return ErrorCategory.SERVER
45
+
46
+ return ErrorCategory.UNKNOWN
47
+
48
+ @staticmethod
49
+ def _format_error_message(error: Exception) -> str:
50
+ """Returns a clean string for the UI based on the error category."""
51
+ status_code = ErrorUtil._get_status_code(error)
52
+ category = ErrorUtil._classify(error, status_code)
53
+
54
+ if category == ErrorCategory.RATE_LIMIT:
55
+ return "Error: Too many requests. Please try again later."
56
+
57
+ if category == ErrorCategory.SERVER:
58
+ return "Error: The service is temporarily unavailable. Please try again."
59
+
60
+ if category == ErrorCategory.CONNECTION:
61
+ return "Error: Could not connect to the model provider. Please check your internet."
62
+
63
+ if category == ErrorCategory.AUTH:
64
+ return "Error: Invalid API configuration or credentials."
65
+
66
+ if category == ErrorCategory.NOT_FOUND:
67
+ return "Error: Invalid model or resource not found. Please check your configuration."
68
+
69
+ message = " ".join(str(error).split()).strip()
70
+ if message:
71
+ return f"Error: {message}"
72
+
73
+ return f"An unexpected error occurred: {error.__class__.__name__}"
74
+
75
+
76
+ def user_facing_error_message(error: Exception) -> str:
77
+ return ErrorUtil._format_error_message(error)
@@ -53,7 +53,7 @@ class ResponseDBHandler:
53
53
  response_store_type: ResponseDBHandler.Type = ResponseDBHandler.Type.from_str(response_store_config.type)
54
54
 
55
55
  # Check for Redis configuration
56
- if response_store_type == ResponseDBHandler.Type.REDIS:
56
+ if response_store_type == ResponseDBHandler.Type.REDIS and response_store_config.redis is not None:
57
57
  from .redis import RedisResponseStore
58
58
 
59
59
  redis_config = response_store_config.redis
@@ -65,7 +65,7 @@ class ResponseDBHandler:
65
65
  )
66
66
 
67
67
  # Check for DynamoDB configuration
68
- elif response_store_type == ResponseDBHandler.Type.DYNAMODB:
68
+ elif response_store_type == ResponseDBHandler.Type.DYNAMODB and response_store_config.dynamodb is not None:
69
69
  from .dynamodb import DynamoDBResponseStore
70
70
 
71
71
  dynamodb_config = response_store_config.dynamodb
@@ -87,15 +87,6 @@ class ServerlessAgentRunner(LambdaSQSConsumer):
87
87
  """
88
88
  cls._log.info(f"Processing message: {record}")
89
89
  body = cls._parse_body(record)
90
- session_id = body.get("session_id")
91
- message_group_id = SQSHandler.get_message_system_attributes(record).get("MessageGroupId")
92
- if session_id != message_group_id:
93
- cls._log.info(f"Session ID mismatch: message body session_id {session_id} does not match MessageGroupId {message_group_id}")
94
- error_message_body = cls._construct_error_message_body(error_msg="Session ID mismatch")
95
- record_attributes = cls._get_record_attributes(raw_queue_message=record)
96
- cls._send_to_output_queue(message_body=error_message_body, record_attributes=record_attributes)
97
- cls._log.info(f"Sent Session ID Mismatch message to Output Queue: '{SQSHandler.get_output_queue_url()}'")
98
- return
99
90
  _, agent_response = cls._get_chat_service().process_chat_request(body=body)
100
91
  cls._log.info(f"Chat service response: '{agent_response}'")
101
92
  record_attributes = cls._get_record_attributes(raw_queue_message=record)
@@ -5,12 +5,6 @@ import logging
5
5
  import os
6
6
  from typing import Any, Callable, Dict, Optional, Tuple
7
7
 
8
- logging.basicConfig(
9
- level=logging.DEBUG,
10
- format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
11
- force=True,
12
- )
13
-
14
8
 
15
9
  class LambdaRouter:
16
10
  """
@@ -32,10 +32,10 @@ class ResponseHandler(LambdaSQSConsumer):
32
32
  :param body: Optional message body payload. If not provided, uses record["body"]
33
33
  :return: Message dictionary for storage
34
34
  """
35
- session_id = SQSHandler.get_message_system_attributes(record).get("MessageGroupId")
36
35
  message_body = body if body is not None else record.get("body")
37
36
  if isinstance(message_body, str):
38
37
  message_body = json.loads(message_body)
38
+ session_id = message_body.get("session_id")
39
39
 
40
40
  message_attributes = SQSHandler.get_message_custom_attributes(record)
41
41
  request_id = message_attributes.get("request_id")
@@ -15,7 +15,13 @@ class AzureFunctions:
15
15
 
16
16
  _log = logging.getLogger("ak.azure.functions")
17
17
  _log.setLevel(logging.DEBUG)
18
- _chat_service = ChatService()
18
+ _chat_service = None
19
+
20
+ @classmethod
21
+ def _get_chat_service(cls) -> ChatService:
22
+ if cls._chat_service is None:
23
+ cls._chat_service = ChatService()
24
+ return cls._chat_service
19
25
 
20
26
  @classmethod
21
27
  def handler(cls, req: func.HttpRequest) -> func.HttpResponse:
@@ -10,7 +10,7 @@ class ResponseStore(ABC):
10
10
  Abstract base class for response message storage systems.
11
11
  """
12
12
 
13
- _log = __import__("logging").getLogger(__name__)
13
+ _log = __import__("logging").getLogger("ak.deployment.response_store")
14
14
 
15
15
  @abstractmethod
16
16
  def add_message(self, message: Dict) -> None: