digitalkin 0.3.5.dev11__tar.gz → 0.3.5.dev13__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 (173) hide show
  1. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/PKG-INFO +3 -3
  2. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/examples/modules/archetype_with_tools_module.py +3 -2
  3. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/pyproject.toml +12 -12
  4. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/__version__.py +1 -1
  5. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/community/agno/agno_adapter.py +34 -25
  6. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/core/job_manager/base_job_manager.py +6 -0
  7. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/core/job_manager/single_job_manager.py +1 -4
  8. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/core/job_manager/taskiq_broker.py +211 -13
  9. digitalkin-0.3.5.dev13/src/digitalkin/core/job_manager/taskiq_job_manager.py +659 -0
  10. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/core/task_manager/task_session.py +2 -0
  11. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/grpc_servers/_base_server.py +56 -48
  12. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/grpc_servers/module_server.py +37 -12
  13. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/grpc_servers/module_servicer.py +42 -3
  14. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/grpc_servers/utils/grpc_client_wrapper.py +35 -10
  15. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/mixins/__init__.py +0 -4
  16. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/mixins/agui_mixin.py +3 -3
  17. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/mixins/base_mixin.py +2 -2
  18. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/mixins/callback_mixin.py +19 -5
  19. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/mixins/chat_history_mixin.py +14 -8
  20. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/grpc_servers/models.py +2 -138
  21. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/module/__init__.py +0 -2
  22. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/module/module_context.py +2 -18
  23. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/module/setup_types.py +124 -13
  24. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/module/tool_cache.py +51 -45
  25. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/module/tool_reference.py +17 -9
  26. digitalkin-0.3.5.dev13/src/digitalkin/models/settings/__init__.py +1 -0
  27. digitalkin-0.3.5.dev13/src/digitalkin/models/settings/server/__init__.py +1 -0
  28. digitalkin-0.3.5.dev13/src/digitalkin/models/settings/server/channel.py +36 -0
  29. digitalkin-0.3.5.dev13/src/digitalkin/models/settings/server/grpc.py +99 -0
  30. digitalkin-0.3.5.dev13/src/digitalkin/models/settings/server/server.py +47 -0
  31. digitalkin-0.3.5.dev13/src/digitalkin/models/settings/utils/__init__.py +1 -0
  32. digitalkin-0.3.5.dev13/src/digitalkin/models/settings/utils/channel.py +148 -0
  33. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/modules/_base_module.py +38 -15
  34. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/modules/triggers/healthcheck_ping_trigger.py +1 -1
  35. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/modules/triggers/healthcheck_services_trigger.py +2 -2
  36. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/modules/triggers/healthcheck_status_trigger.py +1 -1
  37. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/registry/registry_strategy.py +12 -0
  38. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/utils/conditional_schema.py +2 -3
  39. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin.egg-info/PKG-INFO +3 -3
  40. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin.egg-info/SOURCES.txt +7 -0
  41. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin.egg-info/requires.txt +2 -2
  42. digitalkin-0.3.5.dev11/src/digitalkin/core/job_manager/taskiq_job_manager.py +0 -477
  43. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/LICENSE +0 -0
  44. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/README.md +0 -0
  45. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/examples/base_server/__init__.py +0 -0
  46. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/examples/base_server/mock/__init__.py +0 -0
  47. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/examples/base_server/mock/mock_pb2.py +0 -0
  48. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/examples/base_server/mock/mock_pb2_grpc.py +0 -0
  49. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/examples/base_server/server_async_insecure.py +0 -0
  50. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/examples/base_server/server_async_secure.py +0 -0
  51. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/examples/base_server/server_sync_insecure.py +0 -0
  52. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/examples/base_server/server_sync_secure.py +0 -0
  53. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/examples/modules/__init__.py +0 -0
  54. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/examples/modules/cpu_intensive_module.py +0 -0
  55. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/examples/modules/dynamic_setup_module.py +0 -0
  56. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/examples/modules/minimal_llm_module.py +0 -0
  57. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/examples/modules/text_transform_module.py +0 -0
  58. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/examples/monitoring/digitalkin_observability/__init__.py +0 -0
  59. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/examples/monitoring/digitalkin_observability/http_server.py +0 -0
  60. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/examples/monitoring/digitalkin_observability/interceptors.py +0 -0
  61. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/examples/monitoring/digitalkin_observability/metrics.py +0 -0
  62. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/examples/monitoring/digitalkin_observability/prometheus.py +0 -0
  63. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/examples/monitoring/tests/test_metrics.py +0 -0
  64. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/examples/services/filesystem_module.py +0 -0
  65. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/examples/services/storage_module.py +0 -0
  66. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/setup.cfg +0 -0
  67. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/__init__.py +0 -0
  68. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/community/__init__.py +0 -0
  69. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/community/agno/__init__.py +0 -0
  70. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/core/__init__.py +0 -0
  71. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/core/common/__init__.py +0 -0
  72. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/core/common/factories.py +0 -0
  73. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/core/job_manager/__init__.py +0 -0
  74. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/core/profiling/__init__.py +0 -0
  75. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/core/profiling/asyncio_monitor.py +0 -0
  76. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/core/profiling/task_profiler.py +0 -0
  77. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/core/task_manager/__init__.py +0 -0
  78. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/core/task_manager/base_task_manager.py +0 -0
  79. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/core/task_manager/local_task_manager.py +0 -0
  80. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/core/task_manager/remote_task_manager.py +0 -0
  81. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/core/task_manager/task_executor.py +0 -0
  82. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/grpc_servers/__init__.py +0 -0
  83. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/grpc_servers/utils/__init__.py +0 -0
  84. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/grpc_servers/utils/exceptions.py +0 -0
  85. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/grpc_servers/utils/grpc_error_handler.py +0 -0
  86. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/grpc_servers/utils/utility_schema_extender.py +0 -0
  87. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/logger.py +0 -0
  88. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/mixins/cost_mixin.py +0 -0
  89. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/mixins/file_history_mixin.py +0 -0
  90. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/mixins/filesystem_mixin.py +0 -0
  91. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/mixins/logger_mixin.py +0 -0
  92. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/mixins/storage_mixin.py +0 -0
  93. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/__init__.py +0 -0
  94. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/core/__init__.py +0 -0
  95. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/core/job_manager_models.py +0 -0
  96. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/core/task_monitor.py +0 -0
  97. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/events/__init__.py +0 -0
  98. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/events/agent_events.py +0 -0
  99. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/grpc_servers/__init__.py +0 -0
  100. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/grpc_servers/types.py +0 -0
  101. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/module/ag_ui.py +0 -0
  102. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/module/base_types.py +0 -0
  103. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/module/module.py +0 -0
  104. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/module/module_types.py +0 -0
  105. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/module/request_metadata.py +0 -0
  106. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/module/select_schema.py +0 -0
  107. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/module/utility.py +0 -0
  108. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/services/__init__.py +0 -0
  109. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/services/cost.py +0 -0
  110. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/services/registry.py +0 -0
  111. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/models/services/storage.py +0 -0
  112. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/modules/__init__.py +0 -0
  113. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/modules/archetype_module.py +0 -0
  114. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/modules/tool_module.py +0 -0
  115. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/modules/trigger_handler.py +0 -0
  116. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/modules/triggers/__init__.py +0 -0
  117. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/py.typed +0 -0
  118. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/__init__.py +0 -0
  119. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/agent/__init__.py +0 -0
  120. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/agent/agent_strategy.py +0 -0
  121. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/agent/default_agent.py +0 -0
  122. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/base_strategy.py +0 -0
  123. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/communication/__init__.py +0 -0
  124. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/communication/communication_strategy.py +0 -0
  125. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/communication/default_communication.py +0 -0
  126. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/communication/grpc_communication.py +0 -0
  127. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/cost/__init__.py +0 -0
  128. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/cost/cost_strategy.py +0 -0
  129. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/cost/default_cost.py +0 -0
  130. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/cost/grpc_cost.py +0 -0
  131. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/filesystem/__init__.py +0 -0
  132. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/filesystem/default_filesystem.py +0 -0
  133. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/filesystem/filesystem_strategy.py +0 -0
  134. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/filesystem/grpc_filesystem.py +0 -0
  135. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/identity/__init__.py +0 -0
  136. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/identity/default_identity.py +0 -0
  137. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/identity/identity_strategy.py +0 -0
  138. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/registry/__init__.py +0 -0
  139. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/registry/default_registry.py +0 -0
  140. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/registry/exceptions.py +0 -0
  141. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/registry/grpc_registry.py +0 -0
  142. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/registry/registry_models.py +0 -0
  143. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/services_config.py +0 -0
  144. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/services_models.py +0 -0
  145. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/setup/__init__.py +0 -0
  146. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/setup/default_setup.py +0 -0
  147. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/setup/grpc_setup.py +0 -0
  148. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/setup/setup_strategy.py +0 -0
  149. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/snapshot/__init__.py +0 -0
  150. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/snapshot/default_snapshot.py +0 -0
  151. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/snapshot/snapshot_strategy.py +0 -0
  152. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/storage/__init__.py +0 -0
  153. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/storage/default_storage.py +0 -0
  154. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/storage/grpc_storage.py +0 -0
  155. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/storage/storage_strategy.py +0 -0
  156. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/task_manager/__init__.py +0 -0
  157. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/task_manager/default_task_manager.py +0 -0
  158. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/task_manager/grpc_task_manager.py +0 -0
  159. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/task_manager/task_manager_strategy.py +0 -0
  160. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/user_profile/__init__.py +0 -0
  161. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/user_profile/default_user_profile.py +0 -0
  162. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/user_profile/grpc_user_profile.py +0 -0
  163. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/services/user_profile/user_profile_strategy.py +0 -0
  164. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/utils/__init__.py +0 -0
  165. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/utils/arg_parser.py +0 -0
  166. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/utils/development_mode_action.py +0 -0
  167. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/utils/dynamic_schema.py +0 -0
  168. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/utils/llm_ready_schema.py +0 -0
  169. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/utils/package_discover.py +0 -0
  170. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/utils/proto_utils.py +0 -0
  171. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin/utils/schema_splitter.py +0 -0
  172. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin.egg-info/dependency_links.txt +0 -0
  173. {digitalkin-0.3.5.dev11 → digitalkin-0.3.5.dev13}/src/digitalkin.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: digitalkin
