agentkernel 0.9.4__tar.gz → 0.9.5__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 (378) hide show
  1. {agentkernel-0.9.4 → agentkernel-0.9.5}/PKG-INFO +5 -2
  2. {agentkernel-0.9.4 → agentkernel-0.9.5}/pyproject.toml +6 -2
  3. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/__init__.py +2 -0
  4. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/base.py +14 -2
  5. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/config.py +45 -1
  6. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/event.py +16 -0
  7. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/model.py +35 -4
  8. agentkernel-0.9.5/src/agentkernel/core/realtime/__init__.py +8 -0
  9. agentkernel-0.9.5/src/agentkernel/core/realtime/pcm.py +46 -0
  10. agentkernel-0.9.5/src/agentkernel/core/realtime/runner.py +119 -0
  11. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/containerized/akagentrunner.py +56 -3
  12. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/containerized/core/sqs_consumer.py +7 -0
  13. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/framework/adk/__init__.py +1 -1
  14. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/framework/adk/adk.py +294 -6
  15. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/framework/openai/__init__.py +1 -1
  16. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/framework/openai/openai.py +277 -15
  17. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/adapter/__init__.py +6 -1
  18. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/adapter/base.py +104 -3
  19. agentkernel-0.9.5/src/agentkernel/integration/adapter/gateway.py +84 -0
  20. agentkernel-0.9.5/src/agentkernel/integration/adapter/registry.py +51 -0
  21. agentkernel-0.9.5/src/agentkernel/integration/livekit/__init__.py +14 -0
  22. agentkernel-0.9.5/src/agentkernel/integration/livekit/adapter.py +322 -0
  23. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/agent_runner.py +43 -3
  24. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/consumer.py +15 -11
  25. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/envelope.py +4 -0
  26. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/io_handler.py +31 -3
  27. agentkernel-0.9.5/src/agentkernel/pipeline/realtime_pool.py +545 -0
  28. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/request_handler.py +10 -0
  29. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/response_handler.py +71 -2
  30. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/skills/ak-add-capabilities/SKILL.md +31 -31
  31. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/skills/ak-add-capabilities/evals/evals.json +1 -1
  32. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/skills/ak-add-integration/SKILL.md +8 -8
  33. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/skills/ak-add-integration/evals/evals.json +1 -1
  34. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/skills/ak-build/SKILL.md +1 -1
  35. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/skills/ak-build/evals/evals.json +1 -1
  36. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/skills/ak-cloud-deploy/SKILL.md +26 -26
  37. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/skills/ak-cloud-deploy/evals/evals.json +1 -1
  38. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/skills/ak-init/SKILL.md +2 -2
  39. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/skills/ak-init/evals/evals.json +2 -2
  40. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/skills/ak-test/SKILL.md +2 -2
  41. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/skills/ak-test/evals/evals.json +1 -1
  42. {agentkernel-0.9.4 → agentkernel-0.9.5}/README.md +0 -0
  43. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/__init__.py +0 -0
  44. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/adk.py +0 -0
  45. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/agui.py +0 -0
  46. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/api/__init__.py +0 -0
  47. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/api/a2a/__init__.py +0 -0
  48. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/api/a2a/a2a.py +0 -0
  49. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/api/a2a/handler.py +0 -0
  50. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/api/handler.py +0 -0
  51. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/api/http.py +0 -0
  52. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/api/mcp/__init__.py +0 -0
  53. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/api/mcp/akmcp.py +0 -0
  54. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/auth/__init__.py +0 -0
  55. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/auth/authoriser.py +0 -0
  56. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/auth/handler.py +0 -0
  57. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/auth.py +0 -0
  58. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/aws.py +0 -0
  59. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/azure.py +0 -0
  60. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/cli/__init__.py +0 -0
  61. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/cli/ak.py +0 -0
  62. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/cli/cli.py +0 -0
  63. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/builder.py +0 -0
  64. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/chat_service.py +0 -0
  65. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/hooks.py +0 -0
  66. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/logger.py +0 -0
  67. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/module.py +0 -0
  68. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/multimodal/__init__.py +0 -0
  69. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/multimodal/factory.py +0 -0
  70. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/multimodal/hooks.py +0 -0
  71. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/multimodal/source.py +0 -0
  72. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/multimodal/storage/__init__.py +0 -0
  73. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/multimodal/storage/base.py +0 -0
  74. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/multimodal/storage/dynamodb.py +0 -0
  75. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/multimodal/storage/in_memory.py +0 -0
  76. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/multimodal/storage/redis.py +0 -0
  77. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/multimodal/storage/session_cache.py +0 -0
  78. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/multimodal/storage/storage_manager.py +0 -0
  79. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/multimodal/tools.py +0 -0
  80. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/paused_run.py +0 -0
  81. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/runtime.py +0 -0
  82. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/service.py +0 -0
  83. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/session/__init__.py +0 -0
  84. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/session/base.py +0 -0
  85. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/session/cosmosdb.py +0 -0
  86. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/session/dynamodb.py +0 -0
  87. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/session/firestore.py +0 -0
  88. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/session/in_memory.py +0 -0
  89. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/session/redis.py +0 -0
  90. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/session/redis_like.py +0 -0
  91. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/session/serde.py +0 -0
  92. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/session/valkey.py +0 -0
  93. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/tool.py +0 -0
  94. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/util/async_bridge.py +0 -0
  95. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/util/config_yaml_util.py +0 -0
  96. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/util/driver/__init__.py +0 -0
  97. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/util/driver/base.py +0 -0
  98. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/util/driver/cosmosdb.py +0 -0
  99. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/util/driver/dynamodb.py +0 -0
  100. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/util/driver/firestore.py +0 -0
  101. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/util/driver/redis.py +0 -0
  102. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/util/driver/redis_like.py +0 -0
  103. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/util/driver/s3.py +0 -0
  104. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/util/driver/valkey.py +0 -0
  105. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/util/error_util.py +0 -0
  106. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/util/factory.py +0 -0
  107. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/util/key_value_cache.py +0 -0
  108. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/util/pagination.py +0 -0
  109. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/core/util/picklable.py +0 -0
  110. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/crewai.py +0 -0
  111. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/__init__.py +0 -0
  112. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/__init__.py +0 -0
  113. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/containerized/__init__.py +0 -0
  114. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/containerized/akoutputconsumer.py +0 -0
  115. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/containerized/core/__init__.py +0 -0
  116. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/containerized/core/api/__init__.py +0 -0
  117. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/containerized/core/api/rest_api.py +0 -0
  118. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/containerized/core/api/websocket_api.py +0 -0
  119. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/containerized/ecs_io_handler.py +0 -0
  120. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/core/__init__.py +0 -0
  121. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/core/raw_queue_consumer.py +0 -0
  122. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/core/response_store/__init__.py +0 -0
  123. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/core/response_store/dynamodb.py +0 -0
  124. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/core/response_store/factory.py +0 -0
  125. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/core/response_store/redis.py +0 -0
  126. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/core/response_store/valkey.py +0 -0
  127. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/core/sqs_handler.py +0 -0
  128. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/core/websocket_service.py +0 -0
  129. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/serverless/__init__.py +0 -0
  130. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/serverless/akagentrunner.py +0 -0
  131. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/serverless/akauthorizer.py +0 -0
  132. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/serverless/aklambda.py +0 -0
  133. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/serverless/akresponsehandler.py +0 -0
  134. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/serverless/akwsconnectionhandler.py +0 -0
  135. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/serverless/core/__init__.py +0 -0
  136. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/serverless/core/event_translator.py +0 -0
  137. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/serverless/core/router/__init__.py +0 -0
  138. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/serverless/core/router/common.py +0 -0
  139. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/serverless/core/router/rest_lambda.py +0 -0
  140. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/serverless/core/router/ws_lambda.py +0 -0
  141. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/serverless/core/sqs_consumer.py +0 -0
  142. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/aws/serverless/core/webhook_host.py +0 -0
  143. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/azure/__init__.py +0 -0
  144. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/azure/akfunction.py +0 -0
  145. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/common/__init__.py +0 -0
  146. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/common/response_store.py +0 -0
  147. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/common/rest_handler.py +0 -0
  148. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/common/thread_runner.py +0 -0
  149. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/common/websocket_service.py +0 -0
  150. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/gcp/__init__.py +0 -0
  151. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/gcp/akauthorizer.py +0 -0
  152. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/deployment/gcp/akcloudrun.py +0 -0
  153. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/framework/__init__.py +0 -0
  154. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/framework/crewai/__init__.py +0 -0
  155. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/framework/crewai/crewai.py +0 -0
  156. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/framework/langgraph/__init__.py +0 -0
  157. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/framework/langgraph/langgraph.py +0 -0
  158. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/framework/pydanticai/__init__.py +0 -0
  159. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/framework/pydanticai/pydanticai.py +0 -0
  160. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/framework/smolagents/__init__.py +0 -0
  161. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/framework/smolagents/smolagents.py +0 -0
  162. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/gcp.py +0 -0
  163. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/gmail.py +0 -0
  164. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/guardrail/__init__.py +0 -0
  165. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/guardrail/bedrock.py +0 -0
  166. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/guardrail/guardrail.py +0 -0
  167. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/guardrail/openai.py +0 -0
  168. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/guardrail/walledai.py +0 -0
  169. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/instagram.py +0 -0
  170. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/__init__.py +0 -0
  171. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/adapter/factory.py +0 -0
  172. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/adapter/meta.py +0 -0
  173. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/adapter/poller.py +0 -0
  174. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/adapter/producer.py +0 -0
  175. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/adapter/route_matcher.py +0 -0
  176. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/adapter/routes.py +0 -0
  177. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/adapter/testing.py +0 -0
  178. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/adapter/webhook.py +0 -0
  179. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/agui/__init__.py +0 -0
  180. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/agui/handler.py +0 -0
  181. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/agui/mapping.py +0 -0
  182. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/agui/run_input.py +0 -0
  183. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/agui/state.py +0 -0
  184. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/gmail/README.md +0 -0
  185. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/gmail/__init__.py +0 -0
  186. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/gmail/adapter.py +0 -0
  187. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/instagram/README.md +0 -0
  188. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/instagram/__init__.py +0 -0
  189. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/instagram/adapter.py +0 -0
  190. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/messenger/README.md +0 -0
  191. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/messenger/__init__.py +0 -0
  192. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/messenger/adapter.py +0 -0
  193. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/slack/README.md +0 -0
  194. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/slack/__init__.py +0 -0
  195. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/slack/adapter.py +0 -0
  196. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/teams/README.md +0 -0
  197. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/teams/__init__.py +0 -0
  198. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/teams/adapter.py +0 -0
  199. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/telegram/README.md +0 -0
  200. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/telegram/__init__.py +0 -0
  201. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/telegram/adapter.py +0 -0
  202. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/thread/__init__.py +0 -0
  203. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/thread/manager.py +0 -0
  204. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/thread/model.py +0 -0
  205. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/thread/naming.py +0 -0
  206. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/thread/recorder.py +0 -0
  207. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/thread/store/__init__.py +0 -0
  208. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/thread/store/base.py +0 -0
  209. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/thread/store/cosmosdb.py +0 -0
  210. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/thread/store/dynamodb.py +0 -0
  211. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/thread/store/firestore.py +0 -0
  212. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/thread/store/in_memory.py +0 -0
  213. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/thread/store/redis.py +0 -0
  214. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/thread/store/redis_like.py +0 -0
  215. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/thread/store/valkey.py +0 -0
  216. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/thread/thread_chat.py +0 -0
  217. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/whatsapp/README.md +0 -0
  218. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/whatsapp/__init__.py +0 -0
  219. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/integration/whatsapp/adapter.py +0 -0
  220. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/knowledgebase/__init__.py +0 -0
  221. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/knowledgebase/base.py +0 -0
  222. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/knowledgebase/chroma.py +0 -0
  223. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/knowledgebase/document.py +0 -0
  224. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/knowledgebase/errors.py +0 -0
  225. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/knowledgebase/knowledgebuilder.py +0 -0
  226. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/knowledgebase/model.py +0 -0
  227. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/knowledgebase/neo4j.py +0 -0
  228. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/knowledgebase/okf/__init__.py +0 -0
  229. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/knowledgebase/okf/capability.py +0 -0
  230. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/knowledgebase/okf/manager.py +0 -0
  231. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/knowledgebase/okf/model.py +0 -0
  232. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/knowledgebase/okf/parser.py +0 -0
  233. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/knowledgebase/okf/prompts.py +0 -0
  234. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/knowledgebase/okf/roles.py +0 -0
  235. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/knowledgebase/okf/tools.py +0 -0
  236. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/knowledgebase/starburst.py +0 -0
  237. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/knowledgebase/store/__init__.py +0 -0
  238. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/knowledgebase/store/base.py +0 -0
  239. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/knowledgebase/store/local.py +0 -0
  240. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/knowledgebase/store/s3.py +0 -0
  241. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/knowledgebase/testing.py +0 -0
  242. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/langgraph.py +0 -0
  243. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/mcp.py +0 -0
  244. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/messenger.py +0 -0
  245. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/openai.py +0 -0
  246. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/__init__.py +0 -0
  247. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/integration_delivery.py +0 -0
  248. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/producer.py +0 -0
  249. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/response_store/__init__.py +0 -0
  250. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/response_store/base.py +0 -0
  251. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/response_store/dynamodb.py +0 -0
  252. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/response_store/factory.py +0 -0
  253. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/response_store/in_memory.py +0 -0
  254. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/response_store/redis.py +0 -0
  255. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/response_store/valkey.py +0 -0
  256. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/testing.py +0 -0
  257. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/thread_runner.py +0 -0
  258. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/transport/__init__.py +0 -0
  259. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/transport/base.py +0 -0
  260. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/transport/bookkeeping.py +0 -0
  261. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/transport/in_memory.py +0 -0
  262. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/transport/kafka.py +0 -0
  263. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/transport/nats.py +0 -0
  264. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/transport/sqs.py +0 -0
  265. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/ws/__init__.py +0 -0
  266. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/ws/base.py +0 -0
  267. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/ws/endpoint.py +0 -0
  268. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/ws/gateway.py +0 -0
  269. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/ws/handler.py +0 -0
  270. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/ws/push.py +0 -0
  271. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pipeline/ws/registry.py +0 -0
  272. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/pydanticai.py +0 -0
  273. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/__init__.py +0 -0
  274. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/base.py +0 -0
  275. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/broker/__init__.py +0 -0
  276. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/broker/base.py +0 -0
  277. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/broker/embedded.py +0 -0
  278. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/broker/queue.py +0 -0
  279. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/broker/queue_worker.py +0 -0
  280. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/broker/thread.py +0 -0
  281. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/broker/wire.py +0 -0
  282. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/broker/worker.py +0 -0
  283. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/errors.py +0 -0
  284. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/factory.py +0 -0
  285. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/hooks.py +0 -0
  286. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/manager.py +0 -0
  287. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/model.py +0 -0
  288. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/principal.py +0 -0
  289. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/providers/__init__.py +0 -0
  290. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/providers/daytona.py +0 -0
  291. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/providers/docker.py +0 -0
  292. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/providers/e2b.py +0 -0
  293. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/providers/ec2_ssm.py +0 -0
  294. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/providers/kubernetes.py +0 -0
  295. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/providers/local_subprocess.py +0 -0
  296. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/testing.py +0 -0
  297. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/sandbox/tools.py +0 -0
  298. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/schedule/__init__.py +0 -0
  299. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/schedule/errors.py +0 -0
  300. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/schedule/handler.py +0 -0
  301. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/schedule/manager.py +0 -0
  302. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/schedule/model.py +0 -0
  303. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/schedule/provider/__init__.py +0 -0
  304. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/schedule/provider/base.py +0 -0
  305. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/schedule/provider/eventbridge.py +0 -0
  306. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/schedule/provider/local.py +0 -0
  307. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/schedule/store/__init__.py +0 -0
  308. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/schedule/store/base.py +0 -0
  309. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/schedule/store/dynamodb.py +0 -0
  310. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/schedule/store/in_memory.py +0 -0
  311. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/schedule/store/redis.py +0 -0
  312. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/schedule/store/redis_like.py +0 -0
  313. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/schedule/store/valkey.py +0 -0
  314. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/schedule/timing.py +0 -0
  315. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/schedule/tools.py +0 -0
  316. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/secret/__init__.py +0 -0
  317. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/secret/base.py +0 -0
  318. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/secret/cache.py +0 -0
  319. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/secret/errors.py +0 -0
  320. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/secret/factory.py +0 -0
  321. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/secret/manager.py +0 -0
  322. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/secret/providers/__init__.py +0 -0
  323. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/secret/providers/aws_ssm.py +0 -0
  324. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/secret/providers/env.py +0 -0
  325. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/secret/testing.py +0 -0
  326. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/skills/__init__.py +0 -0
  327. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/skills/skills.py +0 -0
  328. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/slack.py +0 -0
  329. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/smolagents.py +0 -0
  330. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/teams.py +0 -0
  331. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/telegram.py +0 -0
  332. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/test/__init__.py +0 -0
  333. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/test/config.py +0 -0
  334. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/test/core/__init__.py +0 -0
  335. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/test/core/evaluator/__init__.py +0 -0
  336. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/test/core/evaluator/base.py +0 -0
  337. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/test/core/evaluator/deepeval.py +0 -0
  338. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/test/core/evaluator/jev.py +0 -0
  339. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/test/core/evaluator/opik.py +0 -0
  340. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/test/test.py +0 -0
  341. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/thread.py +0 -0
  342. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/__init__.py +0 -0
  343. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/base.py +0 -0
  344. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/cloudwatch/__init__.py +0 -0
  345. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/cloudwatch/adk.py +0 -0
  346. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/cloudwatch/cloudwatch.py +0 -0
  347. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/cloudwatch/crewai.py +0 -0
  348. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/cloudwatch/langgraph.py +0 -0
  349. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/cloudwatch/openai.py +0 -0
  350. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/cloudwatch/pydanticai.py +0 -0
  351. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/cloudwatch/sigv4.py +0 -0
  352. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/cloudwatch/smolagents.py +0 -0
  353. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/langfuse/__init__.py +0 -0
  354. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/langfuse/adk.py +0 -0
  355. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/langfuse/crewai.py +0 -0
  356. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/langfuse/langfuse.py +0 -0
  357. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/langfuse/langgraph.py +0 -0
  358. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/langfuse/openai.py +0 -0
  359. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/langfuse/pydanticai.py +0 -0
  360. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/langfuse/smolagents.py +0 -0
  361. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/logfire/__init__.py +0 -0
  362. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/logfire/adk.py +0 -0
  363. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/logfire/crewai.py +0 -0
  364. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/logfire/langgraph.py +0 -0
  365. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/logfire/logfire.py +0 -0
  366. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/logfire/openai.py +0 -0
  367. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/logfire/pydanticai.py +0 -0
  368. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/logfire/smolagents.py +0 -0
  369. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/openllmetry/__init__.py +0 -0
  370. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/openllmetry/adk.py +0 -0
  371. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/openllmetry/crewai.py +0 -0
  372. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/openllmetry/langgraph.py +0 -0
  373. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/openllmetry/openai.py +0 -0
  374. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/openllmetry/openllmetry.py +0 -0
  375. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/openllmetry/pydanticai.py +0 -0
  376. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/openllmetry/smolagents.py +0 -0
  377. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/trace/trace.py +0 -0
  378. {agentkernel-0.9.4 → agentkernel-0.9.5}/src/agentkernel/whatsapp.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: agentkernel
