agentkernel 0.8.1__tar.gz → 0.9.1__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 (337) hide show
  1. {agentkernel-0.8.1 → agentkernel-0.9.1}/PKG-INFO +494 -60
  2. {agentkernel-0.8.1 → agentkernel-0.9.1}/README.md +472 -49
  3. {agentkernel-0.8.1 → agentkernel-0.9.1}/pyproject.toml +41 -13
  4. agentkernel-0.8.1/src/agentkernel/aws.py → agentkernel-0.9.1/src/agentkernel/agui.py +1 -1
  5. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/api/__init__.py +0 -1
  6. agentkernel-0.9.1/src/agentkernel/api/handler.py +153 -0
  7. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/api/http.py +37 -12
  8. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/api/mcp/akmcp.py +2 -5
  9. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/auth/__init__.py +1 -0
  10. agentkernel-0.9.1/src/agentkernel/auth/authoriser.py +56 -0
  11. agentkernel-0.9.1/src/agentkernel/aws.py +16 -0
  12. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/__init__.py +18 -2
  13. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/base.py +68 -4
  14. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/chat_service.py +293 -160
  15. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/config.py +306 -31
  16. agentkernel-0.9.1/src/agentkernel/core/event.py +147 -0
  17. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/hooks.py +47 -7
  18. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/model.py +57 -2
  19. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/multimodal/hooks.py +96 -91
  20. agentkernel-0.9.1/src/agentkernel/core/multimodal/source.py +112 -0
  21. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/multimodal/storage/base.py +11 -1
  22. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/multimodal/storage/storage_manager.py +6 -1
  23. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/multimodal/tools.py +101 -87
  24. agentkernel-0.9.1/src/agentkernel/core/runtime.py +402 -0
  25. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/service.py +33 -4
  26. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/session/base.py +75 -0
  27. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/session/cosmosdb.py +18 -2
  28. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/session/dynamodb.py +77 -1
  29. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/session/firestore.py +18 -1
  30. agentkernel-0.9.1/src/agentkernel/core/session/in_memory.py +128 -0
  31. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/session/redis.py +11 -1
  32. agentkernel-0.9.1/src/agentkernel/core/session/redis_like.py +74 -0
  33. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/session/valkey.py +11 -1
  34. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/tool.py +22 -1
  35. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/util/driver/dynamodb.py +43 -0
  36. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/util/driver/redis_like.py +51 -0
  37. agentkernel-0.9.1/src/agentkernel/core/util/pagination.py +66 -0
  38. agentkernel-0.9.1/src/agentkernel/deployment/aws/__init__.py +66 -0
  39. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/deployment/aws/containerized/__init__.py +1 -0
  40. agentkernel-0.9.1/src/agentkernel/deployment/aws/containerized/akagentrunner.py +279 -0
  41. agentkernel-0.9.1/src/agentkernel/deployment/aws/containerized/akoutputconsumer.py +200 -0
  42. agentkernel-0.9.1/src/agentkernel/deployment/aws/containerized/core/api/__init__.py +2 -0
  43. agentkernel-0.9.1/src/agentkernel/deployment/aws/containerized/core/api/rest_api.py +23 -0
  44. agentkernel-0.9.1/src/agentkernel/deployment/aws/containerized/core/api/websocket_api.py +520 -0
  45. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/deployment/aws/containerized/core/sqs_consumer.py +74 -52
  46. agentkernel-0.9.1/src/agentkernel/deployment/aws/containerized/ecs_io_handler.py +86 -0
  47. agentkernel-0.8.1/src/agentkernel/deployment/common/queue_consumer.py → agentkernel-0.9.1/src/agentkernel/deployment/aws/core/raw_queue_consumer.py +11 -4
  48. agentkernel-0.9.1/src/agentkernel/deployment/aws/core/response_store/__init__.py +1 -0
  49. agentkernel-0.9.1/src/agentkernel/deployment/aws/core/response_store/dynamodb.py +5 -0
  50. agentkernel-0.9.1/src/agentkernel/deployment/aws/core/response_store/factory.py +5 -0
  51. agentkernel-0.9.1/src/agentkernel/deployment/aws/core/response_store/redis.py +5 -0
  52. agentkernel-0.9.1/src/agentkernel/deployment/aws/core/response_store/valkey.py +5 -0
  53. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/deployment/aws/core/sqs_handler.py +58 -123
  54. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/deployment/aws/core/websocket_service.py +7 -127
  55. agentkernel-0.9.1/src/agentkernel/deployment/aws/serverless/__init__.py +5 -0
  56. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/deployment/aws/serverless/akagentrunner.py +97 -12
  57. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/deployment/aws/serverless/akresponsehandler.py +51 -18
  58. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/deployment/aws/serverless/core/router/rest_lambda.py +64 -38
  59. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/deployment/aws/serverless/core/router/ws_lambda.py +38 -80
  60. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/deployment/aws/serverless/core/sqs_consumer.py +2 -2
  61. agentkernel-0.9.1/src/agentkernel/deployment/common/__init__.py +1 -0
  62. agentkernel-0.9.1/src/agentkernel/deployment/common/response_store.py +5 -0
  63. agentkernel-0.9.1/src/agentkernel/deployment/common/rest_handler.py +8 -0
  64. agentkernel-0.9.1/src/agentkernel/deployment/common/thread_runner.py +9 -0
  65. agentkernel-0.9.1/src/agentkernel/deployment/common/websocket_service.py +5 -0
  66. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/framework/adk/adk.py +143 -13
  67. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/framework/crewai/crewai.py +9 -1
  68. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/framework/langgraph/langgraph.py +174 -12
  69. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/framework/openai/openai.py +136 -17
  70. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/framework/pydanticai/pydanticai.py +239 -22
  71. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/framework/smolagents/smolagents.py +9 -1
  72. agentkernel-0.9.1/src/agentkernel/integration/agui/__init__.py +15 -0
  73. agentkernel-0.9.1/src/agentkernel/integration/agui/handler.py +285 -0
  74. agentkernel-0.9.1/src/agentkernel/integration/agui/mapping.py +74 -0
  75. agentkernel-0.9.1/src/agentkernel/integration/agui/run_input.py +163 -0
  76. agentkernel-0.9.1/src/agentkernel/integration/agui/state.py +212 -0
  77. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/integration/gmail/gmail_chat.py +16 -23
  78. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/integration/instagram/instagram_chat.py +18 -22
  79. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/integration/messenger/messenger_chat.py +18 -22
  80. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/integration/slack/slack_chat.py +25 -10
  81. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/integration/teams/README.md +143 -102
  82. agentkernel-0.9.1/src/agentkernel/integration/teams/teams_chat.py +553 -0
  83. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/integration/telegram/telegram_chat.py +17 -15
  84. agentkernel-0.9.1/src/agentkernel/integration/thread/__init__.py +17 -0
  85. {agentkernel-0.8.1/src/agentkernel/core → agentkernel-0.9.1/src/agentkernel/integration}/thread/manager.py +44 -69
  86. {agentkernel-0.8.1/src/agentkernel/core → agentkernel-0.9.1/src/agentkernel/integration}/thread/naming.py +1 -1
  87. agentkernel-0.9.1/src/agentkernel/integration/thread/recorder.py +66 -0
  88. {agentkernel-0.8.1/src/agentkernel/core → agentkernel-0.9.1/src/agentkernel/integration}/thread/store/base.py +14 -20
  89. {agentkernel-0.8.1/src/agentkernel/core → agentkernel-0.9.1/src/agentkernel/integration}/thread/store/cosmosdb.py +2 -2
  90. {agentkernel-0.8.1/src/agentkernel/core → agentkernel-0.9.1/src/agentkernel/integration}/thread/store/dynamodb.py +2 -2
  91. {agentkernel-0.8.1/src/agentkernel/core → agentkernel-0.9.1/src/agentkernel/integration}/thread/store/firestore.py +2 -2
  92. agentkernel-0.9.1/src/agentkernel/integration/thread/store/redis.py +19 -0
  93. agentkernel-0.8.1/src/agentkernel/core/thread/store/redis.py → agentkernel-0.9.1/src/agentkernel/integration/thread/store/redis_like.py +12 -12
  94. agentkernel-0.9.1/src/agentkernel/integration/thread/store/valkey.py +19 -0
  95. agentkernel-0.9.1/src/agentkernel/integration/thread/thread_chat.py +283 -0
  96. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/integration/whatsapp/README.md +1 -1
  97. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/integration/whatsapp/whatsapp_chat.py +14 -9
  98. agentkernel-0.9.1/src/agentkernel/pipeline/__init__.py +65 -0
  99. agentkernel-0.9.1/src/agentkernel/pipeline/agent_runner.py +178 -0
  100. agentkernel-0.9.1/src/agentkernel/pipeline/consumer.py +156 -0
  101. agentkernel-0.9.1/src/agentkernel/pipeline/envelope.py +37 -0
  102. agentkernel-0.9.1/src/agentkernel/pipeline/io_handler.py +161 -0
  103. agentkernel-0.9.1/src/agentkernel/pipeline/request_handler.py +363 -0
  104. agentkernel-0.9.1/src/agentkernel/pipeline/response_handler.py +188 -0
  105. agentkernel-0.9.1/src/agentkernel/pipeline/response_store/__init__.py +5 -0
  106. agentkernel-0.9.1/src/agentkernel/pipeline/response_store/base.py +132 -0
  107. {agentkernel-0.8.1/src/agentkernel/deployment/aws/core → agentkernel-0.9.1/src/agentkernel/pipeline}/response_store/dynamodb.py +27 -2
  108. agentkernel-0.9.1/src/agentkernel/pipeline/response_store/factory.py +96 -0
  109. agentkernel-0.9.1/src/agentkernel/pipeline/response_store/in_memory.py +118 -0
  110. {agentkernel-0.8.1/src/agentkernel/deployment/aws/core → agentkernel-0.9.1/src/agentkernel/pipeline}/response_store/redis.py +24 -2
  111. {agentkernel-0.8.1/src/agentkernel/deployment/aws/core → agentkernel-0.9.1/src/agentkernel/pipeline}/response_store/valkey.py +24 -2
  112. agentkernel-0.9.1/src/agentkernel/pipeline/testing.py +172 -0
  113. {agentkernel-0.8.1/src/agentkernel/deployment/common → agentkernel-0.9.1/src/agentkernel/pipeline}/thread_runner.py +49 -7
  114. agentkernel-0.9.1/src/agentkernel/pipeline/transport/__init__.py +4 -0
  115. agentkernel-0.9.1/src/agentkernel/pipeline/transport/base.py +213 -0
  116. agentkernel-0.9.1/src/agentkernel/pipeline/transport/bookkeeping.py +172 -0
  117. agentkernel-0.9.1/src/agentkernel/pipeline/transport/in_memory.py +204 -0
  118. agentkernel-0.9.1/src/agentkernel/pipeline/transport/kafka.py +457 -0
  119. agentkernel-0.9.1/src/agentkernel/pipeline/transport/nats.py +472 -0
  120. agentkernel-0.9.1/src/agentkernel/pipeline/transport/sqs.py +257 -0
  121. agentkernel-0.9.1/src/agentkernel/pipeline/ws/__init__.py +41 -0
  122. agentkernel-0.9.1/src/agentkernel/pipeline/ws/base.py +233 -0
  123. agentkernel-0.9.1/src/agentkernel/pipeline/ws/endpoint.py +61 -0
  124. agentkernel-0.9.1/src/agentkernel/pipeline/ws/gateway.py +108 -0
  125. agentkernel-0.9.1/src/agentkernel/pipeline/ws/handler.py +267 -0
  126. agentkernel-0.9.1/src/agentkernel/pipeline/ws/push.py +184 -0
  127. agentkernel-0.9.1/src/agentkernel/pipeline/ws/registry.py +128 -0
  128. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/sandbox/__init__.py +2 -0
  129. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/sandbox/broker/base.py +1 -0
  130. agentkernel-0.9.1/src/agentkernel/sandbox/broker/queue.py +176 -0
  131. agentkernel-0.9.1/src/agentkernel/sandbox/broker/queue_worker.py +367 -0
  132. agentkernel-0.9.1/src/agentkernel/sandbox/broker/wire.py +52 -0
  133. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/sandbox/broker/worker.py +14 -2
  134. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/sandbox/factory.py +10 -1
  135. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/sandbox/manager.py +24 -0
  136. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/sandbox/model.py +19 -1
  137. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/sandbox/providers/docker.py +3 -2
  138. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/sandbox/providers/ec2_ssm.py +14 -1
  139. agentkernel-0.9.1/src/agentkernel/sandbox/providers/kubernetes.py +422 -0
  140. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/sandbox/tools.py +9 -3
  141. agentkernel-0.9.1/src/agentkernel/schedule/__init__.py +59 -0
  142. agentkernel-0.9.1/src/agentkernel/schedule/errors.py +11 -0
  143. agentkernel-0.9.1/src/agentkernel/schedule/handler.py +177 -0
  144. agentkernel-0.9.1/src/agentkernel/schedule/manager.py +490 -0
  145. agentkernel-0.9.1/src/agentkernel/schedule/model.py +101 -0
  146. agentkernel-0.9.1/src/agentkernel/schedule/provider/__init__.py +5 -0
  147. agentkernel-0.9.1/src/agentkernel/schedule/provider/base.py +142 -0
  148. agentkernel-0.9.1/src/agentkernel/schedule/provider/eventbridge.py +290 -0
  149. agentkernel-0.9.1/src/agentkernel/schedule/provider/local.py +247 -0
  150. agentkernel-0.9.1/src/agentkernel/schedule/store/__init__.py +5 -0
  151. agentkernel-0.9.1/src/agentkernel/schedule/store/base.py +146 -0
  152. agentkernel-0.9.1/src/agentkernel/schedule/store/dynamodb.py +102 -0
  153. agentkernel-0.9.1/src/agentkernel/schedule/store/in_memory.py +53 -0
  154. agentkernel-0.9.1/src/agentkernel/schedule/store/redis.py +20 -0
  155. agentkernel-0.9.1/src/agentkernel/schedule/store/redis_like.py +120 -0
  156. agentkernel-0.9.1/src/agentkernel/schedule/store/valkey.py +20 -0
  157. agentkernel-0.9.1/src/agentkernel/schedule/timing.py +108 -0
  158. agentkernel-0.9.1/src/agentkernel/schedule/tools.py +375 -0
  159. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/skills/ak-add-capabilities/SKILL.md +326 -47
  160. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/skills/ak-add-capabilities/evals/evals.json +100 -3
  161. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/skills/ak-add-integration/SKILL.md +11 -9
  162. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/skills/ak-add-integration/evals/evals.json +1 -1
  163. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/skills/ak-build/SKILL.md +2 -2
  164. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/skills/ak-build/evals/evals.json +1 -1
  165. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/skills/ak-cloud-deploy/SKILL.md +356 -39
  166. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/skills/ak-cloud-deploy/evals/evals.json +65 -5
  167. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/skills/ak-init/SKILL.md +10 -5
  168. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/skills/ak-init/evals/evals.json +2 -2
  169. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/skills/ak-test/SKILL.md +108 -14
  170. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/skills/ak-test/evals/evals.json +33 -13
  171. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/test/config.py +8 -4
  172. agentkernel-0.9.1/src/agentkernel/test/core/evaluator/__init__.py +17 -0
  173. agentkernel-0.9.1/src/agentkernel/test/core/evaluator/base.py +66 -0
  174. agentkernel-0.9.1/src/agentkernel/test/core/evaluator/deepeval.py +90 -0
  175. agentkernel-0.9.1/src/agentkernel/test/core/evaluator/opik.py +92 -0
  176. agentkernel-0.9.1/src/agentkernel/test/test.py +296 -0
  177. agentkernel-0.9.1/src/agentkernel/thread.py +8 -0
  178. agentkernel-0.9.1/src/agentkernel/trace/openllmetry/__init__.py +0 -0
  179. agentkernel-0.8.1/src/agentkernel/api/handler.py +0 -109
  180. agentkernel-0.8.1/src/agentkernel/api/thread.py +0 -107
  181. agentkernel-0.8.1/src/agentkernel/core/runtime.py +0 -289
  182. agentkernel-0.8.1/src/agentkernel/core/session/in_memory.py +0 -61
  183. agentkernel-0.8.1/src/agentkernel/core/thread/__init__.py +0 -16
  184. agentkernel-0.8.1/src/agentkernel/core/thread/authoriser.py +0 -28
  185. agentkernel-0.8.1/src/agentkernel/deployment/aws/__init__.py +0 -18
  186. agentkernel-0.8.1/src/agentkernel/deployment/aws/containerized/akagentrunner.py +0 -118
  187. agentkernel-0.8.1/src/agentkernel/deployment/aws/containerized/akoutputconsumer.py +0 -131
  188. agentkernel-0.8.1/src/agentkernel/deployment/aws/containerized/ecs_io_handler.py +0 -51
  189. agentkernel-0.8.1/src/agentkernel/deployment/aws/containerized/ecs_queue_handler.py +0 -39
  190. agentkernel-0.8.1/src/agentkernel/deployment/aws/core/response_store/__init__.py +0 -1
  191. agentkernel-0.8.1/src/agentkernel/deployment/aws/core/response_store/handler.py +0 -106
  192. agentkernel-0.8.1/src/agentkernel/deployment/aws/serverless/__init__.py +0 -13
  193. agentkernel-0.8.1/src/agentkernel/deployment/common/__init__.py +0 -2
  194. agentkernel-0.8.1/src/agentkernel/deployment/common/queue_handler.py +0 -84
  195. agentkernel-0.8.1/src/agentkernel/deployment/common/queue_request_handler.py +0 -185
  196. agentkernel-0.8.1/src/agentkernel/deployment/common/response_store.py +0 -90
  197. agentkernel-0.8.1/src/agentkernel/deployment/common/websocket_connection_store.py +0 -63
  198. agentkernel-0.8.1/src/agentkernel/integration/teams/teams_chat.py +0 -301
  199. agentkernel-0.8.1/src/agentkernel/test/test.py +0 -303
  200. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/__init__.py +0 -0
  201. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/adk.py +0 -0
  202. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/api/a2a/__init__.py +0 -0
  203. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/api/a2a/a2a.py +0 -0
  204. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/api/a2a/handler.py +0 -0
  205. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/api/mcp/__init__.py +0 -0
  206. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/auth/handler.py +0 -0
  207. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/auth.py +0 -0
  208. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/azure.py +0 -0
  209. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/cli/__init__.py +0 -0
  210. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/cli/ak.py +0 -0
  211. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/cli/cli.py +0 -0
  212. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/builder.py +0 -0
  213. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/logger.py +0 -0
  214. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/module.py +0 -0
  215. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/multimodal/__init__.py +0 -0
  216. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/multimodal/factory.py +0 -0
  217. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/multimodal/storage/__init__.py +0 -0
  218. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/multimodal/storage/dynamodb.py +0 -0
  219. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/multimodal/storage/in_memory.py +0 -0
  220. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/multimodal/storage/redis.py +0 -0
  221. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/multimodal/storage/session_cache.py +0 -0
  222. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/session/__init__.py +0 -0
  223. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/session/serde.py +0 -0
  224. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/util/config_yaml_util.py +0 -0
  225. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/util/driver/__init__.py +0 -0
  226. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/util/driver/base.py +0 -0
  227. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/util/driver/cosmosdb.py +0 -0
  228. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/util/driver/firestore.py +0 -0
  229. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/util/driver/redis.py +0 -0
  230. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/util/driver/valkey.py +0 -0
  231. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/util/error_util.py +0 -0
  232. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/util/factory.py +0 -0
  233. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/core/util/key_value_cache.py +0 -0
  234. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/crewai.py +0 -0
  235. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/deployment/__init__.py +0 -0
  236. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/deployment/aws/containerized/core/__init__.py +0 -0
  237. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/deployment/aws/core/__init__.py +0 -0
  238. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/deployment/aws/serverless/akauthorizer.py +0 -0
  239. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/deployment/aws/serverless/aklambda.py +0 -0
  240. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/deployment/aws/serverless/akwsconnectionhandler.py +0 -0
  241. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/deployment/aws/serverless/core/__init__.py +0 -0
  242. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/deployment/aws/serverless/core/router/__init__.py +0 -0
  243. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/deployment/aws/serverless/core/router/common.py +0 -0
  244. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/deployment/azure/__init__.py +0 -0
  245. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/deployment/azure/akfunction.py +0 -0
  246. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/deployment/gcp/__init__.py +0 -0
  247. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/deployment/gcp/akauthorizer.py +0 -0
  248. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/deployment/gcp/akcloudrun.py +0 -0
  249. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/framework/__init__.py +0 -0
  250. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/framework/adk/__init__.py +0 -0
  251. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/framework/crewai/__init__.py +0 -0
  252. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/framework/langgraph/__init__.py +0 -0
  253. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/framework/openai/__init__.py +0 -0
  254. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/framework/pydanticai/__init__.py +0 -0
  255. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/framework/smolagents/__init__.py +0 -0
  256. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/gcp.py +0 -0
  257. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/gmail.py +0 -0
  258. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/guardrail/__init__.py +0 -0
  259. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/guardrail/bedrock.py +0 -0
  260. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/guardrail/guardrail.py +0 -0
  261. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/guardrail/openai.py +0 -0
  262. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/guardrail/walledai.py +0 -0
  263. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/instagram.py +0 -0
  264. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/integration/__init__.py +0 -0
  265. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/integration/gmail/README.md +0 -0
  266. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/integration/gmail/__init__.py +0 -0
  267. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/integration/instagram/README.md +0 -0
  268. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/integration/instagram/__init__.py +0 -0
  269. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/integration/messenger/README.md +0 -0
  270. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/integration/messenger/__init__.py +0 -0
  271. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/integration/slack/README.md +0 -0
  272. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/integration/slack/__init__.py +0 -0
  273. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/integration/teams/__init__.py +0 -0
  274. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/integration/telegram/README.md +0 -0
  275. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/integration/telegram/__init__.py +0 -0
  276. {agentkernel-0.8.1/src/agentkernel/core → agentkernel-0.9.1/src/agentkernel/integration}/thread/model.py +0 -0
  277. {agentkernel-0.8.1/src/agentkernel/core → agentkernel-0.9.1/src/agentkernel/integration}/thread/store/__init__.py +0 -0
  278. {agentkernel-0.8.1/src/agentkernel/core → agentkernel-0.9.1/src/agentkernel/integration}/thread/store/in_memory.py +0 -0
  279. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/integration/whatsapp/__init__.py +0 -0
  280. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/knowledgebase/__init__.py +0 -0
  281. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/knowledgebase/base.py +0 -0
  282. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/knowledgebase/chroma.py +0 -0
  283. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/knowledgebase/knowledgebuilder.py +0 -0
  284. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/knowledgebase/neo4j.py +0 -0
  285. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/knowledgebase/starburst.py +0 -0
  286. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/langgraph.py +0 -0
  287. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/mcp.py +0 -0
  288. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/messenger.py +0 -0
  289. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/openai.py +0 -0
  290. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/pydanticai.py +0 -0
  291. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/sandbox/base.py +0 -0
  292. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/sandbox/broker/__init__.py +0 -0
  293. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/sandbox/broker/embedded.py +0 -0
  294. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/sandbox/broker/thread.py +0 -0
  295. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/sandbox/errors.py +0 -0
  296. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/sandbox/hooks.py +0 -0
  297. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/sandbox/principal.py +0 -0
  298. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/sandbox/providers/__init__.py +0 -0
  299. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/sandbox/providers/daytona.py +0 -0
  300. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/sandbox/providers/e2b.py +0 -0
  301. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/sandbox/providers/local_subprocess.py +0 -0
  302. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/sandbox/testing.py +0 -0
  303. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/skills/__init__.py +0 -0
  304. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/skills/skills.py +0 -0
  305. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/slack.py +0 -0
  306. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/smolagents.py +0 -0
  307. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/teams.py +0 -0
  308. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/telegram.py +0 -0
  309. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/test/__init__.py +0 -0
  310. {agentkernel-0.8.1/src/agentkernel/trace/langfuse → agentkernel-0.9.1/src/agentkernel/test/core}/__init__.py +0 -0
  311. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/__init__.py +0 -0
  312. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/base.py +0 -0
  313. {agentkernel-0.8.1/src/agentkernel/trace/logfire → agentkernel-0.9.1/src/agentkernel/trace/langfuse}/__init__.py +0 -0
  314. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/langfuse/adk.py +0 -0
  315. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/langfuse/crewai.py +0 -0
  316. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/langfuse/langfuse.py +0 -0
  317. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/langfuse/langgraph.py +0 -0
  318. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/langfuse/openai.py +0 -0
  319. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/langfuse/pydanticai.py +0 -0
  320. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/langfuse/smolagents.py +0 -0
  321. {agentkernel-0.8.1/src/agentkernel/trace/openllmetry → agentkernel-0.9.1/src/agentkernel/trace/logfire}/__init__.py +0 -0
  322. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/logfire/adk.py +0 -0
  323. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/logfire/crewai.py +0 -0
  324. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/logfire/langgraph.py +0 -0
  325. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/logfire/logfire.py +0 -0
  326. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/logfire/openai.py +0 -0
  327. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/logfire/pydanticai.py +0 -0
  328. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/logfire/smolagents.py +0 -0
  329. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/openllmetry/adk.py +0 -0
  330. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/openllmetry/crewai.py +0 -0
  331. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/openllmetry/langgraph.py +0 -0
  332. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/openllmetry/openai.py +0 -0
  333. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/openllmetry/openllmetry.py +0 -0
  334. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/openllmetry/pydanticai.py +0 -0
  335. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/openllmetry/smolagents.py +0 -0
  336. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/trace/trace.py +0 -0
  337. {agentkernel-0.8.1 → agentkernel-0.9.1}/src/agentkernel/whatsapp.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: agentkernel
