digitalkin 1.0.0.dev3__tar.gz → 1.0.0.dev4__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 (215) hide show
  1. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/PKG-INFO +2 -2
  2. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/pyproject.toml +6 -6
  3. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/__version__.py +1 -1
  4. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/job_manager/single_job_manager.py +9 -2
  5. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/grpc_servers/gateway_constants.py +0 -2
  6. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/grpc_servers/stream_registry.py +12 -58
  7. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/settings/gateway.py +0 -1
  8. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin.egg-info/PKG-INFO +2 -2
  9. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin.egg-info/requires.txt +1 -1
  10. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/LICENSE +0 -0
  11. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/README.md +0 -0
  12. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/base_server/__init__.py +0 -0
  13. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/base_server/mock/__init__.py +0 -0
  14. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/base_server/mock/mock_pb2.py +0 -0
  15. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/base_server/mock/mock_pb2_grpc.py +0 -0
  16. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/base_server/server_async_insecure.py +0 -0
  17. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/base_server/server_async_secure.py +0 -0
  18. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/base_server/server_sync_insecure.py +0 -0
  19. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/base_server/server_sync_secure.py +0 -0
  20. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/bench_module/__init__.py +0 -0
  21. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/bench_module/echo_module.py +0 -0
  22. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/bench_module/models/__init__.py +0 -0
  23. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/bench_module/models/input.py +0 -0
  24. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/bench_module/models/output.py +0 -0
  25. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/bench_module/models/secret.py +0 -0
  26. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/bench_module/models/setup.py +0 -0
  27. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/bench_module/server.py +0 -0
  28. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/bench_module/triggers/__init__.py +0 -0
  29. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/bench_module/triggers/message_trigger.py +0 -0
  30. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/modules/__init__.py +0 -0
  31. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/modules/archetype_with_tools_module.py +0 -0
  32. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/modules/cpu_intensive_module.py +0 -0
  33. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/modules/dynamic_setup_module.py +0 -0
  34. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/modules/minimal_llm_module.py +0 -0
  35. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/modules/text_transform_module.py +0 -0
  36. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/monitoring/digitalkin_observability/__init__.py +0 -0
  37. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/monitoring/digitalkin_observability/http_server.py +0 -0
  38. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/monitoring/digitalkin_observability/interceptors.py +0 -0
  39. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/monitoring/digitalkin_observability/metrics.py +0 -0
  40. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/monitoring/digitalkin_observability/prometheus.py +0 -0
  41. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/monitoring/tests/test_metrics.py +0 -0
  42. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/redis_demo/client.py +0 -0
  43. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/redis_demo/echo_module.py +0 -0
  44. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/redis_demo/models/__init__.py +0 -0
  45. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/redis_demo/models/input.py +0 -0
  46. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/redis_demo/models/output.py +0 -0
  47. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/redis_demo/models/secret.py +0 -0
  48. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/redis_demo/models/setup.py +0 -0
  49. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/redis_demo/server.py +0 -0
  50. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/redis_demo/triggers/__init__.py +0 -0
  51. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/redis_demo/triggers/message_trigger.py +0 -0
  52. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/services/filesystem_module.py +0 -0
  53. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/examples/services/storage_module.py +0 -0
  54. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/setup.cfg +0 -0
  55. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/__init__.py +0 -0
  56. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/community/__init__.py +0 -0
  57. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/community/agno/__init__.py +0 -0
  58. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/community/agno/agno_adapter.py +0 -0
  59. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/community/agno/agui_tools.py +0 -0
  60. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/community/agno/hitl.py +0 -0
  61. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/__init__.py +0 -0
  62. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/common/__init__.py +0 -0
  63. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/common/factories.py +0 -0
  64. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/job_manager/__init__.py +0 -0
  65. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/job_manager/base_job_manager.py +0 -0
  66. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/profiling/__init__.py +0 -0
  67. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/profiling/step_timer.py +0 -0
  68. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/profiling/task_profiler.py +0 -0
  69. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/resilience/__init__.py +0 -0
  70. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/resilience/bulkhead.py +0 -0
  71. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/resilience/graceful_shutdown.py +0 -0
  72. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/resilience/session_reaper.py +0 -0
  73. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/resilience/task_supervisor.py +0 -0
  74. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/resilience/watchdog.py +0 -0
  75. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/task_manager/__init__.py +0 -0
  76. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/task_manager/base_task_manager.py +0 -0
  77. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/task_manager/local_task_manager.py +0 -0
  78. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/task_manager/module_runner.py +0 -0
  79. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/task_manager/redis/__init__.py +0 -0
  80. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/task_manager/redis/instrumented.py +0 -0
  81. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/task_manager/redis/proto_streams.py +0 -0
  82. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/task_manager/redis/redis_checkpoint.py +0 -0
  83. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/task_manager/redis/redis_client.py +0 -0
  84. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/task_manager/redis/redis_idempotency.py +0 -0
  85. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/task_manager/redis/redis_signal.py +0 -0
  86. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/task_manager/redis/redis_state.py +0 -0
  87. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/task_manager/redis/redis_streams.py +0 -0
  88. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/task_manager/redis/shadow.py +0 -0
  89. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/task_manager/remote_task_manager.py +0 -0
  90. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/task_manager/task_executor.py +0 -0
  91. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/task_manager/task_session.py +0 -0
  92. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/core/task_manager/task_wrapper.py +0 -0
  93. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/grpc_servers/__init__.py +0 -0
  94. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/grpc_servers/_base_server.py +0 -0
  95. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/grpc_servers/gateway_servicer.py +0 -0
  96. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/grpc_servers/interceptors/__init__.py +0 -0
  97. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/grpc_servers/interceptors/circuit_breaker_interceptor.py +0 -0
  98. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/grpc_servers/module_server.py +0 -0
  99. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/grpc_servers/module_servicer.py +0 -0
  100. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/grpc_servers/stream_error_codes.py +0 -0
  101. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/grpc_servers/stream_session.py +0 -0
  102. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/grpc_servers/utils/__init__.py +0 -0
  103. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/grpc_servers/utils/circuit_breaker.py +0 -0
  104. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/grpc_servers/utils/exceptions.py +0 -0
  105. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/grpc_servers/utils/grpc_client_wrapper.py +0 -0
  106. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/grpc_servers/utils/grpc_error_handler.py +0 -0
  107. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/grpc_servers/utils/utility_schema_extender.py +0 -0
  108. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/logger.py +0 -0
  109. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/mixins/__init__.py +0 -0
  110. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/mixins/agui_mixin.py +0 -0
  111. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/mixins/base_mixin.py +0 -0
  112. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/mixins/cost_mixin.py +0 -0
  113. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/mixins/file_history_mixin.py +0 -0
  114. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/mixins/filesystem_mixin.py +0 -0
  115. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/mixins/logger_mixin.py +0 -0
  116. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/mixins/storage_mixin.py +0 -0
  117. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/__init__.py +0 -0
  118. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/core/__init__.py +0 -0
  119. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/core/job_manager_models.py +0 -0
  120. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/core/task_monitor.py +0 -0
  121. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/events/__init__.py +0 -0
  122. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/events/agent_events.py +0 -0
  123. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/grpc_servers/__init__.py +0 -0
  124. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/grpc_servers/models.py +0 -0
  125. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/grpc_servers/types.py +0 -0
  126. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/module/__init__.py +0 -0
  127. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/module/ag_ui.py +0 -0
  128. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/module/base_types.py +0 -0
  129. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/module/module.py +0 -0
  130. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/module/module_context.py +0 -0
  131. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/module/module_types.py +0 -0
  132. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/module/request_metadata.py +0 -0
  133. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/module/select_schema.py +0 -0
  134. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/module/setup_types.py +0 -0
  135. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/module/tool_cache.py +0 -0
  136. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/module/tool_reference.py +0 -0
  137. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/module/utility.py +0 -0
  138. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/services/__init__.py +0 -0
  139. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/services/cost.py +0 -0
  140. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/services/registry.py +0 -0
  141. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/services/storage.py +0 -0
  142. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/settings/__init__.py +0 -0
  143. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/settings/consumer.py +0 -0
  144. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/settings/profiling.py +0 -0
  145. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/settings/redis.py +0 -0
  146. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/settings/server/__init__.py +0 -0
  147. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/settings/server/channel.py +0 -0
  148. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/settings/server/grpc.py +0 -0
  149. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/settings/server/server.py +0 -0
  150. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/settings/utils/__init__.py +0 -0
  151. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/models/settings/utils/channel.py +0 -0
  152. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/modules/__init__.py +0 -0
  153. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/modules/_base_module.py +0 -0
  154. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/modules/archetype_module.py +0 -0
  155. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/modules/tool_module.py +0 -0
  156. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/modules/trigger_handler.py +0 -0
  157. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/modules/triggers/__init__.py +0 -0
  158. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/modules/triggers/healthcheck_ping_trigger.py +0 -0
  159. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/modules/triggers/healthcheck_services_trigger.py +0 -0
  160. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/modules/triggers/healthcheck_status_trigger.py +0 -0
  161. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/py.typed +0 -0
  162. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/__init__.py +0 -0
  163. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/base_strategy.py +0 -0
  164. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/communication/__init__.py +0 -0
  165. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/communication/communication_strategy.py +0 -0
  166. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/communication/default_communication.py +0 -0
  167. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/communication/gateway_consumer.py +0 -0
  168. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/communication/grpc_communication.py +0 -0
  169. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/cost/__init__.py +0 -0
  170. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/cost/cost_strategy.py +0 -0
  171. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/cost/default_cost.py +0 -0
  172. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/cost/grpc_cost.py +0 -0
  173. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/filesystem/__init__.py +0 -0
  174. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/filesystem/default_filesystem.py +0 -0
  175. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/filesystem/filesystem_strategy.py +0 -0
  176. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/filesystem/grpc_filesystem.py +0 -0
  177. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/identity/__init__.py +0 -0
  178. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/identity/default_identity.py +0 -0
  179. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/identity/identity_strategy.py +0 -0
  180. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/registry/__init__.py +0 -0
  181. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/registry/default_registry.py +0 -0
  182. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/registry/exceptions.py +0 -0
  183. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/registry/grpc_registry.py +0 -0
  184. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/registry/registry_models.py +0 -0
  185. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/registry/registry_strategy.py +0 -0
  186. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/services_config.py +0 -0
  187. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/services_models.py +0 -0
  188. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/setup/__init__.py +0 -0
  189. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/setup/default_setup.py +0 -0
  190. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/setup/grpc_setup.py +0 -0
  191. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/setup/setup_strategy.py +0 -0
  192. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/storage/__init__.py +0 -0
  193. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/storage/default_storage.py +0 -0
  194. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/storage/grpc_storage.py +0 -0
  195. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/storage/storage_strategy.py +0 -0
  196. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/task_manager/__init__.py +0 -0
  197. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/task_manager/default_task_manager.py +0 -0
  198. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/task_manager/redis_task_manager.py +0 -0
  199. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/task_manager/task_manager_strategy.py +0 -0
  200. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/user_profile/__init__.py +0 -0
  201. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/user_profile/default_user_profile.py +0 -0
  202. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/user_profile/grpc_user_profile.py +0 -0
  203. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/services/user_profile/user_profile_strategy.py +0 -0
  204. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/utils/__init__.py +0 -0
  205. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/utils/arg_parser.py +0 -0
  206. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/utils/conditional_schema.py +0 -0
  207. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/utils/development_mode_action.py +0 -0
  208. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/utils/dynamic_schema.py +0 -0
  209. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/utils/llm_ready_schema.py +0 -0
  210. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/utils/package_discover.py +0 -0
  211. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/utils/proto_utils.py +0 -0
  212. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin/utils/schema_splitter.py +0 -0
  213. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin.egg-info/SOURCES.txt +0 -0
  214. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/src/digitalkin.egg-info/dependency_links.txt +0 -0
  215. {digitalkin-1.0.0.dev3 → digitalkin-1.0.0.dev4}/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: 1.0.0.dev3
