digitalkin 1.0.0.dev14__tar.gz → 1.0.0.dev15__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 (236) hide show
  1. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/PKG-INFO +2 -2
  2. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/pyproject.toml +3 -2
  3. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/__version__.py +1 -1
  4. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/grpc_servers/utils/grpc_client_wrapper.py +23 -11
  5. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/storage/grpc_storage.py +41 -15
  6. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin.egg-info/PKG-INFO +2 -2
  7. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin.egg-info/requires.txt +1 -1
  8. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/LICENSE +0 -0
  9. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/README.md +0 -0
  10. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/base_server/__init__.py +0 -0
  11. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/base_server/mock/__init__.py +0 -0
  12. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/base_server/mock/mock_pb2.py +0 -0
  13. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/base_server/mock/mock_pb2_grpc.py +0 -0
  14. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/base_server/server_async_insecure.py +0 -0
  15. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/base_server/server_async_secure.py +0 -0
  16. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/base_server/server_sync_insecure.py +0 -0
  17. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/base_server/server_sync_secure.py +0 -0
  18. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/bench_module/__init__.py +0 -0
  19. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/bench_module/echo_module.py +0 -0
  20. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/bench_module/models/__init__.py +0 -0
  21. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/bench_module/models/input.py +0 -0
  22. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/bench_module/models/output.py +0 -0
  23. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/bench_module/models/secret.py +0 -0
  24. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/bench_module/models/setup.py +0 -0
  25. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/bench_module/server.py +0 -0
  26. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/bench_module/triggers/__init__.py +0 -0
  27. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/bench_module/triggers/message_trigger.py +0 -0
  28. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/modules/__init__.py +0 -0
  29. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/modules/archetype_with_tools_module.py +0 -0
  30. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/modules/cpu_intensive_module.py +0 -0
  31. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/modules/dynamic_setup_module.py +0 -0
  32. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/modules/minimal_llm_module.py +0 -0
  33. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/modules/text_transform_module.py +0 -0
  34. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/monitoring/digitalkin_observability/__init__.py +0 -0
  35. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/monitoring/digitalkin_observability/http_server.py +0 -0
  36. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/monitoring/digitalkin_observability/interceptors.py +0 -0
  37. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/monitoring/digitalkin_observability/metrics.py +0 -0
  38. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/monitoring/digitalkin_observability/prometheus.py +0 -0
  39. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/monitoring/tests/test_metrics.py +0 -0
  40. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/redis_demo/client.py +0 -0
  41. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/redis_demo/echo_module.py +0 -0
  42. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/redis_demo/models/__init__.py +0 -0
  43. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/redis_demo/models/input.py +0 -0
  44. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/redis_demo/models/output.py +0 -0
  45. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/redis_demo/models/secret.py +0 -0
  46. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/redis_demo/models/setup.py +0 -0
  47. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/redis_demo/server.py +0 -0
  48. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/redis_demo/triggers/__init__.py +0 -0
  49. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/redis_demo/triggers/message_trigger.py +0 -0
  50. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/services/filesystem_module.py +0 -0
  51. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/examples/services/storage_module.py +0 -0
  52. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/setup.cfg +0 -0
  53. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/__init__.py +0 -0
  54. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/community/__init__.py +0 -0
  55. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/community/agno/__init__.py +0 -0
  56. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/community/agno/agno_adapter.py +0 -0
  57. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/community/agno/agui_tools.py +0 -0
  58. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/community/agno/hitl.py +0 -0
  59. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/community/agno/models.py +0 -0
  60. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/__init__.py +0 -0
  61. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/common/__init__.py +0 -0
  62. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/common/factories.py +0 -0
  63. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/exceptions.py +0 -0
  64. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/job_manager/__init__.py +0 -0
  65. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/job_manager/base_job_manager.py +0 -0
  66. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/job_manager/single_job_manager.py +0 -0
  67. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/profiling/__init__.py +0 -0
  68. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/profiling/step_timer.py +0 -0
  69. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/profiling/task_profiler.py +0 -0
  70. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/resilience/__init__.py +0 -0
  71. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/resilience/bulkhead.py +0 -0
  72. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/resilience/task_supervisor.py +0 -0
  73. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/task_manager/__init__.py +0 -0
  74. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/task_manager/base_task_manager.py +0 -0
  75. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/task_manager/local_task_manager.py +0 -0
  76. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/task_manager/module_runner.py +0 -0
  77. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/task_manager/redis/__init__.py +0 -0
  78. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/task_manager/redis/instrumented.py +0 -0
  79. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/task_manager/redis/proto_streams.py +0 -0
  80. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/task_manager/redis/redis_checkpoint.py +0 -0
  81. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/task_manager/redis/redis_client.py +0 -0
  82. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/task_manager/redis/redis_idempotency.py +0 -0
  83. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/task_manager/redis/redis_signal.py +0 -0
  84. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/task_manager/redis/redis_state.py +0 -0
  85. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/task_manager/redis/redis_streams.py +0 -0
  86. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/task_manager/redis/shadow.py +0 -0
  87. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/task_manager/remote_task_manager.py +0 -0
  88. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/task_manager/task_executor.py +0 -0
  89. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/core/task_manager/task_session.py +0 -0
  90. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/exceptions.py +0 -0
  91. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/grpc_servers/__init__.py +0 -0
  92. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/grpc_servers/_base_server.py +0 -0
  93. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/grpc_servers/exceptions.py +0 -0
  94. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/grpc_servers/gateway_servicer.py +0 -0
  95. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/grpc_servers/interceptors/__init__.py +0 -0
  96. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/grpc_servers/interceptors/circuit_breaker_interceptor.py +0 -0
  97. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/grpc_servers/m2m_call_registry.py +0 -0
  98. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/grpc_servers/module_server.py +0 -0
  99. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/grpc_servers/module_servicer.py +0 -0
  100. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/grpc_servers/stream_registry.py +0 -0
  101. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/grpc_servers/stream_session.py +0 -0
  102. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/grpc_servers/utils/__init__.py +0 -0
  103. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/grpc_servers/utils/circuit_breaker.py +0 -0
  104. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/grpc_servers/utils/grpc_error_handler.py +0 -0
  105. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/grpc_servers/utils/utility_schema_extender.py +0 -0
  106. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/grpc_servers/utils/validators.py +0 -0
  107. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/logger.py +0 -0
  108. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/mixins/__init__.py +0 -0
  109. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/mixins/agui_mixin.py +0 -0
  110. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/mixins/base_mixin.py +0 -0
  111. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/mixins/cost_mixin.py +0 -0
  112. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/mixins/file_history_mixin.py +0 -0
  113. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/mixins/filesystem_mixin.py +0 -0
  114. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/mixins/logger_mixin.py +0 -0
  115. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/mixins/storage_mixin.py +0 -0
  116. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/__init__.py +0 -0
  117. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/core/__init__.py +0 -0
  118. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/core/job_manager_models.py +0 -0
  119. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/core/redis.py +0 -0
  120. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/core/task_monitor.py +0 -0
  121. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/events/__init__.py +0 -0
  122. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/events/agent_events.py +0 -0
  123. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/grpc_servers/__init__.py +0 -0
  124. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/grpc_servers/circuit_breaker.py +0 -0
  125. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/grpc_servers/m2m.py +0 -0
  126. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/grpc_servers/models.py +0 -0
  127. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/grpc_servers/stream_error_codes.py +0 -0
  128. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/grpc_servers/types.py +0 -0
  129. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/module/__init__.py +0 -0
  130. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/module/ag_ui.py +0 -0
  131. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/module/base_types.py +0 -0
  132. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/module/module.py +0 -0
  133. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/module/module_context.py +0 -0
  134. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/module/module_types.py +0 -0
  135. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/module/request_metadata.py +0 -0
  136. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/module/select_schema.py +0 -0
  137. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/module/setup_types.py +0 -0
  138. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/module/tool_cache.py +0 -0
  139. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/module/tool_reference.py +0 -0
  140. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/module/utility.py +0 -0
  141. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/services/__init__.py +0 -0
  142. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/services/cost.py +0 -0
  143. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/services/registry.py +0 -0
  144. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/services/services.py +0 -0
  145. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/services/storage.py +0 -0
  146. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/settings/__init__.py +0 -0
  147. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/settings/consumer.py +0 -0
  148. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/settings/gateway.py +0 -0
  149. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/settings/grpc_client.py +0 -0
  150. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/settings/log.py +0 -0
  151. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/settings/module.py +0 -0
  152. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/settings/profiling.py +0 -0
  153. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/settings/queue.py +0 -0
  154. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/settings/redis.py +0 -0
  155. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/settings/resilience.py +0 -0
  156. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/settings/server/__init__.py +0 -0
  157. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/settings/server/channel.py +0 -0
  158. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/settings/server/grpc.py +0 -0
  159. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/settings/server/server.py +0 -0
  160. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/settings/server/servicer.py +0 -0
  161. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/settings/task_manager.py +0 -0
  162. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/settings/utils/__init__.py +0 -0
  163. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/settings/utils/channel.py +0 -0
  164. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/utils/__init__.py +0 -0
  165. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/models/utils/dynamic_schema.py +0 -0
  166. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/modules/__init__.py +0 -0
  167. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/modules/_base_module.py +0 -0
  168. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/modules/archetype_module.py +0 -0
  169. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/modules/tool_module.py +0 -0
  170. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/modules/trigger_handler.py +0 -0
  171. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/modules/triggers/__init__.py +0 -0
  172. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/modules/triggers/healthcheck_ping_trigger.py +0 -0
  173. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/modules/triggers/healthcheck_services_trigger.py +0 -0
  174. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/modules/triggers/healthcheck_status_trigger.py +0 -0
  175. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/py.typed +0 -0
  176. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/__init__.py +0 -0
  177. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/base_strategy.py +0 -0
  178. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/communication/__init__.py +0 -0
  179. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/communication/communication_strategy.py +0 -0
  180. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/communication/default_communication.py +0 -0
  181. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/communication/exceptions.py +0 -0
  182. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/communication/grpc_communication.py +0 -0
  183. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/cost/__init__.py +0 -0
  184. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/cost/cost_strategy.py +0 -0
  185. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/cost/default_cost.py +0 -0
  186. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/cost/exceptions.py +0 -0
  187. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/cost/grpc_cost.py +0 -0
  188. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/filesystem/__init__.py +0 -0
  189. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/filesystem/default_filesystem.py +0 -0
  190. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/filesystem/exceptions.py +0 -0
  191. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/filesystem/filesystem_strategy.py +0 -0
  192. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/filesystem/grpc_filesystem.py +0 -0
  193. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/identity/__init__.py +0 -0
  194. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/identity/default_identity.py +0 -0
  195. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/identity/identity_strategy.py +0 -0
  196. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/registry/__init__.py +0 -0
  197. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/registry/default_registry.py +0 -0
  198. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/registry/exceptions.py +0 -0
  199. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/registry/grpc_registry.py +0 -0
  200. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/registry/registry_models.py +0 -0
  201. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/registry/registry_strategy.py +0 -0
  202. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/services_config.py +0 -0
  203. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/services_models.py +0 -0
  204. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/setup/__init__.py +0 -0
  205. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/setup/default_setup.py +0 -0
  206. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/setup/exceptions.py +0 -0
  207. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/setup/grpc_setup.py +0 -0
  208. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/setup/setup_strategy.py +0 -0
  209. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/storage/__init__.py +0 -0
  210. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/storage/default_storage.py +0 -0
  211. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/storage/exceptions.py +0 -0
  212. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/storage/storage_strategy.py +0 -0
  213. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/task_manager/__init__.py +0 -0
  214. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/task_manager/default_task_manager.py +0 -0
  215. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/task_manager/exceptions.py +0 -0
  216. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/task_manager/redis_task_manager.py +0 -0
  217. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/task_manager/task_manager_strategy.py +0 -0
  218. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/user_profile/__init__.py +0 -0
  219. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/user_profile/default_user_profile.py +0 -0
  220. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/user_profile/exceptions.py +0 -0
  221. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/user_profile/grpc_user_profile.py +0 -0
  222. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/services/user_profile/user_profile_strategy.py +0 -0
  223. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/utils/__init__.py +0 -0
  224. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/utils/arg_parser.py +0 -0
  225. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/utils/conditional_schema.py +0 -0
  226. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/utils/development_mode_action.py +0 -0
  227. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/utils/dynamic_schema.py +0 -0
  228. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/utils/exceptions.py +0 -0
  229. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/utils/llm_ready_schema.py +0 -0
  230. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/utils/package_discover.py +0 -0
  231. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/utils/proto_utils.py +0 -0
  232. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin/utils/schema_splitter.py +0 -0
  233. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin.egg-info/SOURCES.txt +0 -0
  234. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin.egg-info/dependency_links.txt +0 -0
  235. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/src/digitalkin.egg-info/top_level.txt +0 -0
  236. {digitalkin-1.0.0.dev14 → digitalkin-1.0.0.dev15}/tests/test_exceptions.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: digitalkin
