digitalkin 1.0.0.dev9__tar.gz → 1.0.0.dev11__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 (235) hide show
  1. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/PKG-INFO +1 -1
  2. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/pyproject.toml +1 -1
  3. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/__version__.py +1 -1
  4. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/module/setup_types.py +23 -7
  5. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/module/tool_reference.py +95 -26
  6. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/modules/_base_module.py +3 -6
  7. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin.egg-info/PKG-INFO +1 -1
  8. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/LICENSE +0 -0
  9. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/README.md +0 -0
  10. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/base_server/__init__.py +0 -0
  11. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/base_server/mock/__init__.py +0 -0
  12. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/base_server/mock/mock_pb2.py +0 -0
  13. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/base_server/mock/mock_pb2_grpc.py +0 -0
  14. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/base_server/server_async_insecure.py +0 -0
  15. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/base_server/server_async_secure.py +0 -0
  16. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/base_server/server_sync_insecure.py +0 -0
  17. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/base_server/server_sync_secure.py +0 -0
  18. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/bench_module/__init__.py +0 -0
  19. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/bench_module/echo_module.py +0 -0
  20. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/bench_module/models/__init__.py +0 -0
  21. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/bench_module/models/input.py +0 -0
  22. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/bench_module/models/output.py +0 -0
  23. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/bench_module/models/secret.py +0 -0
  24. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/bench_module/models/setup.py +0 -0
  25. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/bench_module/server.py +0 -0
  26. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/bench_module/triggers/__init__.py +0 -0
  27. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/bench_module/triggers/message_trigger.py +0 -0
  28. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/modules/__init__.py +0 -0
  29. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/modules/archetype_with_tools_module.py +0 -0
  30. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/modules/cpu_intensive_module.py +0 -0
  31. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/modules/dynamic_setup_module.py +0 -0
  32. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/modules/minimal_llm_module.py +0 -0
  33. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/modules/text_transform_module.py +0 -0
  34. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/monitoring/digitalkin_observability/__init__.py +0 -0
  35. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/monitoring/digitalkin_observability/http_server.py +0 -0
  36. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/monitoring/digitalkin_observability/interceptors.py +0 -0
  37. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/monitoring/digitalkin_observability/metrics.py +0 -0
  38. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/monitoring/digitalkin_observability/prometheus.py +0 -0
  39. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/monitoring/tests/test_metrics.py +0 -0
  40. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/redis_demo/client.py +0 -0
  41. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/redis_demo/echo_module.py +0 -0
  42. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/redis_demo/models/__init__.py +0 -0
  43. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/redis_demo/models/input.py +0 -0
  44. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/redis_demo/models/output.py +0 -0
  45. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/redis_demo/models/secret.py +0 -0
  46. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/redis_demo/models/setup.py +0 -0
  47. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/redis_demo/server.py +0 -0
  48. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/redis_demo/triggers/__init__.py +0 -0
  49. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/redis_demo/triggers/message_trigger.py +0 -0
  50. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/services/filesystem_module.py +0 -0
  51. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/examples/services/storage_module.py +0 -0
  52. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/setup.cfg +0 -0
  53. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/__init__.py +0 -0
  54. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/community/__init__.py +0 -0
  55. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/community/agno/__init__.py +0 -0
  56. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/community/agno/agno_adapter.py +0 -0
  57. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/community/agno/agui_tools.py +0 -0
  58. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/community/agno/hitl.py +0 -0
  59. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/community/agno/models.py +0 -0
  60. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/__init__.py +0 -0
  61. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/common/__init__.py +0 -0
  62. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/common/factories.py +0 -0
  63. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/exceptions.py +0 -0
  64. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/job_manager/__init__.py +0 -0
  65. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/job_manager/base_job_manager.py +0 -0
  66. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/job_manager/single_job_manager.py +0 -0
  67. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/profiling/__init__.py +0 -0
  68. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/profiling/step_timer.py +0 -0
  69. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/profiling/task_profiler.py +0 -0
  70. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/resilience/__init__.py +0 -0
  71. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/resilience/bulkhead.py +0 -0
  72. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/resilience/task_supervisor.py +0 -0
  73. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/task_manager/__init__.py +0 -0
  74. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/task_manager/base_task_manager.py +0 -0
  75. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/task_manager/local_task_manager.py +0 -0
  76. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/task_manager/module_runner.py +0 -0
  77. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/task_manager/redis/__init__.py +0 -0
  78. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/task_manager/redis/instrumented.py +0 -0
  79. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/task_manager/redis/proto_streams.py +0 -0
  80. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/task_manager/redis/redis_checkpoint.py +0 -0
  81. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/task_manager/redis/redis_client.py +0 -0
  82. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/task_manager/redis/redis_idempotency.py +0 -0
  83. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/task_manager/redis/redis_signal.py +0 -0
  84. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/task_manager/redis/redis_state.py +0 -0
  85. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/task_manager/redis/redis_streams.py +0 -0
  86. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/task_manager/redis/shadow.py +0 -0
  87. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/task_manager/remote_task_manager.py +0 -0
  88. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/task_manager/task_executor.py +0 -0
  89. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/core/task_manager/task_session.py +0 -0
  90. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/exceptions.py +0 -0
  91. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/grpc_servers/__init__.py +0 -0
  92. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/grpc_servers/_base_server.py +0 -0
  93. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/grpc_servers/exceptions.py +0 -0
  94. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/grpc_servers/gateway_servicer.py +0 -0
  95. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/grpc_servers/interceptors/__init__.py +0 -0
  96. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/grpc_servers/interceptors/circuit_breaker_interceptor.py +0 -0
  97. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/grpc_servers/m2m_call_registry.py +0 -0
  98. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/grpc_servers/module_server.py +0 -0
  99. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/grpc_servers/module_servicer.py +0 -0
  100. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/grpc_servers/stream_registry.py +0 -0
  101. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/grpc_servers/stream_session.py +0 -0
  102. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/grpc_servers/utils/__init__.py +0 -0
  103. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/grpc_servers/utils/circuit_breaker.py +0 -0
  104. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/grpc_servers/utils/grpc_client_wrapper.py +0 -0
  105. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/grpc_servers/utils/grpc_error_handler.py +0 -0
  106. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/grpc_servers/utils/utility_schema_extender.py +0 -0
  107. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/grpc_servers/utils/validators.py +0 -0
  108. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/logger.py +0 -0
  109. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/mixins/__init__.py +0 -0
  110. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/mixins/agui_mixin.py +0 -0
  111. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/mixins/base_mixin.py +0 -0
  112. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/mixins/cost_mixin.py +0 -0
  113. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/mixins/file_history_mixin.py +0 -0
  114. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/mixins/filesystem_mixin.py +0 -0
  115. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/mixins/logger_mixin.py +0 -0
  116. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/mixins/storage_mixin.py +0 -0
  117. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/__init__.py +0 -0
  118. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/core/__init__.py +0 -0
  119. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/core/job_manager_models.py +0 -0
  120. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/core/redis.py +0 -0
  121. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/core/task_monitor.py +0 -0
  122. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/events/__init__.py +0 -0
  123. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/events/agent_events.py +0 -0
  124. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/grpc_servers/__init__.py +0 -0
  125. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/grpc_servers/circuit_breaker.py +0 -0
  126. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/grpc_servers/m2m.py +0 -0
  127. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/grpc_servers/models.py +0 -0
  128. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/grpc_servers/stream_error_codes.py +0 -0
  129. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/grpc_servers/types.py +0 -0
  130. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/module/__init__.py +0 -0
  131. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/module/ag_ui.py +0 -0
  132. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/module/base_types.py +0 -0
  133. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/module/module.py +0 -0
  134. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/module/module_context.py +0 -0
  135. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/module/module_types.py +0 -0
  136. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/module/request_metadata.py +0 -0
  137. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/module/select_schema.py +0 -0
  138. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/module/tool_cache.py +0 -0
  139. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/module/utility.py +0 -0
  140. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/services/__init__.py +0 -0
  141. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/services/cost.py +0 -0
  142. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/services/registry.py +0 -0
  143. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/services/services.py +0 -0
  144. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/services/storage.py +0 -0
  145. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/settings/__init__.py +0 -0
  146. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/settings/consumer.py +0 -0
  147. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/settings/gateway.py +0 -0
  148. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/settings/grpc_client.py +0 -0
  149. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/settings/log.py +0 -0
  150. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/settings/module.py +0 -0
  151. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/settings/profiling.py +0 -0
  152. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/settings/queue.py +0 -0
  153. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/settings/redis.py +0 -0
  154. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/settings/resilience.py +0 -0
  155. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/settings/server/__init__.py +0 -0
  156. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/settings/server/channel.py +0 -0
  157. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/settings/server/grpc.py +0 -0
  158. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/settings/server/server.py +0 -0
  159. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/settings/server/servicer.py +0 -0
  160. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/settings/task_manager.py +0 -0
  161. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/settings/utils/__init__.py +0 -0
  162. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/settings/utils/channel.py +0 -0
  163. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/utils/__init__.py +0 -0
  164. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/models/utils/dynamic_schema.py +0 -0
  165. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/modules/__init__.py +0 -0
  166. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/modules/archetype_module.py +0 -0
  167. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/modules/tool_module.py +0 -0
  168. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/modules/trigger_handler.py +0 -0
  169. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/modules/triggers/__init__.py +0 -0
  170. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/modules/triggers/healthcheck_ping_trigger.py +0 -0
  171. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/modules/triggers/healthcheck_services_trigger.py +0 -0
  172. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/modules/triggers/healthcheck_status_trigger.py +0 -0
  173. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/py.typed +0 -0
  174. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/__init__.py +0 -0
  175. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/base_strategy.py +0 -0
  176. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/communication/__init__.py +0 -0
  177. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/communication/communication_strategy.py +0 -0
  178. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/communication/default_communication.py +0 -0
  179. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/communication/exceptions.py +0 -0
  180. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/communication/grpc_communication.py +0 -0
  181. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/cost/__init__.py +0 -0
  182. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/cost/cost_strategy.py +0 -0
  183. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/cost/default_cost.py +0 -0
  184. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/cost/exceptions.py +0 -0
  185. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/cost/grpc_cost.py +0 -0
  186. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/filesystem/__init__.py +0 -0
  187. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/filesystem/default_filesystem.py +0 -0
  188. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/filesystem/exceptions.py +0 -0
  189. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/filesystem/filesystem_strategy.py +0 -0
  190. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/filesystem/grpc_filesystem.py +0 -0
  191. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/identity/__init__.py +0 -0
  192. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/identity/default_identity.py +0 -0
  193. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/identity/identity_strategy.py +0 -0
  194. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/registry/__init__.py +0 -0
  195. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/registry/default_registry.py +0 -0
  196. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/registry/exceptions.py +0 -0
  197. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/registry/grpc_registry.py +0 -0
  198. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/registry/registry_models.py +0 -0
  199. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/registry/registry_strategy.py +0 -0
  200. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/services_config.py +0 -0
  201. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/services_models.py +0 -0
  202. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/setup/__init__.py +0 -0
  203. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/setup/default_setup.py +0 -0
  204. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/setup/exceptions.py +0 -0
  205. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/setup/grpc_setup.py +0 -0
  206. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/setup/setup_strategy.py +0 -0
  207. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/storage/__init__.py +0 -0
  208. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/storage/default_storage.py +0 -0
  209. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/storage/exceptions.py +0 -0
  210. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/storage/grpc_storage.py +0 -0
  211. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/storage/storage_strategy.py +0 -0
  212. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/task_manager/__init__.py +0 -0
  213. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/task_manager/default_task_manager.py +0 -0
  214. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/task_manager/exceptions.py +0 -0
  215. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/task_manager/redis_task_manager.py +0 -0
  216. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/task_manager/task_manager_strategy.py +0 -0
  217. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/user_profile/__init__.py +0 -0
  218. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/user_profile/default_user_profile.py +0 -0
  219. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/user_profile/exceptions.py +0 -0
  220. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/user_profile/grpc_user_profile.py +0 -0
  221. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/services/user_profile/user_profile_strategy.py +0 -0
  222. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/utils/__init__.py +0 -0
  223. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/utils/arg_parser.py +0 -0
  224. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/utils/conditional_schema.py +0 -0
  225. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/utils/development_mode_action.py +0 -0
  226. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/utils/dynamic_schema.py +0 -0
  227. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/utils/exceptions.py +0 -0
  228. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/utils/llm_ready_schema.py +0 -0
  229. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/utils/package_discover.py +0 -0
  230. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/utils/proto_utils.py +0 -0
  231. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin/utils/schema_splitter.py +0 -0
  232. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin.egg-info/SOURCES.txt +0 -0
  233. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin.egg-info/dependency_links.txt +0 -0
  234. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/src/digitalkin.egg-info/requires.txt +0 -0
  235. {digitalkin-1.0.0.dev9 → digitalkin-1.0.0.dev11}/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.dev9
