digitalkin 0.3.2.dev22__tar.gz → 0.3.2.dev24__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.
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/PKG-INFO +6 -6
- digitalkin-0.3.2.dev24/pyproject.toml +279 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/__version__.py +1 -1
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/models/module/__init__.py +2 -2
- digitalkin-0.3.2.dev24/src/digitalkin/models/module/tool_reference.py +174 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/utils/schema_splitter.py +5 -6
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin.egg-info/PKG-INFO +6 -6
- digitalkin-0.3.2.dev22/pyproject.toml +0 -279
- digitalkin-0.3.2.dev22/src/digitalkin/models/module/tool_reference.py +0 -103
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/LICENSE +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/README.md +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/examples/base_server/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/examples/base_server/mock/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/examples/base_server/mock/mock_pb2.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/examples/base_server/mock/mock_pb2_grpc.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/examples/base_server/server_async_insecure.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/examples/base_server/server_async_secure.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/examples/base_server/server_sync_insecure.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/examples/base_server/server_sync_secure.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/examples/modules/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/examples/modules/archetype_with_tools_module.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/examples/modules/cpu_intensive_module.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/examples/modules/dynamic_setup_module.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/examples/modules/minimal_llm_module.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/examples/modules/text_transform_module.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/examples/monitoring/digitalkin_observability/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/examples/monitoring/digitalkin_observability/http_server.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/examples/monitoring/digitalkin_observability/interceptors.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/examples/monitoring/digitalkin_observability/metrics.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/examples/monitoring/digitalkin_observability/prometheus.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/examples/monitoring/tests/test_metrics.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/examples/services/filesystem_module.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/examples/services/storage_module.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/setup.cfg +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/core/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/core/common/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/core/common/factories.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/core/job_manager/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/core/job_manager/base_job_manager.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/core/job_manager/single_job_manager.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/core/job_manager/taskiq_broker.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/core/job_manager/taskiq_job_manager.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/core/task_manager/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/core/task_manager/base_task_manager.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/core/task_manager/local_task_manager.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/core/task_manager/remote_task_manager.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/core/task_manager/surrealdb_repository.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/core/task_manager/task_executor.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/core/task_manager/task_session.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/grpc_servers/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/grpc_servers/_base_server.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/grpc_servers/module_server.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/grpc_servers/module_servicer.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/grpc_servers/utils/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/grpc_servers/utils/exceptions.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/grpc_servers/utils/grpc_client_wrapper.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/grpc_servers/utils/grpc_error_handler.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/grpc_servers/utils/utility_schema_extender.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/logger.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/mixins/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/mixins/base_mixin.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/mixins/callback_mixin.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/mixins/chat_history_mixin.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/mixins/cost_mixin.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/mixins/file_history_mixin.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/mixins/filesystem_mixin.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/mixins/logger_mixin.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/mixins/storage_mixin.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/models/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/models/core/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/models/core/job_manager_models.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/models/core/task_monitor.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/models/grpc_servers/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/models/grpc_servers/models.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/models/grpc_servers/types.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/models/module/base_types.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/models/module/module.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/models/module/module_context.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/models/module/module_types.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/models/module/setup_types.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/models/module/tool_cache.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/models/module/utility.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/models/services/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/models/services/cost.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/models/services/registry.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/models/services/storage.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/modules/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/modules/_base_module.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/modules/archetype_module.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/modules/tool_module.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/modules/trigger_handler.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/modules/triggers/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/modules/triggers/healthcheck_ping_trigger.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/modules/triggers/healthcheck_services_trigger.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/modules/triggers/healthcheck_status_trigger.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/py.typed +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/agent/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/agent/agent_strategy.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/agent/default_agent.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/base_strategy.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/communication/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/communication/communication_strategy.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/communication/default_communication.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/communication/grpc_communication.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/cost/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/cost/cost_strategy.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/cost/default_cost.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/cost/grpc_cost.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/filesystem/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/filesystem/default_filesystem.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/filesystem/filesystem_strategy.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/filesystem/grpc_filesystem.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/identity/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/identity/default_identity.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/identity/identity_strategy.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/registry/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/registry/default_registry.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/registry/exceptions.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/registry/grpc_registry.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/registry/registry_models.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/registry/registry_strategy.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/services_config.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/services_models.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/setup/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/setup/default_setup.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/setup/grpc_setup.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/setup/setup_strategy.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/snapshot/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/snapshot/default_snapshot.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/snapshot/snapshot_strategy.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/storage/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/storage/default_storage.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/storage/grpc_storage.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/storage/storage_strategy.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/user_profile/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/user_profile/default_user_profile.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/user_profile/grpc_user_profile.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/services/user_profile/user_profile_strategy.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/utils/__init__.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/utils/arg_parser.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/utils/conditional_schema.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/utils/development_mode_action.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/utils/dynamic_schema.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/utils/llm_ready_schema.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin/utils/package_discover.py +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin.egg-info/SOURCES.txt +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin.egg-info/dependency_links.txt +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/src/digitalkin.egg-info/requires.txt +0 -0
- {digitalkin-0.3.2.dev22 → digitalkin-0.3.2.dev24}/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.
|
|
3
|
+
Version: 0.3.2.dev24
|
|
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
|
|
@@ -437,18 +437,18 @@ License: Attribution-NonCommercial-ShareAlike 4.0 International
|
|
|
437
437
|
Project-URL: Homepage, https://github.com/DigitalKin-ai/digitalkin
|
|
438
438
|
Project-URL: Documentation, https://github.com/DigitalKin-ai/digitalkin
|
|
439
439
|
Project-URL: Issues, https://github.com/DigitalKin-ai/digitalkin/issues
|
|
440
|
-
Keywords: digitalkin,kin,
|
|
440
|
+
Keywords: agent,digitalkin,gprc,kin,sdk
|
|
441
441
|
Classifier: Development Status :: 3 - Alpha
|
|
442
442
|
Classifier: Intended Audience :: Developers
|
|
443
|
+
Classifier: License :: Other/Proprietary License
|
|
443
444
|
Classifier: Operating System :: OS Independent
|
|
444
|
-
Classifier:
|
|
445
|
-
Classifier: Programming Language :: Python
|
|
445
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
446
446
|
Classifier: Programming Language :: Python :: 3.10
|
|
447
447
|
Classifier: Programming Language :: Python :: 3.11
|
|
448
448
|
Classifier: Programming Language :: Python :: 3.12
|
|
449
449
|
Classifier: Programming Language :: Python :: 3.13
|
|
450
|
-
Classifier: Programming Language :: Python
|
|
451
|
-
Classifier:
|
|
450
|
+
Classifier: Programming Language :: Python
|
|
451
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
452
452
|
Requires-Python: >=3.10
|
|
453
453
|
Description-Content-Type: text/markdown
|
|
454
454
|
License-File: LICENSE
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools >= 75.8.2", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
|
|
7
|
+
name = "digitalkin"
|
|
8
|
+
description = "SDK to build kin used in DigitalKin"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
|
+
license = { file = "LICENSE" }
|
|
12
|
+
|
|
13
|
+
keywords = ["agent", "digitalkin", "gprc", "kin", "sdk"]
|
|
14
|
+
|
|
15
|
+
version = "0.3.2.dev24"
|
|
16
|
+
classifiers = [
|
|
17
|
+
"Development Status :: 3 - Alpha",
|
|
18
|
+
"Intended Audience :: Developers",
|
|
19
|
+
"License :: Other/Proprietary License",
|
|
20
|
+
"Operating System :: OS Independent",
|
|
21
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
22
|
+
"Programming Language :: Python :: 3.10",
|
|
23
|
+
"Programming Language :: Python :: 3.11",
|
|
24
|
+
"Programming Language :: Python :: 3.12",
|
|
25
|
+
"Programming Language :: Python :: 3.13",
|
|
26
|
+
"Programming Language :: Python",
|
|
27
|
+
"Topic :: Software Development :: Libraries",
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
dependencies = [
|
|
31
|
+
"agentic-mesh-protocol==0.2.1.dev0",
|
|
32
|
+
"grpcio-health-checking>=1.76.0",
|
|
33
|
+
"grpcio-reflection>=1.76.0",
|
|
34
|
+
"grpcio-status>=1.76.0",
|
|
35
|
+
"pydantic>=2.12.5",
|
|
36
|
+
"surrealdb>=1.0.7",
|
|
37
|
+
]
|
|
38
|
+
|
|
39
|
+
[project.optional-dependencies]
|
|
40
|
+
taskiq = [
|
|
41
|
+
"rstream>=0.40.0",
|
|
42
|
+
"taskiq-aio-pika>=0.5.0",
|
|
43
|
+
"taskiq-redis>=1.2.0",
|
|
44
|
+
"taskiq[reload]>=0.12.1",
|
|
45
|
+
]
|
|
46
|
+
|
|
47
|
+
[project.urls]
|
|
48
|
+
Homepage = "https://github.com/DigitalKin-ai/digitalkin"
|
|
49
|
+
Documentation = "https://github.com/DigitalKin-ai/digitalkin"
|
|
50
|
+
Issues = "https://github.com/DigitalKin-ai/digitalkin/issues"
|
|
51
|
+
|
|
52
|
+
[[project.authors]]
|
|
53
|
+
name = "DigitalKin.ai"
|
|
54
|
+
email = "contact@digitalkin.ai"
|
|
55
|
+
|
|
56
|
+
[dependency-groups]
|
|
57
|
+
dev = [
|
|
58
|
+
"build>=1.3.0",
|
|
59
|
+
"bump-my-version>=1.2.5",
|
|
60
|
+
"cryptography>=46.0.3",
|
|
61
|
+
"mypy>=1.19.1",
|
|
62
|
+
"pre-commit>=4.5.1",
|
|
63
|
+
"pyright>=1.1.407",
|
|
64
|
+
"ruff>=0.14.9",
|
|
65
|
+
"twine>=6.2.0",
|
|
66
|
+
"typos>=1.40.0",
|
|
67
|
+
]
|
|
68
|
+
tests = [
|
|
69
|
+
"freezegun>=1.5.5",
|
|
70
|
+
"grpcio-testing>=1.76.0",
|
|
71
|
+
"hdrhistogram>=0.10.3",
|
|
72
|
+
"psutil>=7.1.3",
|
|
73
|
+
"pytest-asyncio>=1.3.0",
|
|
74
|
+
"pytest-cov>=7.0.0",
|
|
75
|
+
"pytest-html==4.1.1",
|
|
76
|
+
"pytest-json-report==1.5.0",
|
|
77
|
+
"pytest-timeout>=2.4.0",
|
|
78
|
+
"pytest>=9.0.2",
|
|
79
|
+
]
|
|
80
|
+
docs = [
|
|
81
|
+
"griffe-inherited-docstrings>=1.1.2",
|
|
82
|
+
"markdown-callouts>=0.4.0",
|
|
83
|
+
"markdown-exec>=1.12.1",
|
|
84
|
+
"mike>=2.1.3",
|
|
85
|
+
"mkdocs-autorefs>=1.4.3",
|
|
86
|
+
"mkdocs-awesome-pages-plugin>=2.10.1",
|
|
87
|
+
"mkdocs-coverage>=2.0.0",
|
|
88
|
+
"mkdocs-git-committers-plugin-2>=2.5.0",
|
|
89
|
+
"mkdocs-git-revision-date-localized-plugin>=1.5.0",
|
|
90
|
+
"mkdocs-glightbox>=0.5.2",
|
|
91
|
+
"mkdocs-include-markdown-plugin>=7.2.0",
|
|
92
|
+
"mkdocs-literate-nav>=0.6.2",
|
|
93
|
+
"mkdocs-llmstxt>=0.5.0",
|
|
94
|
+
"mkdocs-material[imaging]>=9.7.0",
|
|
95
|
+
"mkdocs-minify-plugin>=0.8.0",
|
|
96
|
+
"mkdocs-open-in-new-tab>=1.0.8",
|
|
97
|
+
"mkdocs-redirects>=1.2.2",
|
|
98
|
+
"mkdocs-section-index>=0.3.10",
|
|
99
|
+
"mkdocs>=1.6.1",
|
|
100
|
+
"mkdocstrings-python>=2.0.1",
|
|
101
|
+
"mkdocstrings>=1.0.0",
|
|
102
|
+
"tomli>=2.3.0",
|
|
103
|
+
]
|
|
104
|
+
[tool.setuptools]
|
|
105
|
+
package-dir = { "" = "src" }
|
|
106
|
+
|
|
107
|
+
[tool.setuptools.packages.find]
|
|
108
|
+
where = ["examples", "src"]
|
|
109
|
+
|
|
110
|
+
[tool.ruff]
|
|
111
|
+
src = ["src"]
|
|
112
|
+
target-version = "py310"
|
|
113
|
+
line-length = 120
|
|
114
|
+
indent-width = 4
|
|
115
|
+
show-fixes = true
|
|
116
|
+
unsafe-fixes = true
|
|
117
|
+
# Enable preview features.
|
|
118
|
+
exclude = [
|
|
119
|
+
".bzr",
|
|
120
|
+
".direnv",
|
|
121
|
+
".eggs",
|
|
122
|
+
".git",
|
|
123
|
+
".git-rewrite",
|
|
124
|
+
".hg",
|
|
125
|
+
".mypy_cache",
|
|
126
|
+
".nox",
|
|
127
|
+
".pants.d",
|
|
128
|
+
".pytype",
|
|
129
|
+
".ruff_cache",
|
|
130
|
+
".svn",
|
|
131
|
+
".tox",
|
|
132
|
+
".venv",
|
|
133
|
+
"__pypackages__",
|
|
134
|
+
"_build",
|
|
135
|
+
"buck-out",
|
|
136
|
+
"build",
|
|
137
|
+
"dist",
|
|
138
|
+
"docs/*",
|
|
139
|
+
"examples/*",
|
|
140
|
+
"factory.py",
|
|
141
|
+
"generate_certificates.py",
|
|
142
|
+
"node_modules",
|
|
143
|
+
"tests/*",
|
|
144
|
+
"venv",
|
|
145
|
+
]
|
|
146
|
+
preview = true
|
|
147
|
+
|
|
148
|
+
[tool.ruff.lint]
|
|
149
|
+
select = [
|
|
150
|
+
"A", # flake8-builtins
|
|
151
|
+
"ANN", # flake8-annotations
|
|
152
|
+
"ARG", # flake8-unused-arguments
|
|
153
|
+
"ASYNC", # flake8-async
|
|
154
|
+
"C4", # flake8-comprehensions
|
|
155
|
+
"C90", # mccabe (complex-structure)
|
|
156
|
+
"COM", # flake8-commas
|
|
157
|
+
"D", # pydocstyle
|
|
158
|
+
"DOC", # pydoclint
|
|
159
|
+
"DTZ", # flake8-datetimez
|
|
160
|
+
"E", # pycodestyle-errors
|
|
161
|
+
"EM", # flake8-errmsg
|
|
162
|
+
"ERA", # eradicate
|
|
163
|
+
"F", # pyflakes
|
|
164
|
+
"FBT", # flake8-boolean-trap
|
|
165
|
+
"FLY", # flynt
|
|
166
|
+
"FURB", # Refurb
|
|
167
|
+
"G", # flake8-logging-format
|
|
168
|
+
"I", # isort
|
|
169
|
+
"ICN", # flake8-import-conventions
|
|
170
|
+
"ISC", # flake8-implicit-str-concat
|
|
171
|
+
"LOG", # flake8-logging
|
|
172
|
+
"N", # pep8-naming
|
|
173
|
+
"PERF", # Perflint
|
|
174
|
+
"PIE", # flake8-pie
|
|
175
|
+
"PL", # Pylint
|
|
176
|
+
"PL", # Pylint
|
|
177
|
+
"PT", # flake8-pytest-style
|
|
178
|
+
"PYI", # flake8-pyi
|
|
179
|
+
"Q", # flake8-quotes
|
|
180
|
+
"RET", # flake8-return
|
|
181
|
+
"RSE", # flake8-raise
|
|
182
|
+
"RUF", # Ruff-specific rules
|
|
183
|
+
"S", # flake8-bandit
|
|
184
|
+
"SIM", # flake8-simplify
|
|
185
|
+
"SLF", # flake8-self
|
|
186
|
+
"T20", # flake8-print
|
|
187
|
+
"TC", # flake8-type-checking
|
|
188
|
+
"TRY", # tryceratops
|
|
189
|
+
"UP", # pyupgrade
|
|
190
|
+
"W", # pycodestyle-warnings
|
|
191
|
+
]
|
|
192
|
+
|
|
193
|
+
ignore = [
|
|
194
|
+
"COM812", # Disable because of formatter incompatibility
|
|
195
|
+
"DOC502", # Allow extraneous-exception in docstring
|
|
196
|
+
"S105", # Hardcoded-password
|
|
197
|
+
]
|
|
198
|
+
|
|
199
|
+
fixable = ["ALL"]
|
|
200
|
+
|
|
201
|
+
[tool.ruff.lint.pydocstyle]
|
|
202
|
+
convention = "google"
|
|
203
|
+
|
|
204
|
+
[tool.ruff.lint.per-file-ignores]
|
|
205
|
+
"tests/**/*.py" = [
|
|
206
|
+
"ANN001",
|
|
207
|
+
"ANN002",
|
|
208
|
+
"ANN003",
|
|
209
|
+
"ANN201",
|
|
210
|
+
"ANN401",
|
|
211
|
+
"ARG001",
|
|
212
|
+
"ARG002",
|
|
213
|
+
"C901",
|
|
214
|
+
"D100",
|
|
215
|
+
"D101",
|
|
216
|
+
"D102",
|
|
217
|
+
"D103",
|
|
218
|
+
"D107",
|
|
219
|
+
"D417",
|
|
220
|
+
"DOC201",
|
|
221
|
+
"DOC501",
|
|
222
|
+
"E501",
|
|
223
|
+
"ERA001",
|
|
224
|
+
"FBT001",
|
|
225
|
+
"FBT002",
|
|
226
|
+
"G004",
|
|
227
|
+
"N802",
|
|
228
|
+
"PERF203",
|
|
229
|
+
"PLC2701",
|
|
230
|
+
"PLR0911",
|
|
231
|
+
"PLR0912",
|
|
232
|
+
"PLR0914",
|
|
233
|
+
"PLR0915",
|
|
234
|
+
"PLR1702",
|
|
235
|
+
"PLR2004",
|
|
236
|
+
"PLR6301",
|
|
237
|
+
"S101",
|
|
238
|
+
"SLF001",
|
|
239
|
+
"TRY002",
|
|
240
|
+
]
|
|
241
|
+
|
|
242
|
+
[tool.ruff.lint.pylint]
|
|
243
|
+
max-args = 10
|
|
244
|
+
|
|
245
|
+
[tool.ruff.format]
|
|
246
|
+
quote-style = "double"
|
|
247
|
+
indent-style = "space"
|
|
248
|
+
line-ending = "auto"
|
|
249
|
+
docstring-code-format = true
|
|
250
|
+
skip-magic-trailing-comma = false
|
|
251
|
+
|
|
252
|
+
[tool.pyright]
|
|
253
|
+
include = ["src"]
|
|
254
|
+
exclude = ["**/.venv", "**/__pycache__"]
|
|
255
|
+
|
|
256
|
+
[tool.mypy]
|
|
257
|
+
exclude = ["examples", "tests"]
|
|
258
|
+
|
|
259
|
+
[tool.pytest.ini_options]
|
|
260
|
+
testpaths = ["tests"]
|
|
261
|
+
python_files = "test_*.py"
|
|
262
|
+
asyncio_mode = "auto"
|
|
263
|
+
|
|
264
|
+
log_cli = false
|
|
265
|
+
log_level = "ERROR"
|
|
266
|
+
|
|
267
|
+
# Default timeout for tests (in seconds)
|
|
268
|
+
timeout = 10
|
|
269
|
+
timeout_method = "signal" # More reliable for asyncio tests on Linux
|
|
270
|
+
|
|
271
|
+
# Custom markers
|
|
272
|
+
markers = [
|
|
273
|
+
"edge_case: marks tests for boundary conditions and edge cases",
|
|
274
|
+
"grpc: marks tests for gRPC service functionality",
|
|
275
|
+
"integration: marks tests that require real SurrealDB connection (deselect with '-m \"not integration\"')",
|
|
276
|
+
"regression: marks tests for previously fixed bugs",
|
|
277
|
+
"smoke: marks critical path tests that should always pass",
|
|
278
|
+
"validation: marks tests for input validation and schema checking",
|
|
279
|
+
]
|
|
@@ -14,7 +14,7 @@ from digitalkin.models.module.tool_cache import (
|
|
|
14
14
|
)
|
|
15
15
|
from digitalkin.models.module.tool_reference import (
|
|
16
16
|
ToolReference,
|
|
17
|
-
|
|
17
|
+
tool_reference_input,
|
|
18
18
|
)
|
|
19
19
|
from digitalkin.models.module.utility import (
|
|
20
20
|
EndOfStreamOutput,
|
|
@@ -35,7 +35,7 @@ __all__ = [
|
|
|
35
35
|
"ToolModuleInfo",
|
|
36
36
|
"ToolParameter",
|
|
37
37
|
"ToolReference",
|
|
38
|
-
"ToolReferenceInput",
|
|
39
38
|
"UtilityProtocol",
|
|
40
39
|
"UtilityRegistry",
|
|
40
|
+
"tool_reference_input",
|
|
41
41
|
]
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"""Tool reference types for module configuration."""
|
|
2
|
+
|
|
3
|
+
from typing import Annotated
|
|
4
|
+
|
|
5
|
+
from pydantic import AfterValidator, BaseModel, BeforeValidator, Field
|
|
6
|
+
from pydantic.annotated_handlers import GetJsonSchemaHandler
|
|
7
|
+
from pydantic.json_schema import JsonSchemaValue
|
|
8
|
+
from pydantic_core import CoreSchema
|
|
9
|
+
|
|
10
|
+
from digitalkin.models.module.tool_cache import (
|
|
11
|
+
SelectedTool,
|
|
12
|
+
ToolModuleInfo,
|
|
13
|
+
module_info_to_tool_module_info,
|
|
14
|
+
)
|
|
15
|
+
from digitalkin.services.communication.communication_strategy import CommunicationStrategy
|
|
16
|
+
from digitalkin.services.registry import RegistryStrategy
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class ToolReference(BaseModel):
|
|
20
|
+
"""Tool selection configuration and reference."""
|
|
21
|
+
|
|
22
|
+
selected_tools: list[SelectedTool] = Field(default=[], description="Tools selected by the user.")
|
|
23
|
+
setup_ids: list[str] = Field(default=[], description="Setup IDs for the user to choose from.")
|
|
24
|
+
module_ids: list[str] = Field(default=[], description="Module IDs for the user to choose from.")
|
|
25
|
+
tags: list[str] = Field(default=[], description="Tags for the user to choose from.")
|
|
26
|
+
max_tools: int = Field(default=0, description="Maximum tools to select. 0 for unlimited.")
|
|
27
|
+
min_tools: int = Field(default=0, description="Minimum tools to select. 0 for no minimum.")
|
|
28
|
+
|
|
29
|
+
async def resolve(self, registry: RegistryStrategy, communication: CommunicationStrategy) -> list[ToolModuleInfo]:
|
|
30
|
+
"""Resolve this reference using the registry.
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
registry: Registry service for module discovery.
|
|
34
|
+
communication: Communication service for module schemas.
|
|
35
|
+
|
|
36
|
+
Returns:
|
|
37
|
+
List of ToolModuleInfo if resolved.
|
|
38
|
+
"""
|
|
39
|
+
resolved: list[ToolModuleInfo] = []
|
|
40
|
+
for tool in self.selected_tools:
|
|
41
|
+
setup = registry.get_setup(tool.setup_id)
|
|
42
|
+
if setup and setup.module_id:
|
|
43
|
+
info = registry.discover_by_id(setup.module_id)
|
|
44
|
+
tool.slug = tool.setup_id
|
|
45
|
+
tool.module_id = setup.module_id
|
|
46
|
+
tool.name = setup.name
|
|
47
|
+
if info:
|
|
48
|
+
resolved.append(await module_info_to_tool_module_info(info, tool, communication))
|
|
49
|
+
|
|
50
|
+
return resolved
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class _ToolReferenceInputSchema:
|
|
54
|
+
"""Custom JSON schema generator with configurable maxItems and ui:options."""
|
|
55
|
+
|
|
56
|
+
def __init__(
|
|
57
|
+
self,
|
|
58
|
+
setup_ids: list[str],
|
|
59
|
+
module_ids: list[str],
|
|
60
|
+
tags: list[str],
|
|
61
|
+
max_tools: int = 0,
|
|
62
|
+
min_tools: int = 0,
|
|
63
|
+
) -> None:
|
|
64
|
+
self.setup_ids = setup_ids
|
|
65
|
+
self.module_ids = module_ids
|
|
66
|
+
self.tags = tags
|
|
67
|
+
self.max_tools = max_tools
|
|
68
|
+
self.min_tools = min_tools
|
|
69
|
+
|
|
70
|
+
def __get_pydantic_json_schema__( # noqa: PLW3201
|
|
71
|
+
self,
|
|
72
|
+
schema: CoreSchema,
|
|
73
|
+
handler: GetJsonSchemaHandler,
|
|
74
|
+
) -> JsonSchemaValue:
|
|
75
|
+
"""Generate JSON schema accepting both list[str] and ToolReference.
|
|
76
|
+
|
|
77
|
+
Args:
|
|
78
|
+
schema: The core schema from Pydantic.
|
|
79
|
+
handler: Handler to generate JSON schema from core schema.
|
|
80
|
+
|
|
81
|
+
Returns:
|
|
82
|
+
JSON schema with anyOf accepting array or ToolReference, plus ui:options.
|
|
83
|
+
"""
|
|
84
|
+
json_schema = handler(schema)
|
|
85
|
+
|
|
86
|
+
array_option: dict[str, object] = {"type": "array", "items": {"type": "string"}}
|
|
87
|
+
if self.max_tools > 0 and self.max_tools >= self.min_tools:
|
|
88
|
+
array_option["maxItems"] = self.max_tools
|
|
89
|
+
if self.min_tools > 0 and self.min_tools <= self.max_tools:
|
|
90
|
+
array_option["minItems"] = self.min_tools
|
|
91
|
+
|
|
92
|
+
return {
|
|
93
|
+
"type": ["array", "object"],
|
|
94
|
+
"anyOf": [
|
|
95
|
+
array_option,
|
|
96
|
+
json_schema,
|
|
97
|
+
],
|
|
98
|
+
"ui:options": {
|
|
99
|
+
"setup_ids": self.setup_ids,
|
|
100
|
+
"module_ids": self.module_ids,
|
|
101
|
+
"tags": self.tags,
|
|
102
|
+
"max_tools": self.max_tools,
|
|
103
|
+
"min_tools": self.min_tools,
|
|
104
|
+
},
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def tool_reference_input(
|
|
109
|
+
setup_ids: list[str] = [],
|
|
110
|
+
module_ids: list[str] = [],
|
|
111
|
+
tags: list[str] = [],
|
|
112
|
+
max_tools: int = 0,
|
|
113
|
+
min_tools: int = 0,
|
|
114
|
+
) -> type[ToolReference]:
|
|
115
|
+
"""Create ToolReferenceInput type with schema options and validation.
|
|
116
|
+
|
|
117
|
+
Args:
|
|
118
|
+
setup_ids: Setup IDs for the user to choose from.
|
|
119
|
+
module_ids: Module IDs for the user to choose from.
|
|
120
|
+
tags: Tags for the user to choose from.
|
|
121
|
+
max_tools: Maximum tools allowed. 0 for unlimited.
|
|
122
|
+
min_tools: Minimum tools required. 0 for no minimum.
|
|
123
|
+
|
|
124
|
+
Returns:
|
|
125
|
+
Annotated type for use in Pydantic models.
|
|
126
|
+
"""
|
|
127
|
+
|
|
128
|
+
def convert_to_tool_reference(v: object) -> ToolReference | object:
|
|
129
|
+
"""Convert list of setup IDs to ToolReference with config preserved.
|
|
130
|
+
|
|
131
|
+
Returns:
|
|
132
|
+
ToolReference if input is list, otherwise original value.
|
|
133
|
+
"""
|
|
134
|
+
if isinstance(v, list):
|
|
135
|
+
return ToolReference(
|
|
136
|
+
selected_tools=[SelectedTool(setup_id=sid, slug=sid) for sid in v],
|
|
137
|
+
setup_ids=setup_ids,
|
|
138
|
+
module_ids=module_ids,
|
|
139
|
+
tags=tags,
|
|
140
|
+
max_tools=max_tools,
|
|
141
|
+
min_tools=min_tools,
|
|
142
|
+
)
|
|
143
|
+
return v
|
|
144
|
+
|
|
145
|
+
def validate_tools_count(v: ToolReference) -> ToolReference:
|
|
146
|
+
"""Validate selected_tools count against min/max constraints.
|
|
147
|
+
|
|
148
|
+
Returns:
|
|
149
|
+
The validated ToolReference.
|
|
150
|
+
|
|
151
|
+
Raises:
|
|
152
|
+
ValueError: If count is below min_tools or above max_tools.
|
|
153
|
+
"""
|
|
154
|
+
count = len(v.selected_tools)
|
|
155
|
+
if min_tools > 0 and count < min_tools:
|
|
156
|
+
msg = f"At least {min_tools} tools required, got {count}"
|
|
157
|
+
raise ValueError(msg)
|
|
158
|
+
if max_tools > 0 and count > max_tools:
|
|
159
|
+
msg = f"At most {max_tools} tools allowed, got {count}"
|
|
160
|
+
raise ValueError(msg)
|
|
161
|
+
return v
|
|
162
|
+
|
|
163
|
+
return Annotated[ # type: ignore[return-value]
|
|
164
|
+
ToolReference,
|
|
165
|
+
BeforeValidator(convert_to_tool_reference),
|
|
166
|
+
AfterValidator(validate_tools_count),
|
|
167
|
+
_ToolReferenceInputSchema(
|
|
168
|
+
setup_ids=setup_ids,
|
|
169
|
+
module_ids=module_ids,
|
|
170
|
+
tags=tags,
|
|
171
|
+
max_tools=max_tools,
|
|
172
|
+
min_tools=min_tools,
|
|
173
|
+
),
|
|
174
|
+
]
|
|
@@ -30,7 +30,7 @@ class SchemaSplitter:
|
|
|
30
30
|
return json_schema, ui_schema
|
|
31
31
|
|
|
32
32
|
@classmethod
|
|
33
|
-
def _extract_ui_properties(
|
|
33
|
+
def _extract_ui_properties( # noqa: C901, PLR0912
|
|
34
34
|
cls,
|
|
35
35
|
source: dict[str, Any],
|
|
36
36
|
ui_target: dict[str, Any],
|
|
@@ -64,12 +64,11 @@ class SchemaSplitter:
|
|
|
64
64
|
cls._extract_ui_properties(item, ui_target, defs)
|
|
65
65
|
elif key in {"if", "then", "else"} and isinstance(value, dict):
|
|
66
66
|
cls._extract_ui_properties(value, ui_target, defs)
|
|
67
|
-
elif key == "$ref" and isinstance(value, str) and defs is not None:
|
|
67
|
+
elif key == "$ref" and isinstance(value, str) and defs is not None and value.startswith("#/$defs/"):
|
|
68
68
|
# Resolve $ref and extract UI properties from the referenced definition
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
cls._extract_ui_properties(defs[def_name], ui_target, defs)
|
|
69
|
+
def_name = value[8:]
|
|
70
|
+
if def_name in defs:
|
|
71
|
+
cls._extract_ui_properties(defs[def_name], ui_target, defs)
|
|
73
72
|
|
|
74
73
|
@classmethod
|
|
75
74
|
def _process_object( # noqa: C901, PLR0912
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: digitalkin
|
|
3
|
-
Version: 0.3.2.
|
|
3
|
+
Version: 0.3.2.dev24
|
|
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
|
|
@@ -437,18 +437,18 @@ License: Attribution-NonCommercial-ShareAlike 4.0 International
|
|
|
437
437
|
Project-URL: Homepage, https://github.com/DigitalKin-ai/digitalkin
|
|
438
438
|
Project-URL: Documentation, https://github.com/DigitalKin-ai/digitalkin
|
|
439
439
|
Project-URL: Issues, https://github.com/DigitalKin-ai/digitalkin/issues
|
|
440
|
-
Keywords: digitalkin,kin,
|
|
440
|
+
Keywords: agent,digitalkin,gprc,kin,sdk
|
|
441
441
|
Classifier: Development Status :: 3 - Alpha
|
|
442
442
|
Classifier: Intended Audience :: Developers
|
|
443
|
+
Classifier: License :: Other/Proprietary License
|
|
443
444
|
Classifier: Operating System :: OS Independent
|
|
444
|
-
Classifier:
|
|
445
|
-
Classifier: Programming Language :: Python
|
|
445
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
446
446
|
Classifier: Programming Language :: Python :: 3.10
|
|
447
447
|
Classifier: Programming Language :: Python :: 3.11
|
|
448
448
|
Classifier: Programming Language :: Python :: 3.12
|
|
449
449
|
Classifier: Programming Language :: Python :: 3.13
|
|
450
|
-
Classifier: Programming Language :: Python
|
|
451
|
-
Classifier:
|
|
450
|
+
Classifier: Programming Language :: Python
|
|
451
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
452
452
|
Requires-Python: >=3.10
|
|
453
453
|
Description-Content-Type: text/markdown
|
|
454
454
|
License-File: LICENSE
|