agentkernel 0.2.13__tar.gz → 0.3.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 (152) hide show
  1. {agentkernel-0.2.13 → agentkernel-0.3.0}/PKG-INFO +159 -5
  2. {agentkernel-0.2.13 → agentkernel-0.3.0}/README.md +154 -4
  3. {agentkernel-0.2.13 → agentkernel-0.3.0}/pyproject.toml +10 -1
  4. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/api/handler.py +2 -4
  5. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/auth/handler.py +6 -4
  6. agentkernel-0.3.0/src/agentkernel/auth.py +1 -0
  7. agentkernel-0.3.0/src/agentkernel/cli/ak.py +258 -0
  8. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/core/__init__.py +1 -1
  9. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/core/base.py +36 -69
  10. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/core/config.py +94 -2
  11. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/core/model.py +64 -2
  12. agentkernel-0.3.0/src/agentkernel/core/multimodal/__init__.py +11 -0
  13. agentkernel-0.3.0/src/agentkernel/core/multimodal/factory.py +32 -0
  14. agentkernel-0.3.0/src/agentkernel/core/multimodal/hooks.py +244 -0
  15. agentkernel-0.3.0/src/agentkernel/core/multimodal/storage/__init__.py +8 -0
  16. agentkernel-0.3.0/src/agentkernel/core/multimodal/storage/base.py +59 -0
  17. agentkernel-0.3.0/src/agentkernel/core/multimodal/storage/dynamodb.py +186 -0
  18. agentkernel-0.3.0/src/agentkernel/core/multimodal/storage/in_memory.py +80 -0
  19. agentkernel-0.3.0/src/agentkernel/core/multimodal/storage/redis.py +159 -0
  20. agentkernel-0.3.0/src/agentkernel/core/multimodal/storage/session_cache.py +74 -0
  21. agentkernel-0.3.0/src/agentkernel/core/multimodal/storage/storage_manager.py +155 -0
  22. agentkernel-0.3.0/src/agentkernel/core/multimodal/tools.py +84 -0
  23. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/core/runtime.py +2 -59
  24. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/core/tool.py +45 -4
  25. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/deployment/aws/__init__.py +1 -2
  26. agentkernel-0.3.0/src/agentkernel/deployment/aws/core/__init__.py +3 -0
  27. agentkernel-0.3.0/src/agentkernel/deployment/aws/core/response_store/__init__.py +1 -0
  28. agentkernel-0.3.0/src/agentkernel/deployment/aws/core/response_store/dynamodb.py +39 -0
  29. agentkernel-0.3.0/src/agentkernel/deployment/aws/core/response_store/handler.py +88 -0
  30. agentkernel-0.3.0/src/agentkernel/deployment/aws/core/response_store/redis.py +41 -0
  31. agentkernel-0.3.0/src/agentkernel/deployment/aws/core/sqs_handler.py +216 -0
  32. agentkernel-0.3.0/src/agentkernel/deployment/aws/serverless/__init__.py +4 -0
  33. agentkernel-0.3.0/src/agentkernel/deployment/aws/serverless/akagentrunner.py +119 -0
  34. {agentkernel-0.2.13/src/agentkernel/deployment/aws → agentkernel-0.3.0/src/agentkernel/deployment/aws/serverless}/akauthorizer.py +1 -1
  35. {agentkernel-0.2.13/src/agentkernel/deployment/aws → agentkernel-0.3.0/src/agentkernel/deployment/aws/serverless}/aklambda.py +47 -103
  36. agentkernel-0.3.0/src/agentkernel/deployment/aws/serverless/akresponsehandler.py +88 -0
  37. agentkernel-0.3.0/src/agentkernel/deployment/aws/serverless/core/__init__.py +1 -0
  38. agentkernel-0.3.0/src/agentkernel/deployment/aws/serverless/core/default_endpoints.py +295 -0
  39. agentkernel-0.3.0/src/agentkernel/deployment/aws/serverless/core/sqs_consumer.py +72 -0
  40. agentkernel-0.3.0/src/agentkernel/deployment/azure/akfunction.py +72 -0
  41. agentkernel-0.3.0/src/agentkernel/deployment/common/chat_service.py +142 -0
  42. agentkernel-0.3.0/src/agentkernel/deployment/common/response_store.py +63 -0
  43. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/framework/adk/adk.py +25 -0
  44. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/framework/crewai/crewai.py +24 -0
  45. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/framework/langgraph/langgraph.py +46 -4
  46. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/framework/openai/openai.py +25 -0
  47. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/guardrail/guardrail.py +8 -0
  48. agentkernel-0.3.0/src/agentkernel/guardrail/walledai.py +230 -0
  49. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/integration/gmail/README.md +5 -3
  50. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/integration/instagram/README.md +31 -5
  51. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/integration/instagram/instagram_chat.py +101 -11
  52. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/integration/messenger/README.md +75 -22
  53. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/integration/messenger/messenger_chat.py +107 -11
  54. agentkernel-0.3.0/src/agentkernel/integration/teams/README.md +102 -0
  55. agentkernel-0.3.0/src/agentkernel/integration/teams/__init__.py +14 -0
  56. agentkernel-0.3.0/src/agentkernel/integration/teams/teams_chat.py +300 -0
  57. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/integration/telegram/README.md +60 -4
  58. agentkernel-0.3.0/src/agentkernel/integration/telegram/telegram_chat.py +497 -0
  59. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/integration/whatsapp/README.md +13 -6
  60. agentkernel-0.3.0/src/agentkernel/skills/__init__.py +7 -0
  61. agentkernel-0.3.0/src/agentkernel/skills/ak-add-capabilities/SKILL.md +539 -0
  62. agentkernel-0.3.0/src/agentkernel/skills/ak-add-capabilities/evals/evals.json +204 -0
  63. agentkernel-0.3.0/src/agentkernel/skills/ak-add-integration/SKILL.md +338 -0
  64. agentkernel-0.3.0/src/agentkernel/skills/ak-add-integration/evals/evals.json +100 -0
  65. agentkernel-0.3.0/src/agentkernel/skills/ak-build/SKILL.md +378 -0
  66. agentkernel-0.3.0/src/agentkernel/skills/ak-build/evals/evals.json +177 -0
  67. agentkernel-0.3.0/src/agentkernel/skills/ak-cloud-deploy/SKILL.md +381 -0
  68. agentkernel-0.3.0/src/agentkernel/skills/ak-cloud-deploy/evals/evals.json +133 -0
  69. agentkernel-0.3.0/src/agentkernel/skills/ak-init/SKILL.md +346 -0
  70. agentkernel-0.3.0/src/agentkernel/skills/ak-init/evals/evals.json +142 -0
  71. agentkernel-0.3.0/src/agentkernel/skills/ak-test/SKILL.md +330 -0
  72. agentkernel-0.3.0/src/agentkernel/skills/ak-test/evals/evals.json +131 -0
  73. agentkernel-0.3.0/src/agentkernel/skills/skills.py +197 -0
  74. agentkernel-0.3.0/src/agentkernel/teams.py +8 -0
  75. agentkernel-0.3.0/src/agentkernel/trace/openllmetry/__init__.py +0 -0
  76. agentkernel-0.2.13/src/agentkernel/deployment/azure/akfunction.py +0 -149
  77. agentkernel-0.2.13/src/agentkernel/integration/telegram/telegram_chat.py +0 -297
  78. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/__init__.py +0 -0
  79. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/adk.py +0 -0
  80. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/api/__init__.py +0 -0
  81. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/api/a2a/__init__.py +0 -0
  82. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/api/a2a/a2a.py +0 -0
  83. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/api/a2a/handler.py +0 -0
  84. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/api/http.py +0 -0
  85. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/api/mcp/__init__.py +0 -0
  86. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/api/mcp/akmcp.py +0 -0
  87. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/auth/__init__.py +0 -0
  88. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/aws.py +0 -0
  89. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/azure.py +0 -0
  90. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/cli/__init__.py +0 -0
  91. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/cli/cli.py +0 -0
  92. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/core/builder.py +0 -0
  93. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/core/hooks.py +0 -0
  94. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/core/module.py +0 -0
  95. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/core/service.py +0 -0
  96. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/core/session/__init__.py +0 -0
  97. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/core/session/base.py +0 -0
  98. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/core/session/cosmosdb.py +0 -0
  99. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/core/session/dynamodb.py +0 -0
  100. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/core/session/in_memory.py +0 -0
  101. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/core/session/redis.py +0 -0
  102. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/core/session/serde.py +0 -0
  103. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/core/util/config_yaml_util.py +0 -0
  104. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/core/util/key_value_cache.py +0 -0
  105. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/crewai.py +0 -0
  106. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/deployment/__init__.py +0 -0
  107. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/deployment/azure/__init__.py +0 -0
  108. {agentkernel-0.2.13/src/agentkernel/framework → agentkernel-0.3.0/src/agentkernel/deployment/common}/__init__.py +0 -0
  109. {agentkernel-0.2.13/src/agentkernel/guardrail → agentkernel-0.3.0/src/agentkernel/framework}/__init__.py +0 -0
  110. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/framework/adk/__init__.py +0 -0
  111. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/framework/crewai/__init__.py +0 -0
  112. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/framework/langgraph/__init__.py +0 -0
  113. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/framework/openai/__init__.py +0 -0
  114. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/gmail.py +0 -0
  115. {agentkernel-0.2.13/src/agentkernel/trace/langfuse → agentkernel-0.3.0/src/agentkernel/guardrail}/__init__.py +0 -0
  116. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/guardrail/bedrock.py +0 -0
  117. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/guardrail/openai.py +0 -0
  118. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/instagram.py +0 -0
  119. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/integration/__init__.py +0 -0
  120. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/integration/gmail/__init__.py +0 -0
  121. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/integration/gmail/gmail_chat.py +0 -0
  122. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/integration/instagram/__init__.py +0 -0
  123. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/integration/messenger/__init__.py +0 -0
  124. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/integration/slack/README.md +0 -0
  125. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/integration/slack/__init__.py +0 -0
  126. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/integration/slack/slack_chat.py +0 -0
  127. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/integration/telegram/__init__.py +0 -0
  128. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/integration/whatsapp/__init__.py +0 -0
  129. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/integration/whatsapp/whatsapp_chat.py +0 -0
  130. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/langgraph.py +0 -0
  131. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/mcp.py +0 -0
  132. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/messenger.py +0 -0
  133. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/openai.py +0 -0
  134. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/slack.py +0 -0
  135. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/telegram.py +0 -0
  136. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/test/__init__.py +0 -0
  137. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/test/test.py +0 -0
  138. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/trace/__init__.py +0 -0
  139. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/trace/base.py +0 -0
  140. {agentkernel-0.2.13/src/agentkernel/trace/openllmetry → agentkernel-0.3.0/src/agentkernel/trace/langfuse}/__init__.py +0 -0
  141. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/trace/langfuse/adk.py +0 -0
  142. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/trace/langfuse/crewai.py +0 -0
  143. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/trace/langfuse/langfuse.py +0 -0
  144. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/trace/langfuse/langgraph.py +0 -0
  145. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/trace/langfuse/openai.py +0 -0
  146. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/trace/openllmetry/adk.py +0 -0
  147. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/trace/openllmetry/crewai.py +0 -0
  148. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/trace/openllmetry/langgraph.py +0 -0
  149. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/trace/openllmetry/openai.py +0 -0
  150. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/trace/openllmetry/openllmetry.py +0 -0
  151. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/trace/trace.py +0 -0
  152. {agentkernel-0.2.13 → agentkernel-0.3.0}/src/agentkernel/whatsapp.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: agentkernel
