digitalkin 1.0.0.dev25__tar.gz → 1.0.1.dev0__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 (239) hide show
  1. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/PKG-INFO +4 -2
  2. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/pyproject.toml +4 -2
  3. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/__version__.py +1 -1
  4. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/community/agno/__init__.py +11 -1
  5. digitalkin-1.0.1.dev0/src/digitalkin/community/agno/models.py +164 -0
  6. digitalkin-1.0.1.dev0/src/digitalkin/community/agno/module_toolkit.py +540 -0
  7. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/task_manager/module_runner.py +39 -16
  8. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/grpc_servers/stream_error_codes.py +1 -0
  9. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/module/tool_reference.py +9 -3
  10. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin.egg-info/PKG-INFO +4 -2
  11. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin.egg-info/SOURCES.txt +1 -0
  12. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin.egg-info/requires.txt +4 -1
  13. digitalkin-1.0.0.dev25/src/digitalkin/community/agno/models.py +0 -28
  14. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/LICENSE +0 -0
  15. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/README.md +0 -0
  16. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/base_server/__init__.py +0 -0
  17. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/base_server/mock/__init__.py +0 -0
  18. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/base_server/mock/mock_pb2.py +0 -0
  19. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/base_server/mock/mock_pb2_grpc.py +0 -0
  20. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/base_server/server_async_insecure.py +0 -0
  21. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/base_server/server_async_secure.py +0 -0
  22. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/base_server/server_sync_insecure.py +0 -0
  23. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/base_server/server_sync_secure.py +0 -0
  24. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/bench_module/__init__.py +0 -0
  25. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/bench_module/echo_module.py +0 -0
  26. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/bench_module/models/__init__.py +0 -0
  27. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/bench_module/models/input.py +0 -0
  28. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/bench_module/models/output.py +0 -0
  29. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/bench_module/models/secret.py +0 -0
  30. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/bench_module/models/setup.py +0 -0
  31. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/bench_module/server.py +0 -0
  32. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/bench_module/triggers/__init__.py +0 -0
  33. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/bench_module/triggers/message_trigger.py +0 -0
  34. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/modules/__init__.py +0 -0
  35. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/modules/archetype_with_tools_module.py +0 -0
  36. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/modules/cpu_intensive_module.py +0 -0
  37. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/modules/dynamic_setup_module.py +0 -0
  38. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/modules/minimal_llm_module.py +0 -0
  39. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/modules/text_transform_module.py +0 -0
  40. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/monitoring/digitalkin_observability/__init__.py +0 -0
  41. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/monitoring/digitalkin_observability/http_server.py +0 -0
  42. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/monitoring/digitalkin_observability/interceptors.py +0 -0
  43. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/monitoring/digitalkin_observability/metrics.py +0 -0
  44. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/monitoring/digitalkin_observability/prometheus.py +0 -0
  45. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/monitoring/tests/test_metrics.py +0 -0
  46. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/redis_demo/client.py +0 -0
  47. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/redis_demo/echo_module.py +0 -0
  48. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/redis_demo/models/__init__.py +0 -0
  49. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/redis_demo/models/input.py +0 -0
  50. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/redis_demo/models/output.py +0 -0
  51. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/redis_demo/models/secret.py +0 -0
  52. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/redis_demo/models/setup.py +0 -0
  53. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/redis_demo/server.py +0 -0
  54. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/redis_demo/triggers/__init__.py +0 -0
  55. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/redis_demo/triggers/message_trigger.py +0 -0
  56. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/services/filesystem_module.py +0 -0
  57. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/examples/services/storage_module.py +0 -0
  58. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/setup.cfg +0 -0
  59. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/__init__.py +0 -0
  60. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/community/__init__.py +0 -0
  61. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/community/agno/agno_adapter.py +0 -0
  62. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/community/agno/agui_tools.py +0 -0
  63. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/community/agno/hitl.py +0 -0
  64. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/__init__.py +0 -0
  65. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/common/__init__.py +0 -0
  66. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/common/factories.py +0 -0
  67. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/exceptions.py +0 -0
  68. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/job_manager/__init__.py +0 -0
  69. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/job_manager/base_job_manager.py +0 -0
  70. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/job_manager/single_job_manager.py +0 -0
  71. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/profiling/__init__.py +0 -0
  72. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/profiling/step_timer.py +0 -0
  73. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/profiling/task_profiler.py +0 -0
  74. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/resilience/__init__.py +0 -0
  75. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/resilience/bulkhead.py +0 -0
  76. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/resilience/task_supervisor.py +0 -0
  77. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/task_manager/__init__.py +0 -0
  78. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/task_manager/base_task_manager.py +0 -0
  79. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/task_manager/local_task_manager.py +0 -0
  80. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/task_manager/redis/__init__.py +0 -0
  81. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/task_manager/redis/proto_streams.py +0 -0
  82. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/task_manager/redis/redis_client.py +0 -0
  83. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/task_manager/redis/redis_idempotency.py +0 -0
  84. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/task_manager/redis/redis_signal.py +0 -0
  85. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/task_manager/redis/redis_state.py +0 -0
  86. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/task_manager/remote_task_manager.py +0 -0
  87. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/task_manager/task_executor.py +0 -0
  88. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/core/task_manager/task_session.py +0 -0
  89. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/exceptions.py +0 -0
  90. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/grpc_servers/__init__.py +0 -0
  91. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/grpc_servers/_base_server.py +0 -0
  92. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/grpc_servers/exceptions.py +0 -0
  93. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/grpc_servers/gateway_servicer.py +0 -0
  94. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/grpc_servers/interceptors/__init__.py +0 -0
  95. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/grpc_servers/interceptors/permission.py +0 -0
  96. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/grpc_servers/interceptors/request_ids.py +0 -0
  97. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/grpc_servers/m2m_call_registry.py +0 -0
  98. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/grpc_servers/module_server.py +0 -0
  99. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/grpc_servers/module_servicer.py +0 -0
  100. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/grpc_servers/stream_registry.py +0 -0
  101. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/grpc_servers/stream_session.py +0 -0
  102. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/grpc_servers/utils/__init__.py +0 -0
  103. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/grpc_servers/utils/circuit_breaker.py +0 -0
  104. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/grpc_servers/utils/grpc_client_wrapper.py +0 -0
  105. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/grpc_servers/utils/grpc_error_handler.py +0 -0
  106. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/grpc_servers/utils/utility_schema_extender.py +0 -0
  107. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/grpc_servers/utils/validators.py +0 -0
  108. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/logger.py +0 -0
  109. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/mixins/__init__.py +0 -0
  110. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/mixins/agui_mixin.py +0 -0
  111. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/mixins/base_mixin.py +0 -0
  112. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/mixins/cost_mixin.py +0 -0
  113. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/mixins/file_history_mixin.py +0 -0
  114. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/mixins/filesystem_mixin.py +0 -0
  115. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/mixins/logger_mixin.py +0 -0
  116. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/mixins/storage_mixin.py +0 -0
  117. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/__init__.py +0 -0
  118. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/core/__init__.py +0 -0
  119. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/core/job_manager_models.py +0 -0
  120. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/core/redis.py +0 -0
  121. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/core/task_monitor.py +0 -0
  122. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/events/__init__.py +0 -0
  123. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/events/agent_events.py +0 -0
  124. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/grpc_servers/__init__.py +0 -0
  125. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/grpc_servers/circuit_breaker.py +0 -0
  126. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/grpc_servers/m2m.py +0 -0
  127. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/grpc_servers/models.py +0 -0
  128. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/grpc_servers/types.py +0 -0
  129. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/module/__init__.py +0 -0
  130. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/module/ag_ui.py +0 -0
  131. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/module/base_types.py +0 -0
  132. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/module/module.py +0 -0
  133. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/module/module_context.py +0 -0
  134. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/module/module_types.py +0 -0
  135. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/module/request_metadata.py +0 -0
  136. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/module/select_schema.py +0 -0
  137. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/module/setup_types.py +0 -0
  138. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/module/tool_cache.py +0 -0
  139. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/module/utility.py +0 -0
  140. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/services/__init__.py +0 -0
  141. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/services/cost.py +0 -0
  142. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/services/registry.py +0 -0
  143. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/services/services.py +0 -0
  144. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/services/storage.py +0 -0
  145. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/settings/__init__.py +0 -0
  146. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/settings/gateway.py +0 -0
  147. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/settings/grpc_client.py +0 -0
  148. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/settings/log.py +0 -0
  149. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/settings/module.py +0 -0
  150. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/settings/profiling.py +0 -0
  151. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/settings/queue.py +0 -0
  152. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/settings/redis.py +0 -0
  153. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/settings/resilience.py +0 -0
  154. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/settings/server/__init__.py +0 -0
  155. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/settings/server/channel.py +0 -0
  156. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/settings/server/grpc.py +0 -0
  157. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/settings/server/server.py +0 -0
  158. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/settings/server/servicer.py +0 -0
  159. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/settings/task_manager.py +0 -0
  160. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/settings/utils/__init__.py +0 -0
  161. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/settings/utils/channel.py +0 -0
  162. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/utils/__init__.py +0 -0
  163. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/models/utils/dynamic_schema.py +0 -0
  164. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/modules/__init__.py +0 -0
  165. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/modules/_base_module.py +0 -0
  166. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/modules/archetype_module.py +0 -0
  167. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/modules/tool_module.py +0 -0
  168. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/modules/trigger_handler.py +0 -0
  169. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/modules/triggers/__init__.py +0 -0
  170. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/modules/triggers/healthcheck_ping_trigger.py +0 -0
  171. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/modules/triggers/healthcheck_services_trigger.py +0 -0
  172. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/modules/triggers/healthcheck_status_trigger.py +0 -0
  173. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/py.typed +0 -0
  174. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/__init__.py +0 -0
  175. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/base_strategy.py +0 -0
  176. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/communication/__init__.py +0 -0
  177. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/communication/communication_strategy.py +0 -0
  178. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/communication/default_communication.py +0 -0
  179. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/communication/exceptions.py +0 -0
  180. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/communication/grpc_communication.py +0 -0
  181. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/cost/__init__.py +0 -0
  182. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/cost/cost_strategy.py +0 -0
  183. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/cost/default_cost.py +0 -0
  184. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/cost/exceptions.py +0 -0
  185. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/cost/grpc_cost.py +0 -0
  186. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/filesystem/__init__.py +0 -0
  187. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/filesystem/default_filesystem.py +0 -0
  188. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/filesystem/exceptions.py +0 -0
  189. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/filesystem/filesystem_strategy.py +0 -0
  190. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/filesystem/grpc_filesystem.py +0 -0
  191. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/identity/__init__.py +0 -0
  192. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/identity/default_identity.py +0 -0
  193. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/identity/identity_strategy.py +0 -0
  194. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/registry/__init__.py +0 -0
  195. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/registry/default_registry.py +0 -0
  196. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/registry/exceptions.py +0 -0
  197. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/registry/grpc_registry.py +0 -0
  198. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/registry/registry_models.py +0 -0
  199. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/registry/registry_strategy.py +0 -0
  200. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/secret/__init__.py +0 -0
  201. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/secret/default_secret.py +0 -0
  202. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/secret/exceptions.py +0 -0
  203. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/secret/grpc_secret.py +0 -0
  204. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/secret/secret_strategy.py +0 -0
  205. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/services_config.py +0 -0
  206. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/services_models.py +0 -0
  207. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/setup/__init__.py +0 -0
  208. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/setup/default_setup.py +0 -0
  209. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/setup/exceptions.py +0 -0
  210. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/setup/grpc_setup.py +0 -0
  211. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/setup/setup_strategy.py +0 -0
  212. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/storage/__init__.py +0 -0
  213. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/storage/default_storage.py +0 -0
  214. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/storage/exceptions.py +0 -0
  215. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/storage/grpc_storage.py +0 -0
  216. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/storage/storage_strategy.py +0 -0
  217. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/task_manager/__init__.py +0 -0
  218. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/task_manager/default_task_manager.py +0 -0
  219. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/task_manager/exceptions.py +0 -0
  220. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/task_manager/redis_task_manager.py +0 -0
  221. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/task_manager/task_manager_strategy.py +0 -0
  222. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/user_profile/__init__.py +0 -0
  223. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/user_profile/default_user_profile.py +0 -0
  224. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/user_profile/exceptions.py +0 -0
  225. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/user_profile/grpc_user_profile.py +0 -0
  226. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/services/user_profile/user_profile_strategy.py +0 -0
  227. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/utils/__init__.py +0 -0
  228. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/utils/arg_parser.py +0 -0
  229. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/utils/conditional_schema.py +0 -0
  230. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/utils/development_mode_action.py +0 -0
  231. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/utils/dynamic_schema.py +0 -0
  232. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/utils/exceptions.py +0 -0
  233. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/utils/llm_ready_schema.py +0 -0
  234. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/utils/package_discover.py +0 -0
  235. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/utils/proto_utils.py +0 -0
  236. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin/utils/schema_splitter.py +0 -0
  237. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin.egg-info/dependency_links.txt +0 -0
  238. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/src/digitalkin.egg-info/top_level.txt +0 -0
  239. {digitalkin-1.0.0.dev25 → digitalkin-1.0.1.dev0}/tests/test_exceptions.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: digitalkin