3
- Version: 0.3.5.dev11
3
+ Version: 0.3.5.dev13
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
@@ -454,7 +454,7 @@ Description-Content-Type: text/markdown
454
454
  License-File: LICENSE
455
455
  Requires-Dist: ag-ui-protocol>=0.1.14
456
456
  Requires-Dist: agentic-mesh-protocol==0.2.3
457
- Requires-Dist: anyio==4.12.1
457
+ Requires-Dist: anyio==4.13.0
458
458
  Requires-Dist: grpcio-health-checking==1.78.0
459
459
  Requires-Dist: grpcio-reflection==1.78.0
460
460
  Requires-Dist: grpcio-status==1.78.0
@@ -463,7 +463,7 @@ Provides-Extra: profiling
463
463
  Requires-Dist: asyncio-inspector==0.1.0; extra == "profiling"
464
464
  Requires-Dist: pyinstrument==5.1.2; extra == "profiling"
465
465
  Requires-Dist: viztracer==1.1.1; extra == "profiling"
466
- Requires-Dist: yappi==1.7.3; extra == "profiling"
466
+ Requires-Dist: yappi==1.7.6; extra == "profiling"
467
467
  Provides-Extra: taskiq
468
468
  Requires-Dist: rstream==1.0.0; extra == "taskiq"