3
- Version: 0.8.1
3
+ Version: 0.9.1
4
4
  Summary: Agent Kernel - Unified AI Agents Runtime
5
5
  Author: Yaala Labs
6
6
  Author-email: Yaala Labs <agentkernel@yaalalabs.com>
@@ -14,9 +14,11 @@ Requires-Dist: a2a-sdk[http-server]>=0.3.6 ; extra == 'a2a'
14
14
  Requires-Dist: google-adk>=1.14.1 ; extra == 'adk'
15
15
  Requires-Dist: litellm~=1.89.2 ; extra == 'adk'
16
16
  Requires-Dist: openinference-instrumentation-google-adk>=0.1.6 ; extra == 'adk'
17
+ Requires-Dist: ag-ui-protocol>=0.1.16 ; extra == 'agui'
17
18
  Requires-Dist: fastapi>=0.118.0 ; extra == 'api'
18
19
  Requires-Dist: uvicorn>=0.37.0 ; extra == 'api'
19
20
  Requires-Dist: gunicorn>=23.0.0 ; extra == 'api'
21
+ Requires-Dist: httpx>=0.27.0 ; extra == 'api'
20
22
  Requires-Dist: pyjwt>=2.13.0 ; extra == 'auth'
21
23
  Requires-Dist: boto3>=1.41.4 ; extra == 'aws'
