digitalkin 0.3.2.dev30__tar.gz → 0.3.3.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 (172) hide show
  1. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/PKG-INFO +17 -148
  2. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/modules/archetype_with_tools_module.py +1 -1
  3. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/modules/dynamic_setup_module.py +3 -3
  4. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/modules/text_transform_module.py +5 -5
  5. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/services/filesystem_module.py +4 -4
  6. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/services/storage_module.py +6 -6
  7. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/pyproject.toml +87 -69
  8. digitalkin-0.3.3.dev0/src/digitalkin/__init__.py +22 -0
  9. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/__version__.py +1 -1
  10. digitalkin-0.3.3.dev0/src/digitalkin/core/common/__init__.py +8 -0
  11. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/core/common/factories.py +3 -49
  12. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/core/job_manager/base_job_manager.py +17 -24
  13. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/core/job_manager/single_job_manager.py +129 -90
  14. digitalkin-0.3.3.dev0/src/digitalkin/core/job_manager/taskiq_broker.py +345 -0
  15. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/core/job_manager/taskiq_job_manager.py +135 -170
  16. digitalkin-0.3.3.dev0/src/digitalkin/core/profiling/__init__.py +6 -0
  17. digitalkin-0.3.3.dev0/src/digitalkin/core/profiling/asyncio_monitor.py +48 -0
  18. digitalkin-0.3.3.dev0/src/digitalkin/core/profiling/task_profiler.py +159 -0
  19. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/core/task_manager/base_task_manager.py +245 -144
  20. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/core/task_manager/local_task_manager.py +22 -32
  21. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/core/task_manager/remote_task_manager.py +19 -24
  22. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/core/task_manager/task_executor.py +88 -81
  23. digitalkin-0.3.3.dev0/src/digitalkin/core/task_manager/task_session.py +292 -0
  24. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/grpc_servers/_base_server.py +94 -17
  25. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/grpc_servers/module_server.py +67 -59
  26. digitalkin-0.3.3.dev0/src/digitalkin/grpc_servers/module_servicer.py +899 -0
  27. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/grpc_servers/utils/exceptions.py +2 -0
  28. digitalkin-0.3.3.dev0/src/digitalkin/grpc_servers/utils/grpc_client_wrapper.py +247 -0
  29. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/grpc_servers/utils/grpc_error_handler.py +5 -5
  30. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/grpc_servers/utils/utility_schema_extender.py +19 -11
  31. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/logger.py +81 -6
  32. digitalkin-0.3.3.dev0/src/digitalkin/mixins/chat_history_mixin.py +186 -0
  33. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/mixins/cost_mixin.py +31 -27
  34. digitalkin-0.3.3.dev0/src/digitalkin/mixins/file_history_mixin.py +161 -0
  35. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/mixins/filesystem_mixin.py +4 -4
  36. digitalkin-0.3.3.dev0/src/digitalkin/mixins/logger_mixin.py +57 -0
  37. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/mixins/storage_mixin.py +31 -6
  38. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/core/job_manager_models.py +14 -2
  39. digitalkin-0.3.3.dev0/src/digitalkin/models/core/task_monitor.py +59 -0
  40. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/grpc_servers/models.py +97 -42
  41. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/module/__init__.py +6 -0
  42. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/module/base_types.py +2 -4
  43. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/module/module_context.py +110 -59
  44. digitalkin-0.3.3.dev0/src/digitalkin/models/module/request_metadata.py +114 -0
  45. digitalkin-0.3.3.dev0/src/digitalkin/models/module/select_schema.py +72 -0
  46. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/module/setup_types.py +108 -251
  47. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/module/tool_cache.py +39 -13
  48. digitalkin-0.3.3.dev0/src/digitalkin/models/module/tool_reference.py +236 -0
  49. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/module/utility.py +16 -12
  50. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/services/cost.py +22 -1
  51. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/modules/_base_module.py +135 -36
  52. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/modules/tool_module.py +1 -1
  53. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/modules/trigger_handler.py +6 -4
  54. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/modules/triggers/healthcheck_ping_trigger.py +6 -4
  55. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/modules/triggers/healthcheck_services_trigger.py +15 -8
  56. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/modules/triggers/healthcheck_status_trigger.py +6 -4
  57. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/agent/agent_strategy.py +2 -2
  58. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/base_strategy.py +3 -0
  59. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/communication/communication_strategy.py +13 -5
  60. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/communication/default_communication.py +8 -3
  61. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/communication/grpc_communication.py +71 -43
  62. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/cost/cost_strategy.py +39 -17
  63. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/cost/default_cost.py +65 -5
  64. digitalkin-0.3.3.dev0/src/digitalkin/services/cost/grpc_cost.py +223 -0
  65. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/filesystem/default_filesystem.py +24 -25
  66. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/filesystem/filesystem_strategy.py +5 -5
  67. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/filesystem/grpc_filesystem.py +24 -24
  68. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/identity/default_identity.py +3 -1
  69. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/identity/identity_strategy.py +1 -1
  70. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/registry/default_registry.py +36 -11
  71. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/registry/grpc_registry.py +43 -20
  72. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/registry/registry_strategy.py +24 -12
  73. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/services_config.py +47 -60
  74. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/services_models.py +8 -6
  75. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/setup/default_setup.py +39 -24
  76. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/setup/grpc_setup.py +98 -63
  77. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/setup/setup_strategy.py +26 -11
  78. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/storage/default_storage.py +7 -8
  79. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/storage/grpc_storage.py +39 -28
  80. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/storage/storage_strategy.py +87 -19
  81. digitalkin-0.3.3.dev0/src/digitalkin/services/task_manager/__init__.py +6 -0
  82. digitalkin-0.3.3.dev0/src/digitalkin/services/task_manager/default_task_manager.py +89 -0
  83. digitalkin-0.3.3.dev0/src/digitalkin/services/task_manager/grpc_task_manager.py +675 -0
  84. digitalkin-0.3.3.dev0/src/digitalkin/services/task_manager/task_manager_strategy.py +52 -0
  85. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/user_profile/default_user_profile.py +7 -14
  86. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/user_profile/grpc_user_profile.py +13 -19
  87. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/user_profile/user_profile_strategy.py +3 -3
  88. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/utils/arg_parser.py +14 -5
  89. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/utils/conditional_schema.py +4 -2
  90. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/utils/development_mode_action.py +11 -6
  91. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/utils/dynamic_schema.py +11 -7
  92. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/utils/llm_ready_schema.py +6 -2
  93. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/utils/package_discover.py +44 -15
  94. digitalkin-0.3.3.dev0/src/digitalkin/utils/proto_utils.py +21 -0
  95. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/utils/schema_splitter.py +8 -22
  96. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin.egg-info/PKG-INFO +17 -148
  97. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin.egg-info/SOURCES.txt +10 -2
  98. digitalkin-0.3.3.dev0/src/digitalkin.egg-info/requires.txt +18 -0
  99. digitalkin-0.3.2.dev30/README.md +0 -135
  100. digitalkin-0.3.2.dev30/src/digitalkin/__init__.py +0 -8
  101. digitalkin-0.3.2.dev30/src/digitalkin/core/common/__init__.py +0 -9
  102. digitalkin-0.3.2.dev30/src/digitalkin/core/job_manager/taskiq_broker.py +0 -311
  103. digitalkin-0.3.2.dev30/src/digitalkin/core/task_manager/surrealdb_repository.py +0 -266
  104. digitalkin-0.3.2.dev30/src/digitalkin/core/task_manager/task_session.py +0 -368
  105. digitalkin-0.3.2.dev30/src/digitalkin/grpc_servers/module_servicer.py +0 -563
  106. digitalkin-0.3.2.dev30/src/digitalkin/grpc_servers/utils/grpc_client_wrapper.py +0 -88
  107. digitalkin-0.3.2.dev30/src/digitalkin/mixins/chat_history_mixin.py +0 -110
  108. digitalkin-0.3.2.dev30/src/digitalkin/mixins/file_history_mixin.py +0 -93
  109. digitalkin-0.3.2.dev30/src/digitalkin/mixins/logger_mixin.py +0 -51
  110. digitalkin-0.3.2.dev30/src/digitalkin/models/core/task_monitor.py +0 -74
  111. digitalkin-0.3.2.dev30/src/digitalkin/models/module/tool_reference.py +0 -158
  112. digitalkin-0.3.2.dev30/src/digitalkin/services/cost/grpc_cost.py +0 -138
  113. digitalkin-0.3.2.dev30/src/digitalkin.egg-info/requires.txt +0 -12
  114. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/LICENSE +0 -0
  115. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/base_server/__init__.py +0 -0
  116. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/base_server/mock/__init__.py +0 -0
  117. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/base_server/mock/mock_pb2.py +0 -0
  118. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/base_server/mock/mock_pb2_grpc.py +0 -0
  119. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/base_server/server_async_insecure.py +0 -0
  120. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/base_server/server_async_secure.py +0 -0
  121. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/base_server/server_sync_insecure.py +0 -0
  122. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/base_server/server_sync_secure.py +0 -0
  123. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/modules/__init__.py +0 -0
  124. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/modules/cpu_intensive_module.py +0 -0
  125. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/modules/minimal_llm_module.py +0 -0
  126. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/monitoring/digitalkin_observability/__init__.py +0 -0
  127. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/monitoring/digitalkin_observability/http_server.py +0 -0
  128. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/monitoring/digitalkin_observability/interceptors.py +0 -0
  129. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/monitoring/digitalkin_observability/metrics.py +0 -0
  130. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/monitoring/digitalkin_observability/prometheus.py +0 -0
  131. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/monitoring/tests/test_metrics.py +0 -0
  132. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/setup.cfg +0 -0
  133. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/core/__init__.py +0 -0
  134. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/core/job_manager/__init__.py +0 -0
  135. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/core/task_manager/__init__.py +0 -0
  136. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/grpc_servers/__init__.py +0 -0
  137. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/grpc_servers/utils/__init__.py +0 -0
  138. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/mixins/__init__.py +0 -0
  139. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/mixins/base_mixin.py +0 -0
  140. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/mixins/callback_mixin.py +0 -0
  141. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/__init__.py +0 -0
  142. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/core/__init__.py +0 -0
  143. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/grpc_servers/__init__.py +0 -0
  144. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/grpc_servers/types.py +0 -0
  145. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/module/module.py +0 -0
  146. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/module/module_types.py +0 -0
  147. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/services/__init__.py +0 -0
  148. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/services/registry.py +0 -0
  149. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/services/storage.py +0 -0
  150. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/modules/__init__.py +0 -0
  151. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/modules/archetype_module.py +0 -0
  152. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/modules/triggers/__init__.py +0 -0
  153. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/py.typed +0 -0
  154. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/__init__.py +0 -0
  155. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/agent/__init__.py +0 -0
  156. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/agent/default_agent.py +0 -0
  157. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/communication/__init__.py +0 -0
  158. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/cost/__init__.py +0 -0
  159. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/filesystem/__init__.py +0 -0
  160. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/identity/__init__.py +0 -0
  161. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/registry/__init__.py +0 -0
  162. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/registry/exceptions.py +0 -0
  163. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/registry/registry_models.py +0 -0
  164. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/setup/__init__.py +0 -0
  165. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/snapshot/__init__.py +0 -0
  166. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/snapshot/default_snapshot.py +0 -0
  167. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/snapshot/snapshot_strategy.py +0 -0
  168. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/storage/__init__.py +0 -0
  169. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/user_profile/__init__.py +0 -0
  170. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/utils/__init__.py +0 -0
  171. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin.egg-info/dependency_links.txt +0 -0
  172. {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/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.2.dev30
3
+ Version: 0.3.3.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
@@ -437,7 +437,7 @@ License: Attribution-NonCommercial-ShareAlike 4.0 International
437
437
  Project-URL: Documentation, https://github.com/DigitalKin-ai/digitalkin
438
438
  Project-URL: Homepage, https://github.com/DigitalKin-ai/digitalkin
439
439
  Project-URL: Issues, https://github.com/DigitalKin-ai/digitalkin/issues
440
- Keywords: agent,digitalkin,gprc,kin,sdk
440
+ Keywords: agent,digitalkin,grpc,kin,sdk
441
441
  Classifier: Development Status :: 3 - Alpha
442
442
  Classifier: Intended Audience :: Developers
443
443
  Classifier: License :: Other/Proprietary License
@@ -452,151 +452,20 @@ Classifier: Topic :: Software Development :: Libraries
452
452
  Requires-Python: >=3.10
453
453
  Description-Content-Type: text/markdown
454
454
  License-File: LICENSE
455
- Requires-Dist: agentic-mesh-protocol==0.2.1.dev0
456
- Requires-Dist: grpcio-health-checking>=1.76.0
457
- Requires-Dist: grpcio-reflection>=1.76.0
458
- Requires-Dist: grpcio-status>=1.76.0
459
- Requires-Dist: pydantic>=2.12.5
460
- Requires-Dist: surrealdb>=1.0.7
455
+ Requires-Dist: agentic-mesh-protocol==0.2.3
456
+ Requires-Dist: anyio==4.12.1
457
+ Requires-Dist: grpcio-health-checking==1.78.0
458
+ Requires-Dist: grpcio-reflection==1.78.0
459
+ Requires-Dist: grpcio-status==1.78.0
460
+ Requires-Dist: pydantic==2.12.5
461
+ Provides-Extra: profiling
462
+ Requires-Dist: asyncio-inspector==0.1.0; extra == "profiling"
463
+ Requires-Dist: pyinstrument==5.1.2; extra == "profiling"
464
+ Requires-Dist: viztracer==1.1.1; extra == "profiling"
465
+ Requires-Dist: yappi==1.7.3; extra == "profiling"
461
466
  Provides-Extra: taskiq
462
- Requires-Dist: rstream>=0.40.0; extra == "taskiq"
463
- Requires-Dist: taskiq-aio-pika>=0.5.0; extra == "taskiq"
464
- Requires-Dist: taskiq-redis>=1.2.0; extra == "taskiq"
465
- Requires-Dist: taskiq[reload]>=0.12.1; extra == "taskiq"
467
+ Requires-Dist: rstream==1.0.0; extra == "taskiq"
468
+ Requires-Dist: taskiq-aio-pika==0.6.0; extra == "taskiq"
469
+ Requires-Dist: taskiq-redis==1.2.2; extra == "taskiq"
470
+ Requires-Dist: taskiq[reload]==0.12.1; extra == "taskiq"
466
471
  Dynamic: license-file
467
-
468
- # DigitalKin Python SDK
469
-
470
- [![CI](https://github.com/DigitalKin-ai/digitalkin/actions/workflows/ci.yml/badge.svg)](https://github.com/DigitalKin-ai/digitalkin/actions/workflows/ci.yml)
471
- [![PyPI](https://img.shields.io/pypi/v/digitalkin.svg)](https://pypi.org/project/digitalkin/)
472
- [![Python Version](https://img.shields.io/pypi/pyversions/digitalkin.svg)](https://pypi.org/project/digitalkin/)
473
- [![License](https://img.shields.io/github/license/DigitalKin-ai/digitalkin)](https://github.com/DigitalKin-ai/digitalkin/blob/main/LICENSE)
474
-
475
- Welcome to the DigitalKin Python SDK, a powerful tool designed for developers
476
- who aim to build and manage agents within multi-agent systems according to the
477
- innovative DigitalKin agentic mesh standards. This SDK streamlines the process
478
- of creating and managing custom Tools, Triggers, and Kin Archetypes while
479
- ensuring full compliance with the DigitalKin ecosystem's standards.
480
-
481
- ## 🚀 Features
482
-
483
- - **Seamless Integration**: Easily integrate with DigitalKin's services using
484
- our comprehensive gRPC support.
485
- - **Customizable Agents**: Build custom agents and manage their lifecycle
486
- efficiently.
487
- - **Standards Compliance**: Adhere to the latest DigitalKin agentic mesh
488
- standards.
489
- - **Robust Development Tools**: Utilize advanced development tools for testing,
490
- building, and deploying your projects.
491
-
492
- ## 📦 Installation
493
-
494
- To install the DigitalKin SDK, simply run:
495
-
496
- ```bash
497
- pip install digitalkin
498
- ```
499
-
500
- **Optional Taskiq Integration**: Asynchronous task execution powered by Taskiq, backed by RabbitMQ and Redis
501
- To enable the Rabbitmq streaming capabilities, run:
502
-
503
- ```sh
504
- sudo rabbitmq-plugins enable rabbitmq_stream
505
-
506
- # Core + Taskiq integration (RabbitMQ broker)
507
- pip install digitalkin[taskiq]
508
- ```
509
-
510
- ## 🛠️ Usage
511
-
512
- ### Basic Import
513
-
514
- Start by importing the necessary modules:
515
-
516
- ```python
517
- import digitalkin
518
- ```
519
-
520
- ## Features
521
-
522
- ### Taskiq with RabbitMQ
523
-
524
- TaskIQ intergration allows the module to scale for heavy CPU tasks by having the request's stateless module in a new instance.
525
-
526
- - **Decoupled Scalability**: RabbitMQ brokers messages, letting producers and consumers scale independently.
527
- - **Reliability**: Durable queues, acknowledgements, and dead-lettering ensure tasks aren’t lost.
528
- - **Concurrency Control**: Taskiq’s worker pool manages parallel execution without custom schedulers.
529
- - **Flexibility**: Built-in retries, exponential backoff, and Redis result-backend for resilient workflows.
530
- - **Ecosystem**: Battle-tested `aio-pika` AMQP client plus Taskiq’s decorator-based API.
531
-
532
- By combining Taskiq’s async API with RabbitMQ’s guarantees, you get a robust, production-ready queue with minimal boilerplate.
533
-
534
- ## 👷‍♂️ Development
535
-
536
- ### Prerequisites
537
-
538
- Ensure you have the following installed:
539
-
540
- - Python 3.10+
541
- - [uv](https://astral.sh/uv) - Modern Python package management
542
- - [buf](https://buf.build/docs/installation) - Protocol buffer toolkit
543
- - [protoc](https://grpc.io/docs/protoc-installation/) - Protocol Buffers
544
- compiler
545
- - [Task](https://taskfile.dev/) - Task runner
546
-
547
- ### Setting Up Your Development Environment
548
-
549
- Clone the repository and set up your environment with these commands:
550
-
551
- ```bash
552
- # Clone the repository with submodules
553
- git clone --recurse-submodules https://github.com/DigitalKin-ai/digitalkin.git
554
- cd digitalkin
555
-
556
- # Setup development environment
557
- task setup-dev
558
- task setup-dev
559
- source .venv/bin/activate
560
- ```
561
-
562
- ### Common Development Tasks
563
-
564
- Utilize the following commands for common tasks:
565
-
566
- ```bash
567
- # Build the package
568
- task build-package
569
-
570
- # Run tests
571
- task run-tests
572
-
573
- # Format code using Ruff linter and formatter
574
- task linter
575
-
576
- # Clean build artifacts
577
- task clean
578
-
579
- # Bump version (major, minor, patch)
580
- task bump-version -- major|minor|patch
581
- ```
582
-
583
- ### Publishing Process
584
-
585
- 1. Update code and commit changes. (following conventional branch/commit
586
- standard)
587
- 2. Use `task bump-version -- major|minor|patch` command to commit new version.
588
- 3. Use GitHub "Create Release" workflow to plublish the new version.
589
- 4. Workflow automatically publishes to Test PyPI and PyPI.
590
-
591
- ## 📄 License
592
-
593
- This project is licensed under the terms specified in the LICENSE file.
594
-
595
- ---
596
-
597
- For more information, please visit our
598
- [Homepage](https://github.com/DigitalKin-ai/digitalkin), check our
599
- [Documentation](https://github.com/DigitalKin-ai/digitalkin), or report issues
600
- on our [Issues page](https://github.com/DigitalKin-ai/digitalkin/issues).
601
-
602
- Happy coding! 🎉🚀
@@ -81,7 +81,7 @@ class ArchetypeSetup(SetupModel):
81
81
 
82
82
  system_prompt: str = Field(
83
83
  default="You are a helpful assistant with access to tools.",
84
- json_schema_extra={"hidden": True},
84
+ json_schema_extra={"ui:widget": "hidden"},
85
85
  )
86
86
 
87
87
 
@@ -156,7 +156,7 @@ class DynamicAgentSetup(SetupModel):
156
156
  le=4096,
157
157
  title="Max Tokens",
158
158
  description="Maximum tokens in the response.",
159
- json_schema_extra={"hidden": True},
159
+ json_schema_extra={"ui:widget": "hidden"},
160
160
  )
161
161
 
162
162
  # Static field without any special flags
@@ -326,9 +326,9 @@ async def demonstrate_dynamic_schema() -> None:
326
326
  force=False,
327
327
  )
328
328
 
329
- # All fields including hidden
329
+ # Runtime fields including hidden
330
330
  await DynamicAgentSetup.get_clean_model(
331
- config_fields=True,
331
+ config_fields=False,
332
332
  hidden_fields=True,
333
333
  force=False,
334
334
  )
@@ -114,7 +114,7 @@ class TextTransformModule(BaseModule[TextTransformInput, TextTransformOutput, Te
114
114
  self.capabilities,
115
115
  )
116
116
 
117
- self.db_id = self.storage.store(
117
+ self.db_id = await self.storage.store(
118
118
  "monitor",
119
119
  {
120
120
  "module": self.metadata["name"],
@@ -173,12 +173,12 @@ class TextTransformModule(BaseModule[TextTransformInput, TextTransformOutput, Te
173
173
  transformed,
174
174
  )
175
175
 
176
- monitor_obj: StorageRecord | None = self.storage.read("monitor")
176
+ monitor_obj: StorageRecord | None = await self.storage.read("monitor")
177
177
  if monitor_obj is None:
178
178
  logger.error("Monitor object not found in storage.")
179
179
  break
180
180
  monitor_obj.data.consumption += 1
181
- updated_monitor_obj: StorageRecord | None = self.storage.modify("monitor", monitor_obj.data.model_dump())
181
+ updated_monitor_obj: StorageRecord | None = await self.storage.update("monitor", monitor_obj.data.model_dump())
182
182
  self.db_id = updated_monitor_obj.name if updated_monitor_obj else "monitor"
183
183
 
184
184
  # Send results through callback and wait for acknowledgment
@@ -194,10 +194,10 @@ class TextTransformModule(BaseModule[TextTransformInput, TextTransformOutput, Te
194
194
  Use it to close connections, free resources, etc.
195
195
  """
196
196
  logger.info(f"Cleaning up module {self.metadata['name']}")
197
- monitor_obj = self.storage.read("monitor")
197
+ monitor_obj = await self.storage.read("monitor")
198
198
  if monitor_obj is None:
199
199
  logger.error("Monitor object not found in storage.")
200
200
  return
201
201
  monitor_obj.data.ended = True
202
- updated_monitor_obj: StorageRecord | None = self.storage.modify("monitor", monitor_obj.data.model_dump())
202
+ updated_monitor_obj: StorageRecord | None = await self.storage.update("monitor", monitor_obj.data.model_dump())
203
203
  self.db_id = updated_monitor_obj.name if updated_monitor_obj else "monitor"
@@ -124,7 +124,7 @@ class ExampleModule(ArchetypeModule[ExampleInput, ExampleOutput, ExampleSetup, E
124
124
  replace_if_exists=True,
125
125
  )
126
126
 
127
- records, uploaded, failed = self.filesystem.upload_files(files=[file])
127
+ records, uploaded, failed = await self.filesystem.upload_files(files=[file])
128
128
  for record in records:
129
129
  logger.info("Uploaded file: %s, uploaded: %d, failed: %d", record, uploaded, failed)
130
130
  logger.info("Stored file with ID: %s", record.id)
@@ -175,16 +175,16 @@ async def test_module() -> None:
175
175
 
176
176
  # Check the storage
177
177
  if module.status == ModuleStatus.STOPPED:
178
- files, _nb_results = module.filesystem.get_files(
178
+ files, _nb_results = await module.filesystem.get_files(
179
179
  filters=FileFilter(name="example_output.txt", context="test-mission-123"),
180
180
  )
181
181
  for file in files:
182
- module.filesystem.update_file(file.id, file_type="updated")
182
+ await module.filesystem.update_file(file.id, file_type="updated")
183
183
  # module.filesystem.delete_files(filters=FileFilter(name="example_output.txt", context="test-mission-123"), permanent=True)
184
184
 
185
185
  logger.info("Retrieved file: %s with ID: %s", file.name, file.id)
186
186
  try:
187
- file_record = module.filesystem.get_file(file_id=file.id, include_content=True)
187
+ file_record = await module.filesystem.get_file(file_id=file.id, include_content=True)
188
188
  if file_record:
189
189
  logger.info("File ID: %s", file_record.id)
190
190
  logger.info("File name: %s", file_record.name)
@@ -134,7 +134,7 @@ class ExampleModule(ArchetypeModule[ExampleInput, ExampleOutput, ExampleSetup, E
134
134
  )
135
135
 
136
136
  # Store the output data in storage
137
- storage_id = self.storage.store(
137
+ storage_id = await self.storage.store(
138
138
  collection="example", record_id="example_outputs", data=output_data.model_dump(), data_type="OUTPUT"
139
139
  )
140
140
 
@@ -176,12 +176,12 @@ async def test_module() -> None:
176
176
 
177
177
  # Check the storage
178
178
  if module.status == ModuleStatus.STOPPED:
179
- result: StorageRecord = module.storage.read("example", "example_outputs")
179
+ result: StorageRecord = await module.storage.read("example", "example_outputs")
180
180
  if result:
181
181
  pass
182
182
 
183
183
 
184
- def test_storage_directly() -> None:
184
+ async def test_storage_directly() -> None:
185
185
  """Test the storage service directly."""
186
186
  # Initialize storage service
187
187
  storage = ServicesConfig().storage(
@@ -189,10 +189,10 @@ def test_storage_directly() -> None:
189
189
  )
190
190
 
191
191
  # Create a test record
192
- storage.store("example", "test_table", {"test_key": "test_value"}, "OUTPUT")
192
+ await storage.store("example", "test_table", {"test_key": "test_value"}, "OUTPUT")
193
193
 
194
194
  # Retrieve the record
195
- retrieved = storage.read("example", "test_table")
195
+ retrieved = await storage.read("example", "test_table")
196
196
 
197
197
  if retrieved:
198
198
  pass
@@ -203,4 +203,4 @@ if __name__ == "__main__":
203
203
  asyncio.run(test_module())
204
204
 
205
205
  # Test storage directly
206
- test_storage_directly()
206
+ asyncio.run(test_storage_directly())
@@ -1,6 +1,6 @@
1
1
  [build-system]
2
2
  build-backend = "setuptools.build_meta"
3
- requires = ["setuptools >= 75.8.2", "wheel"]
3
+ requires = [ "setuptools == 82.0.0", "wheel==0.46.3" ]
4
4
 
5
5
  [project]
6
6
 
@@ -10,7 +10,7 @@
10
10
  readme = "README.md"
11
11
  requires-python = ">=3.10"
12
12
 
13
- keywords = ["agent", "digitalkin", "gprc", "kin", "sdk"]
13
+ keywords = [ "agent", "digitalkin", "grpc", "kin", "sdk" ]
14
14
 
15
15
  classifiers = [
16
16
  "Development Status :: 3 - Alpha",
@@ -25,25 +25,30 @@
25
25
  "Programming Language :: Python",
26
26
  "Topic :: Software Development :: Libraries",
27
27
  ]
28
- version = "0.3.2.dev30"
29
28
 
30
29
  dependencies = [
31
- "agentic-mesh-protocol==0.2.1.dev0",
32
- "grpcio-health-checking>=1.76.0",
33
- "grpcio-reflection>=1.76.0",
34
- "grpcio-status>=1.76.0",
35
- "pydantic>=2.12.5",
36
- "surrealdb>=1.0.7",
30
+ "agentic-mesh-protocol==0.2.3",
31
+ "anyio==4.12.1",
32
+ "grpcio-health-checking==1.78.0",
33
+ "grpcio-reflection==1.78.0",
34
+ "grpcio-status==1.78.0",
35
+ "pydantic==2.12.5",
37
36
  ]
37
+ version = "0.3.3.dev0"
38
38
 
39
39
  [project.optional-dependencies]
40
+ profiling = [
41
+ "asyncio-inspector==0.1.0",
42
+ "pyinstrument==5.1.2",
43
+ "viztracer==1.1.1",
44
+ "yappi==1.7.3",
45
+ ]
40
46
  taskiq = [
41
- "rstream>=0.40.0",
42
- "taskiq-aio-pika>=0.5.0",
43
- "taskiq-redis>=1.2.0",
44
- "taskiq[reload]>=0.12.1",
47
+ "rstream==1.0.0",
48
+ "taskiq-aio-pika==0.6.0",
49
+ "taskiq-redis==1.2.2",
50
+ "taskiq[reload]==0.12.1",
45
51
  ]
46
-
47
52
  [project.urls]
48
53
  Documentation = "https://github.com/DigitalKin-ai/digitalkin"
49
54
  Homepage = "https://github.com/DigitalKin-ai/digitalkin"
@@ -55,63 +60,67 @@
55
60
 
56
61
  [dependency-groups]
57
62
  dev = [
58
- "build>=1.3.0",
59
- "bump-my-version>=1.2.5",
60
- "cryptography>=46.0.3",
61
- "mypy>=1.19.1",
62
- "pre-commit>=4.5.1",
63
- "pyright>=1.1.407",
64
- "ruff>=0.14.9",
65
- "twine>=6.2.0",
66
- "typos>=1.40.0",
63
+ "build==1.4.0",
64
+ "bump-my-version==1.2.7",
65
+ "cryptography==46.0.5",
66
+ "mypy==1.19.1",
67
+ "pre-commit==4.5.1",
68
+ "pyright==1.1.408",
69
+ "ruff==0.15.5",
70
+ "twine==6.2.0",
71
+ "types-grpcio-health-checking==1.0.0.20250506",
72
+ "types-grpcio-reflection==1.0.0.20250506",
73
+ "types-grpcio==1.0.0.20251009",
74
+ "types-protobuf==6.32.1.20260221",
75
+ "typos==1.44.0",
67
76
  ]
68
77
  docs = [
69
- "griffe-inherited-docstrings>=1.1.2",
70
- "markdown-callouts>=0.4.0",
71
- "markdown-exec>=1.12.1",
72
- "mike>=2.1.3",
73
- "mkdocs-autorefs>=1.4.3",
74
- "mkdocs-awesome-pages-plugin>=2.10.1",
75
- "mkdocs-coverage>=2.0.0",
76
- "mkdocs-git-committers-plugin-2>=2.5.0",
77
- "mkdocs-git-revision-date-localized-plugin>=1.5.0",
78
- "mkdocs-glightbox>=0.5.2",
79
- "mkdocs-include-markdown-plugin>=7.2.0",
80
- "mkdocs-literate-nav>=0.6.2",
81
- "mkdocs-llmstxt>=0.5.0",
82
- "mkdocs-material[imaging]>=9.7.0",
83
- "mkdocs-minify-plugin>=0.8.0",
84
- "mkdocs-open-in-new-tab>=1.0.8",
85
- "mkdocs-redirects>=1.2.2",
86
- "mkdocs-section-index>=0.3.10",
87
- "mkdocs>=1.6.1",
88
- "mkdocstrings-python>=2.0.1",
89
- "mkdocstrings>=1.0.0",
90
- "tomli>=2.3.0",
78
+ "griffe-inherited-docstrings==1.1.3",
79
+ "markdown-callouts==0.4.0",
80
+ "markdown-exec==1.12.1",
81
+ "mike==2.1.4",
82
+ "mkdocs-autorefs==1.4.4",
83
+ "mkdocs-awesome-pages-plugin==2.10.1",
84
+ "mkdocs-coverage==2.0.0",
85
+ "mkdocs-git-committers-plugin-2==2.5.0",
86
+ "mkdocs-git-revision-date-localized-plugin==1.5.1",
87
+ "mkdocs-glightbox==0.5.2",
88
+ "mkdocs-include-markdown-plugin==7.2.1",
89
+ "mkdocs-literate-nav==0.6.2",
90
+ "mkdocs-llmstxt==0.5.0",
91
+ "mkdocs-material[imaging]==9.7.5",
92
+ "mkdocs-minify-plugin==0.8.0",
93
+ "mkdocs-open-in-new-tab==1.0.8",
94
+ "mkdocs-redirects==1.2.2",
95
+ "mkdocs-section-index==0.3.10",
96
+ "mkdocs==1.6.1",
97
+ "mkdocstrings-python==2.0.3",
98
+ "mkdocstrings==1.0.3",
99
+ "tomli==2.4.0",
91
100
  ]
92
101
  tests = [
93
- "freezegun>=1.5.5",
94
- "grpcio-testing>=1.76.0",
95
- "hdrhistogram>=0.10.3",
96
- "psutil>=7.1.3",
97
- "pytest-asyncio>=1.3.0",
98
- "pytest-cov>=7.0.0",
99
- "pytest-html==4.1.1",
102
+ "freezegun==1.5.5",
103
+ "grpcio-testing==1.78.0",
104
+ "hdrhistogram==0.10.3",
105
+ "psutil==7.2.2",
106
+ "pytest-asyncio==1.3.0",
107
+ "pytest-cov==7.0.0",
108
+ "pytest-html==4.2.0",
100
109
  "pytest-json-report==1.5.0",
101
- "pytest-timeout>=2.4.0",
102
- "pytest>=9.0.2",
110
+ "pytest-timeout==2.4.0",
111
+ "pytest==9.0.2",
103
112
  ]
104
113
  [tool.setuptools]
105
114
  package-dir = { "" = "src" }
106
115
 
107
116
  [tool.setuptools.packages.find]
108
- where = ["examples", "src"]
109
-
117
+ where = [ "examples", "src" ]
110
118
  [tool.ruff]
119
+
111
120
  indent-width = 4
112
121
  line-length = 120
113
122
  show-fixes = true
114
- src = ["src"]
123
+ src = [ "src" ]
115
124
  target-version = "py310"
116
125
  unsafe-fixes = true
117
126
  # Enable preview features.
@@ -191,12 +200,18 @@
191
200
  ]
192
201
 
193
202
  ignore = [
194
- "COM812", # Disable because of formatter incompatibility
195
- "DOC502", # Allow extraneous-exception in docstring
196
- "S105", # Hardcoded-password
203
+ "ANN401", # Allow typing.Any gRPC stubs, callbacks, and dynamic APIs require it
204
+ "COM812", # Disable because of formatter incompatibility
205
+ "DOC502", # Allow extraneous-exception in docstring
206
+ "F401", # Allow unused imports — used for availability checks (e.g. taskiq)
207
+ "N802", # Allow PascalCase methods — gRPC servicer convention
208
+ "PLC0415", # Allow lazy imports — needed to break circular dependencies
209
+ "PLW3201", # Allow __get_pydantic_core_schema__ — Pydantic dunder hook
210
+ "S105", # Hardcoded-password
211
+ "S403", # Allow pickle import — required for Taskiq serialization
197
212
  ]
198
213
 
199
- fixable = ["ALL"]
214
+ fixable = [ "ALL" ]
200
215
 
201
216
  [tool.ruff.lint.pydocstyle]
202
217
  convention = "google"
@@ -250,19 +265,20 @@
250
265
  skip-magic-trailing-comma = false
251
266
 
252
267
  [tool.pyright]
253
- exclude = ["**/.venv", "**/__pycache__"]
254
- include = ["src"]
268
+ exclude = [ "**/.*", "**/.venv", "**/__pycache__", "**/node_modules" ]
269
+ include = [ "src" ]
255
270
 
256
271
  [tool.mypy]
257
- exclude = ["examples", "tests"]
258
272
 
273
+ exclude = [ "examples", "tests" ]
274
+ ignore_missing_imports = true
259
275
  [tool.pytest.ini_options]
276
+
260
277
  asyncio_mode = "auto"
278
+ log_cli = false
279
+ log_level = "ERROR"
261
280
  python_files = "test_*.py"
262
- testpaths = ["tests"]
263
-
264
- log_cli = false
265
- log_level = "ERROR"
281
+ testpaths = [ "tests" ]
266
282
 
267
283
  # Default timeout for tests (in seconds)
268
284
  timeout = 10
@@ -272,8 +288,10 @@
272
288
  markers = [
273
289
  "edge_case: marks tests for boundary conditions and edge cases",
274
290
  "grpc: marks tests for gRPC service functionality",
275
- "integration: marks tests that require real SurrealDB connection (deselect with '-m \"not integration\"')",
291
+ "integration: marks tests that require external service connections (deselect with '-m \"not integration\"')",
276
292
  "regression: marks tests for previously fixed bugs",
277
293
  "smoke: marks critical path tests that should always pass",
294
+ "stress: marks stress/load tests for performance under pressure",
295
+ "taskiq: marks tests for Taskiq distributed job execution",
278
296
  "validation: marks tests for input validation and schema checking",
279
297
  ]
@@ -0,0 +1,22 @@
1
+ """DigitalKin SDK!
2
+
3
+ This package implements the DigitalKin agentic mesh standards.
4
+ """
5
+
6
+ from digitalkin.__version__ import __version__
7
+ from digitalkin.models.module.module import ModuleStatus
8
+ from digitalkin.models.module.module_context import ModuleContext
9
+ from digitalkin.modules.archetype_module import ArchetypeModule
10
+ from digitalkin.modules.tool_module import ToolModule
11
+ from digitalkin.modules.trigger_handler import TriggerHandler
12
+ from digitalkin.services.services_config import ServicesConfig
13
+
14
+ __all__ = [
15
+ "ArchetypeModule",
16
+ "ModuleContext",
17
+ "ModuleStatus",
18
+ "ServicesConfig",
19
+ "ToolModule",
20
+ "TriggerHandler",
21
+ "__version__",
22
+ ]
@@ -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.2.dev30"
8
+ __version__ = "0.3.3.dev0"
@@ -0,0 +1,8 @@
1
+ """Common utilities for the core module."""
2
+
3
+ from digitalkin.core.common.factories import ModuleFactory, QueueFactory
4
+
5
+ __all__ = [
6
+ "ModuleFactory",
7
+ "QueueFactory",
8
+ ]