3
- Version: 1.0.0.dev25
3
+ Version: 1.0.1.dev0
4
4
  Summary: SDK to build kin used in DigitalKin
5
5
  Author-email: "DigitalKin.ai" <contact@digitalkin.ai>
6
6
  License: Attribution-NonCommercial-ShareAlike 4.0 International
@@ -453,7 +453,7 @@ Requires-Python: >=3.10
453
453
  Description-Content-Type: text/markdown
454
454
  License-File: LICENSE
455
455
  Requires-Dist: ag-ui-protocol>=0.1.18
456
- Requires-Dist: agentic-mesh-protocol==1.0.0a2
456
+ Requires-Dist: agentic-mesh-protocol==1.0.0b0
457
457
  Requires-Dist: anyio>=4.13.0
458
458
  Requires-Dist: grpcio-health-checking==1.81.0
459
459
  Requires-Dist: grpcio-reflection==1.81.0
@@ -461,6 +461,8 @@ Requires-Dist: grpcio-status==1.81.0
461
461
  Requires-Dist: pydantic>=2.12.4
462
462
  Requires-Dist: pydantic-settings>=2.14.1
463
463
  Requires-Dist: redis[hiredis]<9,>=7.4.0
464
+ Provides-Extra: agno
465
+ Requires-Dist: agno>=2.6; extra == "agno"
464
466
  Provides-Extra: performance