22
24
  Requires-Dist: azure-functions>=1.24.0 ; extra == 'azure'
@@ -26,6 +28,7 @@ Requires-Dist: chromadb>=0.4.0 ; extra == 'chromadb'
26
28
  Requires-Dist: crewai>=1.15.0 ; extra == 'crewai'
27
29
  Requires-Dist: openinference-instrumentation-crewai>=0.1.16 ; extra == 'crewai'
28
30
  Requires-Dist: openinference-instrumentation-litellm>=0.1.28 ; extra == 'crewai'
31
+ Requires-Dist: croniter>=3.0 ; extra == 'cron'
29
32
  Requires-Dist: daytona>=0.198.0,<0.199 ; extra == 'daytona'
30
33
  Requires-Dist: e2b-code-interpreter>=2.8.0 ; extra == 'e2b'
31
34
  Requires-Dist: google-cloud-firestore>=2.19.0 ; extra == 'gcp'
@@ -34,22 +37,27 @@ Requires-Dist: google-auth-oauthlib>=1.0.0 ; extra == 'gmail'
34
37
  Requires-Dist: google-auth-httplib2>=0.2.0 ; extra == 'gmail'
35
38
  Requires-Dist: google-api-python-client>=2.0.0 ; extra == 'gmail'
36
39
  Requires-Dist: httpx>=0.27.0 ; extra == 'instagram'
40
+ Requires-Dist: confluent-kafka>=2.15.0 ; extra == 'kafka'
41
+ Requires-Dist: kubernetes>=29.0.0 ; extra == 'kubernetes'
37
42
  Requires-Dist: langfuse>=4.2.0 ; extra == 'langfuse'
38
43
  Requires-Dist: nest-asyncio>=1.6.0 ; extra == 'langfuse'
39
- Requires-Dist: langgraph~=1.0.5 ; extra == 'langgraph'
40
- Requires-Dist: langchain~=1.2.3 ; extra == 'langgraph'
41
- Requires-Dist: langchain-community==0.4.1 ; extra == 'langgraph'
44
+ Requires-Dist: langgraph~=1.2.10 ; extra == 'langgraph'
45
+ Requires-Dist: langgraph-prebuilt~=1.1.0 ; extra == 'langgraph'
46
+ Requires-Dist: langchain~=1.3.10 ; extra == 'langgraph'
47
+ Requires-Dist: langchain-community~=0.4.1 ; extra == 'langgraph'
42
48
  Requires-Dist: litellm~=1.89.2 ; extra == 'langgraph'
43
49
  Requires-Dist: logfire>=3.0 ; extra == 'logfire'
44
- Requires-Dist: fastmcp>=2.14.2,<3.0.0 ; extra == 'mcp'
50
+ Requires-Dist: fastmcp>=3.2.0,<4.0.0 ; extra == 'mcp'
45
51
  Requires-Dist: httpx>=0.27.0 ; extra == 'messenger'
46
52
  Requires-Dist: litellm>=1.74.9 ; extra == 'multimodal'
47
53
  Requires-Dist: python-multipart>=0.0.12 ; extra == 'multimodal'
54
+ Requires-Dist: nats-py>=2.15.0 ; extra == 'nats'
48
55
  Requires-Dist: neo4j>=5.0.0 ; extra == 'neo4j'