3
- Version: 1.0.0.dev14
3
+ Version: 1.0.0.dev15
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
@@ -452,7 +452,7 @@ 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: ag-ui-protocol>=0.1.18
455
+ Requires-Dist: ag-ui-protocol>=0.1.19
456
456
  Requires-Dist: agentic-mesh-protocol==1.0.0.dev2
457
457
  Requires-Dist: anyio>=4.13.0
458
458
  Requires-Dist: grpcio-health-checking==1.80.0
@@ -27,7 +27,7 @@
27
27
  ]
28
28
 
29
29
  dependencies = [
30
- "ag-ui-protocol>=0.1.18",
30
+ "ag-ui-protocol>=0.1.19",
31
31
  "agentic-mesh-protocol==1.0.0.dev2",
32
32
  "anyio>=4.13.0",
33
33
  "grpcio-health-checking==1.80.0",
@@ -37,7 +37,7 @@
37
37
  "pydantic-settings>=2.14.1",
38
38
  "redis[hiredis]>=7.4.0,<8",
39
39
  ]
40
- version = "1.0.0.dev14"
40
+ version = "1.0.0.dev15"
41
41
 
42
42
  [project.optional-dependencies]
43
43
  performance = [ "uvloop>=0.21" ]
@@ -305,5 +305,6 @@
305
305
  "smoke: marks critical path tests that should always pass",
