digitalkin 0.3.2.dev20__tar.gz → 0.3.2.dev21__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 (149) hide show
  1. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/PKG-INFO +1 -1
  2. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/pyproject.toml +1 -1
  3. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/__version__.py +1 -1
  4. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/utils/schema_splitter.py +26 -11
  5. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin.egg-info/PKG-INFO +1 -1
  6. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/LICENSE +0 -0
  7. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/README.md +0 -0
  8. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/examples/base_server/__init__.py +0 -0
  9. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/examples/base_server/mock/__init__.py +0 -0
  10. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/examples/base_server/mock/mock_pb2.py +0 -0
  11. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/examples/base_server/mock/mock_pb2_grpc.py +0 -0
  12. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/examples/base_server/server_async_insecure.py +0 -0
  13. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/examples/base_server/server_async_secure.py +0 -0
  14. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/examples/base_server/server_sync_insecure.py +0 -0
  15. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/examples/base_server/server_sync_secure.py +0 -0
  16. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/examples/modules/__init__.py +0 -0
  17. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/examples/modules/archetype_with_tools_module.py +0 -0
  18. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/examples/modules/cpu_intensive_module.py +0 -0
  19. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/examples/modules/dynamic_setup_module.py +0 -0
  20. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/examples/modules/minimal_llm_module.py +0 -0
  21. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/examples/modules/text_transform_module.py +0 -0
  22. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/examples/monitoring/digitalkin_observability/__init__.py +0 -0
  23. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/examples/monitoring/digitalkin_observability/http_server.py +0 -0
  24. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/examples/monitoring/digitalkin_observability/interceptors.py +0 -0
  25. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/examples/monitoring/digitalkin_observability/metrics.py +0 -0
  26. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/examples/monitoring/digitalkin_observability/prometheus.py +0 -0
  27. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/examples/monitoring/tests/test_metrics.py +0 -0
  28. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/examples/services/filesystem_module.py +0 -0
  29. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/examples/services/storage_module.py +0 -0
  30. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/setup.cfg +0 -0
  31. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/__init__.py +0 -0
  32. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/core/__init__.py +0 -0
  33. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/core/common/__init__.py +0 -0
  34. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/core/common/factories.py +0 -0
  35. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/core/job_manager/__init__.py +0 -0
  36. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/core/job_manager/base_job_manager.py +0 -0
  37. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/core/job_manager/single_job_manager.py +0 -0
  38. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/core/job_manager/taskiq_broker.py +0 -0
  39. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/core/job_manager/taskiq_job_manager.py +0 -0
  40. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/core/task_manager/__init__.py +0 -0
  41. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/core/task_manager/base_task_manager.py +0 -0
  42. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/core/task_manager/local_task_manager.py +0 -0
  43. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/core/task_manager/remote_task_manager.py +0 -0
  44. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/core/task_manager/surrealdb_repository.py +0 -0
  45. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/core/task_manager/task_executor.py +0 -0
  46. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/core/task_manager/task_session.py +0 -0
  47. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/grpc_servers/__init__.py +0 -0
  48. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/grpc_servers/_base_server.py +0 -0
  49. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/grpc_servers/module_server.py +0 -0
  50. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/grpc_servers/module_servicer.py +0 -0
  51. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/grpc_servers/utils/__init__.py +0 -0
  52. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/grpc_servers/utils/exceptions.py +0 -0
  53. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/grpc_servers/utils/grpc_client_wrapper.py +0 -0
  54. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/grpc_servers/utils/grpc_error_handler.py +0 -0
  55. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/grpc_servers/utils/utility_schema_extender.py +0 -0
  56. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/logger.py +0 -0
  57. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/mixins/__init__.py +0 -0
  58. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/mixins/base_mixin.py +0 -0
  59. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/mixins/callback_mixin.py +0 -0
  60. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/mixins/chat_history_mixin.py +0 -0
  61. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/mixins/cost_mixin.py +0 -0
  62. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/mixins/file_history_mixin.py +0 -0
  63. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/mixins/filesystem_mixin.py +0 -0
  64. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/mixins/logger_mixin.py +0 -0
  65. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/mixins/storage_mixin.py +0 -0
  66. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/models/__init__.py +0 -0
  67. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/models/core/__init__.py +0 -0
  68. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/models/core/job_manager_models.py +0 -0
  69. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/models/core/task_monitor.py +0 -0
  70. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/models/grpc_servers/__init__.py +0 -0
  71. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/models/grpc_servers/models.py +0 -0
  72. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/models/grpc_servers/types.py +0 -0
  73. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/models/module/__init__.py +0 -0
  74. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/models/module/base_types.py +0 -0
  75. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/models/module/module.py +0 -0
  76. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/models/module/module_context.py +0 -0
  77. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/models/module/module_types.py +0 -0
  78. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/models/module/setup_types.py +0 -0
  79. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/models/module/tool_cache.py +0 -0
  80. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/models/module/tool_reference.py +0 -0
  81. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/models/module/utility.py +0 -0
  82. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/models/services/__init__.py +0 -0
  83. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/models/services/cost.py +0 -0
  84. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/models/services/registry.py +0 -0
  85. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/models/services/storage.py +0 -0
  86. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/modules/__init__.py +0 -0
  87. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/modules/_base_module.py +0 -0
  88. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/modules/archetype_module.py +0 -0
  89. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/modules/tool_module.py +0 -0
  90. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/modules/trigger_handler.py +0 -0
  91. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/modules/triggers/__init__.py +0 -0
  92. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/modules/triggers/healthcheck_ping_trigger.py +0 -0
  93. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/modules/triggers/healthcheck_services_trigger.py +0 -0
  94. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/modules/triggers/healthcheck_status_trigger.py +0 -0
  95. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/py.typed +0 -0
  96. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/__init__.py +0 -0
  97. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/agent/__init__.py +0 -0
  98. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/agent/agent_strategy.py +0 -0
  99. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/agent/default_agent.py +0 -0
  100. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/base_strategy.py +0 -0
  101. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/communication/__init__.py +0 -0
  102. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/communication/communication_strategy.py +0 -0
  103. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/communication/default_communication.py +0 -0
  104. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/communication/grpc_communication.py +0 -0
  105. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/cost/__init__.py +0 -0
  106. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/cost/cost_strategy.py +0 -0
  107. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/cost/default_cost.py +0 -0
  108. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/cost/grpc_cost.py +0 -0
  109. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/filesystem/__init__.py +0 -0
  110. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/filesystem/default_filesystem.py +0 -0
  111. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/filesystem/filesystem_strategy.py +0 -0
  112. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/filesystem/grpc_filesystem.py +0 -0
  113. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/identity/__init__.py +0 -0
  114. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/identity/default_identity.py +0 -0
  115. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/identity/identity_strategy.py +0 -0
  116. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/registry/__init__.py +0 -0
  117. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/registry/default_registry.py +0 -0
  118. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/registry/exceptions.py +0 -0
  119. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/registry/grpc_registry.py +0 -0
  120. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/registry/registry_models.py +0 -0
  121. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/registry/registry_strategy.py +0 -0
  122. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/services_config.py +0 -0
  123. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/services_models.py +0 -0
  124. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/setup/__init__.py +0 -0
  125. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/setup/default_setup.py +0 -0
  126. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/setup/grpc_setup.py +0 -0
  127. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/setup/setup_strategy.py +0 -0
  128. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/snapshot/__init__.py +0 -0
  129. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/snapshot/default_snapshot.py +0 -0
  130. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/snapshot/snapshot_strategy.py +0 -0
  131. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/storage/__init__.py +0 -0
  132. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/storage/default_storage.py +0 -0
  133. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/storage/grpc_storage.py +0 -0
  134. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/storage/storage_strategy.py +0 -0
  135. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/user_profile/__init__.py +0 -0
  136. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/user_profile/default_user_profile.py +0 -0
  137. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/user_profile/grpc_user_profile.py +0 -0
  138. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/services/user_profile/user_profile_strategy.py +0 -0
  139. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/utils/__init__.py +0 -0
  140. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/utils/arg_parser.py +0 -0
  141. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/utils/conditional_schema.py +0 -0
  142. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/utils/development_mode_action.py +0 -0
  143. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/utils/dynamic_schema.py +0 -0
  144. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/utils/llm_ready_schema.py +0 -0
  145. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin/utils/package_discover.py +0 -0
  146. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin.egg-info/SOURCES.txt +0 -0
  147. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin.egg-info/dependency_links.txt +0 -0
  148. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin.egg-info/requires.txt +0 -0
  149. {digitalkin-0.3.2.dev20 → digitalkin-0.3.2.dev21}/src/digitalkin.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: digitalkin