49
- Requires-Dist: openai-agents>=0.6.5 ; extra == 'openai'
56
+ Requires-Dist: openai-agents>=0.7.0 ; extra == 'openai'
50
57
  Requires-Dist: openinference-instrumentation-openai-agents>=1.4.0 ; extra == 'openai'
51
58
  Requires-Dist: openai-guardrails>=0.2.1 ; extra == 'openai'
52
59
  Requires-Dist: traceloop-sdk>=0.61.0 ; extra == 'openllmetry'
60
+ Requires-Dist: opik>=1.7.0 ; extra == 'opik'
53
61
  Requires-Dist: pydantic-ai-slim~=2.13.0 ; extra == 'pydanticai'
54
62
  Requires-Dist: openinference-instrumentation-pydantic-ai>=0.1.17 ; extra == 'pydanticai'
55
63
  Requires-Dist: redis>=7.1.0 ; extra == 'redis'
@@ -59,6 +67,7 @@ Requires-Dist: httpx>=0.27.0 ; extra == 'slack'
59
67
  Requires-Dist: smolagents>=1.0.0 ; extra == 'smolagents'
60
68
  Requires-Dist: botbuilder-core>=4.17.0 ; extra == 'teams'
61
69
  Requires-Dist: botbuilder-schema>=4.17.0 ; extra == 'teams'
70
+ Requires-Dist: aiohttp>=3.9.0 ; extra == 'teams'
62
71
  Requires-Dist: msal>=1.31.1 ; extra == 'teams'
63
72
  Requires-Dist: httpx>=0.27.0 ; extra == 'teams'
64
73
  Requires-Dist: httpx>=0.27.0 ; extra == 'telegram'
@@ -67,11 +76,7 @@ Requires-Dist: pytest-asyncio>=1.2.0 ; extra == 'test'
67
76
  Requires-Dist: pytest-cov>=6.2.1 ; extra == 'test'
68
77
  Requires-Dist: pytest-html>=4.1.1 ; extra == 'test'
69
78
  Requires-Dist: pytest-order>=1.3.0 ; extra == 'test'
70
- Requires-Dist: rapidfuzz>=3.14.1 ; extra == 'test'
71
- Requires-Dist: ragas>=0.4.1 ; extra == 'test'
72
- Requires-Dist: langchain-community==0.4.1 ; extra == 'test'
73
- Requires-Dist: datasets>=2.14.0 ; extra == 'test'
74
- Requires-Dist: pandas>=2.0.0 ; extra == 'test'
79
+ Requires-Dist: deepeval>=4.1.4 ; extra == 'test'
75
80
  Requires-Dist: litellm>=1.89.2 ; extra == 'test'
76
81
  Requires-Dist: litellm>=1.74.9 ; extra == 'thread'
77
82
  Requires-Dist: trino>=0.337.0 ; extra == 'trino'
@@ -81,6 +86,7 @@ Requires-Dist: httpx>=0.27.0 ; extra == 'whatsapp'
81
86
  Requires-Python: >=3.12, <3.14
82
87
  Provides-Extra: a2a
83
88
  Provides-Extra: adk
89
+ Provides-Extra: agui
84
90
  Provides-Extra: api
85
91
  Provides-Extra: auth
86
92
  Provides-Extra: aws
@@ -88,20 +94,25 @@ Provides-Extra: azure
88
94
  Provides-Extra: chromadb
89
95
  Provides-Extra: cli
90
96
  Provides-Extra: crewai
97
+ Provides-Extra: cron
91
98
  Provides-Extra: daytona
92
99
  Provides-Extra: e2b
93
100
  Provides-Extra: gcp
94
101
  Provides-Extra: gmail
95
102
  Provides-Extra: instagram
103
+ Provides-Extra: kafka
104
+ Provides-Extra: kubernetes
96
105
  Provides-Extra: langfuse
97
106
  Provides-Extra: langgraph
98
107
  Provides-Extra: logfire
99
108
  Provides-Extra: mcp
100
109
  Provides-Extra: messenger
101
110
  Provides-Extra: multimodal
111
+ Provides-Extra: nats
102
112
  Provides-Extra: neo4j
103
113
  Provides-Extra: openai
104
114
  Provides-Extra: openllmetry
115
+ Provides-Extra: opik
105
116
  Provides-Extra: pydanticai
106
117
  Provides-Extra: redis
107
118
  Provides-Extra: sandbox-docker
@@ -130,11 +141,13 @@ Agent Kernel is a lightweight **AI agent runtime** and adapter layer for buildin
130
141
  - **Multi-Framework Support**: OpenAI Agents SDK, CrewAI, LangGraph, Google ADK, Smolagents, and Pydantic AI
131
142
  - **Session Management**: Built-in session abstraction with pluggable storage backends
132
143
  - **Knowledge Bases**: Unified `KnowledgeBase` interface with ChromaDB, Neo4j, and Starburst/Trino backends via `KnowledgeBuilder`
133
- - **Sandbox**: Execute agent-generated code and shell commands in an isolated, permission-bounded environment with pluggable providers (`local_subprocess`, `docker`, `e2b`, `daytona`, `ec2_ssm`), workload profiles, policy enforcement, and per-user identity
144
+ - **Sandbox**: Execute agent-generated code and shell commands in an isolated, permission-bounded environment with pluggable providers (`local_subprocess`, `docker`, `kubernetes`, `e2b`, `daytona`, `ec2_ssm`), workload profiles, policy enforcement, per-user identity, and a queue-decoupled broker for long-running executions
145
+ - **Scheduled Tasks**: Deferred and recurring chat execution (`schedule.at`/`schedule.cron`) with a management REST API, five agent-facing tools, and pluggable provider (`local`, `eventbridge`) and store (`in_memory`, `redis`, `valkey`, `dynamodb`) backends
134
146
  - **Flexible Deployment**: Interactive CLI, REST API, serverless, or containerized deployment — see the "Multi-Cloud Deployment" section below
135
147
  - **Pluggable Architecture**: Easy to extend with custom framework adapters
136
148
  - **MCP Server**: Built-in Model Context Protocol server for exposing agents as MCP tools and exposing any custom tool
137
149
  - **A2A Server**: Built-in Agent-to-Agent communication server for exposing agents with a simple configuration change