306
306
  "stability: marks long-running stability and soak tests",
307
307
  "stress: marks stress/load tests for performance under pressure",
308
+ "unit: marks a plain unit test with no other applicable category",
308
309
  "validation: marks tests for input validation and schema checking",
309
310
  ]
@@ -5,4 +5,4 @@ from importlib.metadata import PackageNotFoundError, version
5
5
  try:
6
6
  __version__ = version("digitalkin")
7
7
  except PackageNotFoundError:
8
- __version__ = "1.0.0.dev14"
8
+ __version__ = "1.0.0.dev15"
@@ -48,6 +48,14 @@ class GrpcClientWrapper:
48
48
  grpc.StatusCode.DEADLINE_EXCEEDED,
49
49
  }
50
50
 
51
+ # Codes that count toward opening the circuit (service-health failures).
52
+ # Application-level codes (NOT_FOUND, INVALID_ARGUMENT, …) mean the service
53
+ # responded, so they never trip the breaker.
54
+ _CIRCUIT_FAILURE_CODES: ClassVar[set[grpc.StatusCode]] = _RETRYABLE_CODES | {
55
+ grpc.StatusCode.UNKNOWN,
56
+ grpc.StatusCode.RESOURCE_EXHAUSTED,
57
+ }
58
+
51
59
  @staticmethod