3
- Version: 0.9.4
3
+ Version: 0.9.5
4
4
  Summary: Agent Kernel - Unified AI Agents Runtime
5
5
  Author: Yaala Labs
6
6
  Author-email: Yaala Labs <agentkernel@yaalalabs.com>
@@ -52,6 +52,8 @@ Requires-Dist: langgraph-prebuilt~=1.1.0 ; extra == 'langgraph'
52
52
  Requires-Dist: langchain~=1.3.10 ; extra == 'langgraph'
53
53
  Requires-Dist: langchain-community~=0.4.1 ; extra == 'langgraph'
54
54
  Requires-Dist: litellm~=1.89.2 ; extra == 'langgraph'
55
+ Requires-Dist: livekit-api>=0.4.0 ; extra == 'livekit'
56
+ Requires-Dist: livekit>=0.18.0 ; extra == 'livekit'
55
57
  Requires-Dist: logfire>=3.0 ; extra == 'logfire'
56
58
  Requires-Dist: fastmcp>=3.2.0,<4.0.0 ; extra == 'mcp'
57
59
  Requires-Dist: httpx>=0.27.0 ; extra == 'messenger'
@@ -60,7 +62,7 @@ Requires-Dist: litellm>=1.74.9 ; extra == 'multimodal'
60
62
  Requires-Dist: python-multipart>=0.0.12 ; extra == 'multimodal'