3
+ Version: 1.0.0.dev4
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
@@ -458,7 +458,7 @@ Requires-Dist: anyio>=4.13.0
458
458
  Requires-Dist: grpcio-health-checking==1.80.0
459
459
  Requires-Dist: grpcio-reflection==1.80.0
460
460
  Requires-Dist: grpcio-status==1.80.0
461
- Requires-Dist: pydantic>=2.12.5
461
+ Requires-Dist: pydantic>=2.13.4
462
462
  Requires-Dist: pydantic-settings>=2.14.0
463
463
  Requires-Dist: redis[hiredis]<8,>=7.4.0
464
464
  Provides-Extra: performance
@@ -33,11 +33,11 @@
33
33
  "grpcio-health-checking==1.80.0",
34
34
  "grpcio-reflection==1.80.0",
35
35
  "grpcio-status==1.80.0",
36
- "pydantic>=2.12.5",
36
+ "pydantic>=2.13.4",
37
37
  "pydantic-settings>=2.14.0",
38
38
  "redis[hiredis]>=7.4.0,<8",
39
39
  ]
40
- version = "1.0.0.dev3"
40
+ version = "1.0.0.dev4"
41
41
 
42
42
  [project.optional-dependencies]
43
43
  performance = [ "uvloop>=0.21" ]