52
60
  def _build_channel_credentials(config: ClientConfig) -> grpc.ChannelCredentials | None:
53
61
  """Build SSL channel credentials from config if secure mode.
@@ -242,7 +250,18 @@ class GrpcClientWrapper:
242
250
  response = await rpc_method(request, timeout=timeout)
243
251
  except grpc.RpcError as e:
244
252
  last_error = e
245
- if e.code() not in self._RETRYABLE_CODES or attempt == max_retries:
253
+ if e.code() in self._RETRYABLE_CODES and attempt < max_retries:
254
+ logger.warning(
255
+ "gRPC transient error on %s.%s [%s] (attempt %d/%d), retrying in %.0fms",
256
+ self.service_name,
257
+ query_endpoint,
258
+ e.code().name,
259
+ attempt + 1,
260
+ max_retries + 1,
261
+ backoff_delays[attempt] * 1000,
262
+ )
263
+ continue
264
+ if e.code() in self._CIRCUIT_FAILURE_CODES:
246
265
  logger.warning(
247
266
  "circuit-breaker tick: %s.%s [%s]",
248
267
  self.service_name,
@@ -250,16 +269,9 @@ class GrpcClientWrapper:
250
269
  e.code().name,
251
270
  )
252
271
  cb.record_failure()
253
- break
254
- logger.warning(
255
- "gRPC transient error on %s.%s [%s] (attempt %d/%d), retrying in %.0fms",
256
- self.service_name,
257
- query_endpoint,
258
- e.code().name,
259
- attempt + 1,
260
- max_retries + 1,
261
- backoff_delays[attempt] * 1000,
262
- )
272
+ else:
273
+ cb.record_success()
274
+ break
263
275
  else:
264
276
  cb.record_success()
265
277
  return response
@@ -4,6 +4,7 @@ from agentic_mesh_protocol.storage.v1 import data_pb2, storage_service_pb2_grpc
4
4
  from google.protobuf.struct_pb2 import Struct
5
5
  from pydantic import BaseModel
6
6
 
7
+ from digitalkin.grpc_servers.exceptions import CircuitOpenError
7
8
  from digitalkin.grpc_servers.utils.grpc_client_wrapper import GrpcClientWrapper
8
9
  from digitalkin.logger import logger
9
10
  from digitalkin.models.grpc_servers.models import ClientConfig
@@ -21,6 +22,22 @@ class GrpcStorage(StorageStrategy, GrpcClientWrapper):
21
22
 
22
23
  service_name: str = "StorageService"
23
24
 
25
+ @staticmethod
26
+ def _is_circuit_open(error: Exception) -> bool:
27
+ """Whether ``error`` is a fast-fail from an open circuit breaker.
28
+
29
+ An open breaker is an expected, already-logged condition (the
30
+ CLOSED -> OPEN transition is logged once), so per-call rejections are
31
+ logged quietly to avoid flooding logs during an outage window.
32
+
33
+ Args:
34
+ error: The exception raised by ``exec_grpc_query``.
35
+
36
+ Returns:
37
+ True if the error's cause is a ``CircuitOpenError``.
38
+ """
39
+ return isinstance(error.__cause__, CircuitOpenError)
40
+
24
41
  def _build_record_from_proto(self, proto: data_pb2.StorageRecord) -> StorageRecord:
25
42
  """Convert a protobuf StorageRecord message into our Pydantic model.
