agentkernel 0.9.5__tar.gz → 0.10.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 (441) hide show
  1. agentkernel-0.9.5/README.md → agentkernel-0.10.0/PKG-INFO +352 -56
  2. agentkernel-0.9.5/PKG-INFO → agentkernel-0.10.0/README.md +195 -203
  3. agentkernel-0.10.0/pyproject.toml +277 -0
  4. agentkernel-0.10.0/src/agentkernel/a2ui/__init__.py +10 -0
  5. agentkernel-0.10.0/src/agentkernel/a2ui/hook.py +176 -0
  6. agentkernel-0.10.0/src/agentkernel/api/a2a/a2a.py +190 -0
  7. agentkernel-0.10.0/src/agentkernel/api/a2a/handler.py +96 -0
  8. agentkernel-0.10.0/src/agentkernel/api/handler.py +184 -0
  9. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/api/http.py +58 -38
  10. agentkernel-0.10.0/src/agentkernel/api/mcp/akmcp.py +156 -0
  11. agentkernel-0.10.0/src/agentkernel/api/mcp/auth.py +123 -0
  12. agentkernel-0.10.0/src/agentkernel/claude.py +8 -0
  13. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/cli/cli.py +49 -3
  14. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/__init__.py +9 -1
  15. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/base.py +96 -14
  16. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/builder.py +65 -12
  17. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/chat_service.py +112 -62
  18. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/config.py +651 -138
  19. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/event.py +67 -22
  20. agentkernel-0.10.0/src/agentkernel/core/model.py +811 -0
  21. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/module.py +2 -2
  22. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/multimodal/hooks.py +2 -3
  23. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/multimodal/source.py +2 -3
  24. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/multimodal/storage/base.py +3 -3
  25. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/multimodal/storage/dynamodb.py +1 -2
  26. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/multimodal/storage/in_memory.py +2 -2
  27. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/multimodal/storage/redis.py +1 -2
  28. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/multimodal/storage/session_cache.py +1 -2
  29. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/multimodal/storage/storage_manager.py +6 -7
  30. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/multimodal/tools.py +1 -1
  31. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/paused_run.py +34 -13
  32. agentkernel-0.10.0/src/agentkernel/core/realtime/__init__.py +4 -0
  33. agentkernel-0.10.0/src/agentkernel/core/realtime/runner.py +97 -0
  34. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/runtime.py +57 -22
  35. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/service.py +9 -11
  36. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/session/base.py +4 -5
  37. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/session/dynamodb.py +3 -4
  38. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/session/firestore.py +1 -2
  39. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/session/in_memory.py +6 -7
  40. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/session/redis_like.py +6 -6
  41. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/session/serde.py +2 -2
  42. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/tool.py +43 -3
  43. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/util/async_bridge.py +3 -2
  44. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/util/config_yaml_util.py +6 -6
  45. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/util/driver/base.py +4 -3
  46. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/util/driver/cosmosdb.py +1 -2
  47. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/util/driver/dynamodb.py +63 -9
  48. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/util/driver/firestore.py +3 -4
  49. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/util/driver/redis_like.py +58 -6
  50. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/util/driver/s3.py +3 -3
  51. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/util/factory.py +3 -2
  52. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/util/key_value_cache.py +66 -12
  53. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/util/pagination.py +4 -5
  54. agentkernel-0.10.0/src/agentkernel/core/util/payload.py +124 -0
  55. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/util/picklable.py +2 -1
  56. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/containerized/akagentrunner.py +13 -13
  57. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/containerized/akoutputconsumer.py +16 -26
  58. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/containerized/core/api/websocket_api.py +91 -86
  59. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/containerized/core/sqs_consumer.py +6 -6
  60. agentkernel-0.10.0/src/agentkernel/deployment/aws/containerized/ecs_io_handler.py +90 -0
  61. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/core/raw_queue_consumer.py +5 -5
  62. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/core/sqs_handler.py +28 -27
  63. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/core/websocket_service.py +61 -15
  64. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/serverless/akagentrunner.py +15 -18
  65. agentkernel-0.10.0/src/agentkernel/deployment/aws/serverless/akauthorizer.py +176 -0
  66. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/serverless/aklambda.py +25 -9
  67. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/serverless/akresponsehandler.py +20 -19
  68. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/serverless/akwsconnectionhandler.py +8 -16
  69. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/serverless/core/event_translator.py +8 -7
  70. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/serverless/core/router/common.py +5 -4
  71. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/serverless/core/router/rest_lambda.py +68 -47
  72. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/serverless/core/router/ws_lambda.py +101 -75
  73. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/serverless/core/sqs_consumer.py +5 -5
  74. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/serverless/core/webhook_host.py +27 -9
  75. agentkernel-0.10.0/src/agentkernel/deployment/azure/akfunction.py +88 -0
  76. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/gcp/__init__.py +0 -1
  77. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/gcp/akcloudrun.py +1 -1
  78. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/framework/adk/adk.py +210 -248
  79. agentkernel-0.10.0/src/agentkernel/framework/claude/__init__.py +16 -0
  80. agentkernel-0.10.0/src/agentkernel/framework/claude/claude.py +1206 -0
  81. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/framework/crewai/crewai.py +3 -3
  82. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/framework/langgraph/langgraph.py +29 -14
  83. agentkernel-0.10.0/src/agentkernel/framework/maf/__init__.py +16 -0
  84. agentkernel-0.10.0/src/agentkernel/framework/maf/maf.py +872 -0
  85. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/framework/openai/openai.py +184 -201
  86. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/framework/pydanticai/pydanticai.py +4 -4
  87. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/framework/smolagents/smolagents.py +3 -3
  88. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/guardrail/walledai.py +3 -2
  89. agentkernel-0.10.0/src/agentkernel/identity/__init__.py +58 -0
  90. agentkernel-0.10.0/src/agentkernel/identity/errors.py +14 -0
  91. agentkernel-0.10.0/src/agentkernel/identity/provider/__init__.py +1 -0
  92. agentkernel-0.10.0/src/agentkernel/identity/provider/base.py +81 -0
  93. agentkernel-0.10.0/src/agentkernel/identity/provider/cognito.py +86 -0
  94. agentkernel-0.10.0/src/agentkernel/identity/provider/entra.py +90 -0
  95. agentkernel-0.10.0/src/agentkernel/identity/provider/factory.py +95 -0
  96. agentkernel-0.10.0/src/agentkernel/identity/provider/firebase.py +61 -0
  97. agentkernel-0.10.0/src/agentkernel/identity/provider/oidc.py +332 -0
  98. agentkernel-0.10.0/src/agentkernel/identity/provider/request.py +132 -0
  99. agentkernel-0.10.0/src/agentkernel/identity/provider/roles.py +122 -0
  100. agentkernel-0.10.0/src/agentkernel/identity/provider/static.py +83 -0
  101. agentkernel-0.10.0/src/agentkernel/identity/provider/testing.py +122 -0
  102. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/adapter/base.py +42 -23
  103. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/adapter/factory.py +1 -2
  104. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/adapter/meta.py +5 -6
  105. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/adapter/poller.py +1 -2
  106. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/adapter/producer.py +30 -12
  107. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/adapter/registry.py +3 -4
  108. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/adapter/route_matcher.py +6 -5
  109. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/adapter/routes.py +2 -2
  110. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/adapter/testing.py +10 -3
  111. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/adapter/webhook.py +16 -2
  112. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/agui/__init__.py +1 -0
  113. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/agui/handler.py +45 -36
  114. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/agui/mapping.py +3 -0
  115. agentkernel-0.10.0/src/agentkernel/integration/agui/queue_handler.py +226 -0
  116. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/agui/run_input.py +114 -18
  117. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/agui/state.py +4 -5
  118. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/gmail/README.md +1 -1
  119. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/gmail/adapter.py +47 -18
  120. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/instagram/adapter.py +38 -18
  121. agentkernel-0.10.0/src/agentkernel/integration/livekit/adapter.py +653 -0
  122. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/messenger/README.md +2 -2
  123. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/messenger/adapter.py +38 -18
  124. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/slack/adapter.py +57 -21
  125. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/teams/adapter.py +34 -27
  126. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/telegram/README.md +1 -1
  127. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/telegram/adapter.py +34 -23
  128. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/thread/manager.py +27 -20
  129. agentkernel-0.10.0/src/agentkernel/integration/thread/model.py +138 -0
  130. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/thread/naming.py +1 -1
  131. agentkernel-0.10.0/src/agentkernel/integration/thread/recorder.py +139 -0
  132. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/thread/store/base.py +5 -6
  133. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/thread/store/cosmosdb.py +5 -6
  134. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/thread/store/dynamodb.py +7 -8
  135. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/thread/store/firestore.py +5 -6
  136. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/thread/store/in_memory.py +7 -7
  137. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/thread/store/redis_like.py +5 -6
  138. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/thread/thread_chat.py +100 -56
  139. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/whatsapp/README.md +1 -1
  140. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/whatsapp/adapter.py +40 -21
  141. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/knowledgebase/base.py +7 -6
  142. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/knowledgebase/chroma.py +4 -3
  143. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/knowledgebase/knowledgebuilder.py +6 -6
  144. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/knowledgebase/neo4j.py +5 -3
  145. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/knowledgebase/okf/capability.py +8 -7
  146. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/knowledgebase/okf/manager.py +19 -18
  147. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/knowledgebase/okf/parser.py +2 -2
  148. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/knowledgebase/okf/prompts.py +6 -5
  149. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/knowledgebase/okf/roles.py +10 -9
  150. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/knowledgebase/okf/tools.py +3 -3
  151. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/knowledgebase/starburst.py +10 -12
  152. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/knowledgebase/store/local.py +1 -2
  153. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/knowledgebase/store/s3.py +4 -4
  154. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/knowledgebase/testing.py +12 -11
  155. agentkernel-0.9.5/src/agentkernel/trace/__init__.py → agentkernel-0.10.0/src/agentkernel/maf.py +1 -1
  156. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/__init__.py +3 -1
  157. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/agent_runner.py +213 -39
  158. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/consumer.py +4 -4
  159. agentkernel-0.10.0/src/agentkernel/pipeline/envelope.py +67 -0
  160. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/integration_delivery.py +7 -6
  161. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/io_handler.py +76 -39
  162. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/producer.py +6 -6
  163. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/realtime_pool.py +169 -186
  164. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/request_handler.py +207 -47
  165. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/response_handler.py +67 -40
  166. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/response_store/base.py +39 -9
  167. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/response_store/dynamodb.py +7 -3
  168. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/response_store/factory.py +4 -4
  169. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/response_store/in_memory.py +19 -19
  170. agentkernel-0.10.0/src/agentkernel/pipeline/response_store/redis.py +10 -0
  171. agentkernel-0.10.0/src/agentkernel/pipeline/response_store/redis_like.py +195 -0
  172. agentkernel-0.10.0/src/agentkernel/pipeline/response_store/testing.py +133 -0
  173. agentkernel-0.10.0/src/agentkernel/pipeline/response_store/valkey.py +10 -0
  174. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/thread_runner.py +3 -2
  175. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/transport/base.py +6 -6
  176. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/transport/bookkeeping.py +3 -4
  177. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/transport/in_memory.py +11 -11
  178. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/transport/kafka.py +19 -19
  179. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/transport/nats.py +14 -14
  180. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/transport/sqs.py +35 -20
  181. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/ws/base.py +10 -10
  182. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/ws/endpoint.py +9 -5
  183. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/ws/gateway.py +20 -23
  184. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/ws/handler.py +66 -41
  185. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/ws/push.py +29 -10
  186. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/ws/registry.py +7 -7
  187. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/__init__.py +4 -0
  188. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/base.py +22 -3
  189. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/broker/base.py +8 -8
  190. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/broker/embedded.py +3 -5
  191. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/broker/queue.py +11 -9
  192. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/broker/queue_worker.py +42 -5
  193. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/broker/thread.py +11 -8
  194. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/broker/wire.py +2 -2
  195. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/broker/worker.py +124 -11
  196. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/errors.py +29 -5
  197. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/factory.py +2 -2
  198. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/hooks.py +2 -2
  199. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/manager.py +146 -31
  200. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/model.py +45 -2
  201. agentkernel-0.10.0/src/agentkernel/sandbox/packages.py +222 -0
  202. agentkernel-0.10.0/src/agentkernel/sandbox/permission.py +82 -0
  203. agentkernel-0.10.0/src/agentkernel/sandbox/principal.py +52 -0
  204. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/providers/daytona.py +70 -27
  205. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/providers/docker.py +62 -26
  206. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/providers/e2b.py +69 -30
  207. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/providers/ec2_ssm.py +28 -12
  208. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/providers/kubernetes.py +185 -33
  209. agentkernel-0.10.0/src/agentkernel/sandbox/providers/process.py +66 -0
  210. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/testing.py +6 -2
  211. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/tools.py +113 -14
  212. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/schedule/handler.py +24 -25
  213. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/schedule/manager.py +62 -36
  214. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/schedule/model.py +14 -9
  215. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/schedule/provider/base.py +3 -3
  216. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/schedule/provider/eventbridge.py +7 -7
  217. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/schedule/provider/local.py +7 -7
  218. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/schedule/store/base.py +3 -4
  219. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/schedule/store/dynamodb.py +4 -5
  220. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/schedule/store/in_memory.py +4 -4
  221. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/schedule/store/redis_like.py +4 -5
  222. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/schedule/timing.py +2 -3
  223. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/schedule/tools.py +27 -19
  224. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/secret/__init__.py +2 -0
  225. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/secret/base.py +10 -2
  226. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/secret/cache.py +1 -2
  227. agentkernel-0.10.0/src/agentkernel/secret/errors.py +20 -0
  228. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/secret/factory.py +5 -1
  229. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/secret/manager.py +22 -3
  230. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/secret/providers/aws_ssm.py +6 -3
  231. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/secret/providers/env.py +5 -2
  232. agentkernel-0.10.0/src/agentkernel/secret/providers/kubernetes.py +116 -0
  233. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/secret/testing.py +6 -0
  234. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/skills/ak-add-capabilities/SKILL.md +437 -105
  235. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/skills/ak-add-capabilities/evals/evals.json +84 -4
  236. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/skills/ak-add-integration/SKILL.md +22 -12
  237. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/skills/ak-add-integration/evals/evals.json +1 -1
  238. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/skills/ak-build/SKILL.md +88 -3
  239. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/skills/ak-build/evals/evals.json +54 -2
  240. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/skills/ak-cloud-deploy/SKILL.md +254 -109
  241. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/skills/ak-cloud-deploy/evals/evals.json +17 -6
  242. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/skills/ak-init/SKILL.md +60 -2
  243. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/skills/ak-init/evals/evals.json +35 -2
  244. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/skills/ak-test/SKILL.md +14 -12
  245. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/skills/ak-test/evals/evals.json +2 -2
  246. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/test/__init__.py +8 -0
  247. agentkernel-0.10.0/src/agentkernel/trace/__init__.py +10 -0
  248. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/base.py +25 -0
  249. agentkernel-0.10.0/src/agentkernel/trace/cloudwatch/claude.py +40 -0
  250. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/cloudwatch/cloudwatch.py +36 -5
  251. agentkernel-0.10.0/src/agentkernel/trace/cloudwatch/fetch.py +185 -0
  252. agentkernel-0.10.0/src/agentkernel/trace/cloudwatch/maf.py +33 -0
  253. agentkernel-0.10.0/src/agentkernel/trace/fetch.py +447 -0
  254. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/langfuse/adk.py +8 -4
  255. agentkernel-0.10.0/src/agentkernel/trace/langfuse/claude.py +44 -0
  256. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/langfuse/crewai.py +8 -4
  257. agentkernel-0.10.0/src/agentkernel/trace/langfuse/fetch.py +102 -0
  258. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/langfuse/langfuse.py +42 -0
  259. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/langfuse/langgraph.py +8 -4
  260. agentkernel-0.10.0/src/agentkernel/trace/langfuse/maf.py +42 -0
  261. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/langfuse/openai.py +8 -4
  262. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/langfuse/pydanticai.py +8 -4
  263. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/langfuse/smolagents.py +38 -34
  264. agentkernel-0.10.0/src/agentkernel/trace/logfire/claude.py +37 -0
  265. agentkernel-0.10.0/src/agentkernel/trace/logfire/fetch.py +122 -0
  266. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/logfire/logfire.py +42 -1
  267. agentkernel-0.10.0/src/agentkernel/trace/logfire/maf.py +32 -0
  268. agentkernel-0.10.0/src/agentkernel/trace/openllmetry/claude.py +55 -0
  269. agentkernel-0.10.0/src/agentkernel/trace/openllmetry/fetch.py +122 -0
  270. agentkernel-0.10.0/src/agentkernel/trace/openllmetry/maf.py +30 -0
  271. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/openllmetry/openllmetry.py +34 -5
  272. agentkernel-0.10.0/src/agentkernel/trace/testing.py +164 -0
  273. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/trace.py +57 -0
  274. agentkernel-0.9.5/pyproject.toml +0 -255
  275. agentkernel-0.9.5/src/agentkernel/api/a2a/a2a.py +0 -109
  276. agentkernel-0.9.5/src/agentkernel/api/a2a/handler.py +0 -76
  277. agentkernel-0.9.5/src/agentkernel/api/handler.py +0 -155
  278. agentkernel-0.9.5/src/agentkernel/api/mcp/akmcp.py +0 -76
  279. agentkernel-0.9.5/src/agentkernel/auth/__init__.py +0 -15
  280. agentkernel-0.9.5/src/agentkernel/auth/authoriser.py +0 -56
  281. agentkernel-0.9.5/src/agentkernel/auth/handler.py +0 -71
  282. agentkernel-0.9.5/src/agentkernel/auth.py +0 -1
  283. agentkernel-0.9.5/src/agentkernel/core/model.py +0 -497
  284. agentkernel-0.9.5/src/agentkernel/core/realtime/__init__.py +0 -8
  285. agentkernel-0.9.5/src/agentkernel/core/realtime/runner.py +0 -119
  286. agentkernel-0.9.5/src/agentkernel/deployment/aws/containerized/ecs_io_handler.py +0 -86
  287. agentkernel-0.9.5/src/agentkernel/deployment/aws/serverless/akauthorizer.py +0 -138
  288. agentkernel-0.9.5/src/agentkernel/deployment/azure/akfunction.py +0 -82
  289. agentkernel-0.9.5/src/agentkernel/deployment/gcp/akauthorizer.py +0 -29
  290. agentkernel-0.9.5/src/agentkernel/integration/livekit/adapter.py +0 -322
  291. agentkernel-0.9.5/src/agentkernel/integration/thread/model.py +0 -69
  292. agentkernel-0.9.5/src/agentkernel/integration/thread/recorder.py +0 -66
  293. agentkernel-0.9.5/src/agentkernel/pipeline/envelope.py +0 -44
  294. agentkernel-0.9.5/src/agentkernel/pipeline/response_store/redis.py +0 -54
  295. agentkernel-0.9.5/src/agentkernel/pipeline/response_store/valkey.py +0 -54
  296. agentkernel-0.9.5/src/agentkernel/sandbox/principal.py +0 -39
  297. agentkernel-0.9.5/src/agentkernel/secret/errors.py +0 -13
  298. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/__init__.py +0 -0
  299. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/adk.py +0 -0
  300. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/agui.py +0 -0
  301. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/api/__init__.py +0 -0
  302. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/api/a2a/__init__.py +0 -0
  303. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/api/mcp/__init__.py +0 -0
  304. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/aws.py +0 -0
  305. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/azure.py +0 -0
  306. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/cli/__init__.py +0 -0
  307. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/cli/ak.py +0 -0
  308. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/hooks.py +0 -0
  309. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/logger.py +0 -0
  310. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/multimodal/__init__.py +0 -0
  311. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/multimodal/factory.py +0 -0
  312. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/multimodal/storage/__init__.py +0 -0
  313. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/realtime/pcm.py +0 -0
  314. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/session/__init__.py +0 -0
  315. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/session/cosmosdb.py +0 -0
  316. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/session/redis.py +0 -0
  317. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/session/valkey.py +0 -0
  318. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/util/driver/__init__.py +0 -0
  319. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/util/driver/redis.py +0 -0
  320. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/util/driver/valkey.py +0 -0
  321. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/core/util/error_util.py +0 -0
  322. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/crewai.py +0 -0
  323. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/__init__.py +0 -0
  324. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/__init__.py +0 -0
  325. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/containerized/__init__.py +0 -0
  326. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/containerized/core/__init__.py +0 -0
  327. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/containerized/core/api/__init__.py +0 -0
  328. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/containerized/core/api/rest_api.py +0 -0
  329. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/core/__init__.py +0 -0
  330. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/core/response_store/__init__.py +0 -0
  331. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/core/response_store/dynamodb.py +0 -0
  332. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/core/response_store/factory.py +0 -0
  333. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/core/response_store/redis.py +0 -0
  334. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/core/response_store/valkey.py +0 -0
  335. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/serverless/__init__.py +0 -0
  336. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/serverless/core/__init__.py +0 -0
  337. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/aws/serverless/core/router/__init__.py +0 -0
  338. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/azure/__init__.py +0 -0
  339. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/common/__init__.py +0 -0
  340. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/common/response_store.py +0 -0
  341. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/common/rest_handler.py +0 -0
  342. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/common/thread_runner.py +0 -0
  343. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/deployment/common/websocket_service.py +0 -0
  344. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/framework/__init__.py +0 -0
  345. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/framework/adk/__init__.py +0 -0
  346. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/framework/crewai/__init__.py +0 -0
  347. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/framework/langgraph/__init__.py +0 -0
  348. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/framework/openai/__init__.py +0 -0
  349. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/framework/pydanticai/__init__.py +0 -0
  350. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/framework/smolagents/__init__.py +0 -0
  351. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/gcp.py +0 -0
  352. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/gmail.py +0 -0
  353. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/guardrail/__init__.py +0 -0
  354. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/guardrail/bedrock.py +0 -0
  355. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/guardrail/guardrail.py +0 -0
  356. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/guardrail/openai.py +0 -0
  357. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/instagram.py +0 -0
  358. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/__init__.py +0 -0
  359. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/adapter/__init__.py +0 -0
  360. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/adapter/gateway.py +0 -0
  361. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/gmail/__init__.py +0 -0
  362. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/instagram/README.md +0 -0
  363. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/instagram/__init__.py +0 -0
  364. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/livekit/__init__.py +0 -0
  365. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/messenger/__init__.py +0 -0
  366. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/slack/README.md +0 -0
  367. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/slack/__init__.py +0 -0
  368. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/teams/README.md +0 -0
  369. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/teams/__init__.py +0 -0
  370. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/telegram/__init__.py +0 -0
  371. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/thread/__init__.py +0 -0
  372. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/thread/store/__init__.py +0 -0
  373. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/thread/store/redis.py +0 -0
  374. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/thread/store/valkey.py +0 -0
  375. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/integration/whatsapp/__init__.py +0 -0
  376. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/knowledgebase/__init__.py +0 -0
  377. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/knowledgebase/document.py +0 -0
  378. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/knowledgebase/errors.py +0 -0
  379. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/knowledgebase/model.py +0 -0
  380. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/knowledgebase/okf/__init__.py +0 -0
  381. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/knowledgebase/okf/model.py +0 -0
  382. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/knowledgebase/store/__init__.py +0 -0
  383. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/knowledgebase/store/base.py +0 -0
  384. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/langgraph.py +0 -0
  385. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/mcp.py +0 -0
  386. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/messenger.py +0 -0
  387. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/openai.py +0 -0
  388. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/response_store/__init__.py +0 -0
  389. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/testing.py +0 -0
  390. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/transport/__init__.py +0 -0
  391. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pipeline/ws/__init__.py +0 -0
  392. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/pydanticai.py +0 -0
  393. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/broker/__init__.py +0 -0
  394. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/providers/__init__.py +0 -0
  395. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/sandbox/providers/local_subprocess.py +0 -0
  396. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/schedule/__init__.py +0 -0
  397. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/schedule/errors.py +0 -0
  398. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/schedule/provider/__init__.py +0 -0
  399. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/schedule/store/__init__.py +0 -0
  400. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/schedule/store/redis.py +0 -0
  401. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/schedule/store/valkey.py +0 -0
  402. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/secret/providers/__init__.py +0 -0
  403. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/skills/__init__.py +0 -0
  404. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/skills/skills.py +0 -0
  405. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/slack.py +0 -0
  406. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/smolagents.py +0 -0
  407. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/teams.py +0 -0
  408. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/telegram.py +0 -0
  409. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/test/config.py +0 -0
  410. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/test/core/__init__.py +0 -0
  411. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/test/core/evaluator/__init__.py +0 -0
  412. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/test/core/evaluator/base.py +0 -0
  413. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/test/core/evaluator/deepeval.py +0 -0
  414. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/test/core/evaluator/jev.py +0 -0
  415. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/test/core/evaluator/opik.py +0 -0
  416. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/test/test.py +0 -0
  417. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/thread.py +0 -0
  418. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/cloudwatch/__init__.py +0 -0
  419. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/cloudwatch/adk.py +0 -0
  420. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/cloudwatch/crewai.py +0 -0
  421. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/cloudwatch/langgraph.py +0 -0
  422. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/cloudwatch/openai.py +0 -0
  423. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/cloudwatch/pydanticai.py +0 -0
  424. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/cloudwatch/sigv4.py +0 -0
  425. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/cloudwatch/smolagents.py +0 -0
  426. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/langfuse/__init__.py +0 -0
  427. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/logfire/__init__.py +0 -0
  428. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/logfire/adk.py +0 -0
  429. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/logfire/crewai.py +0 -0
  430. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/logfire/langgraph.py +0 -0
  431. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/logfire/openai.py +0 -0
  432. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/logfire/pydanticai.py +0 -0
  433. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/logfire/smolagents.py +0 -0
  434. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/openllmetry/__init__.py +0 -0
  435. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/openllmetry/adk.py +0 -0
  436. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/openllmetry/crewai.py +0 -0
  437. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/openllmetry/langgraph.py +0 -0
  438. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/openllmetry/openai.py +0 -0
  439. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/openllmetry/pydanticai.py +0 -0
  440. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/trace/openllmetry/smolagents.py +0 -0
  441. {agentkernel-0.9.5 → agentkernel-0.10.0}/src/agentkernel/whatsapp.py +0 -0