3
- Version: 0.3.2.dev20
3
+ Version: 0.3.2.dev21
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
@@ -12,7 +12,7 @@
12
12
 
13
13
  keywords = [ "digitalkin", "kin", "agent", "gprc", "sdk" ]
14
14
 
15
- version = "0.3.2.dev20"
15
+ version = "0.3.2.dev21"
16
16
  classifiers = [
17
17
  "Development Status :: 3 - Alpha",
18
18
  "Intended Audience :: Developers",
@@ -5,4 +5,4 @@ from importlib.metadata import PackageNotFoundError, version
5
5
  try:
6
6
  __version__ = version("digitalkin")
7
7
  except PackageNotFoundError:
8
- __version__ = "0.3.2.dev20"
8
+ __version__ = "0.3.2.dev21"
@@ -17,24 +17,31 @@ class SchemaSplitter:
17
17
  Tuple of (jsonschema, uischema).
18
18
  """
19
19
  defs_ui: dict[str, dict[str, Any]] = {}
20
- if "$defs" in combined_schema:
21
- for def_name, def_value in combined_schema["$defs"].items():
20
+ schema_defs = combined_schema.get("$defs", {})
21
+ if schema_defs:
22
+ for def_name, def_value in schema_defs.items():
22
23
  if isinstance(def_value, dict):
23
24
  defs_ui[def_name] = {}
24
- cls._extract_ui_properties(def_value, defs_ui[def_name])
25
+ cls._extract_ui_properties(def_value, defs_ui[def_name], schema_defs)
25
26
 
26
27
  json_schema: dict[str, Any] = {}
27
28
  ui_schema: dict[str, Any] = {}
28
- cls._process_object(combined_schema, json_schema, ui_schema, defs_ui)
29
+ cls._process_object(combined_schema, json_schema, ui_schema, defs_ui, schema_defs)
29
30
  return json_schema, ui_schema
30
31
 
31
32
  @classmethod
32
- def _extract_ui_properties(cls, source: dict[str, Any], ui_target: dict[str, Any]) -> None: # noqa: C901
33
+ def _extract_ui_properties(
34
+ cls,
35
+ source: dict[str, Any],
36
+ ui_target: dict[str, Any],
37
+ defs: dict[str, Any] | None = None,
38
+ ) -> None:
33
39
  """Extract ui:* properties from source into ui_target recursively.
34
40
 
35
41
  Args:
36
42
  source: Source dict to extract from.
37
43
  ui_target: Target dict for ui properties.
44
+ defs: The $defs dictionary to resolve $ref references.
38
45
  """
39
46
  for key, value in source.items():
40
47
  if key.startswith("ui:"):
@@ -43,20 +50,26 @@ class SchemaSplitter:
43
50
  for prop_name, prop_value in value.items():
44
51
  if isinstance(prop_value, dict):
45
52
  prop_ui: dict[str, Any] = {}
46
- cls._extract_ui_properties(prop_value, prop_ui)
53
+ cls._extract_ui_properties(prop_value, prop_ui, defs)
47
54
  if prop_ui:
48
55
  ui_target[prop_name] = prop_ui
49
56
  elif key == "items" and isinstance(value, dict):
50
57
  items_ui: dict[str, Any] = {}
51
- cls._extract_ui_properties(value, items_ui)
58
+ cls._extract_ui_properties(value, items_ui, defs)
52
59
  if items_ui:
53
60
  ui_target["items"] = items_ui
54
61
  elif key == "allOf" and isinstance(value, list):
55
62
  for item in value:
56
63
  if isinstance(item, dict):
57
- cls._extract_ui_properties(item, ui_target)
64
+ cls._extract_ui_properties(item, ui_target, defs)
58
65
  elif key in {"if", "then", "else"} and isinstance(value, dict):
59
- cls._extract_ui_properties(value, ui_target)
66
+ cls._extract_ui_properties(value, ui_target, defs)
67
+ elif key == "$ref" and isinstance(value, str) and defs is not None:
68
+ # Resolve $ref and extract UI properties from the referenced definition
69
+ if value.startswith("#/$defs/"):
70
+ def_name = value[8:]
71
+ if def_name in defs:
72
+ cls._extract_ui_properties(defs[def_name], ui_target, defs)
60
73
 
61
74
  @classmethod
62
75
  def _process_object( # noqa: C901, PLR0912
@@ -65,6 +78,7 @@ class SchemaSplitter:
65
78
  json_target: dict[str, Any],
66
79
  ui_target: dict[str, Any],
67
80
  defs_ui: dict[str, dict[str, Any]],
81
+ schema_defs: dict[str, Any] | None = None,
68
82
  ) -> None:
69
83
  """Process an object, splitting json and ui properties.
70
84
 
@@ -73,6 +87,7 @@ class SchemaSplitter:
73
87
  json_target: Target dict for json schema.
74
88
  ui_target: Target dict for ui schema.
75
89
  defs_ui: Pre-extracted UI properties from $defs.
90
+ schema_defs: The original $defs dictionary to resolve $ref in _extract_ui_properties.
76
91
  """
77
92
  for key, value in source.items():
78
93
  if key.startswith("ui:"):
@@ -113,14 +128,14 @@ class SchemaSplitter:
113
128
  cls._strip_ui_properties(item, item_json)
114
129
  json_target["allOf"].append(item_json)
115
130
  # Extract UI properties from allOf item
116
- cls._extract_ui_properties(item, ui_target)
131
+ cls._extract_ui_properties(item, ui_target, schema_defs)
117
132
  else:
118
133
  json_target["allOf"].append(item)
119
134
  elif key in {"if", "then", "else"} and isinstance(value, dict):
120
135
  json_target[key] = {}
121
136
  cls._strip_ui_properties(value, json_target[key])
122
137
  # Extract UI properties from conditional
123
- cls._extract_ui_properties(value, ui_target)
138
+ cls._extract_ui_properties(value, ui_target, schema_defs)
124
139
  elif key == "hidden":
125
140
  # Strip hidden key from json schema
126
141
  continue
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: digitalkin
3
- Version: 0.3.2.dev20
3
+ Version: 0.3.2.dev21
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