61
63
  Requires-Dist: nats-py>=2.15.0 ; extra == 'nats'
62
64
  Requires-Dist: neo4j>=5.0.0 ; extra == 'neo4j'
63
- Requires-Dist: openai-agents>=0.7.0 ; extra == 'openai'
65
+ Requires-Dist: openai-agents>=0.20.0 ; extra == 'openai'
64
66
  Requires-Dist: openinference-instrumentation-openai-agents>=1.4.0 ; extra == 'openai'
65
67
  Requires-Dist: openai-guardrails>=0.2.1 ; extra == 'openai'
66
68
  Requires-Dist: traceloop-sdk>=0.61.0 ; extra == 'openllmetry'
@@ -118,6 +120,7 @@ Provides-Extra: kafka
118
120
  Provides-Extra: kubernetes
119
121
  Provides-Extra: langfuse
120
122
  Provides-Extra: langgraph
123
+ Provides-Extra: livekit
121
124
  Provides-Extra: logfire
122
125
  Provides-Extra: mcp
123
126
  Provides-Extra: messenger
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "agentkernel"
7
- version = "0.9.4"
7
+ version = "0.9.5"
8
8
  description = "Agent Kernel - Unified AI Agents Runtime"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12,<3.14"
@@ -61,6 +61,10 @@ pydanticai = [
61
61
  ]