@@ -1,3 +1,160 @@
1
+ Metadata-Version: 2.3
2
+ Name: agentkernel
3
+ Version: 0.10.0
4
+ Summary: Agent Kernel - Unified AI Agents Runtime
5
+ Author: Yaala Labs
6
+ Author-email: Yaala Labs <agentkernel@yaalalabs.com>
7
+ License: Apache-2.0
8
+ Requires-Dist: pydantic>=2.11.7,<3.0.0
9
+ Requires-Dist: pydantic-settings>=2.10.1,<3.0.0
10
+ Requires-Dist: pyyaml>=6.0.2,<7.0.0
11
+ Requires-Dist: singleton-type>=0.0.5,<0.1.0
12
+ Requires-Dist: a2a-sdk[http-server]==1.2.3 ; extra == 'a2a'
13
+ Requires-Dist: fastapi>=0.118.0,<0.142.0 ; extra == 'a2a'
14
+ Requires-Dist: uvicorn>=0.37.0,<0.53.0 ; extra == 'a2a'
15
+ Requires-Dist: google-adk>=2.7.0,<3.0.0 ; extra == 'adk'
16
+ Requires-Dist: litellm>=1.95.0,<1.96 ; extra == 'adk'
17
+ Requires-Dist: openinference-instrumentation-google-adk>=0.1.6,<0.2.0 ; extra == 'adk'
18
+ Requires-Dist: ag-ui-protocol>=0.1.16,<0.2.0 ; extra == 'agui'
19
+ Requires-Dist: fastapi>=0.118.0,<0.142.0 ; extra == 'api'
20
+ Requires-Dist: uvicorn>=0.37.0,<0.53.0 ; extra == 'api'
21
+ Requires-Dist: gunicorn>=23.0.0,<27.0.0 ; extra == 'api'
22
+ Requires-Dist: httpx>=0.27.0,<0.29.0 ; extra == 'api'
23
+ Requires-Dist: pyjwt>=2.15.0,<3.0.0 ; extra == 'auth'
24
+ Requires-Dist: cryptography>=42.0,<51.0.0 ; extra == 'auth'
25
+ Requires-Dist: httpx>=0.27.0,<0.29.0 ; extra == 'auth'
26
+ Requires-Dist: boto3>=1.41.4,<2.0.0 ; extra == 'aws'
27
+ Requires-Dist: azure-functions>=1.24.0,<3.0.0 ; extra == 'azure'
28
+ Requires-Dist: azure-data-tables>=12.4.0,<13.0.0 ; extra == 'azure'
29
+ Requires-Dist: azure-core>=1.26.0,<2.0.0 ; extra == 'azure'
30
+ Requires-Dist: chromadb>=0.4.0,<2.0.0 ; extra == 'chromadb'
31
+ Requires-Dist: claude-agent-sdk>=0.2.165,<0.3 ; extra == 'claude'
32
+ Requires-Dist: openinference-instrumentation-claude-agent-sdk>=0.1.20,<0.2.0 ; extra == 'claude'
33
+ Requires-Dist: opentelemetry-sdk>=1.30.0,<2.0.0 ; extra == 'cloudwatch'
34
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.30.0,<2.0.0 ; extra == 'cloudwatch'
35
+ Requires-Dist: botocore>=1.41.4,<2.0.0 ; extra == 'cloudwatch'
36
+ Requires-Dist: requests>=2.32.0,<3.0.0 ; extra == 'cloudwatch'
37
+ Requires-Dist: crewai>=1.15.0,<2.0.0 ; extra == 'crewai'
38
+ Requires-Dist: openinference-instrumentation-crewai>=0.1.16,<2.0.0 ; extra == 'crewai'
39
+ Requires-Dist: openinference-instrumentation-litellm>=0.1.28,<0.2.0 ; extra == 'crewai'
40
+ Requires-Dist: croniter>=3.0,<7.0.0 ; extra == 'cron'
41
+ Requires-Dist: daytona>=0.198.0,<0.199 ; extra == 'daytona'
42
+ Requires-Dist: e2b-code-interpreter>=2.8.0,<3.0.0 ; extra == 'e2b'
43
+ Requires-Dist: google-cloud-firestore>=2.19.0,<3.0.0 ; extra == 'gcp'
44
+ Requires-Dist: google-auth>=2.0.0,<3.0.0 ; extra == 'gmail'
45
+ Requires-Dist: google-auth-oauthlib>=1.0.0,<2.0.0 ; extra == 'gmail'
46
+ Requires-Dist: google-auth-httplib2>=0.2.0,<0.5.0 ; extra == 'gmail'
47
+ Requires-Dist: google-api-python-client>=2.0.0,<3.0.0 ; extra == 'gmail'
48
+ Requires-Dist: httpx>=0.27.0,<0.29.0 ; extra == 'instagram'
49
+ Requires-Dist: fastapi>=0.118.0,<0.142.0 ; extra == 'instagram'
50
+ Requires-Dist: typesafe-sdk>=0.7.2,<0.8 ; extra == 'jev'
51
+ Requires-Dist: confluent-kafka>=2.15.0,<3.0.0 ; extra == 'kafka'
52
+ Requires-Dist: kubernetes>=29.0.0,<37.0.0 ; extra == 'kubernetes'
53
+ Requires-Dist: langfuse>=4.2.0,<5.0.0 ; extra == 'langfuse'
54
+ Requires-Dist: nest-asyncio>=1.6.0,<2.0.0 ; extra == 'langfuse'
55
+ Requires-Dist: langgraph>=1.2.14,<1.3 ; extra == 'langgraph'
56
+ Requires-Dist: langgraph-prebuilt~=1.1.0 ; extra == 'langgraph'
57
+ Requires-Dist: langchain~=1.3.10 ; extra == 'langgraph'
58
+ Requires-Dist: langchain-community~=0.4.1 ; extra == 'langgraph'
59
+ Requires-Dist: litellm>=1.95.0,<1.96 ; extra == 'langgraph'
60
+ Requires-Dist: livekit-api>=0.4.0,<2.0.0 ; extra == 'livekit'
61
+ Requires-Dist: livekit>=0.18.0,<2.0.0 ; extra == 'livekit'
62
+ Requires-Dist: logfire>=4.31.0,<5.0.0 ; extra == 'logfire'
63
+ Requires-Dist: httpx>=0.27.0,<0.29.0 ; extra == 'logfire'
64
+ Requires-Dist: agent-framework-core>=1.20.0,<2 ; extra == 'maf'
65
+ Requires-Dist: fastmcp>=3.4.10,<4.0.0 ; extra == 'mcp'
66
+ Requires-Dist: httpx>=0.27.0,<0.29.0 ; extra == 'messenger'
67
+ Requires-Dist: fastapi>=0.118.0,<0.142.0 ; extra == 'messenger'
68
+ Requires-Dist: litellm>=1.95.0,<2.0.0 ; extra == 'multimodal'
69
+ Requires-Dist: python-multipart>=0.0.12,<0.1.0 ; extra == 'multimodal'
70
+ Requires-Dist: nats-py>=2.15.0,<3.0.0 ; extra == 'nats'
71
+ Requires-Dist: neo4j>=5.0.0,<7.0.0 ; extra == 'neo4j'
72
+ Requires-Dist: openai-agents>=0.20.0,<0.21 ; extra == 'openai'
73
+ Requires-Dist: openinference-instrumentation-openai-agents>=1.4.0,<3.0.0 ; extra == 'openai'
74
+ Requires-Dist: openai-guardrails>=0.2.1,<0.4.0 ; extra == 'openai'
75
+ Requires-Dist: traceloop-sdk>=0.61.0,<0.63.0 ; extra == 'openllmetry'
76
+ Requires-Dist: httpx>=0.27.0,<0.29.0 ; extra == 'openllmetry'
77
+ Requires-Dist: opik>=1.7.0,<3.0.0 ; extra == 'opik'
78
+ Requires-Dist: pydantic-ai-slim~=2.13.0 ; extra == 'pydanticai'
79
+ Requires-Dist: openinference-instrumentation-pydantic-ai>=0.1.17,<0.2.0 ; extra == 'pydanticai'
80
+ Requires-Dist: redis>=7.1.0,<9.0.0 ; extra == 'redis'
81
+ Requires-Dist: docker>=7.0.0,<8.0.0 ; extra == 'sandbox-docker'
82
+ Requires-Dist: slack-bolt==1.22.0 ; extra == 'slack'
83
+ Requires-Dist: httpx>=0.27.0,<0.29.0 ; extra == 'slack'
84
+ Requires-Dist: fastapi>=0.118.0,<0.142.0 ; extra == 'slack'
85
+ Requires-Dist: aiohttp>=3.14.4,<4.0.0 ; extra == 'slack'
86
+ Requires-Dist: smolagents>=1.26.0,<2.0.0 ; extra == 'smolagents'
87
+ Requires-Dist: botbuilder-core>=4.17.0,<5.0.0 ; extra == 'teams'
88
+ Requires-Dist: botbuilder-schema>=4.17.0,<5.0.0 ; extra == 'teams'
89
+ Requires-Dist: aiohttp>=3.14.4,<4.0.0 ; extra == 'teams'
90
+ Requires-Dist: msal>=1.31.1,<2.0.0 ; extra == 'teams'
91
+ Requires-Dist: httpx>=0.27.0,<0.29.0 ; extra == 'teams'
92
+ Requires-Dist: fastapi>=0.118.0,<0.142.0 ; extra == 'teams'
93
+ Requires-Dist: httpx>=0.27.0,<0.29.0 ; extra == 'telegram'
94
+ Requires-Dist: fastapi>=0.118.0,<0.142.0 ; extra == 'telegram'
95
+ Requires-Dist: pytest>=8.4.1,<10.0.0 ; extra == 'test'
96
+ Requires-Dist: pytest-asyncio>=1.2.0,<2.0.0 ; extra == 'test'
97
+ Requires-Dist: pytest-cov>=6.2.1,<8.0.0 ; extra == 'test'
98
+ Requires-Dist: pytest-html>=4.1.1,<5.0.0 ; extra == 'test'
99
+ Requires-Dist: pytest-order>=1.3.0,<2.0.0 ; extra == 'test'
100
+ Requires-Dist: deepeval>=4.1.4,<5.0.0 ; extra == 'test'
101
+ Requires-Dist: litellm>=1.95.0,<2.0.0 ; extra == 'test'
102
+ Requires-Dist: litellm>=1.95.0,<2.0.0 ; extra == 'thread'
103
+ Requires-Dist: trino>=0.337.0,<0.340.0 ; extra == 'trino'
104
+ Requires-Dist: valkey>=6.0.0,<7.0.0 ; extra == 'valkey'
105
+ Requires-Dist: walledai>=4.9.3,<5.0.0 ; extra == 'walledai'
106
+ Requires-Dist: httpx>=0.27.0,<0.29.0 ; extra == 'whatsapp'
107
+ Requires-Dist: fastapi>=0.118.0,<0.142.0 ; extra == 'whatsapp'
108
+ Requires-Python: >=3.12, <3.14
109
+ Provides-Extra: a2a
110
+ Provides-Extra: adk
111
+ Provides-Extra: agui
112
+ Provides-Extra: api
113
+ Provides-Extra: auth
114
+ Provides-Extra: aws
115
+ Provides-Extra: azure
116
+ Provides-Extra: chromadb
117
+ Provides-Extra: claude
118
+ Provides-Extra: cli
119
+ Provides-Extra: cloudwatch
120
+ Provides-Extra: crewai
121
+ Provides-Extra: cron
122
+ Provides-Extra: daytona
123
+ Provides-Extra: e2b
124
+ Provides-Extra: gcp
125
+ Provides-Extra: gmail
126
+ Provides-Extra: instagram
127
+ Provides-Extra: jev
128
+ Provides-Extra: kafka
129
+ Provides-Extra: kubernetes
130
+ Provides-Extra: langfuse
131
+ Provides-Extra: langgraph
132
+ Provides-Extra: livekit
133
+ Provides-Extra: logfire
134
+ Provides-Extra: maf
135
+ Provides-Extra: mcp
136
+ Provides-Extra: messenger
137
+ Provides-Extra: multimodal
138
+ Provides-Extra: nats
139
+ Provides-Extra: neo4j
140
+ Provides-Extra: openai
141
+ Provides-Extra: openllmetry
142
+ Provides-Extra: opik
143
+ Provides-Extra: pydanticai
144
+ Provides-Extra: redis
145
+ Provides-Extra: sandbox-docker
146
+ Provides-Extra: slack
147
+ Provides-Extra: smolagents
148
+ Provides-Extra: teams
149
+ Provides-Extra: telegram
150
+ Provides-Extra: test
151
+ Provides-Extra: thread
152
+ Provides-Extra: trino
153
+ Provides-Extra: valkey
154
+ Provides-Extra: walledai
155
+ Provides-Extra: whatsapp
156
+ Description-Content-Type: text/markdown
157
+
1
158
  # Agent Kernel