3
- Version: 0.2.13
3
+ Version: 0.3.0
4
4
  Summary: Agent Kernel - Unified AI Agents Runtime
5
5
  Author: Yaala Labs
6
6
  Author-email: Yaala Labs <agentkernel@yaalalabs.com>
@@ -38,6 +38,7 @@ Requires-Dist: langchain-community~=0.4.1 ; extra == 'langgraph'
38
38
  Requires-Dist: litellm~=1.74.9 ; extra == 'langgraph'
39
39
  Requires-Dist: fastmcp>=2.12.4 ; extra == 'mcp'
40
40
  Requires-Dist: httpx>=0.27.0 ; extra == 'messenger'
41
+ Requires-Dist: litellm>=1.74.9 ; extra == 'multimodal'
41
42
  Requires-Dist: openai-agents>=0.6.5 ; extra == 'openai'
42
43
  Requires-Dist: openinference-instrumentation-openai-agents>=1.4.0 ; extra == 'openai'
43
44
  Requires-Dist: openai-guardrails>=0.2.1 ; extra == 'openai'
@@ -56,6 +57,7 @@ Requires-Dist: ragas>=0.4.1 ; extra == 'test'
56
57
  Requires-Dist: datasets>=2.14.0 ; extra == 'test'
57
58
  Requires-Dist: pandas>=2.0.0 ; extra == 'test'