3
+ Version: 1.0.0.dev11
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
@@ -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.dev9"
40
+ version = "1.0.0.dev11"
41
41
 
42
42
  [project.optional-dependencies]
43
43
  performance = [ "uvloop>=0.21" ]
@@ -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.dev9"
8
+ __version__ = "1.0.0.dev11"
@@ -37,6 +37,7 @@ class SetupModel(BaseModel, Generic[SetupModelT]):
37
37
  resolved_tools: dict[str, ToolModuleInfo] = Field(
38
38
  default_factory=dict,
39
39
  json_schema_extra={"ui:widget": "hidden"},
40
+ exclude=True,
40
41
  )
41
42
 
42
43
  @classmethod
@@ -438,11 +439,12 @@ class SetupModel(BaseModel, Generic[SetupModelT]):
438
439
  registry: "RegistryStrategy | None" = None,
439
440
  communication: "CommunicationStrategy | None" = None,
440
441
  ) -> ToolCache:
441
- """Build tool cache, resolving uncached tools via registry.
442
+ """Build tool cache, resolving tools via registry.
442
443
 
443
- Walks ToolReference fields recursively. For each selected tool,
444
- checks resolved_tools first (cache). If missing and registry is
445
- available, resolves via gRPC and populates the cache.
444
+ ``resolved_tools`` is a within-build dedup cache, not a cross-request
445
+ store: when a registry is available it is cleared first so a stale or
446
+ empty entry can never be served every build re-resolves. Without a
447
+ registry the existing entries are kept (degraded/embedded path).
446
448
 