469
469
  Requires-Dist: taskiq-aio-pika==0.6.0; extra == "taskiq"
@@ -5,10 +5,11 @@ from typing import Any, ClassVar, Literal
5
5
 
6
6
  from pydantic import BaseModel, Field
7
7
 
8
- from digitalkin.models.grpc_servers.models import ClientConfig, SecurityMode, ServerMode
8
+ from digitalkin.models.grpc_servers.models import ClientConfig
9
9
  from digitalkin.models.module.module_context import ModuleContext
10
10
  from digitalkin.models.module.setup_types import SetupModel
11
11
  from digitalkin.models.module.tool_reference import ToolReference
12
+ from digitalkin.models.settings.utils.channel import ControlFlow, SecurityMode
12
13
  from digitalkin.modules._base_module import BaseModule # noqa: PLC2701
13
14
  from digitalkin.services.services_models import ServicesStrategy
14
15
 
@@ -98,7 +99,7 @@ class ArchetypeSecret(BaseModel):
98
99
  client_config = ClientConfig(
99
100
  host="[::]",
100
101
  port=50152,
101
- mode=ServerMode.ASYNC,
102
+ mode=ControlFlow.ASYNC,
102
103
  security=SecurityMode.INSECURE,
103
104
  credentials=None,
104
105
  )