58
59
  Requires-Dist: litellm>=1.74.9 ; extra == 'test'
60
+ Requires-Dist: walledai>=4.9.3 ; extra == 'walledai'
59
61
  Requires-Dist: httpx>=0.27.0 ; extra == 'whatsapp'
60
62
  Requires-Python: >=3.12, <3.14
61
63
  Provides-Extra: a2a
@@ -72,12 +74,14 @@ Provides-Extra: langfuse
72
74
  Provides-Extra: langgraph
73
75
  Provides-Extra: mcp
74
76
  Provides-Extra: messenger
77
+ Provides-Extra: multimodal
75
78
  Provides-Extra: openai
76
79
  Provides-Extra: openllmetry
77
80
  Provides-Extra: redis
78
81
  Provides-Extra: slack
79
82
  Provides-Extra: telegram
80
83
  Provides-Extra: test
84
+ Provides-Extra: walledai
81
85
  Provides-Extra: whatsapp
82
86
  Description-Content-Type: text/markdown
83
87
 
@@ -261,6 +265,32 @@ OpenAIModule([assistant])
261
265
  handler = Lambda.handler
262
266
  ```
263
267
 
268
+ **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.**
269
+
270
+ 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.
271
+
272
+ Accepted payloads:
273
+
274
+ ```json
275
+ {
276
+ "prompt": "Hello agent",
277
+ "agent": "assistant",
278
+ "session_id": "user-123"
279
+ }
280
+ ```
281
+
282
+ ```json
283
+ {
284
+ "request_id": "req-123",
285
+ "user_id": "user-123",
286
+ "body": {
287
+ "prompt": "Hello agent",
288
+ "agent": "assistant",
289
+ "session_id": "user-123"
290
+ }
291
+ }
292
+ ```
293
+
264
294
  ### Azure Functions Deployment
265
295
 
266
296
  Deploy your agents as Azure Functions using the built-in Azure handler.
@@ -282,11 +312,18 @@ handler = AzureFunctions.handler
282
312
 
283
313
  ```json