150
+ - **AG-UI Server**: Built-in [AG-UI protocol](https://github.com/ag-ui-protocol/ag-ui) handler for driving any streaming-capable agent from an AG-UI frontend, with opt-in shared state and client-context tools
138
151
  - **REST API**: Built-in REST API server for agent interaction
139
152
  - **Test Automation**: Built-in test suite for testing agents
140
153
 
@@ -158,16 +171,29 @@ For LLM-based thread naming with Conversation Thread Support:
158
171
  pip install "agentkernel[thread]"
159
172
  ```
160
173
 
174
+ For the AG-UI server (`AGUIRequestHandler`):
175
+
176
+ ```bash
177
+ pip install "agentkernel[agui]"
178
+ ```
179
+
161
180
  For the sandbox providers (the `local_subprocess` provider needs no extra; `ec2_ssm` rides
162
181
  the `aws` extra):
163
182
 
164
183
  ```bash
165
184
  pip install "agentkernel[sandbox-docker]" # docker provider
185
+ pip install "agentkernel[kubernetes]" # kubernetes provider (pod per sandbox)
166
186
  pip install "agentkernel[e2b]" # e2b cloud provider
167
187
  pip install "agentkernel[daytona]" # daytona cloud provider
168
188
  pip install "agentkernel[aws]" # ec2_ssm provider (boto3)
169
189
  ```
170
190
 
191
+ For cron parsing with the Scheduling capability (the `eventbridge` provider rides the `aws` extra):
192
+
193
+ ```bash
194
+ pip install "agentkernel[cron]"
195
+ ```
196
+
171
197
  **Requirements:**
172
198
  - Python 3.12+
173
199
 
@@ -419,6 +445,33 @@ if __name__ == "__main__":
419
445
 
420
446
  For full Terraform deployment configuration, see [`ak-deployment/ak-gcp/`](https://github.com/yaalalabs/agent-kernel/tree/develop/ak-deployment/ak-gcp) or the [GCP deployment docs](https://github.com/yaalalabs/agent-kernel/tree/develop/docs/docs/deployment/gcp-serverless.md).
421
447
 
448
+ ### On-Prem / Kubernetes Deployment
449
+
450
+ Deploy the queue pipeline to any Kubernetes cluster with the official Helm chart: an
451
+ io-handler Deployment (REST API + Response Handler), an agent-runner Deployment, and an
452
+ optional WebSocket gateway, over Kafka or NATS JetStream (or SQS on EKS). Your image supplies
453
+ one entry file per component:
454
+
455
+ ```python
456
+ # app_io_handler.py
457
+ from agentkernel.pipeline import IOHandler
458
+
459
+ IOHandler.run()
460
+
461
+ # app_agent_runner.py
462
+ from agentkernel.openai import OpenAIModule
463
+ from agentkernel.pipeline import AgentRunner
464
+
465
+ OpenAIModule([...])
466
+ AgentRunner.run()
467
+ ```
468
+
469
+ The chart injects broker and store connections as `AK_*` environment variables. See
470
+ [`ak-deployment/ak-k8s/`](https://github.com/yaalalabs/agent-kernel/tree/develop/ak-deployment/ak-k8s),
471
+ the [On-Prem / Kubernetes docs](https://github.com/yaalalabs/agent-kernel/tree/develop/docs/docs/deployment/onprem-kubernetes.md),
472
+ and the end-to-end example at
473
+ [`examples/k8s/openai-queue-mode`](https://github.com/yaalalabs/agent-kernel/tree/develop/examples/k8s/openai-queue-mode).
474
+
422
475
  ## Configuration
423
476
 
424
477
  Agent Kernel can be configured via environment variables, `.env` files, or YAML/JSON configuration files.
@@ -518,10 +571,12 @@ available on AWS ElastiCache at a lower price point than the Redis OSS engine:
518
571
 
519
572
  #### Conversation Thread Support
520
573
 
521
- Adding a `thread` block to the configuration turns on persistent, named conversation threads keyed by
522
- `session_id`. Once enabled, `user_id` becomes required on every chat request, a thread is auto-created on a
523
- session's first request, and history becomes readable over REST (`GET /api/v1/threads` and
524
- `GET /api/v1/threads/{session_id}` — optionally protected by a pluggable `Authoriser`). Sending
574
+ Mounting `AgentThreadRequestHandler` (from `agentkernel.thread`) instead of the default REST handler
575
+ enables persistent, named conversation threads keyed by `session_id`: it serves the standard chat routes
576
+ with thread recording, plus the read routes (`GET /api/v1/threads` and
577
+ `GET /api/v1/threads/{session_id}`, optionally protected by a pluggable `Authoriser`). The `thread`
578
+ block in the configuration only selects the store backend and naming. On the thread handler's chat
579
+ routes `user_id` is required, and a thread is auto-created on a session's first request. Sending
525
580
  `thread_name` on any chat request sets or renames the thread's display name and locks it against automatic
526
581
  naming. Threads created without an explicit `thread_name` are
527
582
  named by a pluggable naming strategy — by default an LLM call derives a concise title from the first prompt
@@ -532,8 +587,8 @@ mode additionally require `multimodal.enabled: true` with a shared attachment st
532
587
 
533
588
  - **Field**: `thread.type`
534
589
  - **Type**: string
535
- - **Options**: `memory`, `redis`, `dynamodb` (AWS), `firestore` (GCP), `cosmosdb` (Azure)
536
- - **Default**: `memory`
590
+ - **Options**: `in_memory`, `redis`, `valkey`, `dynamodb` (AWS), `firestore` (GCP), `cosmosdb` (Azure)
591
+ - **Default**: `in_memory`
537
592
  - **Environment Variable**: `AK_THREAD__TYPE`
538
593
 
539
594
  - **Naming Model**
@@ -572,6 +627,28 @@ Required when `thread.type=redis`:
572
627
  - **Description**: Key prefix for Redis thread storage
573
628
  - **Environment Variable**: `AK_THREAD__REDIS__PREFIX`
574
629
 
630
+ ##### Valkey Thread Store
631
+
632
+ Required when `thread.type=valkey`. Requires the `valkey` extra (`pip install "agentkernel[valkey]"`):
633
+
634
+ - **URL**
635
+ - **Field**: `thread.valkey.url`
636
+ - **Default**: `valkey://localhost:6379`
637
+ - **Description**: Valkey connection URL. Use `valkeys://` for SSL
638
+ - **Environment Variable**: `AK_THREAD__VALKEY__URL`
639
+
640
+ - **TTL (Time to Live)**
641
+ - **Field**: `thread.valkey.ttl`
642
+ - **Default**: `2592000` (30 days)
643
+ - **Description**: Thread TTL in seconds (0 disables)
644
+ - **Environment Variable**: `AK_THREAD__VALKEY__TTL`
645
+
646
+ - **Key Prefix**
647
+ - **Field**: `thread.valkey.prefix`
648
+ - **Default**: `ak:thread:`
649
+ - **Description**: Key prefix for Valkey thread storage
650
+ - **Environment Variable**: `AK_THREAD__VALKEY__PREFIX`
651
+
575
652
  ##### DynamoDB Thread Store
576
653
 
577
654
  Used when `thread.type=dynamodb`:
@@ -629,6 +706,104 @@ Required when `thread.type=cosmosdb`:
629
706
  - **Description**: Cosmos DB table name for thread storage
630
707
  - **Environment Variable**: `AK_THREAD__COSMOSDB__TABLE_NAME`
631
708
 
709
+ #### Scheduling
710
+
711
+ The presence of a `schedule` block enables deferred and recurring chat execution: a chat request carrying a
712
+ `schedule` block (`at` for one-time, `cron` for recurring, plus `timezone` and `session_mode`) is not run —
713
+ it is registered as a scheduled task and acknowledged with HTTP 202. When an occurrence is due, the provider
714
+ delivers the stored prompt into the input queue as a plain chat request, so scheduling requires the queue
715
+ execution pipeline. The block also injects five agent tools (`create_schedule`, `list_schedules`,
716
+ `get_schedule`, `update_schedule`, `delete_schedule`). The management routes
717
+ (`GET`/`PUT`/`DELETE /api/v1/schedules`) are not mounted from config: the application mounts
718
+ `ScheduleRESTRequestHandler` itself — `IOHandler.run(handlers=[ScheduleRESTRequestHandler()])` —
719
+ passing an optional pluggable `Authoriser` to the handler to protect them. Every scheduling request
720
+ needs a `user_id`: it is the owner the task is stored under and the identity later reads and changes
721
+ are checked against. A bare `schedule:` block works for local development — its defaults are the
722
+ `local` provider and the `in_memory` store. See `examples/api/schedule-openai`.
723
+
724
+ - **Provider Type**
725
+ - **Field**: `schedule.provider.type`
726
+ - **Type**: string
727
+ - **Default**: `local`
728
+ - **Options**: `local` (in-process scheduler thread; requires the `in_memory` transport and store),
729
+ `eventbridge` (AWS EventBridge Scheduler; requires the `sqs` transport and the `aws` extra), or a dotted
730
+ path to a `ScheduleProvider` subclass
731
+ - **Environment Variable**: `AK_SCHEDULE__PROVIDER__TYPE`
732
+
733
+ - **Store Type**
734
+ - **Field**: `schedule.store.type`
735
+ - **Type**: string
736
+ - **Default**: `in_memory`
737
+ - **Options**: `in_memory`, `redis`, `valkey`, `dynamodb`, or a dotted path to a `ScheduleStore` subclass
738
+ - **Environment Variable**: `AK_SCHEDULE__STORE__TYPE`
739
+
740
+ - **Tool Scoping**
741
+ - **Field**: `schedule.agents`
742
+ - **Type**: list of strings
743
+ - **Default**: `null` (all agents)
744
+ - **Description**: Agent names the schedule tools and system-prompt guidance attach to
745
+ - **Environment Variable**: `AK_SCHEDULE__AGENTS`
746
+
747
+ ##### EventBridge Scheduler Provider
748
+
749
+ Required when `schedule.provider.type=eventbridge`. All three are supplied by the AWS Terraform modules
750
+ when `enable_scheduling = true`; a missing one fails at startup with an `AKConfigError`.
751
+
752
+ - **Group Name**
753
+ - **Field**: `schedule.provider.eventbridge.group_name`
754
+ - **Description**: EventBridge Scheduler schedule-group name the schedules are created in
755
+ - **Environment Variable**: `AK_SCHEDULE__PROVIDER__EVENTBRIDGE__GROUP_NAME`
756
+
757
+ - **Role ARN**
758
+ - **Field**: `schedule.provider.eventbridge.role_arn`
759
+ - **Description**: Execution role ARN Scheduler assumes to deliver triggers to the input queue
760
+ - **Environment Variable**: `AK_SCHEDULE__PROVIDER__EVENTBRIDGE__ROLE_ARN`
761
+
762
+ - **Queue ARN**
763
+ - **Field**: `schedule.provider.eventbridge.queue_arn`
764
+ - **Description**: Input queue ARN used as the schedule target
765
+ - **Environment Variable**: `AK_SCHEDULE__PROVIDER__EVENTBRIDGE__QUEUE_ARN`
766
+
767
+ ##### Redis / Valkey Schedule Store
768
+
769
+ Required when `schedule.store.type=redis` (or `valkey`, with `schedule.store.valkey.*` / `AK_SCHEDULE__STORE__VALKEY__*`).
770
+
771
+ - **URL**
772
+ - **Field**: `schedule.store.redis.url`
773
+ - **Default**: `redis://localhost:6379`
774
+ - **Description**: Redis connection URL. Use `rediss://` for SSL
775
+ - **Environment Variable**: `AK_SCHEDULE__STORE__REDIS__URL`
776
+
777
+ - **Key Prefix**
778
+ - **Field**: `schedule.store.redis.prefix`
779
+ - **Default**: `ak:schedule:`
780
+ - **Description**: Key prefix for scheduled-task storage
781
+ - **Environment Variable**: `AK_SCHEDULE__STORE__REDIS__PREFIX`
782
+
783
+ - **TTL (Time to Live)**
784
+ - **Field**: `schedule.store.redis.ttl`
785
+ - **Default**: `0` (disabled)
786
+ - **Description**: Scheduled task TTL in seconds. Unlike threads this defaults to 0 — a task that
787
+ silently expired would stop firing with no audit trail
788
+ - **Environment Variable**: `AK_SCHEDULE__STORE__REDIS__TTL`
789
+
790
+ ##### DynamoDB Schedule Store
791
+
792
+ Required when `schedule.store.type=dynamodb`. The table needs a partition key named `task_id` (S) and no
793
+ sort key; the AWS Terraform modules create it when `create_dynamodb_schedule_table = true`.
794
+
795
+ - **Table Name**
796
+ - **Field**: `schedule.store.dynamodb.table_name`
797
+ - **Default**: `ak-agent-schedules`
798
+ - **Description**: DynamoDB table name for scheduled-task storage
799
+ - **Environment Variable**: `AK_SCHEDULE__STORE__DYNAMODB__TABLE_NAME`
800
+
801
+ - **TTL (Time to Live)**
802
+ - **Field**: `schedule.store.dynamodb.ttl`
803
+ - **Default**: `0` (disabled)
804
+ - **Description**: DynamoDB item TTL in seconds
805
+ - **Environment Variable**: `AK_SCHEDULE__STORE__DYNAMODB__TTL`
806
+
632
807
  #### Execution Configuration
633
808
 
634
809
  Configure queue-backed and serverless execution behavior.
@@ -642,16 +817,25 @@ Configure queue-backed and serverless execution behavior.
642
817
 
643
818
  - **Queues**
644
819
  - **Field**: `execution.queues`
645
- - **Description**: Queue settings used by serverless execution modes
820
+ - **Description**: Queue settings used by the queue execution pipeline (in-process by default, or serverless/containerized backends)
821
+
822
+ - **Transport Type**
823
+ - **Field**: `execution.queues.type`
824
+ - **Options**: `in_memory`, `sqs`, `kafka`, `nats`, or a dotted path to a `QueueTransport` subclass
825
+ - **Default**: none — **mandatory whenever an `execution.queues` block is declared**
826
+ - **Description**: Queue transport used by the pipeline, and the only thing that selects it: queue coordinates are injected per component by a deployment, so they are never used to infer the transport. Declaring the block without a `type` is a configuration error. Omitting the block entirely leaves `in_memory` — a zero-dependency, in-process transport for local development and single-process deployments.
827
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__TYPE`
646
828
 
647
829
  - **Input Queue URL**
648
830
  - **Field**: `execution.queues.input.url`
649
831
  - **Default**: `None`
832
+ - **Description**: Input queue URL (`sqs` transport only)
650
833
  - **Environment Variable**: `AK_EXECUTION__QUEUES__INPUT__URL`
651
834
 
652
835
  - **Output Queue URL**
653
836
  - **Field**: `execution.queues.output.url`
654
837
  - **Default**: `None`
838
+ - **Description**: Output queue URL (`sqs` transport only)
655
839
  - **Environment Variable**: `AK_EXECUTION__QUEUES__OUTPUT__URL`
656
840
 
657
841
  - **Input Queue Max Receive Count**
@@ -667,15 +851,150 @@ Configure queue-backed and serverless execution behavior.
667
851
  - **Input Queue Consumer Count**
668
852
  - **Field**: `execution.queues.input.no_of_consumers`
669
853
  - **Default**: `5`
670
- - **Description**: Number of independent consumer threads that each poll the input queue in a continuous loop. Only used by containerized deployments — never set for serverless deployments, which have no consumer threads.
854
+ - **Description**: Number of independent consumer threads that each poll the input queue in a continuous loop. Used by the in-process pipeline (agent-runner worker threads) and by ECS containerized deployments; not used in serverless (Lambda) mode, which has no consumer threads.
671
855
  - **Environment Variable**: `AK_EXECUTION__QUEUES__INPUT__NO_OF_CONSUMERS`
672
856
 
673
857
  - **Output Queue Consumer Count**
674
858
  - **Field**: `execution.queues.output.no_of_consumers`
675
859
  - **Default**: `5`
676
- - **Description**: Number of independent consumer threads that each poll the output queue in a continuous loop. Only used by containerized deployments — never set for serverless deployments, which have no consumer threads.
860
+ - **Description**: Number of independent consumer threads that each poll the output queue in a continuous loop. Used by the in-process pipeline (response-handler worker threads) and by ECS containerized deployments; not used in serverless (Lambda) mode, which has no consumer threads.
677
861
  - **Environment Variable**: `AK_EXECUTION__QUEUES__OUTPUT__NO_OF_CONSUMERS`
678
862
 
863
+ - **In-Memory Transport Ack Wait**
864
+ - **Field**: `execution.queues.in_memory.ack_wait`
865
+ - **Default**: `300.0`
866
+ - **Description**: Seconds an unacknowledged in-memory message stays invisible before redelivery. Redelivery rescues stuck worker threads; keep this above your longest expected agent run or a slow run will be executed again.
867
+
868
+ - **In-Memory Transport Dedup Window**
869
+ - **Field**: `execution.queues.in_memory.dedup_window`
870
+ - **Default**: `300.0`
871
+ - **Description**: Seconds within which a repeated `message_deduplication_id` is dropped
872
+
873
+ - **Kafka Bootstrap Servers**
874
+ - **Field**: `execution.queues.kafka.bootstrap_servers`
875
+ - **Default**: `localhost:9092`
876
+ - **Description**: Kafka bootstrap servers (host:port, comma-separated)
877
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__KAFKA__BOOTSTRAP_SERVERS`
878
+
879
+ - **Kafka Input Topic**
880
+ - **Field**: `execution.queues.kafka.input_topic`
881
+ - **Default**: `agent-input`
882
+ - **Description**: Topic carrying chat requests
883
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__KAFKA__INPUT_TOPIC`
884
+
885
+ - **Kafka Output Topic**
886
+ - **Field**: `execution.queues.kafka.output_topic`
887
+ - **Default**: `agent-output`
888
+ - **Description**: Topic carrying agent replies
889
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__KAFKA__OUTPUT_TOPIC`
890
+
891
+ - **Kafka Consumer Group Id**
892
+ - **Field**: `execution.queues.kafka.group_id`
893
+ - **Default**: `agent-kernel`
894
+ - **Description**: Consumer group id prefix; the input and output consumers append their queue name to it
895
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__KAFKA__GROUP_ID`
896
+
897
+ - **Kafka Dead-Letter Topic Suffix**
898
+ - **Field**: `execution.queues.kafka.dlq_suffix`
899
+ - **Default**: `.dlq`
900
+ - **Description**: Suffix appended to a topic name for its dead-letter topic, where permanently failed records are routed
901
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__KAFKA__DLQ_SUFFIX`
902
+
903
+ - **Kafka Retry Backoff**
904
+ - **Field**: `execution.queues.kafka.retry_backoff`
905
+ - **Default**: `2.0`
906
+ - **Description**: Seconds to wait before an in-process retry of a failed record
907
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__KAFKA__RETRY_BACKOFF`
908
+
909
+ - **Kafka Delivery Timeout**
910
+ - **Field**: `execution.queues.kafka.delivery_timeout`
911
+ - **Default**: `30.0`
912
+ - **Description**: Seconds to wait for the broker to confirm a produced message before failing the send
913
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__KAFKA__DELIVERY_TIMEOUT`
914
+
915
+ - **Kafka Metadata Timeout**
916
+ - **Field**: `execution.queues.kafka.metadata_timeout`
917
+ - **Default**: `5.0`
918
+ - **Description**: Seconds to wait for topic metadata during the startup partition-capacity check (the check is skipped on timeout)
919
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__KAFKA__METADATA_TIMEOUT`
920
+
921
+ - **Kafka Client Config**
922
+ - **Field**: `execution.queues.kafka.client_config`
923
+ - **Default**: `{}`
924
+ - **Description**: Passthrough settings merged into the `confluent-kafka` producer and consumer configs (SASL, TLS, tuning); set via `config.yaml`, not individually exported as environment variables
925
+
926
+ - **NATS Server URL**
927
+ - **Field**: `execution.queues.nats.url`
928
+ - **Default**: `nats://localhost:4222`
929
+ - **Description**: NATS server URL (comma-separated for a cluster)
930
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__NATS__URL`
931
+
932
+ - **NATS Input Stream**
933
+ - **Field**: `execution.queues.nats.input_stream`
934
+ - **Default**: `AGENT_REQUESTS`
935
+ - **Description**: JetStream stream carrying chat requests
936
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__NATS__INPUT_STREAM`
937
+
938
+ - **NATS Input Subject Prefix**
939
+ - **Field**: `execution.queues.nats.input_subject_prefix`
940
+ - **Default**: `chat.req`
941
+ - **Description**: Subject prefix for chat requests
942
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__NATS__INPUT_SUBJECT_PREFIX`
943
+
944
+ - **NATS Output Stream**
945
+ - **Field**: `execution.queues.nats.output_stream`
946
+ - **Default**: `AGENT_REPLIES`
947
+ - **Description**: JetStream stream carrying agent replies
948
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__NATS__OUTPUT_STREAM`
949
+
950
+ - **NATS Output Subject Prefix**
951
+ - **Field**: `execution.queues.nats.output_subject_prefix`
952
+ - **Default**: `chat.out`
953
+ - **Description**: Subject prefix for agent replies
954
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__NATS__OUTPUT_SUBJECT_PREFIX`
955
+
956
+ - **NATS Partitions**
957
+ - **Field**: `execution.queues.nats.partitions`
958
+ - **Default**: `32`
959
+ - **Description**: Number of partition subjects per stream, each served by its own durable consumer. Sessions hash to a partition, so this caps how many messages can be in flight at once: keep it at or above `no_of_consumers` x replicas. Changing it re-maps sessions, so size it up front (idle partitions cost almost nothing)
960
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__NATS__PARTITIONS`
961
+
962
+ - **NATS Ack Wait**
963
+ - **Field**: `execution.queues.nats.ack_wait`
964
+ - **Default**: `300.0`
965
+ - **Description**: Seconds the server waits for an acknowledgement before redelivering. Must exceed your longest agent turn: a turn that outlives it is redelivered and executed a second time
966
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__NATS__ACK_WAIT`
967
+
968
+ - **NATS Retry Backoff**
969
+ - **Field**: `execution.queues.nats.retry_backoff`
970
+ - **Default**: `2.0`
971
+ - **Description**: Seconds to delay a redelivery after a failed message (nak delay)
972
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__NATS__RETRY_BACKOFF`
973
+
974
+ - **NATS Duplicate Window**
975
+ - **Field**: `execution.queues.nats.duplicate_window`
976
+ - **Default**: `300.0`
977
+ - **Description**: Seconds within which a repeated dedup id is dropped by the stream (SQS parity)
978
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__NATS__DUPLICATE_WINDOW`
979
+
980
+ - **NATS Max Age**
981
+ - **Field**: `execution.queues.nats.max_age`
982
+ - **Default**: `86400.0`
983
+ - **Description**: Seconds before an unconsumed message is discarded. A safety net: work-queue messages are otherwise kept forever
984
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__NATS__MAX_AGE`
985
+
986
+ - **NATS Request Timeout**
987
+ - **Field**: `execution.queues.nats.request_timeout`
988
+ - **Default**: `10.0`
989
+ - **Description**: Seconds to wait for a NATS request (publish, ack, management call) to complete
990
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__NATS__REQUEST_TIMEOUT`
991
+
992
+ - **NATS Auto Provision**
993
+ - **Field**: `execution.queues.nats.auto_provision`
994
+ - **Default**: `false`
995
+ - **Description**: Create the streams and per-partition consumers at startup if missing. Convenient for local and dev clusters; leave false in production, where the objects are managed declaratively (NACK CRs) and a missing object should fail loudly instead of being created with defaults
996
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__NATS__AUTO_PROVISION`
997
+
679
998
  - **Queue Batch Size**
680
999
  - **Field**: `execution.queues.batch_size`
681
1000
  - **Default**: `None`
@@ -688,7 +1007,8 @@ Configure queue-backed and serverless execution behavior.
688
1007
 
689
1008
  - **Type**
690
1009
  - **Field**: `execution.response_store.type`
691
- - **Description**: Response store backend selector configured in `config.yaml`; this value is not exported as an environment variable
1010
+ - **Options**: `in_memory`, `redis`, `valkey`, `dynamodb`, or a dotted path to a `ResponseStore` subclass
1011
+ - **Description**: Response store backend selector configured in `config.yaml`; this value is not exported as an environment variable. Defaults to an in-process `in_memory` store when unset and no other backend is configured.
692
1012
 
693
1013
  - **Retry Count**
694
1014
  - **Field**: `execution.response_store.retry_count`
@@ -716,7 +1036,7 @@ Configure queue-backed and serverless execution behavior.
716
1036
  - **Environment Variables**: `AK_EXECUTION__RESPONSE_STORE__DYNAMODB__TABLE_NAME`, `AK_EXECUTION__RESPONSE_STORE__DYNAMODB__TTL`
717
1037
  - **Description**: DynamoDB-backed response storage with table name and TTL
718
1038
 
719
- Use Redis, Valkey, or DynamoDB for the response store backend. The runtime accepts `BaseRunRequest` payloads directly, normalizes them internally when queueing is required, and uses `request_id` plus optional `user_id` as queue message attributes.
1039
+ Use the built-in `in_memory` response store for local development and single-process deployments (zero extra services required), or Redis, Valkey, or DynamoDB for distributed/serverless deployments. The runtime accepts `BaseRunRequest` payloads directly, normalizes them internally when queueing is required, and uses `request_id` plus optional `user_id` as queue message attributes.
720
1040
 
721
1041
  #### API Configuration
722
1042
 
@@ -796,6 +1116,52 @@ Configure the REST API server (if using the API module).
796
1116
  - The MCP server is always mounted at `/mcp` on the main API server.
797
1117
  - Full URL: `http://{api.host}:{api.port}/mcp` — use `api.port` / `AK_API__PORT` to change the port.
798
1118
 
1119
+ #### AG-UI Configuration
1120
+
1121
+ Mounting `AGUIRequestHandler` (from `agentkernel.agui`, requires the `agentkernel[agui]` extra — `pip
1122
+ install "agentkernel[agui]"`) is what enables the [AG-UI protocol](https://github.com/ag-ui-protocol/ag-ui)
1123
+ surface; the `agui` block only parameterizes it, and it never switches the surface on by itself.
1124
+ `AGUIRequestHandler` refuses to construct without an `Authoriser` or `AuthValidator` — AG-UI runs
1125
+ agents on a caller's behalf and has no anonymous mode. Only agents whose runner declares
1126
+ `supports_streaming = True` are reachable (currently OpenAI Agents SDK, LangGraph, Google ADK, and
1127
+ Pydantic AI — not CrewAI or Smolagents). See `examples/api/agui`.
1128
+
1129
+ - **Agents**
1130
+ - **Field**: `agui.agents`
1131
+ - **Default**: unset (every streaming-capable agent is reachable)
1132
+ - **Description**: Agent names reachable over AG-UI
1133
+ - **Environment Variable**: `AK_AGUI__AGENTS` (comma-separated)
1134
+
1135
+ - **Prefix**
1136
+ - **Field**: `agui.prefix`
1137
+ - **Default**: `/agui`
1138
+ - **Description**: Route prefix for the AG-UI surface
1139
+ - **Environment Variable**: `AK_AGUI__PREFIX`
1140
+
1141
+ - **Default Agent**
1142
+ - **Field**: `agui.default_agent`
1143
+ - **Default**: unset
1144
+ - **Description**: Agent served on the bare prefix route (`POST {prefix}`, in addition to `POST {prefix}/{agent_name}`); must be one of `agui.agents` when that list is set
1145
+ - **Environment Variable**: `AK_AGUI__DEFAULT_AGENT`
1146
+
1147
+ - **State Tools**
1148
+ - **Field**: `agui.state.enabled`
1149
+ - **Default**: `false`
1150
+ - **Description**: Attach `get_agui_state` / `update_agui_state`, giving agents read/write access to AG-UI's shared JSON state (a `StateSnapshot` is streamed back only when the state actually changed)
1151
+ - **Environment Variable**: `AK_AGUI__STATE__ENABLED`
1152
+ - **Field**: `agui.state.agents`
1153
+ - **Default**: unset (every agent gets the tools)
1154
+ - **Environment Variable**: `AK_AGUI__STATE__AGENTS` (comma-separated)
1155
+
1156
+ - **Client Context Tools**
1157
+ - **Field**: `agui.client_context.enabled`
1158
+ - **Default**: `false`
1159
+ - **Description**: Attach the read-only `get_forwarded_props` / `get_agui_context` tools over a run's `forwardedProps` and `context` fields; never injected into the prompt automatically
1160
+ - **Environment Variable**: `AK_AGUI__CLIENT_CONTEXT__ENABLED`
1161
+ - **Field**: `agui.client_context.agents`
1162
+ - **Default**: unset (every agent gets the tools)
1163
+ - **Environment Variable**: `AK_AGUI__CLIENT_CONTEXT__AGENTS` (comma-separated)
1164
+
799
1165
  #### Trace (Observability) Configuration
800
1166
 
801
1167
  Configure tracing and observability for monitoring agent execution.
@@ -889,38 +1255,45 @@ Configure test comparison modes for automated testing. Test configuration is sep
889
1255
 
890
1256
  - **Mode**
891
1257
  - **Field**: `mode`
892
- - **Options**: `fuzzy`, `judge`, `fallback`
1258
+ - **Options**: `score`, `llm`, `fallback`
893
1259
  - **Default**: `fallback`
894
1260
  - **Description**: Test comparison mode
895
1261
  - **Environment Variable**: `AK_TEST__MODE`
896
1262
 
897
- - **Judge Model**
898
- - **Field**: `judge.model`
1263
+ - **Evaluator**
1264
+ - **Field**: `evaluator`
1265
+ - **Default**: `deepeval`
1266
+ - **Description**: Built-in evaluator short name (`deepeval` or `opik`), or a dotted path to your own `AKEvaluator` subclass
1267
+ - **Environment Variable**: `AK_TEST__EVALUATOR`
1268
+
1269
+ - **Llm Model**
1270
+ - **Field**: `llm.model`
899
1271
  - **Default**: `gpt-4o-mini`
900
- - **Description**: LLM model for judge evaluation
901
- - **Environment Variable**: `AK_TEST__JUDGE__MODEL`
1272
+ - **Description**: LLM model for llm evaluation
1273
+ - **Environment Variable**: `AK_TEST__LLM__MODEL`
902
1274
 
903
- - **Judge Provider**
904
- - **Field**: `judge.provider`
1275
+ - **Llm Provider**
1276
+ - **Field**: `llm.provider`
905
1277
  - **Default**: `openai`
906
- - **Description**: LLM provider for judge evaluation
907
- - **Environment Variable**: `AK_TEST__JUDGE__PROVIDER`
1278
+ - **Description**: LLM provider for llm evaluation
1279
+ - **Environment Variable**: `AK_TEST__LLM__PROVIDER`
908
1280
 
909
- - **Judge Embedding Model**
910
- - **Field**: `judge.embedding_model`
1281
+ - **Llm Embedding Model**
1282
+ - **Field**: `llm.embedding_model`
911
1283
  - **Default**: `text-embedding-3-small`
912
- - **Description**: Embedding model for similarity evaluation
913
- - **Environment Variable**: `AK_TEST__JUDGE__EMBEDDING_MODEL`
1284
+ - **Description**: Embedding model, unconsumed by any built-in v1 metric
1285
+ - **Environment Variable**: `AK_TEST__LLM__EMBEDDING_MODEL`
914
1286
 
915
1287
  **Test Modes:**
916
- - `fuzzy`: Uses fuzzy string matching (RapidFuzz)
917
- - `judge`: Uses LLM-based evaluation (Ragas) for semantic similarity
918
- - `fallback`: Tries fuzzy first, falls back to judge if fuzzy fails
1288
+ - `score`: Deterministic, offline string-match scoring via the configured evaluator (built-in `deepeval`: `Scorer.quasi_exact_match_score`; built-in `opik`: `LevenshteinRatio`, requires `pip install "agentkernel[opik]"`)
1289
+ - `llm`: LLM-as-judge evaluation via the configured evaluator (built-in `deepeval` or `opik`: `GEval`) for semantic similarity
1290
+ - `fallback`: Tries score first, falls back to llm if score fails
919
1291
 
920
1292
  ```yaml
921
1293
  # test-config.yaml (separate file — not config.yaml)
922
1294
  mode: fallback
923
- judge:
1295
+ evaluator: deepeval
1296
+ llm:
924
1297
  model: gpt-4o-mini
925
1298
  provider: openai
926
1299
  embedding_model: text-embedding-3-small
@@ -1147,7 +1520,7 @@ Key fields:
1147
1520
  user's identity.
1148
1521
  - **`broker.flavor`** — `thread` (default, for CLI/REST) or `embedded` (inline/synchronous).
1149
1522
 
1150
- See the [Sandbox guide](https://kernel.yaala.ai/docs/next/advanced/sandbox) for the full
1523
+ See the [Sandbox guide](https://kernel.yaala.ai/docs/advanced/sandbox) for the full
1151
1524
  reference and the `examples/sandbox` and `examples/sandbox/identity` examples.
1152
1525
 
1153
1526
  #### Messaging Platform Integrations
@@ -1212,6 +1585,30 @@ Configure integrations with messaging platforms.
1212
1585
  - **Bot Token**, **Webhook Secret**, **API Version**
1213
1586
  - **Environment Variables**: `AK_TELEGRAM__BOT_TOKEN`, `AK_TELEGRAM__WEBHOOK_SECRET`, `AK_TELEGRAM__API_VERSION`
1214
1587
 
1588
+ ##### Microsoft Teams
1589
+
1590
+ - **Agent**
1591
+ - **Field**: `teams.agent`
1592
+ - **Default**: `""`
1593
+ - **Description**: Default agent for Microsoft Teams interactions
1594
+ - **Environment Variable**: `AK_TEAMS__AGENT`
1595
+
1596
+ - **Agent Acknowledgement**
1597
+ - **Field**: `teams.agent_acknowledgement`
1598
+ - **Default**: `""`
1599
+ - **Description**: Message sent as an acknowledgement when a Teams message is received
1600
+ - **Environment Variable**: `AK_TEAMS__AGENT_ACKNOWLEDGEMENT`
1601
+
1602
+ - **App ID**, **App Password**
1603
+ - **Description**: Azure Bot / Entra ID application (client) ID and client secret. Both are required
1604
+ - **Environment Variables**: `AK_TEAMS__APP_ID`, `AK_TEAMS__APP_PASSWORD`
1605
+
1606
+ - **Tenant ID**
1607
+ - **Field**: `teams.tenant_id`
1608
+ - **Default**: `""`
1609
+ - **Description**: Entra ID tenant that owns the bot's app registration. Required only for a single-tenant registration, whose channel tokens must be issued by its own tenant; leave empty for a multi-tenant bot. Also the fallback tenant for the app-only token used to download attachments whose URL is not pre-authenticated, when the incoming activity carries none
1610
+ - **Environment Variable**: `AK_TEAMS__TENANT_ID`
1611
+
1215
1612
  ##### Gmail
1216
1613
 
1217
1614
  - **Agent**
@@ -1250,10 +1647,11 @@ export AK_TRACE__TYPE=langfuse # or openllmetry, logfire
1250
1647
  # For Logfire:
1251
1648
  # export LOGFIRE_TOKEN=your-write-token
1252
1649
  # Test harness (loaded from the separate test-config.yaml — see Test Configuration)
1253
- export AK_TEST__MODE=fallback # Options: fuzzy, judge, fallback
1254
- export AK_TEST__JUDGE__MODEL=gpt-4o-mini
1255
- export AK_TEST__JUDGE__PROVIDER=openai
1256
- export AK_TEST__JUDGE__EMBEDDING_MODEL=text-embedding-3-small
1650
+ export AK_TEST__MODE=fallback # Options: score, llm, fallback
1651
+ export AK_TEST__EVALUATOR=deepeval # Built-in short name (deepeval or opik), or a dotted path to your own AKEvaluator subclass
1652
+ export AK_TEST__LLM__MODEL=gpt-4o-mini
1653
+ export AK_TEST__LLM__PROVIDER=openai
1654
+ export AK_TEST__LLM__EMBEDDING_MODEL=text-embedding-3-small
1257
1655
  # Guardrails configuration
1258
1656
  export AK_GUARDRAIL__INPUT__ENABLED=false
1259
1657
  export AK_GUARDRAIL__INPUT__TYPE=openai
@@ -1314,7 +1712,7 @@ session:
1314
1712
  url: redis://localhost:6379
1315
1713
  ttl: 604800
1316
1714
  prefix: "ak:sessions:"
1317
- thread: # optional — enables Conversation Thread Support (user_id becomes required on chat requests)
1715
+ thread: # optional; configures Conversation Thread Support (enabled by mounting AgentThreadRequestHandler)
1318
1716
  type: redis
1319
1717
  redis:
1320
1718
  url: redis://localhost:6379
@@ -1323,17 +1721,42 @@ thread: # optional — enables Conversation Thread Support (user_id becomes requ
1323
1721
  execution:
1324
1722
  mode: rest_sync
1325
1723
  queues:
1724
+ type: sqs # in_memory | sqs | kafka | nats, or a dotted path to a QueueTransport subclass — mandatory whenever this block is declared
1326
1725
  input:
1327
- url: https://queue.example.com/<accountno>/<queuename>
1726
+ url: https://queue.example.com/<accountno>/<queuename> # sqs transport only
1328
1727
  max_receive_count: 3
1329
- no_of_consumers: 5 # Containerized deployments only, ignored by serverless deployments
1728
+ no_of_consumers: 5 # in-process pipeline + containerized deployments, ignored by serverless deployments
1330
1729
  output:
1331
- url: https://queue.example.com/<accountno>/<queuename>
1730
+ url: https://queue.example.com/<accountno>/<queuename> # sqs transport only
1332
1731
  max_receive_count: 3
1333
- no_of_consumers: 5 # Containerized deployments only, ignored by serverless deployments
1732
+ no_of_consumers: 5 # in-process pipeline + containerized deployments, ignored by serverless deployments
1733
+ # in_memory: {ack_wait: 300.0, dedup_window: 300.0} # in_memory transport settings, unused otherwise
1734
+ # kafka: # kafka transport settings, unused otherwise
1735
+ # bootstrap_servers: localhost:9092
1736
+ # input_topic: agent-input
1737
+ # output_topic: agent-output
1738
+ # group_id: agent-kernel
1739
+ # dlq_suffix: .dlq
1740
+ # retry_backoff: 2.0
1741
+ # delivery_timeout: 30.0
1742
+ # metadata_timeout: 5.0
1743
+ # client_config: {} # passthrough confluent-kafka producer/consumer settings (SASL, TLS, tuning)
1744
+ # nats: # nats transport settings, unused otherwise
1745
+ # url: nats://localhost:4222
1746
+ # input_stream: AGENT_REQUESTS
1747
+ # input_subject_prefix: chat.req
1748
+ # output_stream: AGENT_REPLIES
1749
+ # output_subject_prefix: chat.out
1750
+ # partitions: 32
1751
+ # ack_wait: 300.0
1752
+ # retry_backoff: 2.0
1753
+ # duplicate_window: 300.0
1754
+ # max_age: 86400.0
1755
+ # request_timeout: 10.0
1756
+ # auto_provision: false # true for local/dev; leave false where NACK CRs own the objects
1334
1757
  # batch_size is set by the deployment tooling — set via AK_EXECUTION__QUEUES__BATCH_SIZE, never here
1335
1758
  response_store:
1336
- type: redis
1759
+ type: redis # in_memory | redis | valkey | dynamodb | dotted path — omit for the built-in in_memory store
1337
1760
  retry_count: 5
1338
1761
  delay: 5
1339
1762
  redis: # if this is given, then valkey/dynamodb response store parts cannot be given
@@ -1394,6 +1817,10 @@ instagram:
1394
1817
  agent: my-agent
1395
1818
  telegram:
1396
1819
  agent: my-agent
1820
+ teams:
1821
+ agent: my-agent
1822
+ app_id: "<azure-app-client-id>"
1823
+ app_password: "<azure-app-client-secret>"
1397
1824
  gmail:
1398
1825
  agent: my-agent
1399
1826
  poll_interval: 30
@@ -1466,6 +1893,11 @@ gmail:
1466
1893
  "telegram": {
1467
1894
  "agent": "my-agent"
1468
1895
  },
1896
+ "teams": {
1897
+ "agent": "my-agent",
1898
+ "app_id": "<azure-app-client-id>",
1899
+ "app_password": "<azure-app-client-secret>"
1900
+ },
1469
1901
  "gmail": {
1470
1902
  "agent": "my-agent",
1471
1903
  "poll_interval": 30,
@@ -1484,19 +1916,22 @@ gmail:
1484
1916
 
1485
1917
  ### Test Configuration (test-config.yaml)
1486
1918
 
1487
- Test harness configuration (comparison mode and judge models) is separate from the application configuration. It is not part of `config.yaml` — it lives in its own `test-config.yaml` file, resolved from the current working directory, and is only loaded when the testing utilities (`agentkernel.test`) are used. A legacy `test:` section in `config.yaml` is ignored. See [Test Configuration](#test-configuration) under Configuration Options for the full list of fields and defaults.
1919
+ Test harness configuration (comparison mode, evaluator backend, llm models) is separate from the application configuration. It is not part of `config.yaml` — it lives in its own `test-config.yaml` file, resolved from the current working directory, and is only loaded when the testing utilities (`agentkernel.test`) are used. A legacy `test:` section in `config.yaml` is ignored. See [Test Configuration](#test-configuration) under Configuration Options for the full list of fields and defaults.
1920
+
1921
+ The `evaluator` field accepts two built-in short names — `deepeval` (default, `pip install "agentkernel[test]"`) or `opik` (`pip install "agentkernel[opik]"`, [Opik](https://www.comet.com/docs/opik/) by Comet, runs entirely locally with `OPIK_TRACK_DISABLE` set so no Opik Cloud account or API key is needed) — or a dotted path to your own `AKEvaluator` subclass.
1488
1922
 
1489
1923
  **test-config.yaml:**
1490
1924
 
1491
1925
  ```yaml
1492
1926
  mode: fallback
1493
- judge:
1927
+ evaluator: deepeval
1928
+ llm:
1494
1929
  model: gpt-4o-mini
1495
1930
  provider: openai
1496
1931
  embedding_model: text-embedding-3-small
1497
1932
  ```
1498
1933
 
1499
- Note that the file is un-nested — there is no top-level `test:` key. If the file is missing, defaults apply silently (fuzzy and fallback tests need no configuration file at all).
1934
+ Note that the file is un-nested — there is no top-level `test:` key. If the file is missing, defaults apply silently (score and fallback tests need no configuration file at all).
1500
1935
 
1501
1936
  **Override the test config file path:**
1502
1937
 
@@ -1507,14 +1942,13 @@ export AK_TEST_CONFIG_PATH_OVERRIDE=/path/to/test-config.yaml
1507
1942
  **Environment variables** use the `AK_TEST__` prefix and override `test-config.yaml` values:
1508
1943
 
1509
1944
  ```bash
1510
- export AK_TEST__MODE=fallback # Options: fuzzy, judge, fallback
1511
- export AK_TEST__JUDGE__MODEL=gpt-4o-mini
1512
- export AK_TEST__JUDGE__PROVIDER=openai
1513
- export AK_TEST__JUDGE__EMBEDDING_MODEL=text-embedding-3-small
1945
+ export AK_TEST__MODE=fallback # Options: score, llm, fallback
1946
+ export AK_TEST__EVALUATOR=deepeval
1947
+ export AK_TEST__LLM__MODEL=gpt-4o-mini
1948
+ export AK_TEST__LLM__PROVIDER=openai
1949
+ export AK_TEST__LLM__EMBEDDING_MODEL=text-embedding-3-small
1514
1950
  ```
1515
1951
 
1516
- > **Migration note:** Earlier versions read test configuration from a `test:` section in `config.yaml`. That section is now ignored — move its contents (un-nested, without the `test:` key) to a sibling `test-config.yaml`. The `AK_TEST__*` environment variables are unchanged, so CI pipelines that use them need no updates.
1517
-
1518
1952
  ## Extensibility
1519
1953
 
1520
1954
  ### Custom Framework Adapters