digitalkin 0.3.3.dev4__tar.gz → 0.3.3.dev6__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 (158) hide show
  1. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/PKG-INFO +1 -1
  2. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/pyproject.toml +1 -1
  3. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/__version__.py +1 -1
  4. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/core/job_manager/taskiq_broker.py +44 -3
  5. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/core/job_manager/taskiq_job_manager.py +3 -0
  6. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/models/module/tool_reference.py +17 -9
  7. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin.egg-info/PKG-INFO +1 -1
  8. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/LICENSE +0 -0
  9. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/README.md +0 -0
  10. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/examples/base_server/__init__.py +0 -0
  11. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/examples/base_server/mock/__init__.py +0 -0
  12. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/examples/base_server/mock/mock_pb2.py +0 -0
  13. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/examples/base_server/mock/mock_pb2_grpc.py +0 -0
  14. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/examples/base_server/server_async_insecure.py +0 -0
  15. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/examples/base_server/server_async_secure.py +0 -0
  16. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/examples/base_server/server_sync_insecure.py +0 -0
  17. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/examples/base_server/server_sync_secure.py +0 -0
  18. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/examples/modules/__init__.py +0 -0
  19. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/examples/modules/archetype_with_tools_module.py +0 -0
  20. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/examples/modules/cpu_intensive_module.py +0 -0
  21. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/examples/modules/dynamic_setup_module.py +0 -0
  22. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/examples/modules/minimal_llm_module.py +0 -0
  23. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/examples/modules/text_transform_module.py +0 -0
  24. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/examples/monitoring/digitalkin_observability/__init__.py +0 -0
  25. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/examples/monitoring/digitalkin_observability/http_server.py +0 -0
  26. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/examples/monitoring/digitalkin_observability/interceptors.py +0 -0
  27. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/examples/monitoring/digitalkin_observability/metrics.py +0 -0
  28. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/examples/monitoring/digitalkin_observability/prometheus.py +0 -0
  29. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/examples/monitoring/tests/test_metrics.py +0 -0
  30. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/examples/services/filesystem_module.py +0 -0
  31. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/examples/services/storage_module.py +0 -0
  32. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/setup.cfg +0 -0
  33. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/__init__.py +0 -0
  34. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/core/__init__.py +0 -0
  35. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/core/common/__init__.py +0 -0
  36. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/core/common/factories.py +0 -0
  37. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/core/job_manager/__init__.py +0 -0
  38. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/core/job_manager/base_job_manager.py +0 -0
  39. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/core/job_manager/single_job_manager.py +0 -0
  40. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/core/profiling/__init__.py +0 -0
  41. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/core/profiling/asyncio_monitor.py +0 -0
  42. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/core/profiling/task_profiler.py +0 -0
  43. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/core/task_manager/__init__.py +0 -0
  44. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/core/task_manager/base_task_manager.py +0 -0
  45. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/core/task_manager/local_task_manager.py +0 -0
  46. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/core/task_manager/remote_task_manager.py +0 -0
  47. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/core/task_manager/task_executor.py +0 -0
  48. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/core/task_manager/task_session.py +0 -0
  49. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/grpc_servers/__init__.py +0 -0
  50. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/grpc_servers/_base_server.py +0 -0
  51. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/grpc_servers/module_server.py +0 -0
  52. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/grpc_servers/module_servicer.py +0 -0
  53. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/grpc_servers/utils/__init__.py +0 -0
  54. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/grpc_servers/utils/exceptions.py +0 -0
  55. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/grpc_servers/utils/grpc_client_wrapper.py +0 -0
  56. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/grpc_servers/utils/grpc_error_handler.py +0 -0
  57. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/grpc_servers/utils/utility_schema_extender.py +0 -0
  58. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/logger.py +0 -0
  59. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/mixins/__init__.py +0 -0
  60. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/mixins/base_mixin.py +0 -0
  61. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/mixins/callback_mixin.py +0 -0
  62. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/mixins/chat_history_mixin.py +0 -0
  63. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/mixins/cost_mixin.py +0 -0
  64. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/mixins/file_history_mixin.py +0 -0
  65. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/mixins/filesystem_mixin.py +0 -0
  66. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/mixins/logger_mixin.py +0 -0
  67. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/mixins/storage_mixin.py +0 -0
  68. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/models/__init__.py +0 -0
  69. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/models/core/__init__.py +0 -0
  70. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/models/core/job_manager_models.py +0 -0
  71. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/models/core/task_monitor.py +0 -0
  72. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/models/grpc_servers/__init__.py +0 -0
  73. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/models/grpc_servers/models.py +0 -0
  74. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/models/grpc_servers/types.py +0 -0
  75. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/models/module/__init__.py +0 -0
  76. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/models/module/base_types.py +0 -0
  77. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/models/module/module.py +0 -0
  78. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/models/module/module_context.py +0 -0
  79. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/models/module/module_types.py +0 -0
  80. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/models/module/request_metadata.py +0 -0
  81. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/models/module/select_schema.py +0 -0
  82. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/models/module/setup_types.py +0 -0
  83. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/models/module/tool_cache.py +0 -0
  84. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/models/module/utility.py +0 -0
  85. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/models/services/__init__.py +0 -0
  86. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/models/services/cost.py +0 -0
  87. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/models/services/registry.py +0 -0
  88. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/models/services/storage.py +0 -0
  89. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/modules/__init__.py +0 -0
  90. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/modules/_base_module.py +0 -0
  91. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/modules/archetype_module.py +0 -0
  92. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/modules/tool_module.py +0 -0
  93. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/modules/trigger_handler.py +0 -0
  94. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/modules/triggers/__init__.py +0 -0
  95. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/modules/triggers/healthcheck_ping_trigger.py +0 -0
  96. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/modules/triggers/healthcheck_services_trigger.py +0 -0
  97. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/modules/triggers/healthcheck_status_trigger.py +0 -0
  98. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/py.typed +0 -0
  99. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/__init__.py +0 -0
  100. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/agent/__init__.py +0 -0
  101. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/agent/agent_strategy.py +0 -0
  102. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/agent/default_agent.py +0 -0
  103. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/base_strategy.py +0 -0
  104. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/communication/__init__.py +0 -0
  105. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/communication/communication_strategy.py +0 -0
  106. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/communication/default_communication.py +0 -0
  107. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/communication/grpc_communication.py +0 -0
  108. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/cost/__init__.py +0 -0
  109. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/cost/cost_strategy.py +0 -0
  110. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/cost/default_cost.py +0 -0
  111. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/cost/grpc_cost.py +0 -0
  112. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/filesystem/__init__.py +0 -0
  113. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/filesystem/default_filesystem.py +0 -0
  114. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/filesystem/filesystem_strategy.py +0 -0
  115. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/filesystem/grpc_filesystem.py +0 -0
  116. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/identity/__init__.py +0 -0
  117. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/identity/default_identity.py +0 -0
  118. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/identity/identity_strategy.py +0 -0
  119. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/registry/__init__.py +0 -0
  120. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/registry/default_registry.py +0 -0
  121. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/registry/exceptions.py +0 -0
  122. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/registry/grpc_registry.py +0 -0
  123. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/registry/registry_models.py +0 -0
  124. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/registry/registry_strategy.py +0 -0
  125. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/services_config.py +0 -0
  126. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/services_models.py +0 -0
  127. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/setup/__init__.py +0 -0
  128. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/setup/default_setup.py +0 -0
  129. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/setup/grpc_setup.py +0 -0
  130. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/setup/setup_strategy.py +0 -0
  131. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/snapshot/__init__.py +0 -0
  132. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/snapshot/default_snapshot.py +0 -0
  133. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/snapshot/snapshot_strategy.py +0 -0
  134. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/storage/__init__.py +0 -0
  135. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/storage/default_storage.py +0 -0
  136. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/storage/grpc_storage.py +0 -0
  137. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/storage/storage_strategy.py +0 -0
  138. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/task_manager/__init__.py +0 -0
  139. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/task_manager/default_task_manager.py +0 -0
  140. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/task_manager/grpc_task_manager.py +0 -0
  141. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/task_manager/task_manager_strategy.py +0 -0
  142. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/user_profile/__init__.py +0 -0
  143. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/user_profile/default_user_profile.py +0 -0
  144. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/user_profile/grpc_user_profile.py +0 -0
  145. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/services/user_profile/user_profile_strategy.py +0 -0
  146. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/utils/__init__.py +0 -0
  147. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/utils/arg_parser.py +0 -0
  148. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/utils/conditional_schema.py +0 -0
  149. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/utils/development_mode_action.py +0 -0
  150. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/utils/dynamic_schema.py +0 -0
  151. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/utils/llm_ready_schema.py +0 -0
  152. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/utils/package_discover.py +0 -0
  153. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/utils/proto_utils.py +0 -0
  154. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin/utils/schema_splitter.py +0 -0
  155. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin.egg-info/SOURCES.txt +0 -0
  156. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin.egg-info/dependency_links.txt +0 -0
  157. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/src/digitalkin.egg-info/requires.txt +0 -0
  158. {digitalkin-0.3.3.dev4 → digitalkin-0.3.3.dev6}/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.3.dev4