62
62
  cli = [
63
63
 
64
+ ]
65
+ livekit = [
66
+ "livekit-api>=0.4.0",
67
+ "livekit>=0.18.0",
64
68
  ]
65
69
  aws = [
66
70
  "boto3>=1.41.4",
@@ -111,7 +115,7 @@ trino = [
111
115
  ]
112
116
 
113
117
  openai = [
114
- "openai-agents>=0.7.0",
118
+ "openai-agents>=0.20.0",
115
119
  "openinference-instrumentation-openai-agents>=1.4.0",
116
120
  "openai-guardrails>=0.2.1",
117
121
  ]
@@ -12,6 +12,7 @@ except importlib.metadata.PackageNotFoundError:
12
12
  __version__ = "0.1.0"
13
13
 
14
14
  from .base import Agent, Runner, RunOptionsFactory, Session
15
+ from .realtime import RealtimeRunner
15
16
  from .event import (
16
17
  MessageEnd,
17
18
  MessageStart,
@@ -34,6 +35,7 @@ from .model import (
34
35
  AgentRequestFile,
35
36
  AgentRequestImage,
36
37
  AgentRequestText,
38
+ AgentRequestVoice,
37
39
  AgentReply,
38
40
  AgentReplyAny,
39
41
  AgentReplyText,
@@ -8,7 +8,7 @@ import pickle
8
8
  from abc import ABC, abstractmethod
9
9
  from collections.abc import AsyncGenerator, Awaitable, Callable, Iterable, Iterator, Mapping
10
10
  from enum import Enum
11
- from typing import TYPE_CHECKING, Any, ClassVar, Self, cast
11
+ from typing import TYPE_CHECKING, Any, ClassVar, Self, Type, cast
12
12
 
13
13
  from .event import StreamEvent
14
14
  from .hooks import PostHook, PreHook
@@ -19,6 +19,9 @@ from .util.picklable import first_unpicklable_entry
19
19
  if TYPE_CHECKING:
20
20
  from .paused_run import PausedRun
21
21
 
22
+ if TYPE_CHECKING: # pragma: no cover: typing only; avoids a base <-> realtime import cycle
23
+ from .realtime import RealtimeRunner
24
+
22
25
  _log = logging.getLogger("ak.core.runner")
23
26
 
24
27
 
@@ -517,14 +520,16 @@ class Agent(ABC):
517
520
  """
518
521
  return cls.current_agent.get()
519
522
 
520
- def __init__(self, name: str, runner: Runner):
523
+ def __init__(self, name: str, runner: Runner, realtime_runner_cls: "Type[RealtimeRunner] | None" = None):
521
524
  """
522
525
  Initializes an Agent instance.
523
526
  :param name: Name of the agent.
524
527
  :param runner: Runner associated with the agent.
528
+ :param realtime_runner_cls: Optional realtime runner class for WebSocket connections.
525
529
  """
526
530
  self._name: str = name
527
531
  self._runner: Runner = runner
532
+ self._realtime_runner_cls: "Type[RealtimeRunner] | None" = realtime_runner_cls
528
533
  self._pre_hooks: list[PreHook] = []
529
534
  self._post_hooks: list[PostHook] = []
530
535
  self._run_options: dict[str, Any] = {}
@@ -551,6 +556,13 @@ class Agent(ABC):
551
556
  """
552
557
  return self._runner
553
558
 
559
+ @property
560
+ def realtime_runner_cls(self) -> "Type[RealtimeRunner] | None":
561
+ """
562
+ Returns the realtime runner class associated with the agent, if any.
563
+ """
564
+ return self._realtime_runner_cls
565
+
554
566
  @property
555
567
  def pre_hooks(self) -> list[PreHook]:
556
568
  """
@@ -249,6 +249,19 @@ class _GmailConfig(BaseModel):
249
249
  )
250
250
 
251
251
 
252
+ class _LiveKitConfig(BaseModel):
253
+ """LiveKit realtime voice gateway settings.
254
+
255
+ Bound like every other block, from YAML or ``AK_LIVEKIT__<FIELD>`` env vars (e.g.
256
+ ``AK_LIVEKIT__URL``, ``AK_LIVEKIT__API_KEY``, ``AK_LIVEKIT__API_SECRET``).
257
+ """
258
+
259
+ agent: str = Field(default="", description="Default agent to use for LiveKit interactions")
260
+ url: str = Field(default="", description="LiveKit server WebSocket URL")
261
+ api_key: str = Field(default="", description="LiveKit API Key")
262
+ api_secret: str = Field(default="", description="LiveKit API Secret")
263
+
264
+
252
265
  class _MultimodalStorageRedisConfig(_RedisConfig):
253
266
  ttl: int = Field(default=604800, description="Attachment TTL in seconds")
254
267
  prefix: str = Field(default="ak:attachments:", description="Key prefix for attachment keys")
@@ -652,10 +665,36 @@ class _LoggingConfig(BaseModel):
652
665
  system: _LogLevelConfig = Field(description="System logging configuration", default_factory=_LogLevelConfig)
653
666
 
654
667
 
668
+ class _RealtimeConfig(BaseModel):
669
+ """Realtime-mode playback pacing.
670
+
671
+ Outbound model audio is paced so the edge holds ``playback_lead_ms`` of audio ahead of
672
+ wall-clock. A larger lead absorbs the per-chunk latency and jitter of a store-and-forward
673
+ broker (SQS adds more than Kafka/NATS), trading a little added latency for smoother playback;
674
+ a small lead is right for a low-latency transport. Only read when ``execution.mode`` is
675
+ ``realtime``.
676
+ """
677
+
678
+ playback_lead_ms: int = Field(
679
+ default=50,
680
+ ge=0,
681
+ description="Audio buffered ahead of playback at the edge, in milliseconds (higher = smoother over higher-latency transports)",
682
+ )
683
+ input_batch_ms: int = Field(
684
+ default=100,
685
+ ge=0,
686
+ description="Mic audio batched into this many milliseconds per input-queue message; 0 passes every frame through (lowest input latency, many more messages)",
687
+ )
688
+
689
+
655
690
  class _ExecutionConfig(BaseModel):
656
691
  mode: Optional[ExecutionMode] = Field(
657
692
  default=None,
658
- description="Execution mode: rest_sync for synchronous REST, rest_async for asynchronous REST, stream for token streaming (WebSocket serverless or containerized direct streaming)",
693
+ description=(
694
+ "Execution mode: rest_sync for synchronous REST, rest_async for asynchronous REST, "
695
+ "stream for token streaming over WebSocket, async for whole-reply WebSocket delivery, "
696
+ "realtime for persistent realtime sockets (e.g. the LiveKit voice gateway)"
697
+ ),
659
698
  )
660
699
  # The default carries the transport type explicitly: `type` is mandatory inside a declared
661
700
  # queues block, and a config that declares no block at all still runs single-process on the
@@ -668,6 +707,10 @@ class _ExecutionConfig(BaseModel):
668
707
  default=None,
669
708
  description="Response storage configuration for async execution mode",
670
709
  )
710
+ realtime: _RealtimeConfig = Field(
711
+ default_factory=_RealtimeConfig,
712
+ description="Realtime execution playback pacing (used only when execution.mode is realtime)",
713
+ )
671
714
 
672
715
 
673
716
  class _SandboxIdentityConfig(BaseModel):
@@ -967,6 +1010,7 @@ class AKConfig(YamlBaseSettingsModified):
967
1010
  default_factory=_MCPConfig,
968
1011
  )
969
1012
  slack: _SlackConfig = Field(description="Slack related configurations", default_factory=_SlackConfig)
1013
+ livekit: _LiveKitConfig = Field(description="LiveKit related configurations", default_factory=_LiveKitConfig)
970
1014
  whatsapp: _WhatsAppConfig = Field(description="WhatsApp related configurations", default_factory=_WhatsAppConfig)
971
1015
  messenger: _MessengerConfig = Field(description="Facebook Messenger related configurations", default_factory=_MessengerConfig)
972
1016
  instagram: _InstagramConfig = Field(description="Instagram Business API related configurations", default_factory=_InstagramConfig)
@@ -131,6 +131,20 @@ class ReasoningEnd(StreamEventBase):
131
131
  message_id: str
132
132
 
133
133
 
134
+ class AudioDelta(StreamEventBase):
135
+ """A fragment of audio returned by the model."""
136
+
137
+ type: Literal["audio_delta"] = "audio_delta"
138
+ message_id: str
139
+ content: str
140
+
141
+
142
+ class Interrupt(StreamEventBase):
143
+ """The user interrupted the model's in-progress turn (barge-in)."""
144
+
145
+ type: Literal["interrupt"] = "interrupt"
146
+
147
+
134
148
  class PausedInterruption(BaseModel):
135
149
  """
136
150
  One thing a human must decide before a paused run can continue.
@@ -190,6 +204,8 @@ type StreamEvent = Annotated[
190
204
  ReasoningStart,
191
205
  ReasoningDelta,
192
206
  ReasoningEnd,
207
+ AudioDelta,
208
+ Interrupt,
193
209
  RunPaused,
194
210
  ],
195
211
  Field(discriminator="type"),
@@ -70,6 +70,23 @@ class AgentRequestAny(BaseModel):
70
70
  type: Literal["other"] = "other"
71
71
 
72
72
 
73
+ class AgentRequestVoice(BaseModel):
74
+ """
75
+ AgentRequestVoice encapsulates a voice request to an agent
76
+
77
+ audio_data: str : This should be base64 encoded string or url
78
+ name: str : name of the voice clip
79
+ type: Literal["voice"]
80
+ mime_type: str | None = None : Optional. The IANA standard MIME type of the voice clip
81
+ """
82
+
83
+ prompt: str = ""
84
+ audio_data: str
85
+ name: str
86
+ type: Literal["voice"] = "voice"
87
+ mime_type: str | None = None
88
+
89
+
73
90
  class AgentRequestAttachmentRef(BaseModel):
74
91
  """
75
92
  AgentRequestAttachmentRef references an attachment whose bytes are already
@@ -185,11 +202,15 @@ class AgentResumeRequestAny(_ResumeDecisions):
185
202
  type: Literal["resume"] = "resume"
186
203
 
187
204
 
188
- type AgentRequest = Union[AgentRequestText, AgentRequestFile, AgentRequestImage, AgentRequestAny, AgentRequestAttachmentRef, AgentResumeRequestAny]
205
+ type AgentRequest = Union[
206
+ AgentRequestText, AgentRequestFile, AgentRequestImage, AgentRequestVoice, AgentRequestAny, AgentRequestAttachmentRef, AgentResumeRequestAny
207
+ ]
189
208
  type AgentReply = Union[AgentReplyText, AgentReplyImage, AgentReplyAny]
190
209
 
191
210
  AgentRequestUnion = Annotated[
192
- Union[AgentRequestText, AgentRequestFile, AgentRequestImage, AgentRequestAny, AgentRequestAttachmentRef, AgentResumeRequestAny],
211
+ Union[
212
+ AgentRequestText, AgentRequestFile, AgentRequestImage, AgentRequestVoice, AgentRequestAny, AgentRequestAttachmentRef, AgentResumeRequestAny
213
+ ],
193
214
  Field(discriminator="type"),
194
215
  ]
195
216
 
@@ -273,14 +294,24 @@ class AgentPausedReplyAny(AgentReplyAny):
273
294
 
274
295
 
275
296
  class ExecutionMode(str, Enum):
276
- """
277
- Execution mode enumeration for Lambda function behavior.
297
+ """How a request is executed and how its reply is delivered.
298
+
299
+ The mode is a process-level configuration value (``execution.mode``), read wherever a
300
+ component must branch on it; it is never carried on a request.
301
+
302
+ - ``REST_SYNC`` / ``REST_ASYNC``: the reply is written to the response store and read back
303
+ over REST.
304
+ - ``ASYNC``: WebSocket delivery, whole replies.
305
+ - ``STREAM``: token streaming (``StreamAgentRunner``), delivered over WebSocket.
306
+ - ``REALTIME``: a persistent model socket (voice), streamed and delivered through an
307
+ integration adapter such as the LiveKit gateway.
278
308
  """
279
309
 
280
310
  REST_SYNC = "rest_sync"
281
311
  REST_ASYNC = "rest_async"
282
312
  STREAM = "stream"
283
313
  ASYNC = "async"
314
+ REALTIME = "realtime"
284
315
 
285
316
 
286
317
  class StreamChunk(BaseModel):
@@ -0,0 +1,8 @@
1
+ """Core building blocks for realtime (persistent-socket) execution.
2
+
3
+ The framework-agnostic contract every realtime adapter implements, plus the shared PCM16 helpers
4
+ (the edge sample rate and a resampler) the pipeline and the edge both use.
5
+ """
6
+
7
+ from .pcm import EDGE_SAMPLE_RATE, PCM16Resampler
8
+ from .runner import RealtimeRunner
@@ -0,0 +1,46 @@
1
+ """PCM16 audio helpers shared by the realtime edge and the framework adapters.
2
+
3
+ The realtime edge (e.g. the LiveKit gateway) carries PCM16 mono audio at a single rate in both
4
+ directions. A model adapter declares the rates its model wants, and the pipeline converts. Keeping
5
+ the rate and the resampler here gives every layer one source of truth, without naming any vendor.
6
+ """
7
+
8
+ import array
9
+ import sys
10
+
11
+ # PCM16 mono, in and out: the rate the realtime edge carries audio at end to end.
12
+ EDGE_SAMPLE_RATE = 24000
13
+
14
+
15
+ class PCM16Resampler:
16
+ """Converts little-endian mono PCM16 audio between sample rates.
17
+
18
+ The pipeline uses it at the one place each direction crosses a rate boundary: edge to model
19
+ input, and model output to edge, so no adapter resamples.
20
+ """
21
+
22
+ @staticmethod
23
+ def resample(data: bytes, source_rate: int, target_rate: int) -> bytes:
24
+ """Linearly resample ``data`` from ``source_rate`` to ``target_rate``."""
25
+ if not data or source_rate == target_rate:
26
+ return data
27
+ samples = array.array("h")
28
+ samples.frombytes(data[: len(data) - (len(data) % 2)])
29
+ if not samples:
30
+ return b""
31
+ if sys.byteorder == "big":
32
+ samples.byteswap()
33
+
34
+ ratio = source_rate / target_rate
35
+ out_count = int(len(samples) / ratio)
36
+ out = array.array("h", bytes(out_count * 2))
37
+ for i in range(out_count):
38
+ position = i * ratio
39
+ left = int(position)
40
+ right = min(left + 1, len(samples) - 1)
41
+ fraction = position - left
42
+ out[i] = int(samples[left] + (samples[right] - samples[left]) * fraction)
43
+
44
+ if sys.byteorder == "big":
45
+ out.byteswap()
46
+ return out.tobytes()
@@ -0,0 +1,119 @@
1
+ from __future__ import annotations
2
+
3
+ from abc import abstractmethod
4
+ from collections.abc import AsyncGenerator
5
+ from typing import TYPE_CHECKING, Any, Callable
6
+
7
+ from ..base import Agent, Runner, Session
8
+ from ..event import StreamEvent
9
+ from ..model import AgentReply, AgentRequest
10
+ from .pcm import EDGE_SAMPLE_RATE
11
+
12
+ if TYPE_CHECKING: # typing only; ..tool imports ..base, so this avoids a cycle
13
+ from ..tool import ToolContext
14
+
15
+
16
+ class RealtimeRunner(Runner):
17
+ """Base class for framework adapters handling realtime streaming via persistent
18
+ WebSocket/WebRTC connections (e.g. OpenAI Realtime API).
19
+
20
+ ``input_sample_rate`` and ``output_sample_rate`` are the PCM16 mono rates the model wants. The
21
+ pipeline converts between these and :data:`~agentkernel.core.realtime.pcm.EDGE_SAMPLE_RATE`, so
22
+ an adapter never resamples and no adapter hardcodes the edge's rate.
23
+
24
+ The realtime pool creates one instance per session connection, so an instance may keep that
25
+ connection's socket and state on ``self``. The pool owns everything around the model socket
26
+ (audio pacing, barge-in decisions, tool execution scopes, queue emission); an adapter only
27
+ talks to the model and reports what it does through the ``callback`` given to :meth:`connect`,
28
+ which is why an adapter never imports pipeline types.
29
+
30
+ Bring your own adapter by passing its class as ``realtime_runner_cls`` to the framework's
31
+ ``Module``.
32
+ """
33
+
34
+ input_sample_rate: int = EDGE_SAMPLE_RATE
35
+ output_sample_rate: int = EDGE_SAMPLE_RATE
36
+
37
+ async def run(self, agent: Any, session: Session, requests: list[AgentRequest]) -> AgentReply:
38
+ """Not supported for realtime runners."""
39
+ raise NotImplementedError("Realtime runners do not support unary run().")
40
+
41
+ async def stream(self, agent: Any, session: Session, requests: list[AgentRequest]) -> AsyncGenerator[StreamEvent, None]:
42
+ """Not supported for realtime runners."""
43
+ raise NotImplementedError("Realtime runners do not support unary stream().")
44
+ yield
45
+
46
+ @abstractmethod
47
+ async def connect(self, session: Session, agent: "Agent", callback: Callable) -> None:
48
+ """
49
+ Establishes a persistent socket connection to the framework's Realtime API backend.
50
+
51
+ The pool relies on these rules:
52
+
53
+ - Report model events through ``callback`` **in the order the model sent them**: the pool
54
+ paces audio and orders ``done`` / ``interrupt`` behind it on that basis.
55
+ - ``callback`` is a coroutine function; await every call.
56
+ - If connecting fails, close anything already opened before raising: the pool drops a
57
+ connection that failed to connect without calling :meth:`disconnect`.
58
+ - Report a socket that fails while connected as ``error``, but not a close caused by
59
+ :meth:`disconnect`.
60
+
61
+ :param session: The session to bind this connection to.
62
+ :param agent: The agent instance.
63
+ :param callback: The event callback from the pool, awaited as ``callback(event_type, data)``:
64
+
65
+ - ``audio_delta``: ``{"delta": <base64 PCM16 at output_sample_rate>, "message_id": str}``
66
+ - ``transcript_delta``: ``{"delta": <text>, "message_id": str}``
67
+ - ``tool_call``: ``{"call_id": str, "name": str, "arguments": <JSON string>}``; the pool
68
+ then calls :meth:`execute_tool` and :meth:`send_tool_result`
69
+ - ``done``: ``{"status": ...}``, the end of a model turn
70
+ - ``error``: ``{"message": str}``, the socket failed; the pool tells the user and
71
+ replaces the connection
72
+ - ``interrupt``: ``{}``, the user spoke while the model was responding
73
+ - ``speech_started``: ``{}``, the user spoke outside a response; the pool treats it as a
74
+ barge-in only while it still holds audio the user has not heard
75
+ """
76
+ raise NotImplementedError()
77
+
78
+ @abstractmethod
79
+ async def append_audio(self, base64_audio: str) -> None:
80
+ """Appends audio to the model's input buffer, at :attr:`input_sample_rate`."""
81
+ raise NotImplementedError()
82
+
83
+ @abstractmethod
84
+ async def send_text(self, text: str) -> None:
85
+ """Sends a text message and requests a response."""
86
+ raise NotImplementedError()
87
+
88
+ @abstractmethod
89
+ async def send_tool_result(self, call_id: str, result: str) -> None:
90
+ """Sends a tool execution result back to the model."""
91
+ raise NotImplementedError()
92
+
93
+ @abstractmethod
94
+ async def execute_tool(self, name: str, arguments: str, context: "ToolContext", call_id: str) -> str:
95
+ """Executes the named tool with JSON ``arguments`` and returns its string result.
96
+
97
+ Owned by the adapter because both the tool object and the context it needs are
98
+ framework-native: the OpenAI SDK expects its own ``ToolContext`` built around the run
99
+ context, and ADK injects a ``ToolContext`` (session state, actions) into tools that
100
+ declare one. The adapter activates ``context`` the way its framework expects; the
101
+ caller only constructs it.
102
+
103
+ :param name: Tool name, matching the model's function call.
104
+ :param arguments: Raw JSON argument string the model emitted.
105
+ :param context: The Agent Kernel tool context for this call.
106
+ :param call_id: The model's function-call id (frameworks correlate the response by it).
107
+ :return: The tool result as a string.
108
+ """
109
+ raise NotImplementedError()
110
+
111
+ @abstractmethod
112
+ async def disconnect(self) -> None:
113
+ """
114
+ Closes the active persistent socket connection.
115
+
116
+ Must be safe to call more than once, and after a :meth:`connect` that failed or never ran:
117
+ the pool calls it on idle eviction, on a failed socket, and at shutdown.
118
+ """
119
+ raise NotImplementedError()
@@ -6,6 +6,9 @@ import logging
6
6
  from ....core.chat_service import ChatService
7
7
  from ....core.config import AKConfig, ExecutionMode
8
8
  from ....core.model import BaseRunRequest, StreamChunk
9
+ from ....pipeline.realtime_pool import RealtimeConnectionPool
10
+ from ....pipeline.thread_runner import ThreadRunner
11
+ from ....pipeline.transport.base import QueueTransportFactory
9
12
  from ..core.sqs_handler import SQSHandler
10
13
  from .core import ECSSQSConsumer
11
14
 
@@ -163,10 +166,13 @@ class ECSAgentRunner(ECSSQSConsumer):
163
166
 
164
167
  @classmethod
165
168
  def run(cls) -> None:
166
- """Dispatch to ECSStreamAgentRunner when execution.mode is STREAM."""
169
+ """Dispatch to ECSStreamAgentRunner or ECSRealtimeAgentRunner based on execution.mode."""
167
170
  # cls check avoids redirect loops when a subclass (e.g. ECSStreamAgentRunner) calls this via inheritance.
168
- if cls is ECSAgentRunner and cls._config.execution.mode == ExecutionMode.STREAM:
169
- return ECSStreamAgentRunner.run()
171
+ if cls is ECSAgentRunner:
172
+ if cls._config.execution.mode == ExecutionMode.STREAM:
173
+ return ECSStreamAgentRunner.run()
174
+ elif cls._config.execution.mode == ExecutionMode.REALTIME:
175
+ return ECSRealtimeAgentRunner.run()
170
176
  return super().run()
171
177
 
172
178
 
@@ -277,3 +283,50 @@ class ECSStreamAgentRunner(ECSAgentRunner):
277
283
  )
278
284
  except Exception:
279
285
  cls._log.exception("Failed to send permanent-failure stream chunk to output queue")
286
+
287
+
288
+ class ECSRealtimeAgentRunner(ECSAgentRunner):
289
+ """
290
+ ECS Agent Runner for REALTIME execution mode — polls the Input Queue and forwards
291
+ audio/text chunks to the RealtimeConnectionPool.
292
+
293
+ The ECS equivalent of pipeline.agent_runner.RealtimeAgentRunner.
294
+ """
295
+
296
+ _log = logging.getLogger("ak.ecs.realtimeagentrunner")
297
+
298
+ @classmethod
299
+ def _get_extra_tasks(cls) -> list[ThreadRunner.Task]:
300
+ pool = RealtimeConnectionPool.initialize()
301
+ return [pool.get_task()]
302
+
303
+ @classmethod
304
+ def on_permanent_failure(cls, record: dict) -> None:
305
+ """Tell the room its input failed, as a marked error chunk its edge can deliver. Catches own exceptions."""
306
+ cls._log.error(f"Permanent failure for message {record.get('MessageId')}")
307
+ try:
308
+ record_attributes = cls._get_record_attributes(raw_queue_message=record)
309
+ attributes = {**SQSHandler.get_message_custom_attributes(record), "request_id": record_attributes["request_id"]}
310
+ if record_attributes.get("user_id"):
311
+ attributes["user_id"] = record_attributes["user_id"]
312
+ dedup_id = record_attributes.get("message_deduplication_id")
313
+ RealtimeConnectionPool.send_permanent_failure(
314
+ QueueTransportFactory.create(),
315
+ attributes,
316
+ record_attributes["message_group_id"],
317
+ f"{dedup_id}-error" if dedup_id else None,
318
+ f"Failed to process message after {cls._config.execution.queues.input.max_receive_count} retries",
319
+ )
320
+ except Exception:
321
+ cls._log.exception("Failed to send permanent-failure error chunk to output queue")
322
+
323
+ @classmethod
324
+ def process_message(cls, record: dict) -> None:
325
+ receive_count = record.get("Attributes", {}).get("ApproximateReceiveCount", "1")
326
+ body = BaseRunRequest.model_validate(json.loads(record["Body"]))
327
+ record_attributes = cls._get_record_attributes(raw_queue_message=record, body=body)
328
+ request_id = record_attributes["request_id"]
329
+ RealtimeConnectionPool.initialize().dispatch(
330
+ body, request_id, record_attributes.get("user_id"), SQSHandler.get_message_custom_attributes(record), cls._get_chat_service()
331
+ )
332
+ cls._log.debug(f"[REALTIME CHUNK] request_id={request_id} (receive_count={receive_count})")
@@ -13,6 +13,7 @@ import boto3
13
13
  from .....core.config import AKConfig
14
14
  from .....pipeline.consumer import ConsumerLoop
15
15
  from .....pipeline.envelope import QueueMessage
16
+ from .....pipeline.thread_runner import ThreadRunner
16
17
  from .....pipeline.transport.base import TransportConsumer
17
18
  from ...core.raw_queue_consumer import RawQueueConsumer
18
19
 
@@ -155,6 +156,11 @@ class ECSSQSConsumer(RawQueueConsumer):
155
156
  else:
156
157
  cls.process_message(record)
157
158
 
159
+ @classmethod
160
+ def _get_extra_tasks(cls) -> List[ThreadRunner.Task]:
161
+ """Additional background tasks to run alongside the queue consumers."""
162
+ return []
163
+
158
164
  @classmethod
159
165
  def _build_consumer_loop(cls) -> ConsumerLoop:
160
166
  """Bind a ConsumerLoop to this class's SQS surface; built per call so subclass overrides apply."""
@@ -167,6 +173,7 @@ class ECSSQSConsumer(RawQueueConsumer):
167
173
  consumer_factory=lambda: _ECSRecordConsumer(cls),
168
174
  thread_name_prefix="sqs-consumer",
169
175
  logger=cls._log,
176
+ extra_tasks=cls._get_extra_tasks(),
170
177
  )
171
178
 
172
179
  @classmethod
@@ -13,4 +13,4 @@ try:
13
13
  except importlib.metadata.PackageNotFoundError:
14
14
  __version__ = "0.1.0"
15
15
 
16
- from .adk import GoogleADKModule, GoogleADKToolBuilder
16
+ from .adk import GoogleADKModule, GoogleADKRealtimeRunner, GoogleADKToolBuilder