284
314
  {
285
- "prompt": "Hello agent",
286
- "agent": "assistant"
315
+ "request_id": "req-123",
316
+ "user_id": "user-123",
317
+ "body": {
318
+ "prompt": "Hello agent",
319
+ "agent": "assistant",
320
+ "session_id": "user-123"
321
+ }
287
322
  }
288
323
  ```
289
324
 
325
+ Azure Functions also accepts the normalized envelope, and flat run payloads are normalized in the same way before the request reaches the agent runtime.
326
+
290
327
  **Response Format:**
291
328
 
292
329
  ```json
@@ -367,6 +404,72 @@ Required when `session.type=redis`:
367
404
  - **Description**: Key prefix for session storage
368
405
  - **Environment Variable**: `AK_SESSION__REDIS__PREFIX`
369
406
 
407
+ #### Execution Configuration
408
+
409
+ Configure queue-backed and serverless execution behavior.
410
+
411
+ - **Execution Mode**
412
+ - **Field**: `execution.mode`
413
+ - **Options**: `rest_sync`, `rest_async`, `stream`, `async`
414
+ - **Default**: `None`
415
+ - **Description**: Selects the Lambda execution mode
416
+ - **Environment Variable**: `AK_EXECUTION__MODE`
417
+
418
+ - **Queues**
419
+ - **Field**: `execution.queues`
420
+ - **Description**: Queue settings used by serverless execution modes
421
+
422
+ - **Input Queue URL**
423
+ - **Field**: `execution.queues.input.url`
424
+ - **Default**: `None`
425
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__INPUT__URL`
426
+
427
+ - **Output Queue URL**
428
+ - **Field**: `execution.queues.output.url`
429
+ - **Default**: `None`
430
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__OUTPUT__URL`
431
+
432
+ - **Input Queue Max Receive Count**
433
+ - **Field**: `execution.queues.input.max_receive_count`
434
+ - **Default**: `3`
435
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__INPUT__MAX_RECEIVE_COUNT`
436
+
437
+ - **Output Queue Max Receive Count**
438
+ - **Field**: `execution.queues.output.max_receive_count`
439
+ - **Default**: `3`
440
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__OUTPUT__MAX_RECEIVE_COUNT`
441
+
442
+ - **Response Store**
443
+ - **Field**: `execution.response_store`
444
+ - **Description**: Response persistence settings used by the serverless response handler
445
+
446
+ - **Type**
447
+ - **Field**: `execution.response_store.type`
448
+ - **Description**: Response store backend selector configured in `config.yaml`; this value is not exported as an environment variable
449
+
450
+ - **Retry Count**
451
+ - **Field**: `execution.response_store.retry_count`
452
+ - **Default**: `5`
453
+ - **Description**: Number of lookup attempts when polling for a response
454
+ - **Environment Variable**: `AK_EXECUTION__RESPONSE_STORE__RETRY_COUNT`
455
+
456
+ - **Delay**
457
+ - **Field**: `execution.response_store.delay`
458
+ - **Default**: `5`
459
+ - **Description**: Delay in seconds between response lookup attempts
460
+ - **Environment Variable**: `AK_EXECUTION__RESPONSE_STORE__DELAY`
461
+
462
+ - **Redis Backend**
463
+ - **Field**: `execution.response_store.redis`
464
+ - **Environment Variables**: `AK_EXECUTION__RESPONSE_STORE__REDIS__URL`, `AK_EXECUTION__RESPONSE_STORE__REDIS__PREFIX`, `AK_EXECUTION__RESPONSE_STORE__REDIS__TTL`
465
+
466
+ - **DynamoDB Backend**
467
+ - **Field**: `execution.response_store.dynamodb`
468
+ - **Environment Variables**: `AK_EXECUTION__RESPONSE_STORE__DYNAMODB__TABLE_NAME`, `AK_EXECUTION__RESPONSE_STORE__DYNAMODB__TTL`
469
+ - **Description**: DynamoDB-backed response storage with table name and TTL
470
+
471
+ Use either Redis or DynamoDB for the response store backend. The runtime accepts `BaseRunRequest` payloads directly, normalizes them internally when queueing is required, and uses `request_id` plus optional `user_id` as SQS message attributes.
472
+
370
473
  #### API Configuration