3
+ Version: 0.3.3.dev6
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
@@ -34,7 +34,7 @@
34
34
  "grpcio-status==1.78.0",
35
35
  "pydantic==2.12.5",
36
36
  ]
37
- version = "0.3.3.dev4"
37
+ version = "0.3.3.dev6"
38
38
 
39
39
  [project.optional-dependencies]
40
40
  profiling = [
@@ -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.3.dev4"
8
+ __version__ = "0.3.3.dev6"
@@ -61,15 +61,36 @@ class PickleFormatter(TaskiqFormatter):
61
61
  def loads(self, message: bytes) -> TaskiqMessage: # Required by TaskiqFormatter interface # noqa: PLR6301
62
62
  """Recreate Python object from bytes.
63
63
 
64
+ Non-pickle messages (e.g. raw JSON left in the queue by other producers)
65
+ are logged and converted to a no-op ``TaskiqMessage`` so that Taskiq
66
+ acknowledges (consumes) them instead of nack-ing and re-delivering in a loop.
67
+
64
68
  Args:
65
69
  message: Broker message from bytes.
66
70
 
67
71
  Returns:
68
72
  message with TaskIQ format
69
73
  """
70
- json_str = pickle.loads( # noqa: S301
71
- message
72
- ) # Pickle: required for Taskiq deserialization (internal broker messages only)
74
+ try:
75
+ json_str = pickle.loads( # noqa: S301
76
+ message
77
+ ) # Pickle: required for Taskiq deserialization (internal broker messages only)
78
+ except Exception as e:
79
+ logger.warning(
80
+ "Discarding non-pickle message (size=%d, preview=%r): %s",
81
+ len(message),
82
+ message[:80],
83
+ e,
84
+ )
85
+ # Return a no-op message that Taskiq will ack and discard
86
+ # (no task named "__discarded__" exists, so Taskiq logs a warning and moves on)
87
+ return TaskiqMessage(
88
+ task_id="__discarded__",
89
+ task_name="__discarded__",
90
+ labels={"_discarded": "true"},
91
+ args=[],
92
+ kwargs={},
93
+ )
73
94
  return model_validate(TaskiqMessage, json_str)
74
95
 
75
96
 
@@ -208,6 +229,17 @@ RSTREAM_PRODUCER = TaskiqBrokerConfig.define_producer()
208
229
  TASKIQ_BROKER = TaskiqBrokerConfig.define_broker()
209
230
 
210
231
 
232
+ @TASKIQ_BROKER.task(task_name="__discarded__")
233
+ async def _discarded_message() -> None: # noqa: RUF029
234
+ """No-op sink for poison messages consumed by PickleFormatter.
235
+
236
+ Taskiq's receiver early-returns without acking when a task name is unknown,
237
+ so we register this dummy task to ensure the message is executed (no-op),
238
+ acked, and removed from the queue.
239
+ """
240
+ logger.debug("Poison message acknowledged and discarded")
241
+
242
+
211
243
  @TASKIQ_BROKER.task
212
244
  async def run_start_module(
213
245
  mission_id: str,
@@ -335,6 +367,7 @@ async def run_config_module(
335
367
  services_mode: ServicesMode,
336
368
  config_setup_data: dict,
337
369
  request_metadata: dict[str, str] | None = None,
370
+ registry_config: dict[str, Any] | None = None,
338
371
  context: Context = TaskiqDepends(),
339
372
  ) -> None:
340
373
  """TaskIQ task allowing a module to compute in the background asynchronously.
@@ -347,9 +380,17 @@ async def run_config_module(
347
380
  services_mode: ServicesMode,
348
381
  config_setup_data: dict,
349
382
  request_metadata: gRPC request metadata (headers) to forward to the module.
383
+ registry_config: Registry config (client_config) forwarded from the main process.
350
384
  context: Allow TaskIQ context access
351
385
  """
352
386
  logger.info("Starting config module with services_mode: %s", services_mode)
387
+
388
+ # Restore registry config lost during pickle (worker re-imports class without runtime mutations)
389
+ if registry_config is not None:
390
+ if "services_config_params" not in module_class.__dict__:
391
+ module_class.services_config_params = dict(module_class.services_config_params)
392
+ module_class.services_config_params["registry"] = registry_config
393
+
353
394
  services_config = ServicesConfig(
354
395
  services_config_strategies=module_class.services_config_strategies,
355
396
  services_config_params=module_class.services_config_params,
@@ -245,6 +245,8 @@ class TaskiqJobManager(BaseJobManager[InputModelT, OutputModelT, SetupModelT]):
245
245
  raise TypeError(msg)
246
246
 
247
247
  # Submit task to Taskiq
248
+ registry_config = self.module_class.services_config_params.get("registry")
249
+
248
250
  running_task: AsyncTaskiqTask[Any] = await task.kiq(
249
251
  mission_id,
250
252
  setup_id,
@@ -253,6 +255,7 @@ class TaskiqJobManager(BaseJobManager[InputModelT, OutputModelT, SetupModelT]):
253
255
  self.services_mode,
254
256
  config_setup_data.model_dump(mode="json"), # SetupModelT generic bound to BaseModel # type: ignore
255
257
  request_metadata,
258
+ registry_config,
256
259
  )
257
260
 
258
261
  job_id = running_task.task_id
@@ -219,18 +219,26 @@ def tool_reference_input(
219
219
  """
220
220
  return [{"setupId": t.setup_id, "triggers": t.triggers} for t in v.selected_tools]
221
221
 
222
+ schema = _ToolReferenceInputSchema(
223
+ setup_ids=setup_ids or [],
224
+ module_ids=module_ids,
225
+ tag_ids=tag_ids or [],
226
+ categories=categories or [],
227
+ max_tools=max_tools,
228
+ min_tools=min_tools,
229
+ )
230
+
231
+ # When min_tools > 0, omit the default so the field is required — an empty
232
+ # ToolReference can never satisfy the constraint, and Pydantic v2 ignores
233
+ # validate_default inside Annotated/Field, so the only reliable way to
234
+ # prevent silent acceptance of the default is to not have one.
235
+ field = Field() if min_tools > 0 else Field(default_factory=ToolReference)
236
+
222
237
  return Annotated[ # type: ignore[return-value] # Returns Annotated type, not ToolReference directly
223
238
  ToolReference,
224
239
  BeforeValidator(convert_to_tool_reference),
225
240
  AfterValidator(validate_tools_count),
226
241
  PlainSerializer(serialize_to_list, return_type=list[dict[str, object]]),
227
- _ToolReferenceInputSchema(
228
- setup_ids=setup_ids or [],
229
- module_ids=module_ids,
230
- tag_ids=tag_ids or [],
231
- categories=categories or [],
232
- max_tools=max_tools,
233
- min_tools=min_tools,
234
- ),
235
- Field(default_factory=ToolReference),
242
+ schema,
243
+ field,
236
244
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: digitalkin
3
- Version: 0.3.3.dev4
3
+ Version: 0.3.3.dev6
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
File without changes