@@ -59,8 +59,8 @@
59
59
  dev = [
60
60
  "build>=1.5.0",
61
61
  "bump-my-version>=1.3.0",
62
- "cryptography>=47.0.0",
63
- "mypy>=1.20.2",
62
+ "cryptography>=48.0.0",
63
+ "mypy>=2.0.0",
64
64
  "pre-commit>=4.6.0",
65
65
  "pyright>=1.1.409",
66
66
  "ruff>=0.15.12",
@@ -68,8 +68,8 @@
68
68
  "types-grpcio-health-checking>=1.0.0.20260408",
69
69
  "types-grpcio-reflection>=1.0.0.20260408",
70
70
  "types-grpcio>=1.0.0.20260408",
71
- "types-protobuf>=7.34.1.20260408",
72
- "typos>=1.45.2",
71
+ "types-protobuf>=7.34.1.20260503",
72
+ "typos>=1.46.0",
73
73
  ]
74
74
  docs = [
75
75
  "griffe-inherited-docstrings>=1.1.3",
@@ -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.dev3"
8
+ __version__ = "1.0.0.dev4"
@@ -83,6 +83,13 @@ class SingleJobManager(BaseJobManager[InputModelT, OutputModelT, SetupModelT]):
83
83
  self._redis_client = redis_client
84
84
  self._stream_writers: dict[str, RedisStreamWriter] = {}
85
85
 
86
+ # Pool one RedisTaskManager across all preload_instance calls.
87
+ # The class is task-id-stateless; its `_listener` is already a
88
+ # process-wide singleton via SharedRedisListener.get_or_create.
89
+ from digitalkin.services.task_manager.redis_task_manager import RedisTaskManager
90
+
91
+ self._task_manager_strategy = RedisTaskManager(self._redis_client)
92
+
86
93
  async def start(self) -> None:
87
94
  """Start manager (no-op, no external connections needed)."""
88
95
 
@@ -273,7 +280,6 @@ class SingleJobManager(BaseJobManager[InputModelT, OutputModelT, SetupModelT]):
273
280
  ``(module, job_id, callback)`` — pass to ``run_preloaded``.
274
281
  """
275
282
  from digitalkin.core.profiling.step_timer import StepTimer
276
- from digitalkin.services.task_manager.redis_task_manager import RedisTaskManager
277
283
 
278
284
  timer = StepTimer()
279
285
  job_id = job_id or str(uuid.uuid4())
@@ -288,7 +294,8 @@ class SingleJobManager(BaseJobManager[InputModelT, OutputModelT, SetupModelT]):
288
294
  )
289
295
  timer.mark("factory_create")
290
296
 
291
- module.context.task_manager = RedisTaskManager(self._redis_client)
297
+ # Reuse the pooled RedisTaskManager — task-id-stateless, safe to share.
298
+ module.context.task_manager = self._task_manager_strategy
292
299
  timer.mark("redis_task_manager")
293
300
 
294
301
  if callback is None:
@@ -19,7 +19,6 @@ _prof = ProfilingSettings()
19
19
  # Redis Key Patterns (not configurable — structural)
20
20
  # ══════════════════════════════════════════════════════════════════
21
21
 
22
- REDIS_KEY_SESSION = "gateway:session:{task_id}"
23
22
  REDIS_KEY_STREAM = "task:{task_id}:stream"
24
23
  REDIS_KEY_INPUT_STREAM = "task:{task_id}:input"
25
24
  REDIS_KEY_CURSOR = "task:{task_id}:cursor"
@@ -31,7 +30,6 @@ REDIS_KEY_SIGNAL_CHANNEL = "signal_ch:{task_id}"
31
30
 
32
31
  MAX_STREAMS = _gw.max_streams
33
32
  MAX_LOCAL_CACHE = _gw.max_local_cache
34
- SESSION_STATE_TTL_S = _gw.session_state_ttl
35
33
  DIAL_BACK_BIDI_TIMEOUT_S = _gw.dial_back_bidi_timeout_s
36
34
 
37
35
  # ══════════════════════════════════════════════════════════════════
@@ -6,10 +6,9 @@ bound to the dial-back asyncio task: the task's ``finally`` calls
6
6
  ``BaseException`` propagated past finally), the task done-callback
7
7
  force-unregisters as a backstop.
8
8
 
9
- Optional Redis session-state mirror (``gateway:session:{task_id}`` HSET)
10
- is written on register and deleted on unregister for cross-instance
11
- observability. Heartbeat-based zombie reaping is gone — long streams
12
- were getting cut off when their heartbeat zset entry went stale.
9
+ No Redis I/O on register/unregister — the gateway is fully local for
10
+ session lifecycle. The previous Redis session-state mirror had no readers
11
+ once the heartbeat reaper was retired.
13
12
  """
14
13
 
15
14
  from __future__ import annotations
@@ -18,13 +17,10 @@ import asyncio
18
17
  from collections import OrderedDict
19
18
  from typing import TYPE_CHECKING, Any
20
19
 
21
- from redis.exceptions import RedisError
22
-
23
20
  from digitalkin.core.resilience.task_supervisor import log_unhandled
24
21
  from digitalkin.grpc_servers.gateway_constants import (
25
22
  MAX_LOCAL_CACHE,
26
23
  MAX_STREAMS,
27
- SESSION_STATE_TTL_S,
28
24
  )
29
25
  from digitalkin.logger import logger
30
26
 
@@ -32,62 +28,38 @@ if TYPE_CHECKING:
32
28
  from digitalkin.core.task_manager.redis.redis_client import RedisClient
33
29
  from digitalkin.grpc_servers.stream_session import StreamSession
34
30
 
35
- # Lua: atomic session-state write on register.
36
- # KEYS: [1]=session_key (empty string to skip)
37
- # ARGV: [1]=setup_id, [2]=mission_id, [3]=session_ttl
38
- # Returns 1 unconditionally — capacity is enforced process-locally now.
39
- _LUA_REGISTER = """
40
- local session_key = KEYS[1]
41
- if session_key ~= '' then
42
- redis.call('HSET', session_key, 'status', 'starting', 'setup_id', ARGV[1], 'mission_id', ARGV[2])
43
- redis.call('EXPIRE', session_key, tonumber(ARGV[3]))
44
- end
45
- return 1
46
- """
47
-
48
31
 
49
32
  class StreamRegistry:
50
33
  """Tracks active stream sessions per-instance + supervises spawned tasks.
51
34
 
52
35
  Local dict is a bounded LRU cache of sessions with active BiDi
53
36
  connections on this gateway instance. Capacity is enforced
54
- process-locally against ``max_streams``. Optional Redis HSET
55
- mirrors session metadata for observability.
37
+ process-locally against ``max_streams``.
56
38
  """
57
39
 
58
40
  _local_cache: OrderedDict[str, StreamSession]
59
41
  _max_local: int
60
42
  _max_streams: int
61
43
  _monitored_tasks: set[asyncio.Task[Any]]
62
- _redis_client: RedisClient
63
-
64
- @staticmethod
65
- def session_key(task_id: str) -> str:
66
- """Redis hash key for session metadata.
67
-
68
- Returns:
69
- Key in the format ``gateway:session:{task_id}``.
70
- """
71
- return f"gateway:session:{task_id}"
72
44
 
73
45
  def __init__(
74
46
  self,
75
- redis_client: RedisClient,
47
+ redis_client: RedisClient | None = None, # noqa: ARG002 — kept for back-compat with callers
76
48
  max_streams: int = MAX_STREAMS,
77
49
  max_local: int = MAX_LOCAL_CACHE,
78
50
  ) -> None:
79
51
  """Initialize the stream registry.
80
52
 
81
53
  Args:
54
+ redis_client: Unused (kept for back-compat); the registry no
55
+ longer touches Redis on register/unregister.
82
56
  max_streams: Maximum concurrent streams on this instance.
83
57
  max_local: Maximum sessions cached locally on this instance.
84
- redis_client: Redis client for the optional session-state mirror.
85
58
  """
86
59
  self._local_cache = OrderedDict()
87
60
  self._max_local = max_local
88
61
  self._max_streams = max_streams
89
62
  self._monitored_tasks = set()
90
- self._redis_client = redis_client
91
63
 
92
64
  @property
93
65
  def active_count(self) -> int:
@@ -97,15 +69,15 @@ class StreamRegistry:
97
69
  async def register(
98
70
  self,
99
71
  session: StreamSession,
100
- setup_id: str = "",
101
- mission_id: str = "",
72
+ setup_id: str = "", # noqa: ARG002 — accepted for back-compat with callers
73
+ mission_id: str = "", # noqa: ARG002 — accepted for back-compat with callers
102
74
  ) -> bool:
103
75
  """Register a new session. Capacity is enforced process-locally.
104
76
 
105
77
  Args:
106
78
  session: The stream session to register.
107
- setup_id: Setup ID to store in session state (optional).
108
- mission_id: Mission ID to store in session state (optional).
79
+ setup_id: Accepted for back-compat; no longer persisted to Redis.
80
+ mission_id: Accepted for back-compat; no longer persisted to Redis.
109
81
 
110
82
  Returns:
111
83
  True if registered, False if at capacity (this instance).
@@ -114,18 +86,6 @@ class StreamRegistry:
114
86
  if len(self._local_cache) >= self._max_streams:
115
87
  return False
116
88
 
117
- # Optional: mirror session metadata to Redis for observability.
118
- if setup_id:
119
- try:
120
- await self._redis_client.eval(
121
- _LUA_REGISTER,
122
- [self.session_key(session.task_id)],
123
- [setup_id, mission_id, str(SESSION_STATE_TTL_S)],
124
- )
125
- except RedisError:
126
- logger.exception("Redis session-state write failed: task_id=%s", session.task_id)
127
- # Continue — local registration is enough.
128
-
129
89
  # LRU cache — evict oldest if past max_local (separate from
130
90
  # max_streams which gates new admissions above).
131
91
  if len(self._local_cache) >= self._max_local:
@@ -151,7 +111,7 @@ class StreamRegistry:
151
111
  return session
152
112
 
153
113
  async def unregister(self, task_id: str) -> StreamSession | None:
154
- """Unregister a session and delete its Redis session-state key.
114
+ """Unregister a session from the local cache.
155
115
 
156
116
  Args:
157
117
  task_id: Session to remove.
@@ -160,12 +120,6 @@ class StreamRegistry:
160
120
  The removed session, or None if not found locally.
161
121
  """
162
122
  session = self._local_cache.pop(task_id, None)
163
-
164
- try:
165
- await self._redis_client.delete(self.session_key(task_id))
166
- except RedisError:
167
- logger.exception("Redis session-state delete failed: task_id=%s", task_id)
168
-
169
123
  if session is not None:
170
124
  logger.debug("StreamRegistry.unregister: task_id=%s local=%d", task_id, len(self._local_cache))
171
125
  return session
@@ -56,7 +56,6 @@ class GatewaySettings(BaseSettings):
56
56
 
57
57
  max_streams: int = Field(default=20000, description="Max concurrent gateway sessions (per instance)")
58
58
  max_local_cache: int = Field(default=5000, description="Max local session cache entries")
59
- session_state_ttl: int = Field(default=3600, description="Session metadata TTL in seconds")
60
59
  redis_health_timeout: float = Field(default=5.0, description="Redis health check timeout in seconds")
61
60
  dial_back_bidi_timeout_s: float = Field(
62
61
  default=300.0,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: digitalkin
3
- Version: 1.0.0.dev3
3
+ Version: 1.0.0.dev4
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
@@ -458,7 +458,7 @@ Requires-Dist: anyio>=4.13.0
458
458
  Requires-Dist: grpcio-health-checking==1.80.0
459
459
  Requires-Dist: grpcio-reflection==1.80.0
460
460
  Requires-Dist: grpcio-status==1.80.0
461
- Requires-Dist: pydantic>=2.12.5
461
+ Requires-Dist: pydantic>=2.13.4
462
462
  Requires-Dist: pydantic-settings>=2.14.0
463
463
  Requires-Dist: redis[hiredis]<8,>=7.4.0
464
464
  Provides-Extra: performance
@@ -4,7 +4,7 @@ anyio>=4.13.0
4
4
  grpcio-health-checking==1.80.0
5
5
  grpcio-reflection==1.80.0
6
6
  grpcio-status==1.80.0
7
- pydantic>=2.12.5
7
+ pydantic>=2.13.4
8
8
  pydantic-settings>=2.14.0
9
9
  redis[hiredis]<8,>=7.4.0
10
10
 
File without changes