371
474
 
372
475
  Configure the REST API server (if using the API module).
@@ -561,7 +664,7 @@ Configure input and output guardrails to validate agent requests and responses f
561
664
  - **Type**
562
665
  - **Field**: `guardrail.input.type`
563
666
  - **Default**: `openai`
564
- - **Options**: `openai`, `bedrock`
667
+ - **Options**: `openai`, `bedrock`, `walledai`
565
668
  - **Description**: Guardrail provider type
566
669
  - **Environment Variable**: `AK_GUARDRAIL__INPUT__TYPE`
567
670
 
@@ -599,7 +702,7 @@ Configure input and output guardrails to validate agent requests and responses f
599
702
  - **Type**
600
703
  - **Field**: `guardrail.output.type`
601
704
  - **Default**: `openai`
602
- - **Options**: `openai`, `bedrock`
705
+ - **Options**: `openai`, `bedrock`, `walledai`
603
706
  - **Description**: Guardrail provider type
604
707
  - **Environment Variable**: `AK_GUARDRAIL__OUTPUT__TYPE`
605
708
 
@@ -641,12 +744,20 @@ To use AWS Bedrock guardrails, install the AWS package:
641
744
  pip install agentkernel[aws]
642
745
  ```
643
746
 
747
+ To use Walled AI guardrails, install the Walled AI package:
748
+
749
+ ```bash
750
+ pip install agentkernel[walledai]
751
+ ```
752
+
644
753
  Create guardrail configuration:
645
754
 
646
755
  **For OpenAI:** Create configuration files following the [OpenAI Guardrails format](https://guardrails.openai.com/).
647
756
 
648
757
  **For Bedrock:** Create a guardrail in AWS Bedrock and note the guardrail ID and version.
649
758
 
759
+ **For Walled AI:** Set `WALLED_API_KEY`, use guardrail type `walledai`, and control PII masking with `pii`.
760
+
650
761
  Configure guardrails in your configuration:
651
762
 
652
763
  **OpenAI Example:**
@@ -679,6 +790,19 @@ guardrail:
679
790
  version: "1"
680
791
  ```
681
792
 
793
+ **Walled AI Example:**
794
+ ```yaml
795
+ guardrail:
796
+ input:
797
+ enabled: true
798
+ type: walledai
799
+ pii: true
800
+ output:
801
+ enabled: true
802
+ type: walledai
803
+ pii: true
804
+ ```
805
+
682
806
  #### Messaging Platform Integrations
683
807
 
684
808
  Configure integrations with messaging platforms.
@@ -789,6 +913,11 @@ export AK_GUARDRAIL__OUTPUT__ENABLED=false
789
913
  export AK_GUARDRAIL__OUTPUT__TYPE=openai
790
914
  export AK_GUARDRAIL__OUTPUT__MODEL=gpt-4o-mini
791
915
  export AK_GUARDRAIL__OUTPUT__CONFIG_PATH=/path/to/guardrails_output.json
916
+ # Walled AI guardrails
917
+ export WALLED_API_KEY=your-walledai-api-key
918
+ export AK_GUARDRAIL__INPUT__PII=true
919
+ export AK_GUARDRAIL__OUTPUT__PII=true
920
+ export AK_DEBUG=true
792
921
  # Messaging platforms (optional)
793
922
  export AK_SLACK__AGENT=my-agent
794
923
  export AK_WHATSAPP__AGENT=my-agent
@@ -834,6 +963,27 @@ session:
834
963
  url: redis://localhost:6379
835
964
  ttl: 604800
836
965
  prefix: "ak:sessions:"
966
+ execution:
967
+ mode: rest_sync
968
+ queues:
969
+ input:
970
+ url: https://sqs.<region>.amazonaws.com/<accountno>/<queuename>
971
+ max_receive_count: 3
972
+ output:
973
+ url: https://sqs.<region>.amazonaws.com/<accountno>/<queuename>
974
+ max_receive_count: 3
975
+ response_store:
976
+ type: redis
977
+ retry_count: 5
978
+ delay: 5
979
+ redis: # if this is given, then dynamodb response store part cannot be given
980
+ url: redis://localhost:6379
981
+ prefix: "ak:responses:"
982
+ ttl: 3600
983
+ dynamodb: # if this is given, then redis response store part cannot be given
984
+ table_name: table-name
985
+ table_arn: table-arn
986
+ ttl: 3600
837
987
  api:
838
988
  host: 0.0.0.0
839
989
  port: 8000
@@ -862,13 +1012,17 @@ guardrail:
862
1012
  input:
863
1013
  enabled: false
864
1014
  type: openai
1015
+ pii: true
865
1016
  model: gpt-4o-mini
866
1017
  config_path: /path/to/guardrails_input.json
867
1018
  output:
868
1019
  enabled: false
869
1020
  type: openai
1021
+ pii: true
870
1022
  model: gpt-4o-mini
871
1023
  config_path: /path/to/guardrails_output.json
1024
+ # For Walled AI, set type: walledai, WALLED_API_KEY,
1025
+ # and optionally use input/output pii (default: true) to enable/disable PII masking.
872
1026
  slack:
873
1027
  agent: my-agent
874
1028
  agent_acknowledgement: "Processing your request..."
@@ -178,6 +178,32 @@ OpenAIModule([assistant])
178
178
  handler = Lambda.handler
179
179
  ```
180
180
 
181
+ **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.**
182
+
183
+ 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.
184
+
185
+ Accepted payloads:
186
+
187
+ ```json
188
+ {
189
+ "prompt": "Hello agent",
190
+ "agent": "assistant",
191
+ "session_id": "user-123"
192
+ }
193
+ ```
194
+
195
+ ```json
196
+ {
197
+ "request_id": "req-123",
198
+ "user_id": "user-123",
199
+ "body": {
200
+ "prompt": "Hello agent",
201
+ "agent": "assistant",
202
+ "session_id": "user-123"
203
+ }
204
+ }
205
+ ```
206
+
181
207
  ### Azure Functions Deployment
182
208
 
183
209
  Deploy your agents as Azure Functions using the built-in Azure handler.
@@ -199,11 +225,18 @@ handler = AzureFunctions.handler
199
225
 
200
226
  ```json
201
227
  {
202
- "prompt": "Hello agent",
203
- "agent": "assistant"
228
+ "request_id": "req-123",
229
+ "user_id": "user-123",
230
+ "body": {
231
+ "prompt": "Hello agent",
232
+ "agent": "assistant",
233
+ "session_id": "user-123"
234
+ }
204
235
  }
205
236
  ```
206
237
 
238
+ Azure Functions also accepts the normalized envelope, and flat run payloads are normalized in the same way before the request reaches the agent runtime.
239
+
207
240
  **Response Format:**
208
241
 
209
242
  ```json
@@ -284,6 +317,72 @@ Required when `session.type=redis`:
284
317
  - **Description**: Key prefix for session storage
285
318
  - **Environment Variable**: `AK_SESSION__REDIS__PREFIX`
286
319
 