26
43
 
@@ -83,11 +100,10 @@ class GrpcStorage(StorageStrategy, GrpcClientWrapper):
83
100
  resp = await self.exec_grpc_query("StoreRecord", req)
84
101
  return self._build_record_from_proto(resp.stored_data)
85
102
  except Exception as e:
86
- logger.exception(
87
- "gRPC StoreRecord failed for %s:%s",
88
- record.collection,
89
- record.record_id,
90
- )
103
+ if self._is_circuit_open(e):
104
+ logger.debug("gRPC StoreRecord skipped (circuit open) for %s:%s", record.collection, record.record_id)
105
+ else:
106
+ logger.exception("gRPC StoreRecord failed for %s:%s", record.collection, record.record_id)
91
107
  raise StorageServiceError(str(e)) from e
92
108
 
93
109
  async def _read(self, collection: str, record_id: str) -> StorageRecord | None:
@@ -106,7 +122,10 @@ class GrpcStorage(StorageStrategy, GrpcClientWrapper):
106
122
  resp = await self.exec_grpc_query("ReadRecord", req)
107
123
  return self._build_record_from_proto(resp.stored_data)
108
124
  except Exception as e:
109
- logger.info("gRPC ReadRecord failed for %s:%s: %s", collection, record_id, e)
125
+ if self._is_circuit_open(e):
126
+ logger.debug("gRPC ReadRecord skipped (circuit open) for %s:%s", collection, record_id)
127
+ else:
128
+ logger.info("gRPC ReadRecord failed for %s:%s: %s", collection, record_id, e)
110
129
  return None
