digitalkin 0.3.2.dev19__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.dev19 → digitalkin-0.3.2.dev21}/PKG-INFO +1 -1
  2. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/pyproject.toml +1 -1
  3. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/__version__.py +1 -1
  4. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/utils/schema_splitter.py +42 -12
  5. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin.egg-info/PKG-INFO +1 -1
  6. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/LICENSE +0 -0
  7. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/README.md +0 -0
  8. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/examples/base_server/__init__.py +0 -0
  9. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/examples/base_server/mock/__init__.py +0 -0
  10. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/examples/base_server/mock/mock_pb2.py +0 -0
  11. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/examples/base_server/mock/mock_pb2_grpc.py +0 -0
  12. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/examples/base_server/server_async_insecure.py +0 -0
  13. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/examples/base_server/server_async_secure.py +0 -0
  14. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/examples/base_server/server_sync_insecure.py +0 -0
  15. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/examples/base_server/server_sync_secure.py +0 -0
  16. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/examples/modules/__init__.py +0 -0
  17. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/examples/modules/archetype_with_tools_module.py +0 -0
  18. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/examples/modules/cpu_intensive_module.py +0 -0
  19. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/examples/modules/dynamic_setup_module.py +0 -0
  20. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/examples/modules/minimal_llm_module.py +0 -0
  21. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/examples/modules/text_transform_module.py +0 -0
  22. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/examples/monitoring/digitalkin_observability/__init__.py +0 -0
  23. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/examples/monitoring/digitalkin_observability/http_server.py +0 -0
  24. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/examples/monitoring/digitalkin_observability/interceptors.py +0 -0
  25. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/examples/monitoring/digitalkin_observability/metrics.py +0 -0
  26. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/examples/monitoring/digitalkin_observability/prometheus.py +0 -0
  27. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/examples/monitoring/tests/test_metrics.py +0 -0
  28. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/examples/services/filesystem_module.py +0 -0
  29. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/examples/services/storage_module.py +0 -0
  30. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/setup.cfg +0 -0
  31. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/__init__.py +0 -0
  32. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/core/__init__.py +0 -0
  33. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/core/common/__init__.py +0 -0
  34. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/core/common/factories.py +0 -0
  35. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/core/job_manager/__init__.py +0 -0
  36. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/core/job_manager/base_job_manager.py +0 -0
  37. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/core/job_manager/single_job_manager.py +0 -0
  38. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/core/job_manager/taskiq_broker.py +0 -0
  39. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/core/job_manager/taskiq_job_manager.py +0 -0
  40. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/core/task_manager/__init__.py +0 -0
  41. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/core/task_manager/base_task_manager.py +0 -0
  42. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/core/task_manager/local_task_manager.py +0 -0
  43. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/core/task_manager/remote_task_manager.py +0 -0
  44. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/core/task_manager/surrealdb_repository.py +0 -0
  45. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/core/task_manager/task_executor.py +0 -0
  46. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/core/task_manager/task_session.py +0 -0
  47. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/grpc_servers/__init__.py +0 -0
  48. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/grpc_servers/_base_server.py +0 -0
  49. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/grpc_servers/module_server.py +0 -0
  50. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/grpc_servers/module_servicer.py +0 -0
  51. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/grpc_servers/utils/__init__.py +0 -0
  52. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/grpc_servers/utils/exceptions.py +0 -0
  53. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/grpc_servers/utils/grpc_client_wrapper.py +0 -0
  54. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/grpc_servers/utils/grpc_error_handler.py +0 -0
  55. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/grpc_servers/utils/utility_schema_extender.py +0 -0
  56. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/logger.py +0 -0
  57. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/mixins/__init__.py +0 -0
  58. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/mixins/base_mixin.py +0 -0
  59. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/mixins/callback_mixin.py +0 -0
  60. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/mixins/chat_history_mixin.py +0 -0
  61. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/mixins/cost_mixin.py +0 -0
  62. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/mixins/file_history_mixin.py +0 -0
  63. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/mixins/filesystem_mixin.py +0 -0
  64. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/mixins/logger_mixin.py +0 -0
  65. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/mixins/storage_mixin.py +0 -0
  66. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/models/__init__.py +0 -0
  67. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/models/core/__init__.py +0 -0
  68. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/models/core/job_manager_models.py +0 -0
  69. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/models/core/task_monitor.py +0 -0
  70. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/models/grpc_servers/__init__.py +0 -0
  71. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/models/grpc_servers/models.py +0 -0
  72. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/models/grpc_servers/types.py +0 -0
  73. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/models/module/__init__.py +0 -0
  74. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/models/module/base_types.py +0 -0
  75. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/models/module/module.py +0 -0
  76. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/models/module/module_context.py +0 -0
  77. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/models/module/module_types.py +0 -0
  78. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/models/module/setup_types.py +0 -0
  79. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/models/module/tool_cache.py +0 -0
  80. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/models/module/tool_reference.py +0 -0
  81. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/models/module/utility.py +0 -0
  82. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/models/services/__init__.py +0 -0
  83. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/models/services/cost.py +0 -0
  84. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/models/services/registry.py +0 -0
  85. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/models/services/storage.py +0 -0
  86. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/modules/__init__.py +0 -0
  87. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/modules/_base_module.py +0 -0
  88. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/modules/archetype_module.py +0 -0
  89. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/modules/tool_module.py +0 -0
  90. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/modules/trigger_handler.py +0 -0
  91. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/modules/triggers/__init__.py +0 -0
  92. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/modules/triggers/healthcheck_ping_trigger.py +0 -0
  93. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/modules/triggers/healthcheck_services_trigger.py +0 -0
  94. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/modules/triggers/healthcheck_status_trigger.py +0 -0
  95. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/py.typed +0 -0
  96. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/__init__.py +0 -0
  97. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/agent/__init__.py +0 -0
  98. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/agent/agent_strategy.py +0 -0
  99. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/agent/default_agent.py +0 -0
  100. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/base_strategy.py +0 -0
  101. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/communication/__init__.py +0 -0
  102. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/communication/communication_strategy.py +0 -0
  103. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/communication/default_communication.py +0 -0
  104. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/communication/grpc_communication.py +0 -0
  105. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/cost/__init__.py +0 -0
  106. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/cost/cost_strategy.py +0 -0
  107. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/cost/default_cost.py +0 -0
  108. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/cost/grpc_cost.py +0 -0
  109. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/filesystem/__init__.py +0 -0
  110. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/filesystem/default_filesystem.py +0 -0
  111. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/filesystem/filesystem_strategy.py +0 -0
  112. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/filesystem/grpc_filesystem.py +0 -0
  113. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/identity/__init__.py +0 -0
  114. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/identity/default_identity.py +0 -0
  115. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/identity/identity_strategy.py +0 -0
  116. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/registry/__init__.py +0 -0
  117. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/registry/default_registry.py +0 -0
  118. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/registry/exceptions.py +0 -0
  119. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/registry/grpc_registry.py +0 -0
  120. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/registry/registry_models.py +0 -0
  121. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/registry/registry_strategy.py +0 -0
  122. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/services_config.py +0 -0
  123. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/services_models.py +0 -0
  124. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/setup/__init__.py +0 -0
  125. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/setup/default_setup.py +0 -0
  126. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/setup/grpc_setup.py +0 -0
  127. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/setup/setup_strategy.py +0 -0
  128. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/snapshot/__init__.py +0 -0
  129. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/snapshot/default_snapshot.py +0 -0
  130. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/snapshot/snapshot_strategy.py +0 -0
  131. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/storage/__init__.py +0 -0
  132. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/storage/default_storage.py +0 -0
  133. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/storage/grpc_storage.py +0 -0
  134. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/storage/storage_strategy.py +0 -0
  135. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/user_profile/__init__.py +0 -0
  136. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/user_profile/default_user_profile.py +0 -0
  137. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/user_profile/grpc_user_profile.py +0 -0
  138. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/services/user_profile/user_profile_strategy.py +0 -0
  139. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/utils/__init__.py +0 -0
  140. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/utils/arg_parser.py +0 -0
  141. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/utils/conditional_schema.py +0 -0
  142. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/utils/development_mode_action.py +0 -0
  143. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/utils/dynamic_schema.py +0 -0
  144. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/utils/llm_ready_schema.py +0 -0
  145. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin/utils/package_discover.py +0 -0
  146. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin.egg-info/SOURCES.txt +0 -0
  147. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin.egg-info/dependency_links.txt +0 -0
  148. {digitalkin-0.3.2.dev19 → digitalkin-0.3.2.dev21}/src/digitalkin.egg-info/requires.txt +0 -0
  149. {digitalkin-0.3.2.dev19 → 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.dev19
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.dev19"
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.dev19"
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:"):
@@ -81,6 +96,9 @@ class SchemaSplitter:
81
96
  json_target["properties"] = {}
82
97
  for prop_name, prop_value in value.items():
83
98
  if isinstance(prop_value, dict):
99
+ # Skip hidden fields
100
+ if prop_value.get("hidden") is True:
101
+ continue
84
102
  json_target["properties"][prop_name] = {}
85
103
  prop_ui: dict[str, Any] = {}
86
104
  cls._process_property(prop_value, json_target["properties"][prop_name], prop_ui, defs_ui)
@@ -110,14 +128,17 @@ class SchemaSplitter:
110
128
  cls._strip_ui_properties(item, item_json)
111
129
  json_target["allOf"].append(item_json)
112
130
  # Extract UI properties from allOf item
113
- cls._extract_ui_properties(item, ui_target)
131
+ cls._extract_ui_properties(item, ui_target, schema_defs)
114
132
  else:
115
133
  json_target["allOf"].append(item)
116
134
  elif key in {"if", "then", "else"} and isinstance(value, dict):
117
135
  json_target[key] = {}
118
136
  cls._strip_ui_properties(value, json_target[key])
119
137
  # Extract UI properties from conditional
120
- cls._extract_ui_properties(value, ui_target)
138
+ cls._extract_ui_properties(value, ui_target, schema_defs)
139
+ elif key == "hidden":
140
+ # Strip hidden key from json schema
141
+ continue
121
142
  else:
122
143
  json_target[key] = value
123
144
 
@@ -151,6 +172,9 @@ class SchemaSplitter:
151
172
  json_target["properties"] = {}
152
173
  for prop_name, prop_value in value.items():
153
174
  if isinstance(prop_value, dict):
175
+ # Skip hidden fields
176
+ if prop_value.get("hidden") is True:
177
+ continue
154
178
  json_target["properties"][prop_name] = {}
155
179
  prop_ui: dict[str, Any] = {}
156
180
  cls._process_property(prop_value, json_target["properties"][prop_name], prop_ui, defs_ui)
@@ -164,6 +188,9 @@ class SchemaSplitter:
164
188
  cls._process_property(value, json_target["items"], items_ui, defs_ui)
165
189
  if items_ui:
166
190
  ui_target["items"] = items_ui
191
+ elif key == "hidden":
192
+ # Strip hidden key from json schema
193
+ continue
167
194
  else:
168
195
  json_target[key] = value
169
196
 
@@ -176,12 +203,15 @@ class SchemaSplitter:
176
203
  json_target: Target dict without ui:* properties.
177
204
  """
178
205
  for key, value in source.items():
179
- if key.startswith("ui:"):
206
+ if key.startswith("ui:") or key == "hidden":
180
207
  continue
181
208
  if key == "properties" and isinstance(value, dict):
182
209
  json_target["properties"] = {}
183
210
  for prop_name, prop_value in value.items():
184
211
  if isinstance(prop_value, dict):
212
+ # Skip hidden fields
213
+ if prop_value.get("hidden") is True:
214
+ continue
185
215
  json_target["properties"][prop_name] = {}
186
216
  cls._strip_ui_properties(prop_value, json_target["properties"][prop_name])
187
217
  else:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: digitalkin
3
- Version: 0.3.2.dev19
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