320
+ #### Execution Configuration
321
+
322
+ Configure queue-backed and serverless execution behavior.
323
+
324
+ - **Execution Mode**
325
+ - **Field**: `execution.mode`
326
+ - **Options**: `rest_sync`, `rest_async`, `stream`, `async`
327
+ - **Default**: `None`
328
+ - **Description**: Selects the Lambda execution mode
329
+ - **Environment Variable**: `AK_EXECUTION__MODE`
330
+
331
+ - **Queues**
332
+ - **Field**: `execution.queues`
333
+ - **Description**: Queue settings used by serverless execution modes
334
+
335
+ - **Input Queue URL**
336
+ - **Field**: `execution.queues.input.url`
337
+ - **Default**: `None`
338
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__INPUT__URL`
339
+
340
+ - **Output Queue URL**
341
+ - **Field**: `execution.queues.output.url`
342
+ - **Default**: `None`
343
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__OUTPUT__URL`
344
+
345
+ - **Input Queue Max Receive Count**
346
+ - **Field**: `execution.queues.input.max_receive_count`
347
+ - **Default**: `3`
348
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__INPUT__MAX_RECEIVE_COUNT`
349
+
350
+ - **Output Queue Max Receive Count**
351
+ - **Field**: `execution.queues.output.max_receive_count`
352
+ - **Default**: `3`
353
+ - **Environment Variable**: `AK_EXECUTION__QUEUES__OUTPUT__MAX_RECEIVE_COUNT`
354
+
355
+ - **Response Store**
356
+ - **Field**: `execution.response_store`
357
+ - **Description**: Response persistence settings used by the serverless response handler
358
+
359
+ - **Type**
360
+ - **Field**: `execution.response_store.type`
361
+ - **Description**: Response store backend selector configured in `config.yaml`; this value is not exported as an environment variable
362
+
363
+ - **Retry Count**
364
+ - **Field**: `execution.response_store.retry_count`
365
+ - **Default**: `5`
366
+ - **Description**: Number of lookup attempts when polling for a response
367
+ - **Environment Variable**: `AK_EXECUTION__RESPONSE_STORE__RETRY_COUNT`
368
+
369
+ - **Delay**
370
+ - **Field**: `execution.response_store.delay`
371
+ - **Default**: `5`
372
+ - **Description**: Delay in seconds between response lookup attempts
373
+ - **Environment Variable**: `AK_EXECUTION__RESPONSE_STORE__DELAY`
374
+
375
+ - **Redis Backend**
376
+ - **Field**: `execution.response_store.redis`
377
+ - **Environment Variables**: `AK_EXECUTION__RESPONSE_STORE__REDIS__URL`, `AK_EXECUTION__RESPONSE_STORE__REDIS__PREFIX`, `AK_EXECUTION__RESPONSE_STORE__REDIS__TTL`
378
+
379
+ - **DynamoDB Backend**
380
+ - **Field**: `execution.response_store.dynamodb`
381
+ - **Environment Variables**: `AK_EXECUTION__RESPONSE_STORE__DYNAMODB__TABLE_NAME`, `AK_EXECUTION__RESPONSE_STORE__DYNAMODB__TTL`
382
+ - **Description**: DynamoDB-backed response storage with table name and TTL
383
+
384
+ Use either Redis or DynamoDB for the response store backend. The runtime accepts `BaseRunRequest` payloads directly, normalizes them internally when queueing is required, and uses `request_id` plus optional `user_id` as SQS message attributes.
385
+
287
386
  #### API Configuration
288
387
 
289
388
  Configure the REST API server (if using the API module).
@@ -478,7 +577,7 @@ Configure input and output guardrails to validate agent requests and responses f
478
577
  - **Type**
479
578
  - **Field**: `guardrail.input.type`
480
579
  - **Default**: `openai`
481
- - **Options**: `openai`, `bedrock`
580
+ - **Options**: `openai`, `bedrock`, `walledai`
482
581
  - **Description**: Guardrail provider type
483
582
  - **Environment Variable**: `AK_GUARDRAIL__INPUT__TYPE`
484
583
 
@@ -516,7 +615,7 @@ Configure input and output guardrails to validate agent requests and responses f
516
615
  - **Type**
517
616
  - **Field**: `guardrail.output.type`
518
617
  - **Default**: `openai`
519
- - **Options**: `openai`, `bedrock`
618
+ - **Options**: `openai`, `bedrock`, `walledai`
520
619
  - **Description**: Guardrail provider type
521
620
  - **Environment Variable**: `AK_GUARDRAIL__OUTPUT__TYPE`
522
621
 
@@ -558,12 +657,20 @@ To use AWS Bedrock guardrails, install the AWS package:
558
657
  pip install agentkernel[aws]
559
658
  ```
560
659
 
660
+ To use Walled AI guardrails, install the Walled AI package:
661
+
662
+ ```bash
663
+ pip install agentkernel[walledai]
664
+ ```
665
+
561
666
  Create guardrail configuration:
562
667
 