465
467
  Requires-Dist: uvloop>=0.21; extra == "performance"
466
468
  Provides-Extra: profiling
@@ -28,7 +28,7 @@
28
28
 
29
29
  dependencies = [
30
30
  "ag-ui-protocol>=0.1.18",
31
- "agentic-mesh-protocol==1.0.0a2",
31
+ "agentic-mesh-protocol==1.0.0b0",
32
32
  "anyio>=4.13.0",
33
33
  "grpcio-health-checking==1.81.0",
34
34
  "grpcio-reflection==1.81.0",
@@ -37,9 +37,10 @@
37
37
  "pydantic-settings>=2.14.1",
38
38
  "redis[hiredis]>=7.4.0,<9",
39
39
  ]
40
- version = "1.0.0.dev25"
40
+ version = "1.0.1.dev0"
41
41
 
42
42
  [project.optional-dependencies]
43
+ agno = [ "agno>=2.6" ]
43
44
  performance = [ "uvloop>=0.21" ]
44
45
  profiling = [
45
46
  "pyinstrument>=5.1.2",
@@ -96,6 +97,7 @@
96
97
  "tomli>=2.4.1",
97
98
  ]
98
99
  tests = [
100
+ "agno>=2.6",
99
101
  "fakeredis[lua]>=2.35.1",
100
102
  "freezegun>=1.5.5",
101
103
  "grpcio-testing>=1.81.0",
@@ -5,4 +5,4 @@ from importlib.metadata import PackageNotFoundError, version
5
5
  try:
6
6
  __version__ = version("digitalkin")
7
7
  except PackageNotFoundError:
8
- __version__ = "1.0.0.dev25"
8
+ __version__ = "1.0.1.dev0"
@@ -12,6 +12,14 @@ on top of the Agno agent framework. Exports:
12
12
  paused Agno run via the module's
13
13
  :class:`~digitalkin.services.storage.StorageStrategy` and resumes it
14
14
  when the front replies with a ``ToolMessage``.
15
+ - :class:`ToolCallMetadata`, :class:`ToolOutputMetadata` — metadata models
16
+ for module tool calls made through the toolkit.
17
+
18
+ ``ModuleToolkit`` (Agno Toolkit wrapping a module's remote tools) requires the
19
+ optional ``agno`` dependency at import time and is therefore NOT exported here;
20
+ import it directly::
21
+
22
+ from digitalkin.community.agno.module_toolkit import ModuleToolkit
15
23
  """
16
24
 
17
25
  from digitalkin.community.agno.agno_adapter import AgnoStreamAdapter
@@ -23,7 +31,7 @@ from digitalkin.community.agno.hitl import (
23
31
  PausedRunRecord,
24
32
  PausedRunStore,
25
33
  )
26
- from digitalkin.community.agno.models import PauseInfo
34
+ from digitalkin.community.agno.models import PauseInfo, ToolCallMetadata, ToolOutputMetadata
27
35
 
28
36
  __all__ = [
29
37
  "HITL_STORAGE_CONFIG",
@@ -34,4 +42,6 @@ __all__ = [
34
42
  "PauseInfo",
35
43
  "PausedRunRecord",
36
44
  "PausedRunStore",
45
+ "ToolCallMetadata",
46
+ "ToolOutputMetadata",
37
47
  ]
@@ -0,0 +1,164 @@
1
+ """Models for the Agno community integration."""
2
+
3
+ from typing import Any
4
+
5
+ from ag_ui.core.types import Message as AgUiMessage
6
+ from pydantic import BaseModel, Field
7
+
8
+
9
+ class PauseInfo(BaseModel):
10
+ """Summary of a paused Agno run.
11
+
12
+ Returned by :meth:`AgnoHitlRunner.run` and related methods whenever
13
+ the run paused on one or more external tool calls. Callers typically
14
+ use it to emit the AG-UI awaiting-tool-result event to the front.
15
+
16
+ ``new_messages`` carries the AG-UI messages generated by Agno during
17
+ the paused run (user echoes, the assistant message with ``tool_calls``,
18
+ and any tool results emitted before the pause). It's provided because
19
+ Agno does not emit stream events from which the front can reconstruct
20
+ the assistant-with-tool-calls message — in particular, when the LLM
21
+ goes straight from reasoning to a frontend tool call without emitting
22
+ any text. Consumers typically push these messages to the front via a
23
+ :class:`~ag_ui.core.events.MessagesSnapshotEvent` so the client has an
24
+ authoritative view of the conversation.
25
+ """
26
+
27
+ thread_id: str
28
+ run_id: str
29
+ pending_tool_call_ids: list[str]
30
+ new_messages: list[AgUiMessage] = Field(default_factory=list)
31
+
32
+
33
+ class ToolOutputMetadata(BaseModel):
34
+ """Cost and execution metadata reported by a tool module itself.
35
+
36
+ Enables accurate cost aggregation across modules.
37
+
38
+ Attributes:
39
+ response_time_ms: Time taken for the API call(s) in milliseconds.
40
+ api_calls_made: Number of API calls made by the tool.
41
+ cost_estimate_usd: Estimated cost in USD.
42
+ tavily_credits_used: Tavily API credits consumed (if applicable).
43
+ search_depth: Search depth used (basic, advanced, etc.).
44
+ include_raw_content: Whether raw content was requested.
45
+ queries_count: Number of queries executed.
46
+ results_returned: Number of results returned.
47
+ urls_processed: Number of URLs processed (for extract operations).
48
+ """
49
+
50
+ response_time_ms: float | None = Field(default=None, description="API response time in ms")
51
+ api_calls_made: int = Field(default=1, description="Number of API calls made")
52
+ cost_estimate_usd: float | None = Field(default=None, description="Estimated cost in USD")
53
+ tavily_credits_used: int | None = Field(default=None, description="Tavily credits consumed")
54
+ search_depth: str | None = Field(default=None, description="Search depth used")
55
+ include_raw_content: bool = Field(default=False, description="Whether raw content was requested")
56
+ queries_count: int = Field(default=1, description="Number of queries executed")
57
+ results_returned: int = Field(default=0, description="Number of results returned")
58
+ urls_processed: int = Field(default=0, description="Number of URLs processed")
59
+
60
+
61
+ class ToolCallMetadata(BaseModel):
62
+ """Metadata from a module tool call including cost and timing information.
63
+
64
+ Attributes:
65
+ module_id: The SDK module ID that was called (e.g., "modules:tool_websearch").
66
+ success: Whether the tool call completed successfully.
67
+ duration_ms: Execution time in milliseconds.
68
+ cost_tracked: Whether cost metadata is available from the tool.
69
+ error: Error message if the call failed, None otherwise.
70
+ input_kwargs: The kwargs passed to the tool (for debugging).
71
+ output_summary: Brief summary of the output (truncated for logs).
72
+ tool_metadata: Metadata returned by the tool itself (cost, API calls, etc.).
73
+ """
74
+
75
+ module_id: str = Field(..., description="The SDK module ID that was called")
76
+ success: bool = Field(..., description="Whether the tool call succeeded")
77
+ duration_ms: float = Field(..., description="Execution time in milliseconds")
78
+ cost_tracked: bool = Field(default=False, description="Whether cost metadata is available from tool")
79
+ error: str | None = Field(default=None, description="Error message if failed")
80
+ input_kwargs: dict[str, Any] | None = Field(
81
+ default=None,
82
+ description="Input kwargs passed to the tool for debugging",
83
+ )
84
+ output_summary: str | None = Field(
85
+ default=None,
86
+ description="Brief summary of the output (truncated)",
87
+ )
88
+ tool_metadata: ToolOutputMetadata | None = Field(
89
+ default=None,
90
+ description="Metadata returned by the tool module (cost, API calls, etc.)",
91
+ )
92
+
93
+ def to_success_dict(self) -> dict[str, Any]:
94
+ """Convert metadata to dict for successful responses.
95
+
96
+ Returns:
97
+ Dictionary with success-relevant fields (error excluded).
98
+ """
99
+ return self.model_dump(exclude={"error"})
100
+
101
+ def to_error_dict(self) -> dict[str, Any]:
102
+ """Convert metadata to dict for error responses.
103
+
104
+ Returns:
105
+ Dictionary with error-relevant fields.
106
+ """
107
+ return self.model_dump(include={"module_id", "success", "duration_ms", "error"})
108
+
109
+ def to_log_dict(self) -> dict[str, Any]:
110
+ """Convert metadata to dict for logging.
111
+
112
+ Returns:
113
+ Dictionary suitable for log extra data, large kwargs truncated.
114
+ """
115
+ data: dict[str, Any] = {
116
+ "module_id": self.module_id,
117
+ "success": self.success,
118
+ "duration_ms": self.duration_ms,
119
+ "cost_tracked": self.cost_tracked,
120
+ }
121
+ if self.error:
122
+ data["error"] = self.error
123
+ if self.input_kwargs:
124
+ max_len = 100
125
+ data["input_kwargs"] = {
126
+ k: (str(v)[:max_len] + "..." if len(str(v)) > max_len else v) for k, v in self.input_kwargs.items()
127
+ }
128
+ if self.output_summary:
129
+ data["output_summary"] = self.output_summary
130
+ if self.tool_metadata:
131
+ data["tool_metadata"] = self.tool_metadata.model_dump(exclude_none=True)
132
+ return data
133
+
134
+ @staticmethod
135
+ def extract_tool_metadata(output: dict[str, Any]) -> "ToolOutputMetadata | None":
136
+ """Extract tool metadata from a tool's output if present.
137
+
138
+ Args:
139
+ output: The tool output dictionary.
140
+
141
+ Returns:
142
+ ToolOutputMetadata if metadata is present, None otherwise.
143
+ """
144
+ if not isinstance(output, dict):
145
+ return None
146
+
147
+ metadata = output.get("metadata")
148
+ if not metadata or not isinstance(metadata, dict):
149
+ return None
150
+
151
+ try:
152
+ return ToolOutputMetadata(
153
+ response_time_ms=metadata.get("response_time_ms"),
154
+ api_calls_made=metadata.get("api_calls_made", 1),
155
+ cost_estimate_usd=metadata.get("cost_estimate_usd"),
156
+ tavily_credits_used=metadata.get("tavily_credits_used"),
157
+ search_depth=metadata.get("search_depth"),
158
+ include_raw_content=metadata.get("include_raw_content", False),
159
+ queries_count=metadata.get("queries_count", 1),
160
+ results_returned=metadata.get("results_returned", 0),
161
+ urls_processed=metadata.get("urls_processed", 0),
162
+ )
163
+ except Exception:
164
+ return None