447
449
  Args:
448
450
  registry: Registry service for resolving uncached tools.
@@ -451,9 +453,12 @@ class SetupModel(BaseModel, Generic[SetupModelT]):
451
453
  Returns:
452
454
  ToolCache with resolved tool entries.
453
455
  """
456
+ if registry and communication:
457
+ self.resolved_tools.clear()
454
458
  cache = ToolCache()
455
459
  await self._collect_tools_recursive(self, cache, registry, communication)
456
- logger.info("Tool cache built: %d entries", len(cache.entries))
460
+ counts = " ".join(f"{sid}={len(info.tools)}" for sid, info in cache.entries.items())
461
+ logger.info("Tool cache built: %d entries [%s]", len(cache.entries), counts)
457
462
  return cache
458
463
 
459
464
  async def _collect_tools_recursive( # noqa: C901
@@ -531,7 +536,18 @@ class SetupModel(BaseModel, Generic[SetupModelT]):
531
536
  except Exception:
532
537
  logger.exception("Failed to resolve ToolReference '%s'", field_name)
533
538
 
539
+ missing: list[str] = []
534
540
  for entry in tool_ref.selected_tools:
535
541
  tool_info = self.resolved_tools.get(entry.setup_id) if entry.setup_id else None
536
- if tool_info:
537
- cache.add(tool_info)
542
+ if tool_info is None:
543
+ if entry.setup_id:
544
+ missing.append(entry.setup_id)
545
+ continue
546
+ cache.add(tool_info)
547
+
548
+ if missing:
549
+ logger.warning(
550
+ "ToolReference '%s' has %d unresolved setup_id(s): %s "
551
+ "(each has an upstream 'Tool resolve failed' log with the reason)",
552
+ field_name, len(missing), missing,
553
+ )
@@ -1,6 +1,7 @@
1
1
  """Tool reference types for module configuration."""
2
2
 
3
3
  import asyncio
4
+ import logging
4
5
  from typing import Annotated, ClassVar
5
6
 
6
7
  from pydantic import AfterValidator, BaseModel, BeforeValidator, Field, PlainSerializer
@@ -29,37 +30,49 @@ class ToolReference(BaseModel):
29
30
  default_factory=list, description="Selected tools with trigger filters."
30
31
  )
31
32
 
32
- async def resolve(self, registry: RegistryStrategy, communication: CommunicationStrategy) -> list[ToolModuleInfo]:
33
+ async def resolve(
34
+ self,
35
+ registry: RegistryStrategy,
36
+ communication: CommunicationStrategy,
37
+ ) -> list[ToolModuleInfo]:
33
38
  """Resolve selected tools using the registry.