563
668
  **For OpenAI:** Create configuration files following the [OpenAI Guardrails format](https://guardrails.openai.com/).
564
669
 
565
670
  **For Bedrock:** Create a guardrail in AWS Bedrock and note the guardrail ID and version.
566
671
 
672
+ **For Walled AI:** Set `WALLED_API_KEY`, use guardrail type `walledai`, and control PII masking with `pii`.
673
+
567
674
  Configure guardrails in your configuration:
568
675
 
569
676
  **OpenAI Example:**
@@ -596,6 +703,19 @@ guardrail:
596
703
  version: "1"
597
704
  ```
598
705
 
706
+ **Walled AI Example:**
707
+ ```yaml
708
+ guardrail:
709
+ input:
710
+ enabled: true
711
+ type: walledai
712
+ pii: true
713
+ output:
714
+ enabled: true
715
+ type: walledai
716
+ pii: true
717
+ ```
718
+
599
719
  #### Messaging Platform Integrations
600
720
 
601
721
  Configure integrations with messaging platforms.
@@ -706,6 +826,11 @@ export AK_GUARDRAIL__OUTPUT__ENABLED=false
706
826
  export AK_GUARDRAIL__OUTPUT__TYPE=openai
707
827
  export AK_GUARDRAIL__OUTPUT__MODEL=gpt-4o-mini
708
828
  export AK_GUARDRAIL__OUTPUT__CONFIG_PATH=/path/to/guardrails_output.json
829
+ # Walled AI guardrails
830
+ export WALLED_API_KEY=your-walledai-api-key
831
+ export AK_GUARDRAIL__INPUT__PII=true
832
+ export AK_GUARDRAIL__OUTPUT__PII=true
833
+ export AK_DEBUG=true
709
834
  # Messaging platforms (optional)
710
835
  export AK_SLACK__AGENT=my-agent
711
836
  export AK_WHATSAPP__AGENT=my-agent
@@ -751,6 +876,27 @@ session:
751
876
  url: redis://localhost:6379
752
877
  ttl: 604800
753
878
  prefix: "ak:sessions:"
879
+ execution:
880
+ mode: rest_sync
881
+ queues:
882
+ input:
883
+ url: https://sqs.<region>.amazonaws.com/<accountno>/<queuename>
884
+ max_receive_count: 3
885
+ output:
886
+ url: https://sqs.<region>.amazonaws.com/<accountno>/<queuename>
887
+ max_receive_count: 3
888
+ response_store:
889
+ type: redis
890
+ retry_count: 5
891
+ delay: 5
892
+ redis: # if this is given, then dynamodb response store part cannot be given
893
+ url: redis://localhost:6379
894
+ prefix: "ak:responses:"
895
+ ttl: 3600
896
+ dynamodb: # if this is given, then redis response store part cannot be given
897
+ table_name: table-name
898
+ table_arn: table-arn
899
+ ttl: 3600
754
900
  api:
755
901
  host: 0.0.0.0
756
902
  port: 8000
@@ -779,13 +925,17 @@ guardrail:
779
925
  input:
780
926
  enabled: false
781
927
  type: openai
928
+ pii: true
782
929
  model: gpt-4o-mini
783
930
  config_path: /path/to/guardrails_input.json
784
931
  output:
785
932
  enabled: false
786
933
  type: openai
934
+ pii: true
787
935
  model: gpt-4o-mini
788
936
  config_path: /path/to/guardrails_output.json
937
+ # For Walled AI, set type: walledai, WALLED_API_KEY,
938
+ # and optionally use input/output pii (default: true) to enable/disable PII masking.
789
939
  slack:
790
940
  agent: my-agent
791
941
  agent_acknowledgement: "Processing your request..."
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "agentkernel"
7
- version = "0.2.13"
7
+ version = "0.3.0"
8
8
  description = "Agent Kernel - Unified AI Agents Runtime"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12,<3.14"
@@ -67,6 +67,9 @@ adk = [
67
67
  "litellm~=1.74.3",
68
68
  "openinference-instrumentation-google-adk>=0.1.6",
69
69
  ]
70
+ walledai = [
71
+ "walledai>=4.9.3"
72
+ ]
70
73
  api = [
71
74
  "fastapi>=0.118.0",
72
75
  "uvicorn>=0.37.0",
@@ -112,6 +115,12 @@ a2a = [
112
115
  mcp = [
113
116
  "fastmcp>=2.12.4",
114
117
  ]
118
+ multimodal = [
119
+ "litellm>=1.74.9",
120
+ ]
121
+
122
+ [project.scripts]
123
+ ak = "agentkernel.cli.ak:main"
115
124
 
116
125
  [dependency-groups]
117
126
  dev = [
@@ -15,6 +15,7 @@ from agentkernel.core.model import (
15
15
  AgentRequestFile,
16
16
  AgentRequestImage,
17
17
  AgentRequestText,
18
+ BaseRunRequest,
18
19
  )
19
20
 
20
21
  from ..core import AgentService, Config
@@ -67,12 +68,9 @@ class AgentRESTRequestHandler(RESTRequestHandler):
67
68
  name: str
68
69
  mime_type: Optional[str] = None
69
70
 
70
- class RunRequest(BaseModel):
71
+ class RunRequest(BaseRunRequest):
71
72
  model_config = ConfigDict(extra="allow")
72
73
 
73
- prompt: str
74
- agent: Optional[str] = None
75
- session_id: Optional[str] = None
76
74
  files: Optional[List["AgentRESTRequestHandler.FileData"]] = None
77
75
  images: Optional[List["AgentRESTRequestHandler.ImageData"]] = None
78
76
 
@@ -1,10 +1,6 @@
1
- import base64
2
- import hashlib
3
- import hmac
4
1
  from abc import ABC, abstractmethod
5
2
  from typing import Any, Dict, Optional
6
3
 
7
- import jwt
8
4
  from pydantic import BaseModel
9
5
 
10
6
 
@@ -43,6 +39,10 @@ class AuthValidator(ABC):
43
39
  :param algorithm: Hash algorithm to use (default: sha256)
44
40
  :return: True if signature is valid, False otherwise
45
41
  """
42
+ import base64
43
+ import hashlib
44
+ import hmac
45
+
46
46
  mac = hmac.new(key=secret.encode(), msg=message, digestmod=getattr(hashlib, algorithm))
47
47
  expected = base64.b64encode(mac.digest()).decode()
48
48
  return hmac.compare_digest(expected, signature)
@@ -59,6 +59,8 @@ class AuthValidator(ABC):
59
59
  :return: Decoded JWT claims dictionary
60
60
  :raises: jwt exceptions if token is invalid
61
61
  """
62
+ import jwt
63
+
62
64
  return jwt.decode(
63
65
  token,
64
66
  public_key,
@@ -0,0 +1 @@
1
+ from .auth import *