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