34
39
 
35
- Each tool resolution is bounded by DIGITALKIN_MODULE_TOOL_RESOLVE_TIMEOUT (default 10s).
40
+ Each tool resolution is bounded by ``DIGITALKIN_MODULE_TOOL_RESOLVE_TIMEOUT``
41
+ (default 10s). Inputs that fail to resolve are logged as WARNING with the
42
+ ``setup_id`` and a ``reason=...`` field; the returned list contains only
43
+ successful ``ToolModuleInfo``s. The caller can correlate against
44
+ ``self.selected_tools`` by ``setup_id``.
36
45
 
37
46
  Args:
38
47
  registry: Registry service for module discovery.
39
48
  communication: Communication service for module schemas.
40
49
 
41
50
  Returns:
42
- List of ToolModuleInfo for resolved tools, filtered by enabled triggers.
51
+ List of resolved ``ToolModuleInfo``. Failed resolutions are logged and omitted.
43
52
  """
44
53
  timeout = get_module_settings().tool_resolve_timeout
45
54
 
46
- async def _resolve_with_timeout(entry: ToolSelection) -> ToolModuleInfo | None:
47
- return await asyncio.wait_for(
48
- ToolReference._resolve_single(entry, registry, communication),
49
- timeout=timeout,
50
- )
55
+ async def _bounded(entry: ToolSelection) -> ToolModuleInfo | None:
56
+ try:
57
+ return await asyncio.wait_for(
58
+ ToolReference._resolve_single(entry, registry, communication),
59
+ timeout=timeout,
60
+ )
61
+ except asyncio.TimeoutError:
62
+ logger.warning(
63
+ "Tool resolve failed: setup_id=%s reason=resolve_timeout timeout_s=%.1f",
64
+ entry.setup_id, timeout,
65
+ )
66
+ return None
67
+ except Exception:
68
+ logger.exception(
69
+ "Tool resolve failed: setup_id=%s reason=resolve_exception",
70
+ entry.setup_id,
71
+ )
72
+ return None
51
73
 
52
- results = await asyncio.gather(
53
- *(_resolve_with_timeout(entry) for entry in self.selected_tools),
54
- return_exceptions=True,
55
- )
56
- resolved: list[ToolModuleInfo] = []
57
- for entry, result in zip(self.selected_tools, results):
58
- if isinstance(result, BaseException):
59
- logger.warning("Failed to resolve tool (setup_id=%s): %s", entry.setup_id, result)
60
- elif isinstance(result, ToolModuleInfo):
61
- resolved.append(result)
62
- return resolved
74
+ results = await asyncio.gather(*(_bounded(e) for e in self.selected_tools))
75
+ return [r for r in results if r is not None]
63
76
 
64
77
  @staticmethod
65
78
  async def _resolve_single(
@@ -67,7 +80,15 @@ class ToolReference(BaseModel):
67
80
  registry: RegistryStrategy,
68
81
  communication: CommunicationStrategy,
69
82
  ) -> ToolModuleInfo | None:
70
- """Resolve a single tool selection.
83
+ """Resolve a single tool selection; emit one structured audit line per call.
84
+
85
+ Every failure path logs a ``WARNING`` with a ``reason=...`` field
86
+ (``setup_not_found``, ``module_not_discovered``, ``schema_fetch_failed``)
87
+ so callers don't need to re-derive the cause. Successful resolutions
88
+ emit ``[lat-audit] tool_resolve`` at INFO with input/output counts.
89
+ Post-filter results of zero functions emit a second ``WARNING`` naming
90
+ the structural cause (``module_exposes_no_triggers``,
91
+ ``all_user_triggers_unknown``, or ``post_filter_empty``).
71
92
 
72
93
  Args:
73
94
  entry: Tool selection to resolve.
@@ -75,26 +96,74 @@ class ToolReference(BaseModel):
75
96
  communication: Communication service for module schemas.
76
97
 
77
98
  Returns:
78
- ToolModuleInfo if resolved, None otherwise.
99
+ ToolModuleInfo on success (possibly with empty ``tools``); ``None`` on registry miss.
79
100
  """