111
130
 
112
131
  async def _update(
@@ -138,7 +157,10 @@ class GrpcStorage(StorageStrategy, GrpcClientWrapper):
138
157
  resp = await self.exec_grpc_query("UpdateRecord", req)
139
158
  return self._build_record_from_proto(resp.stored_data)
140
159
  except Exception as e:
141
- logger.warning("gRPC UpdateRecord failed for %s:%s: %s", collection, record_id, e)
160
+ if self._is_circuit_open(e):
161
+ logger.debug("gRPC UpdateRecord skipped (circuit open) for %s:%s", collection, record_id)
162
+ else:
163
+ logger.warning("gRPC UpdateRecord failed for %s:%s: %s", collection, record_id, e)
142
164
  return None
143
165
 
144
166
  async def _remove(self, collection: str, record_id: str) -> bool:
@@ -160,12 +182,10 @@ class GrpcStorage(StorageStrategy, GrpcClientWrapper):
160
182
  )
161
183
  await self.exec_grpc_query("RemoveRecord", req)
162
184
  except Exception as e:
163
- logger.warning(
164
- "gRPC RemoveRecord failed for %s:%s: %s",
165
- collection,
166
- record_id,
167
- e,
168
- )
185
+ if self._is_circuit_open(e):
186
+ logger.debug("gRPC RemoveRecord skipped (circuit open) for %s:%s", collection, record_id)
187
+ else:
188
+ logger.warning("gRPC RemoveRecord failed for %s:%s: %s", collection, record_id, e)
169
189
  return False
170
190
  return True
171
191
 
@@ -187,7 +207,10 @@ class GrpcStorage(StorageStrategy, GrpcClientWrapper):
187
207
  resp = await self.exec_grpc_query("ListRecords", req)
188
208
  return [self._build_record_from_proto(r) for r in resp.records]
189
209
  except Exception as e:
190
- logger.warning("gRPC ListRecords failed for %s: %s", collection, e)
210
+ if self._is_circuit_open(e):
211
+ logger.debug("gRPC ListRecords skipped (circuit open) for %s", collection)
212
+ else:
213
+ logger.warning("gRPC ListRecords failed for %s: %s", collection, e)
191
214
  return []
192
215
 
193
216
  async def _remove_collection(self, collection: str) -> bool:
@@ -206,7 +229,10 @@ class GrpcStorage(StorageStrategy, GrpcClientWrapper):
206
229
  )
207
230
  await self.exec_grpc_query("RemoveCollection", req)
208
231
  except Exception as e:
209
- logger.warning("gRPC RemoveCollection failed for %s: %s", collection, e)
232
+ if self._is_circuit_open(e):
233
+ logger.debug("gRPC RemoveCollection skipped (circuit open) for %s", collection)
234
+ else:
235
+ logger.warning("gRPC RemoveCollection failed for %s: %s", collection, e)
210
236
  return False
211
237
  return True
212
238
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: digitalkin
3
- Version: 1.0.0.dev14
3
+ Version: 1.0.0.dev15
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
@@ -452,7 +452,7 @@ 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: ag-ui-protocol>=0.1.18
455
+ Requires-Dist: ag-ui-protocol>=0.1.19
456
456
  Requires-Dist: agentic-mesh-protocol==1.0.0.dev2
457
457
  Requires-Dist: anyio>=4.13.0
458
458
  Requires-Dist: grpcio-health-checking==1.80.0
@@ -1,4 +1,4 @@
1
- ag-ui-protocol>=0.1.18
1
+ ag-ui-protocol>=0.1.19
2
2
  agentic-mesh-protocol==1.0.0.dev2
3
3
  anyio>=4.13.0
4
4
  grpcio-health-checking==1.80.0