2
159
 
3
160
  [![PyPI version](https://badge.fury.io/py/agentkernel.svg)](https://badge.fury.io/py/agentkernel)
@@ -8,71 +165,75 @@ Agent Kernel is a lightweight **AI agent runtime** and adapter layer for buildin
8
165
  ## Features
9
166
 
10
167
  - **Unified API**: Common abstractions (Agent, Runner, Session, Module, Runtime) across frameworks
11
- - **Multi-Framework Support**: OpenAI Agents SDK, CrewAI, LangGraph, Google ADK, Smolagents, and Pydantic AI
168
+ - **Multi-Framework Support**: OpenAI Agents SDK, CrewAI, LangGraph, Google ADK, Smolagents, Pydantic AI, Microsoft Agent Framework, and the Claude Agent SDK
12
169
  - **Session Management**: Built-in session abstraction with pluggable storage backends
13
170
  - **Knowledge Bases**: Unified, capability-declaring `KnowledgeBase` interface with ChromaDB, Neo4j, Starburst/Trino and Open Knowledge Format bundle (local directory or S3) backends via `KnowledgeBuilder`
14
171
  - **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
15
- - **Secret Resolution**: `SecretManager` resolves API keys and passwords environment-first, falling back to a pluggable provider (`env`, `aws_ssm` for AWS SSM Parameter Store, or your own) with a TTL'd process cache
172
+ - **Identity and Access**: One configured identity provider (any OIDC issuer such as Auth0, Keycloak or Okta, Amazon Cognito, Microsoft Entra ID, Firebase, a static credential map, or your own by dotted path) authenticates every surface; tools, hooks, threads and scheduled tasks see the same `Principal`, and a role mapper derives roles from groups and claims
173
+ - **Secret Resolution**: `SecretManager` resolves API keys and passwords environment-first, falling back to a pluggable provider (`env`, `aws_ssm` for AWS SSM Parameter Store, `kubernetes` for Kubernetes Secrets mounted into the pod, or your own) with a TTL'd process cache
16
174
  - **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
17
- - **Human in the Loop**: Pause a run for a person's approval or answer and resume from their decision — `status: "PAUSED"` with HTTP 202, a `resume` block carrying `approved`/`denied`/`cancelled` decisions, supported on OpenAI Agents SDK, LangGraph, Pydantic AI and Google ADK over REST, streaming and AG-UI
175
+ - **Human in the Loop**: Pause a run for a person's approval or answer and resume from their decision — `status: "PAUSED"` with HTTP 202, a `resume` block carrying `approved`/`denied`/`cancelled` decisions, supported on OpenAI Agents SDK, LangGraph, Pydantic AI, Google ADK and Microsoft Agent Framework over REST, streaming and AG-UI
18
176
  - **Flexible Deployment**: Interactive CLI, REST API, serverless, or containerized deployment — see the "Multi-Cloud Deployment" section below
19
177
  - **Pluggable Architecture**: Easy to extend with custom framework adapters
20
178
  - **MCP Server**: Built-in Model Context Protocol server for exposing agents as MCP tools and exposing any custom tool
21
179
  - **A2A Server**: Built-in Agent-to-Agent communication server for exposing agents with a simple configuration change
22
180
  - **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
181
+ - **A2UI**: Label a JSON reply as [A2UI](https://a2ui.org/) from two config keys, so a client receives a generative-UI document as an object with its format named rather than a string to parse twice
23
182
  - **REST API**: Built-in REST API server for agent interaction
24
183
  - **Test Automation**: Built-in test suite for testing agents
25
184
 
26
185
  ## Installation
27
186
 
28
187
  ```bash
29
- pip install agentkernel
188
+ uv init --python 3.12 my-agent
189
+ cd my-agent
190
+ uv add agentkernel
30
191
  ```
31
192
 
32
193
  Install optional knowledge base extras as needed:
33
194
 
34
195
  ```bash
35
- pip install "agentkernel[chromadb]"
36
- pip install "agentkernel[neo4j]"
37
- pip install "agentkernel[trino]"
196
+ uv add "agentkernel[chromadb]"
197
+ uv add "agentkernel[neo4j]"
198
+ uv add "agentkernel[trino]"
38
199
  ```
39
200
 
40
201
  Open Knowledge Format bundles need no extra - `pyyaml` is a core dependency. Serving a bundle from S3
41
- uses the `aws` extra: `pip install "agentkernel[aws]"`.
202
+ uses the `aws` extra: `uv add "agentkernel[aws]"`.
42
203
 
43
204
  For LLM-based thread naming with Conversation Thread Support:
44
205
 
45
206
  ```bash
46
- pip install "agentkernel[thread]"
207
+ uv add "agentkernel[thread]"
47
208
  ```
48
209
 
49
210
  For the AG-UI server (`AGUIRequestHandler`):
50
211
 
51
212
  ```bash
52
- pip install "agentkernel[agui]"
213
+ uv add "agentkernel[agui]"
53
214
  ```
54
215
 
55
216
  For the sandbox providers (the `local_subprocess` provider needs no extra; `ec2_ssm` rides
56
217
  the `aws` extra):
57
218
 
58
219
  ```bash
59
- pip install "agentkernel[sandbox-docker]" # docker provider
60
- pip install "agentkernel[kubernetes]" # kubernetes provider (pod per sandbox)
61
- pip install "agentkernel[e2b]" # e2b cloud provider
62
- pip install "agentkernel[daytona]" # daytona cloud provider
63
- pip install "agentkernel[aws]" # ec2_ssm provider (boto3)
220
+ uv add "agentkernel[sandbox-docker]" # docker provider
221
+ uv add "agentkernel[kubernetes]" # kubernetes provider (pod per sandbox)
222
+ uv add "agentkernel[e2b]" # e2b cloud provider
223
+ uv add "agentkernel[daytona]" # daytona cloud provider
224
+ uv add "agentkernel[aws]" # ec2_ssm provider (boto3)
64
225
  ```
65
226
 
66
227
  For the `aws_ssm` secret provider (AWS SSM Parameter Store):
67
228
 
68
229
  ```bash
69
- pip install "agentkernel[aws]"
230
+ uv add "agentkernel[aws]"
70
231
  ```
71
232
 
72
233
  For cron parsing with the Scheduling capability (the `eventbridge` provider rides the `aws` extra):
73
234
 
74
235
  ```bash
75
- pip install "agentkernel[cron]"
236
+ uv add "agentkernel[cron]"
76
237
  ```
77
238
 
78
239
  **Requirements:**
@@ -195,7 +356,7 @@ Agent Kernel includes an interactive CLI for local development and testing.
195
356
  **Usage:**
196
357
 
197
358
  ```bash
198
- python demo.py
359
+ uv run python demo.py
199
360
  ```
200
361
 
201
362
  Then interact with your agents:
@@ -231,7 +392,7 @@ handler = Lambda.handler
231
392
 
232
393
  **Note that this is just the simple serverless version. A more advanced serverless deployment mode, which uses queues for scalability, is also available. For queue-backed execution modes and response-store configuration, see the [AWS Serverless Deployment](https://github.com/yaalalabs/agent-kernel/tree/develop/docs/docs/deployment/aws-serverless.md) guide.**
233
394
 
234
- The AWS serverless handler accepts both a direct `BaseRunRequest` payload and the normalized `BaseRequest` envelope. If a flat run payload is provided, Agent Kernel generates a `request_id` and normalizes it before processing.
395
+ The AWS serverless handler accepts both a direct `BaseRunRequest` payload and the normalized `BaseRequest` envelope. If a flat run payload is provided, Agent Kernel generates a `request_id` and normalizes it before processing. The caller is never named in the payload: the API Gateway authorizer (`handler = APIGatewayAuthorizer().handle`, configured by the `identity` block) establishes the principal and the handler puts it on the request; see [Identity and Access](https://kernel.yaala.ai/docs/advanced/identity-and-access).
235
396
 
236
397
  Accepted payloads:
237
398
 
@@ -246,7 +407,6 @@ Accepted payloads:
246
407
  ```json
247
408
  {
248
409
  "request_id": "req-123",
249
- "user_id": "user-123",
250
410
  "body": {
251
411
  "prompt": "Hello agent",
252
412
  "agent": "assistant",
@@ -277,7 +437,6 @@ handler = AzureFunctions.handler
277
437
  ```json
278
438
  {
279
439
  "request_id": "req-123",
280
- "user_id": "user-123",
281
440
  "body": {
282
441
  "prompt": "Hello agent",
283
442
  "agent": "assistant",
@@ -394,6 +553,55 @@ Supported formats: `.yaml`, `.yml`, `.json`
394
553
  - **Description**: System/root logger level (INFO, DEBUG, ERROR, WARNING, CRITICAL)
395
554
  - **Environment Variable**: `AK_LOGGING__SYSTEM__LEVEL`
396
555
 
556
+ #### Identity
557
+
558
+ The `identity` block selects the one identity provider every surface (REST, WebSocket, AG-UI, MCP, A2A,
559
+ the CLI) authenticates through, and the role mapper that derives roles from what it asserts. Without the
560
+ block every request runs as the anonymous principal. The thread, schedule and AG-UI handlers and the
561
+ WebSocket modes refuse to start without it. Full reference: [Identity and Access](https://kernel.yaala.ai/docs/next/advanced/identity-and-access).
562
+
563
+ Auth0 is an `oidc` configuration: the tenant's issuer with the trailing slash, the API identifier as
564
+ the audience, and the namespaced claim an Auth0 Action sets as the groups path:
565
+
566
+ ```yaml
567
+ identity:
568
+ provider:
569
+ type: oidc
570
+ issuer: https://<tenant>.<region>.auth0.com/ # or the custom domain; trailing slash included, as Auth0 issues it
571
+ audience: <the API identifier of your Auth0 API>
572
+ claims:
573
+ groups: https://<your namespace>/roles # the namespaced claim an Auth0 Action sets; omit if you set none
574
+ ```
575
+
576
+ - **Field**: `identity.provider.type`
577
+ - **Type**: string
578
+ - **Default**: `oidc`
579
+ - **Description**: `oidc` (any OpenID Connect issuer: Auth0, Keycloak, Okta, ...), `cognito`, `entra`, `firebase`, `static`, or a dotted path to an `IdentityProvider` subclass. `oidc`, `cognito`, `entra` and `firebase` need the `auth` extra (`agentkernel[auth]`).
580
+ - **Environment Variable**: `AK_IDENTITY__PROVIDER__TYPE`
581
+
582
+ - **Field**: `identity.provider.issuer`, `identity.provider.audience`
583
+ - **Type**: string
584
+ - **Description**: The issuer URL and the audience a token must carry. Both are required by `oidc` (Auth0: `https://<tenant>.<region>.auth0.com/` with the trailing slash, and the API identifier); `cognito` and `entra` take the audience (the app client id, the application id) and derive the issuer; `firebase` derives both.
585
+ - **Environment Variable**: `AK_IDENTITY__PROVIDER__ISSUER`, `AK_IDENTITY__PROVIDER__AUDIENCE`
586
+
587
+ - **Field**: `identity.provider.jwks_uri`, `identity.provider.algorithms`, `identity.provider.leeway`, `identity.provider.required_claims`
588
+ - **Description**: The JWK set URL (discovered from the issuer when omitted), the allowed signing algorithms (default `[RS256, ES256]`; an empty list, `none`, an unknown name or a symmetric one fails startup), the clock skew in seconds (default `30`) and extra claims a token must carry.
589
+
590
+ - **Field**: `identity.provider.claims.subject`, `identity.provider.claims.groups`
591
+ - **Type**: string (a claim name, a namespaced name such as `https://acme.com/roles`, or dotted segments such as `realm_access.roles`)
592
+ - **Default**: `sub`, `groups`
593
+ - **Description**: Where the provider reads the subject and the group list.
594
+
595
+ - **Field**: `identity.provider.cognito` (`region`, `user_pool_id`, `token_use`), `identity.provider.entra` (`tenant_id`), `identity.provider.firebase` (`project_id`)
596
+ - **Description**: The settings of the matching built-in provider. `token_use` is `access` (default) or `id`; any other value fails startup.
597
+
598
+ - **Field**: `identity.provider.static.principals`
599
+ - **Type**: mapping of secret key to principal (`subject`, `kind`, `groups`, `roles`, `claims`)
600
+ - **Description**: The `static` provider's credentials. Each key names a secret resolved through the secret capability when the provider is built (the environment first), so no credential value is written in the file; a key with no secret, or an empty map, fails startup. An entry's `roles` are issued directly; a role mapper replaces them.
601
+
602
+ - **Field**: `identity.role_mapper.type`, `identity.role_mapper.mapping`, `identity.role_mapper.claims`, `identity.role_mapper.pass_through`
603
+ - **Description**: Optional. `mapping` (default) maps group names to roles, and the string or list values of the claim paths listed in `claims` (default `[]`: groups only, since a user sets many of their own claims), then appends the `pass_through` claim's value as roles; a dotted path selects a `RoleMapper` subclass, which reads settings of its own from `model_extra`. Without a mapper only a `static` entry's own roles exist. Nothing enforces roles yet.
604
+
397
605
  #### Session Store
398
606
 
399
607
  Configure where agent sessions are stored (supports multi-cloud storage backends).
@@ -455,9 +663,10 @@ available on AWS ElastiCache at a lower price point than the Redis OSS engine:
455
663
  Mounting `AgentThreadRequestHandler` (from `agentkernel.thread`) instead of the default REST handler
456
664
  enables persistent, named conversation threads keyed by `session_id`: it serves the standard chat routes
457
665
  with thread recording, plus the read routes (`GET /api/v1/threads` and
458
- `GET /api/v1/threads/{session_id}`, optionally protected by a pluggable `Authoriser`). The `thread`
459
- block in the configuration only selects the store backend and naming. On the thread handler's chat
460
- routes `user_id` is required, and a thread is auto-created on a session's first request. Sending
666
+ `GET /api/v1/threads/{session_id}`). The handler requires an `identity` block: every thread belongs to the
667
+ authenticated principal, an anonymous request is a 401, and the listing returns the caller's own threads
668
+ (there is no `user_id` field or query parameter). The `thread` block in the configuration only selects
669
+ the store backend and naming. A thread is auto-created on a session's first request. Sending
461
670
  `thread_name` on any chat request sets or renames the thread's display name and locks it against automatic
462
671
  naming. Threads created without an explicit `thread_name` are
463
672
  named by a pluggable naming strategy — by default an LLM call derives a concise title from the first prompt
@@ -476,7 +685,7 @@ mode additionally require `multimodal.enabled: true` with a shared attachment st
476
685
  - **Field**: `thread.naming.model`
477
686
  - **Type**: string
478
687
  - **Default**: `gpt-4o-mini`
479
- - **Description**: LiteLLM model used to generate thread names (requires the `thread` extra — `pip install "agentkernel[thread]"` — and an API key in the environment; falls back to a truncated prompt prefix otherwise)
688
+ - **Description**: LiteLLM model used to generate thread names (requires the `thread` extra — `uv add "agentkernel[thread]"` — and an API key in the environment; falls back to a truncated prompt prefix otherwise)
480
689
  - **Environment Variable**: `AK_THREAD__NAMING__MODEL`
481
690
 
482
691
  - **Auto-name Max Length**
@@ -510,7 +719,7 @@ Required when `thread.type=redis`:
510
719
 
511
720
  ##### Valkey Thread Store
512
721
 
513
- Required when `thread.type=valkey`. Requires the `valkey` extra (`pip install "agentkernel[valkey]"`):
722
+ Required when `thread.type=valkey`. Requires the `valkey` extra (`uv add "agentkernel[valkey]"`):
514
723
 
515
724
  - **URL**
516
725
  - **Field**: `thread.valkey.url`
@@ -597,9 +806,10 @@ execution pipeline. The block also injects five agent tools (`create_schedule`,
597
806
  `get_schedule`, `update_schedule`, `delete_schedule`). The management routes
598
807
  (`GET`/`PUT`/`DELETE /api/v1/schedules`) are not mounted from config: the application mounts
599
808
  `ScheduleRESTRequestHandler` itself — `IOHandler.run(handlers=[ScheduleRESTRequestHandler()])` —
600
- passing an optional pluggable `Authoriser` to the handler to protect them. Every scheduling request
601
- needs a `user_id`: it is the owner the task is stored under and the identity later reads and changes
602
- are checked against. A bare `schedule:` block works for local development — its defaults are the
809
+ and the handler requires an `identity` block. Every scheduling request needs an authenticated principal:
810
+ it is the owner the task is stored under and that later reads and changes are checked against (an
811
+ anonymous management request is a 401, an anonymous chat request with a `schedule` block a 403; there is
812
+ no `user_id` field). A bare `schedule:` block works for local development: its defaults are the
603
813
  `local` provider and the `in_memory` store. See `examples/api/schedule-openai`.
604
814
 
605
815
  - **Provider Type**
@@ -700,16 +910,27 @@ failure raises `SecretError` even with a `default`. The capability is always ava
700
910
  - **Type**: string
701
911
  - **Default**: `env`
702
912
  - **Options**: `env` (the process environment), `aws_ssm` (AWS SSM Parameter Store; requires
703
- `secret.prefix` and the `aws` extra — `OPENAI_API_KEY` is read from `/ak/<prefix>/openai_api_key`), or a
704
- dotted path to a `SecretProvider` subclass
913
+ `secret.prefix` and the `aws` extra — `OPENAI_API_KEY` is read from `/ak/<prefix>/openai_api_key`),
914
+ `kubernetes` (one file per key from Kubernetes Secrets mounted under
915
+ `secret.provider.kubernetes.mount_path`, standard library only, no API calls), or a dotted path to a
916
+ `SecretProvider` subclass
705
917
  - **Environment Variable**: `AK_SECRET__PROVIDER__TYPE`
706
918
 
919
+ - **Kubernetes Mount Path**
920
+ - **Field**: `secret.provider.kubernetes.mount_path`
921
+ - **Type**: string (absolute path)
922
+ - **Default**: `/var/run/secrets/agentkernel`
923
+ - **Description**: Directory the Kubernetes Secrets are mounted under, one subdirectory per Secret
924
+ (`<mount_path>/<secret-name>/<KEY>`). The Helm chart's `secretStore` mounts under the default. Read only by
925
+ the `kubernetes` provider
926
+ - **Environment Variable**: `AK_SECRET__PROVIDER__KUBERNETES__MOUNT_PATH`
927
+
707
928
  - **Prefix**
708
929
  - **Field**: `secret.prefix`
709
930
  - **Type**: string
710
931
  - **Default**: `""`
711
932
  - **Description**: Deployment scope providers namespace secrets under; a single path segment. Required by
712
- `aws_ssm`, ignored by `env`. Injected by the AWS Terraform modules when `ssm_enabled = true`
933
+ `aws_ssm`, ignored by `env` and `kubernetes`. Injected by the AWS Terraform modules when `ssm_enabled = true`
713
934
  - **Environment Variable**: `AK_SECRET__PREFIX`
714
935
 
715
936
  - **Cache TTL**
@@ -726,11 +947,27 @@ Configure queue-backed and serverless execution behavior.
726
947
 
727
948
  - **Execution Mode**
728
949
  - **Field**: `execution.mode`
729
- - **Options**: `rest_sync`, `rest_async`, `stream`, `async`
730
- - **Default**: `None`
731
- - **Description**: Selects the execution mode used for queue-backed and serverless request handling
950
+ - **Options**: `rest_sync`, `rest_async`, `async`, `realtime`
951
+ - **Default**: `None` (runs as `rest_sync`)
952
+ - **Description**: How a request is invoked: `rest_sync` (REST, wait for the reply), `rest_async`
953
+ (REST, submit then poll), `async` (WebSocket only), `realtime` (persistent realtime sockets, e.g.
954
+ the LiveKit voice gateway). `stream` was removed and fails at config load with `AKConfigError`:
955
+ set `mode: rest_sync` with `message_type: delta` for SSE over REST, or `mode: async` with
956
+ `message_type: delta` for chunks over WebSocket
732
957
  - **Environment Variable**: `AK_EXECUTION__MODE`
733
958
 
959
+ - **Message Type**
960
+ - **Field**: `execution.message_type`
961
+ - **Options**: `complete`, `delta`
962
+ - **Default**: `None` (resolves to `delta` for `realtime`, `complete` otherwise)
963
+ - **Description**: How much of the reply each delivered message carries. `complete` sends the whole
964
+ reply in one message (JSON under `rest_sync`, one `CHAT_RESPONSE` under `async`); `delta` sends one
965
+ message per chunk (SSE under `rest_sync`, one `STREAM_CHUNK` per chunk ending with `done: true`
966
+ under `async`). `rest_async` + `delta` and `realtime` + `complete` fail at config load. AWS
967
+ Lambda (REST router init) and the ECS queue-mode `ECSIOHandler` (startup) refuse `rest_sync` +
968
+ `delta`; use `async` + `delta` there
969
+ - **Environment Variable**: `AK_EXECUTION__MESSAGE_TYPE`
970
+
734
971
  - **Queues**
735
972
  - **Field**: `execution.queues`
736
973
  - **Description**: Queue settings used by the queue execution pipeline (in-process by default, or serverless/containerized backends)
@@ -1022,6 +1259,12 @@ Configure the REST API server (if using the API module).
1022
1259
  - **Description**: List of agent names to expose as MCP tools
1023
1260
  - **Environment Variable**: `AK_MCP__AGENTS` (comma-separated)
1024
1261
 
1262
+ - **URL**
1263
+ - **Field**: `mcp.url`
1264
+ - **Default**: `http://localhost:8000/mcp`
1265
+ - **Description**: Public URL of the MCP endpoint. With an OpenID-family identity provider the 401 points at the RFC 9728 resource metadata the app serves at `<origin>/.well-known/oauth-protected-resource/mcp/`, naming this URL as the resource; set it to the address clients use (behind a proxy, the public one)
1266
+ - **Environment Variable**: `AK_MCP__URL`
1267
+
1025
1268
  - **Stateless HTTP**
1026
1269
  - **Field**: `mcp.stateless_http`
1027
1270
  - **Default**: `false`
@@ -1037,10 +1280,13 @@ Configure the REST API server (if using the API module).
1037
1280
  Mounting `AGUIRequestHandler` (from `agentkernel.agui`, requires the `agentkernel[agui]` extra — `pip
1038
1281
  install "agentkernel[agui]"`) is what enables the [AG-UI protocol](https://github.com/ag-ui-protocol/ag-ui)
1039
1282
  surface; the `agui` block only parameterizes it, and it never switches the surface on by itself.
1040
- `AGUIRequestHandler` refuses to construct without an `Authoriser` or `AuthValidator` — AG-UI runs
1041
- agents on a caller's behalf and has no anonymous mode. Only agents whose runner declares
1042
- `supports_streaming = True` are reachable (currently OpenAI Agents SDK, LangGraph, Google ADK, and
1043
- Pydantic AI — not CrewAI or Smolagents). See `examples/api/agui`.
1283
+ Mount `AGUIPipelineRequestHandler` through `IOHandler.run(handlers=[...])` instead to run the agent
1284
+ on the queue pipeline rather than inside the SSE request; same routes and events, and it refuses to
1285
+ start unless the configured stores can serve a run from the runner process.
1286
+ `AGUIRequestHandler` refuses to construct without an `identity` block and answers an anonymous request
1287
+ with a 401, since AG-UI runs agents on a caller's behalf and has no anonymous mode. Only agents whose runner declares
1288
+ `supports_streaming = True` are reachable (currently OpenAI Agents SDK, LangGraph, Google ADK, Pydantic AI
1289
+ and Microsoft Agent Framework — not CrewAI or Smolagents). See `examples/api/agui`.
1044
1290
 
1045
1291
  - **Agents**
1046
1292
  - **Field**: `agui.agents`
@@ -1078,6 +1324,27 @@ Pydantic AI — not CrewAI or Smolagents). See `examples/api/agui`.
1078
1324
  - **Default**: unset (every agent gets the tools)
1079
1325
  - **Environment Variable**: `AK_AGUI__CLIENT_CONTEXT__AGENTS` (comma-separated)
1080
1326
 
1327
+ #### A2UI Configuration
1328
+
1329
+ Labels a JSON reply as [A2UI](https://a2ui.org/) so a client receives the document as an object with
1330
+ its format named, instead of a JSON string it has to parse a second time. Agent Kernel supplies the
1331
+ media type and nothing else — the component catalog belongs in your agent's instructions, because it
1332
+ has to match the components your frontend implements. The block does not reach a streamed run
1333
+ (`execution.message_type: delta`) or an agent configured with a framework `output_type`; both are told to
1334
+ write their own post-hook. See `examples/api/a2ui-openai`.
1335
+
1336
+ - **Enabled**
1337
+ - **Field**: `a2ui.enabled`
1338
+ - **Default**: `false`
1339
+ - **Description**: Master switch. When off, no hook runs and no reply is labelled
1340
+ - **Environment Variable**: `AK_A2UI__ENABLED`
1341
+
1342
+ - **Agents**
1343
+ - **Field**: `a2ui.agents`
1344
+ - **Default**: unset (every agent's JSON replies are labelled)
1345
+ - **Description**: Agent names whose JSON replies are labelled `application/a2ui+json`. Naming an agent is the declaration that it emits A2UI; a reply from it that does not parse as JSON is left alone
1346
+ - **Environment Variable**: `AK_A2UI__AGENTS` (comma-separated)
1347
+
1081
1348
  #### Trace (Observability) Configuration
1082
1349
 
1083
1350
  Configure tracing and observability for monitoring agent execution.
@@ -1100,7 +1367,7 @@ Configure tracing and observability for monitoring agent execution.
1100
1367
  To use Langfuse for tracing, install the langfuse extra:
1101
1368
 
1102
1369
  ```bash
1103
- pip install agentkernel[langfuse]
1370
+ uv add "agentkernel[langfuse]"
1104
1371
  ```
1105
1372
 
1106
1373
  Configure Langfuse credentials via environment variables:
@@ -1124,7 +1391,7 @@ trace:
1124
1391
  To use OpenLLMetry for tracing, install the openllmetry extra:
1125
1392
 
1126
1393
  ```bash
1127
- pip install agentkernel[openllmetry]
1394
+ uv add "agentkernel[openllmetry]"
1128
1395
  ```
1129
1396
 
1130
1397
  Configure Traceloop credentials via environment variables:
@@ -1147,7 +1414,7 @@ trace:
1147
1414
  To use Logfire for tracing, install the logfire extra:
1148
1415
 
1149
1416
  ```bash
1150
- pip install agentkernel[logfire]
1417
+ uv add "agentkernel[logfire]"
1151
1418
  ```
1152
1419
 
1153
1420
  Configure the Logfire write token via an environment variable (optional — without a token, Logfire
@@ -1170,7 +1437,7 @@ trace:
1170
1437
  To send traces to Amazon CloudWatch (via AWS X-Ray, searchable in Transaction Search), install the cloudwatch extra:
1171
1438
 
1172
1439
  ```bash
1173
- pip install agentkernel[cloudwatch]
1440
+ uv add "agentkernel[cloudwatch]"
1174
1441
  ```
1175
1442
 
1176
1443
  Spans are exported over OTLP to the X-Ray endpoint of your region, signed with the standard AWS credential
@@ -1191,6 +1458,24 @@ trace:
1191
1458
  type: cloudwatch
1192
1459
  ```
1193
1460
 
1461
+ **Fetching spans back (trace evaluation):**
1462
+
1463
+ Every built-in tracer can read recorded spans back through one provider-neutral filter, so production traces can be
1464
+ evaluated offline:
1465
+
1466
+ ```python
1467
+ from datetime import timedelta
1468
+
1469
+ from agentkernel.trace import SpanKind, Trace
1470
+
1471
+ tool_calls = Trace.get().fetch_spans(last=timedelta(hours=6), kinds=[SpanKind.TOOL])
1472
+ traces = Trace.get().fetch_traces(session_id="session-123", last=timedelta(hours=24))
1473
+ ```
1474
+
1475
+ Spans are returned oldest first as `FetchedSpan` objects. See the
1476
+ [Traceability docs](https://kernel.yaala.ai/docs/advanced/traceability) and the `examples/aws-serverless/openai-langfuse-trace-evaluation`
1477
+ example. Custom tracers that override `fetch_spans` can be checked with `agentkernel.trace.testing.TraceFetchContract`.
1478
+
1194
1479
  #### Test Configuration
1195
1480
 
1196
1481
  Configure test comparison modes for automated testing. Test configuration is separate from the application configuration: it is **not** part of `config.yaml`. It lives in its own `test-config.yaml` file and is only loaded when the testing utilities (`agentkernel.test`) are used — see the [Test Configuration (test-config.yaml)](#test-configuration-test-configyaml) section for file resolution, environment variables, and migration notes.
@@ -1227,7 +1512,7 @@ Configure test comparison modes for automated testing. Test configuration is sep
1227
1512
  - **Environment Variable**: `AK_TEST__LLM__EMBEDDING_MODEL`
1228
1513
 
1229
1514
  **Test Modes:**
1230
- - `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]"`; built-in `jev` has no score mode)
1515
+ - `score`: Deterministic, offline string-match scoring via the configured evaluator (built-in `deepeval`: `Scorer.quasi_exact_match_score`; built-in `opik`: `LevenshteinRatio`, requires `uv add "agentkernel[opik]"`; built-in `jev` has no score mode)
1231
1516
  - `llm`: LLM-as-judge evaluation via the configured evaluator (built-in `deepeval` or `opik`: `GEval`; built-in `jev`: a TypeSafe JEV yes/no Noul question) for semantic similarity
1232
1517
  - `fallback`: Tries score first, falls back to llm if score fails
1233
1518
 
@@ -1326,19 +1611,19 @@ Configure input and output guardrails to validate agent requests and responses f
1326
1611
  To use OpenAI guardrails, install the openai-guardrails package:
1327
1612
 
1328
1613
  ```bash
1329
- pip install agentkernel[openai]
1614
+ uv add "agentkernel[openai]"
1330
1615
  ```
1331
1616
 
1332
1617
  To use AWS Bedrock guardrails, install the AWS package:
1333
1618
 
1334
1619
  ```bash
1335
- pip install agentkernel[aws]
1620
+ uv add "agentkernel[aws]"
1336
1621
  ```
1337
1622
 
1338
1623
  To use Walled AI guardrails, install the Walled AI package:
1339
1624
 
1340
1625
  ```bash
1341
- pip install agentkernel[walledai]
1626
+ uv add "agentkernel[walledai]"
1342
1627
  ```
1343
1628
 
1344
1629
  Create guardrail configuration:
@@ -1399,8 +1684,8 @@ guardrail:
1399
1684
  Enable the sandbox capability to let agents execute code and shell commands in an isolated,
1400
1685
  permission-bounded environment. When enabled, agents automatically gain sandbox tools
1401
1686
  (`run_code`, `run_command`, `write_sandbox_file`, `read_sandbox_file`, `check_sandbox_task`,
1402
- `list_sandbox_sessions`, `new_sandbox_session`, `destroy_sandbox_session`) and the usage
1403
- guidance is injected into their system prompt.
1687
+ `list_sandbox_sessions`, `new_sandbox_session`, `destroy_sandbox_session`, plus `install_packages`
1688
+ when a profile permits package installs) and the usage guidance is injected into their system prompt.
1404
1689
 
1405
1690
  Minimal single-backend form (a `default` profile is synthesized from `type` + its config block):
1406
1691
 
@@ -1438,6 +1723,9 @@ sandbox:
1438
1723
  memory_mb: 512
1439
1724
  timeout: 30.0 # per-execution wall-clock seconds (always enforced)
1440
1725
  strict: true # fail closed when the provider can't enforce a policy dimension
1726
+ languages: [python] # run_code allowlist; omitted = provider-declared; [] = no run_code
1727
+ package_install: # omitted = installs denied; present = install_packages permitted
1728
+ ecosystems: [python]
1441
1729
  docker:
1442
1730
  image: python:3.12-slim
1443
1731
  ```
@@ -1447,7 +1735,8 @@ Key fields:
1447
1735
  - **`enabled`** (`AK_SANDBOX__ENABLED`, default `false`) — master switch; inert when off.
1448
1736
  - **`agents`** — agent names the tools/prompt attach to; omit for all agents.
1449
1737
  - **`type`** (per profile) — `local_subprocess` (no isolation; dev/test), `docker`
1450
- (container isolation; `sandbox-docker` extra), `e2b` (managed micro-VMs; `e2b` extra),
1738
+ (container isolation; `sandbox-docker` extra), `kubernetes` (pod per sandbox; `kubernetes`
1739
+ extra), `e2b` (managed micro-VMs; `e2b` extra),
1451
1740
  `daytona` (cloud containers; `daytona` extra), `ec2_ssm` (attach to an existing EC2
1452
1741
  instance via SSM; `aws` extra), or a dotted path to your own `SandboxProvider`.
1453
1742
  - **`scope`** — `per_call` (fresh per execution), `per_session` (persists across turns),
@@ -1457,10 +1746,15 @@ Key fields:
1457
1746
  e.g. an EC2 instance via `ec2_ssm`; requires the provider's `attach_to` and is validated
1458
1747
  against the provider's lifecycle capabilities at startup).
1459
1748
  - **`policy`** — network egress, filesystem paths, cpu/memory, timeout; enforced per provider,
1460
- fail-closed under `strict`.
1749
+ fail-closed under `strict`. Also the permissions: `languages` (which `run_code` languages are
1750
+ allowed) and `package_install` (whether `install_packages` is allowed, and for which ecosystems).
1751
+ A provider's `package_installers` sets the installer command per ecosystem (default `pip install`),
1752
+ and on `docker`/`kubernetes`/`ec2_ssm` its `language_runtimes` sets the interpreter per language (default `python -c`; on `ec2_ssm` each argv reads the code from stdin, default `python3 -`).
1461
1753
  - **`identity.mode`** + **`principal_resolver`** — run code under the agent's or the invoking
1462
- user's identity.
1463
- - **`broker.flavor`** — `thread` (default, for CLI/REST) or `embedded` (inline/synchronous).
1754
+ user's identity; the default resolver reads the run's `Principal`, so `user` mode needs no custom
1755
+ resolver once an `identity` block authenticates the caller.
1756
+ - **`broker.flavor`** — `thread` (default, for CLI/REST), `embedded` (inline/synchronous), or
1757
+ `queue` (a separate `QueueBrokerWorker` fleet over a queue transport).
1464
1758
 
1465
1759
  See the [Sandbox guide](https://kernel.yaala.ai/docs/advanced/sandbox) for the full
1466
1760
  reference and the `examples/sandbox` and `examples/sandbox/identity` examples.
@@ -1864,7 +2158,7 @@ gmail:
1864
2158
 
1865
2159
  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.
1866
2160
 
1867
- The `evaluator` field accepts three 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 `jev` (`pip install "agentkernel[jev]"`, hosted [TypeSafe JEV](https://docs.typesafe.ai) judge; `mode: llm` only, needs `TYPESAFE_API_KEY`, and sends the comparison text to `api.typesafe.ai`) — or a dotted path to your own `AKEvaluator` subclass.
2161
+ The `evaluator` field accepts three built-in short names — `deepeval` (default, `uv add "agentkernel[test]"`) or `opik` (`uv add "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 `jev` (`uv add "agentkernel[jev]"`, hosted [TypeSafe JEV](https://docs.typesafe.ai) judge; `mode: llm` only, needs `TYPESAFE_API_KEY`, and sends the comparison text to `api.typesafe.ai`) — or a dotted path to your own `AKEvaluator` subclass.
1868
2162
 
1869
2163
  **test-config.yaml:**
1870
2164
 
@@ -1937,6 +2231,8 @@ Sessions maintain state across agent interactions. Framework adapters manage the
1937
2231
  - `"openai"` — OpenAI Agents SDK session data
1938
2232
  - `"adk"` — Google ADK session data
1939
2233
  - `"pydanticai"` — Pydantic AI session data (message history)
2234
+ - `"maf"` — Microsoft Agent Framework session data (`AgentSession` snapshot)
2235
+ - `"claude"` — Claude Agent SDK session data (each agent's Claude session id and transcript)
1940
2236
 
1941
2237
  Access the session in your runner:
1942
2238
 
@@ -1956,14 +2252,14 @@ def run(self, agent, prompt, session):
1956
2252
 
1957
2253
  **Requirements:**
1958
2254
  - Python 3.12+
1959
- - uv 0.8.0+ (recommended) or pip
2255
+ - uv 0.8.0+
1960
2256
 
1961
2257
  **Setup:**
1962
2258
 
1963
2259
  ```bash
1964
2260
  git clone https://github.com/yaalalabs/agent-kernel.git
1965
2261
  cd agent-kernel/ak-py
1966
- uv sync # or: pip install -e ".[dev]"
2262
+ uv sync
1967
2263
  ```
1968
2264
 
1969
2265
  **Run Tests:**