80
101
  setup = await registry.get_setup(entry.setup_id)
81
102
  if not setup or not setup.module_id:
103
+ logger.warning(
104
+ "Tool resolve failed: setup_id=%s reason=setup_not_found",
105
+ entry.setup_id,
106
+ )
82
107
  return None
83
108
  info = await registry.discover_by_id(setup.module_id)
84
109
  if not info:
110
+ logger.warning(
111
+ "Tool resolve failed: setup_id=%s tool_name=%s module_id=%s reason=module_not_discovered",
112
+ entry.setup_id, setup.name, setup.module_id,
113
+ )
85
114
  return None
86
- tool_info = await module_info_to_tool_module_info(info, entry.setup_id, setup.name, communication)
115
+
116
+ try:
117
+ tool_info = await module_info_to_tool_module_info(
118
+ info, entry.setup_id, setup.name, communication,
119
+ )
120
+ except Exception:
121
+ logger.exception(
122
+ "Tool resolve failed: setup_id=%s tool_name=%s reason=schema_fetch_failed",
123
+ entry.setup_id, setup.name,
124
+ )
125
+ return None
126
+
127
+ available = {t.name for t in tool_info.tools}
87
128
  enabled_triggers = {name for name, enabled in entry.triggers.items() if enabled}
129
+
88
130
  if enabled_triggers:
89
- available = {t.name for t in tool_info.tools}
90
131
  if unknown := enabled_triggers - available:
91
132
  logger.warning(
92
133
  "Tool '%s' enables triggers the module does not expose: %s (available: %s)",
93
- entry.setup_id,
94
- sorted(unknown),
95
- sorted(available),
134
+ entry.setup_id, sorted(unknown), sorted(available),
96
135
  )
97
136
  tool_info.tools = [t for t in tool_info.tools if t.name in enabled_triggers]
137
+
138
+ post_count = len(tool_info.tools)
139
+ logger.info(
140
+ "[lat-audit] tool_resolve: setup_id=%s slug=%s "
141
+ "user_triggers_enabled=%d user_triggers_total=%d "
142
+ "module_available=%d post_filter=%d",
143
+ entry.setup_id, tool_info.slug,
144
+ len(enabled_triggers), len(entry.triggers),
145
+ len(available), post_count,
146
+ )
147
+ if logger.isEnabledFor(logging.DEBUG):
148
+ logger.debug(
149
+ "tool_resolve detail: setup_id=%s user_triggers=%s available=%s",
150
+ entry.setup_id, dict(entry.triggers), sorted(available),
151
+ )
152
+
153
+ if post_count == 0:
154
+ if not available:
155
+ reason = "module_exposes_no_triggers"
156
+ elif enabled_triggers and not (enabled_triggers & available):
157
+ reason = "all_user_triggers_unknown"
158
+ else:
159
+ reason = "post_filter_empty"
160
+ logger.warning(
161
+ "Tool resolved with 0 functions: setup_id=%s slug=%s reason=%s "
162
+ "user_enabled=%d module_available=%d",
163
+ entry.setup_id, tool_info.slug, reason,
164
+ len(enabled_triggers), len(available),
165
+ )
166
+
98
167
  return tool_info
99
168
 
100
169
 
@@ -667,18 +667,15 @@ class BaseModule( # Module SDK base class requires many public methods # noqa:
667
667
  except Exception:
668
668
  logger.warning("Failed to flush handler history during stop", exc_info=True)
669
669
  t2 = _t.perf_counter_ns()
670
- try:
670
+ if "send_message" in vars(self.context.callbacks):
671
671
  await self.context.callbacks.send_message(
672
672
  _EndOfStreamDataModel(
673
673
  root=EndOfStreamOutput(),
674
674
  annotations={"role": BaseRole.SYSTEM},
675
675
  )
676
676
  )
677
- except AttributeError:
678
- logger.warning(
679
- "send_message callback not set, skipping end-of-stream"
680
- " (expected for start_config_setup which does not register send_message)"
681
- )
677
+ else:
678
+ logger.debug("send_message not registered; skipping end-of-stream (config-setup path)")
682
679
  t3 = _t.perf_counter_ns()
683
680
  self._status = ModuleStatus.STOPPED
684
681
  ids = self.context.session.current_ids()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: digitalkin
3
- Version: 1.0.0.dev9
3
+ Version: 1.0.0.dev11
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