@@ -29,20 +29,20 @@
29
29
  dependencies = [
30
30
  "ag-ui-protocol>=0.1.14",
31
31
  "agentic-mesh-protocol==0.2.3",
32
- "anyio==4.12.1",
32
+ "anyio==4.13.0",
33
33
  "grpcio-health-checking==1.78.0",
34
34
  "grpcio-reflection==1.78.0",
35
35
  "grpcio-status==1.78.0",
36
36
  "pydantic==2.12.5",
37
- ]
38
- version = "0.3.5.dev11"
37
+ ]
38
+ version = "0.3.5.dev13"
39
39
 
40
40
  [project.optional-dependencies]
41
41
  profiling = [
42
42
  "asyncio-inspector==0.1.0",
43
43
  "pyinstrument==5.1.2",
44
44
  "viztracer==1.1.1",
45
- "yappi==1.7.3",
45
+ "yappi==1.7.6",
46
46
  ]
47
47
  taskiq = [
48
48
  "rstream==1.0.0",
@@ -61,13 +61,13 @@
61
61
 
62
62
  [dependency-groups]
63
63
  dev = [
64
- "build==1.4.0",
64
+ "build==1.4.2",
65
65
  "bump-my-version==1.2.7",
66
- "cryptography==46.0.5",
66
+ "cryptography==46.0.6",
67
67
  "mypy==1.19.1",
68
68
  "pre-commit==4.5.1",
69
69
  "pyright==1.1.408",
70
- "ruff==0.15.5",
70
+ "ruff==0.15.8",
71
71
  "twine==6.2.0",
72
72
  "types-grpcio-health-checking==1.0.0.20250506",
73
73
  "types-grpcio-reflection==1.0.0.20250506",
@@ -87,17 +87,17 @@
87
87
  "mkdocs-git-revision-date-localized-plugin==1.5.1",
88
88
  "mkdocs-glightbox==0.5.2",
89
89
  "mkdocs-include-markdown-plugin==7.2.1",
90
- "mkdocs-literate-nav==0.6.2",
90
+ "mkdocs-literate-nav==0.6.3",
91
91
  "mkdocs-llmstxt==0.5.0",
92
- "mkdocs-material[imaging]==9.7.5",
92
+ "mkdocs-material[imaging]==9.7.6",
93
93
  "mkdocs-minify-plugin==0.8.0",
94
94
  "mkdocs-open-in-new-tab==1.0.8",
95
95
  "mkdocs-redirects==1.2.2",
96
- "mkdocs-section-index==0.3.10",
96
+ "mkdocs-section-index==0.3.11",
97
97
  "mkdocs==1.6.1",
98
98
  "mkdocstrings-python==2.0.3",
99
99
  "mkdocstrings==1.0.3",
100
- "tomli==2.4.0",
100
+ "tomli==2.4.1",
101
101
  ]
102
102
  tests = [
103
103
  "freezegun==1.5.5",
@@ -105,7 +105,7 @@
105
105
  "hdrhistogram==0.10.3",
106
106
  "psutil==7.2.2",
107
107
  "pytest-asyncio==1.3.0",
108
- "pytest-cov==7.0.0",
108
+ "pytest-cov==7.1.0",
109
109
  "pytest-html==4.2.0",
110
110
  "pytest-json-report==1.5.0",
111
111
  "pytest-timeout==2.4.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__ = "0.3.5.dev11"
8
+ __version__ = "0.3.5.dev13"
@@ -63,6 +63,9 @@ class AgnoStreamAdapter:
63
63
 
64
64
  self._closed_tool_call_ids: set[str] = set()
65
65
 
66
+ self._active_run_id: str | None = None
67
+ self._completed_run_ids: set[str] = set()
68
+
66
69
  def to_digitalkin_events(self, agno_event: Any) -> list[BaseAgentRunEvent]: # noqa: C901, PLR0911, PLR0912, PLR0915
67
70
  """Convert one Agno event into one or more DigitalKin events.
68
71
 
@@ -83,17 +86,25 @@ class AgnoStreamAdapter:
83
86
 
84
87
  event_type = agno_event.event
85
88
 
86
- logger.info("[DK STREAM-DEBUG => agno_adapter] Converting Agno event type: %s", event_type)
89
+ logger.debug("Converting Agno event: %s", event_type)
87
90
 
88
91
  timestamp = getattr(agno_event, "timestamp", None)
89
92
 
90
93
  # ── Run Lifecycle ────────────────────────────────────────────────
91
94
 
92
95
  if event_type == RunEvent.run_started:
96
+ run_id = getattr(agno_event, "run_id", None)
97
+
98
+ # Skip duplicate RunStarted for the same run_id
99
+ if run_id and run_id == self._active_run_id:
100
+ logger.debug("Skipping duplicate RunStarted for run_id=%s", run_id)
101
+ return []
102
+
103
+ self._active_run_id = run_id
93
104
  return [
94
105
  RunStartedEvent(
95
106
  event=AgentRunEvent.RUN_STARTED,
96
- run_id=getattr(agno_event, "run_id", None),
107
+ run_id=run_id,
97
108
  thread_id=getattr(agno_event, "thread_id", None),
98
109
  timestamp=timestamp,
99
110
  metadata=None,
@@ -104,6 +115,13 @@ class AgnoStreamAdapter:
104
115
  return self._handle_run_content(agno_event, timestamp)
105
116
 
106
117
  if event_type == RunEvent.run_completed:
118
+ run_id = getattr(agno_event, "run_id", None)
119
+
120
+ # Skip if this run was already completed and not reopened
121
+ if run_id and run_id in self._completed_run_ids and run_id != self._active_run_id:
122
+ logger.debug("Skipping duplicate RunCompleted for run_id=%s", run_id)
123
+ return []
124
+
107
125
  events: list[BaseAgentRunEvent] = []
108
126
 
109
127
  # Close any open sequences before completing the run
@@ -112,10 +130,14 @@ class AgnoStreamAdapter:
112
130
  if self._reasoning_active:
113
131
  events.extend(self._close_reasoning(timestamp))
114
132
 
133
+ if run_id:
134
+ self._completed_run_ids.add(run_id)
135
+ self._active_run_id = None
136
+
115
137
  events.append(
116
138
  RunCompletedEvent(
117
139
  event=AgentRunEvent.RUN_COMPLETED,
118
- run_id=getattr(agno_event, "run_id", None),
140
+ run_id=run_id,
119
141
  final_content=str(agno_event.content) if getattr(agno_event, "content", None) else None,
120
142
  usage=None,
121
143
  timestamp=timestamp,
@@ -147,10 +169,7 @@ class AgnoStreamAdapter:
147
169
 
148
170
  self._current_reasoning_id = str(uuid.uuid4())
149
171
  self._reasoning_active = True
150
- logger.info(
151
- "[DK STREAM-DEBUG => agno_adapter] Reasoning started (explicit), id=%s",
152
- self._current_reasoning_id,
153
- )
172
+ logger.debug("Reasoning started, id=%s", self._current_reasoning_id)
154
173
  events.append(
155
174
  ReasoningStartedEvent(
156
175
  event=AgentRunEvent.REASONING_STARTED,
@@ -186,7 +205,7 @@ class AgnoStreamAdapter:
186
205
  ]
187
206
 
188
207
  if event_type == RunEvent.reasoning_completed:
189
- logger.info("[DK STREAM-DEBUG => agno_adapter] Reasoning completed (explicit)")
208
+ logger.debug("Reasoning completed")
190
209
  return self._close_reasoning(timestamp)
191
210
 
192
211
  # ── Tool Call Events ─────────────────────────────────────────────
@@ -196,7 +215,7 @@ class AgnoStreamAdapter:
196
215
 
197
216
  # Close both reasoning and content before tool calls
198
217
  if self._reasoning_active:
199
- logger.info("[DK STREAM-DEBUG => agno_adapter] Reasoning auto-completed (tool call started)")
218
+ logger.debug("Reasoning auto-completed (tool call started)")
200
219
  events.extend(self._close_reasoning(timestamp))
201
220
  if self._content_active:
202
221
  events.extend(self._close_content(timestamp))
@@ -253,10 +272,7 @@ class AgnoStreamAdapter:
253
272
 
254
273
  # Skip if already closed by ToolCallCompleted (Agno emits both for the same tool_call_id)
255
274
  if tool_call_id and tool_call_id in self._closed_tool_call_ids:
256
- logger.info(
257
- "[DK STREAM-DEBUG => agno_adapter] Skipping duplicate ToolCallError for already-closed tool %s",
258
- tool_call_id,
259
- )
275
+ logger.debug("Skipping duplicate ToolCallError for tool %s", tool_call_id)
260
276
  return []
261
277
 
262
278
  tool_info = None
@@ -293,10 +309,10 @@ class AgnoStreamAdapter:
293
309
  """
294
310
  events: list[BaseAgentRunEvent] = []
295
311
  if self._content_active:
296
- logger.info("[DK STREAM-DEBUG => agno_adapter] Flushing: closing active content")
312
+ logger.debug("Flushing active content sequence")
297
313
  events.extend(self._close_content(None))
298
314
  if self._reasoning_active:
299
- logger.info("[DK STREAM-DEBUG => agno_adapter] Flushing: closing active reasoning")
315
+ logger.debug("Flushing active reasoning sequence")
300
316
  events.extend(self._close_reasoning(None))
301
317
  return events
302
318
 
@@ -372,7 +388,7 @@ class AgnoStreamAdapter:
372
388
 
373
389
  # Edge case: neither reasoning_content nor content
374
390
  if reasoning_content is None and content is None:
375
- logger.debug("[DK STREAM-DEBUG => agno_adapter] run_content with no content, skipping")
391
+ logger.debug("run_content with no content, skipping")
376
392
 
377
393
  return events
378
394
 
@@ -398,10 +414,7 @@ class AgnoStreamAdapter:
398
414
  # Auto-open reasoning on first chunk
399
415
  if not self._reasoning_active:
400
416
  self._current_reasoning_id = str(uuid.uuid4())
401
- logger.info(
402
- "[DK STREAM-DEBUG => agno_adapter] Reasoning auto-started from run_content, id=%s",
403
- self._current_reasoning_id,
404
- )
417
+ logger.debug("Reasoning auto-started, id=%s", self._current_reasoning_id)
405
418
  events.append(
406
419
  ReasoningStartedEvent(
407
420
  event=AgentRunEvent.REASONING_STARTED,
@@ -412,10 +425,6 @@ class AgnoStreamAdapter:
412
425
  )
413
426
  self._reasoning_active = True
414
427
 
415
- logger.info(
416
- "[DK STREAM-DEBUG => agno_adapter] Reasoning content delta (len=%d)",
417
- len(reasoning_content),
418
- )
419
428
  events.append(
420
429
  ReasoningContentDeltaEvent(
421
430
  event=AgentRunEvent.REASONING_CONTENT_DELTA,
@@ -444,7 +453,7 @@ class AgnoStreamAdapter:
444
453
  # Non-empty string → text data
445
454
  # Close reasoning if transitioning from reasoning to content
446
455
  if self._reasoning_active:
447
- logger.info("[DK STREAM-DEBUG => agno_adapter] Reasoning auto-completed (text content arrived)")
456
+ logger.debug("Reasoning auto-completed (text content arrived)")
448
457
  events.extend(self._close_reasoning(timestamp))
449
458
 
450
459
  # Auto-open text message on first chunk
@@ -130,6 +130,12 @@ class BaseJobManager(abc.ABC, Generic[InputModelT, OutputModelT, SetupModelT]):
130
130
  required for the job manager to function.
131
131
  """
132
132
 
133
+ async def stop(self) -> None:
134
+ """Stop the job manager and clean up resources.
135
+
136
+ Default no-op. Subclasses with external connections override.
137
+ """
138
+
133
139
  @staticmethod
134
140
  async def job_specific_callback(
135
141
  callback: Callable[[str, DataModel | ModuleCodeModel], Coroutine[Any, Any, None]],
@@ -285,10 +285,7 @@ class SingleJobManager(BaseJobManager[InputModelT, OutputModelT, SetupModelT]):
285
285
  if session.cancelled:
286
286
  break
287
287
 
288
- try:
289
- yield _stream()
290
- finally:
291
- session.close_stream()
288
+ yield _stream()
292
289
 
293
290
  async def create_module_instance_job(
294
291
  self,