digitalkin 0.3.2.dev30__tar.gz → 0.3.3.dev0__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.dev30 → digitalkin-0.3.3.dev0}/PKG-INFO +17 -148
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/modules/archetype_with_tools_module.py +1 -1
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/modules/dynamic_setup_module.py +3 -3
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/modules/text_transform_module.py +5 -5
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/services/filesystem_module.py +4 -4
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/services/storage_module.py +6 -6
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/pyproject.toml +87 -69
- digitalkin-0.3.3.dev0/src/digitalkin/__init__.py +22 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/__version__.py +1 -1
- digitalkin-0.3.3.dev0/src/digitalkin/core/common/__init__.py +8 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/core/common/factories.py +3 -49
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/core/job_manager/base_job_manager.py +17 -24
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/core/job_manager/single_job_manager.py +129 -90
- digitalkin-0.3.3.dev0/src/digitalkin/core/job_manager/taskiq_broker.py +345 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/core/job_manager/taskiq_job_manager.py +135 -170
- digitalkin-0.3.3.dev0/src/digitalkin/core/profiling/__init__.py +6 -0
- digitalkin-0.3.3.dev0/src/digitalkin/core/profiling/asyncio_monitor.py +48 -0
- digitalkin-0.3.3.dev0/src/digitalkin/core/profiling/task_profiler.py +159 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/core/task_manager/base_task_manager.py +245 -144
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/core/task_manager/local_task_manager.py +22 -32
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/core/task_manager/remote_task_manager.py +19 -24
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/core/task_manager/task_executor.py +88 -81
- digitalkin-0.3.3.dev0/src/digitalkin/core/task_manager/task_session.py +292 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/grpc_servers/_base_server.py +94 -17
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/grpc_servers/module_server.py +67 -59
- digitalkin-0.3.3.dev0/src/digitalkin/grpc_servers/module_servicer.py +899 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/grpc_servers/utils/exceptions.py +2 -0
- digitalkin-0.3.3.dev0/src/digitalkin/grpc_servers/utils/grpc_client_wrapper.py +247 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/grpc_servers/utils/grpc_error_handler.py +5 -5
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/grpc_servers/utils/utility_schema_extender.py +19 -11
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/logger.py +81 -6
- digitalkin-0.3.3.dev0/src/digitalkin/mixins/chat_history_mixin.py +186 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/mixins/cost_mixin.py +31 -27
- digitalkin-0.3.3.dev0/src/digitalkin/mixins/file_history_mixin.py +161 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/mixins/filesystem_mixin.py +4 -4
- digitalkin-0.3.3.dev0/src/digitalkin/mixins/logger_mixin.py +57 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/mixins/storage_mixin.py +31 -6
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/core/job_manager_models.py +14 -2
- digitalkin-0.3.3.dev0/src/digitalkin/models/core/task_monitor.py +59 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/grpc_servers/models.py +97 -42
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/module/__init__.py +6 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/module/base_types.py +2 -4
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/module/module_context.py +110 -59
- digitalkin-0.3.3.dev0/src/digitalkin/models/module/request_metadata.py +114 -0
- digitalkin-0.3.3.dev0/src/digitalkin/models/module/select_schema.py +72 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/module/setup_types.py +108 -251
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/module/tool_cache.py +39 -13
- digitalkin-0.3.3.dev0/src/digitalkin/models/module/tool_reference.py +236 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/module/utility.py +16 -12
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/services/cost.py +22 -1
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/modules/_base_module.py +135 -36
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/modules/tool_module.py +1 -1
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/modules/trigger_handler.py +6 -4
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/modules/triggers/healthcheck_ping_trigger.py +6 -4
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/modules/triggers/healthcheck_services_trigger.py +15 -8
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/modules/triggers/healthcheck_status_trigger.py +6 -4
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/agent/agent_strategy.py +2 -2
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/base_strategy.py +3 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/communication/communication_strategy.py +13 -5
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/communication/default_communication.py +8 -3
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/communication/grpc_communication.py +71 -43
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/cost/cost_strategy.py +39 -17
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/cost/default_cost.py +65 -5
- digitalkin-0.3.3.dev0/src/digitalkin/services/cost/grpc_cost.py +223 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/filesystem/default_filesystem.py +24 -25
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/filesystem/filesystem_strategy.py +5 -5
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/filesystem/grpc_filesystem.py +24 -24
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/identity/default_identity.py +3 -1
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/identity/identity_strategy.py +1 -1
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/registry/default_registry.py +36 -11
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/registry/grpc_registry.py +43 -20
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/registry/registry_strategy.py +24 -12
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/services_config.py +47 -60
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/services_models.py +8 -6
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/setup/default_setup.py +39 -24
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/setup/grpc_setup.py +98 -63
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/setup/setup_strategy.py +26 -11
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/storage/default_storage.py +7 -8
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/storage/grpc_storage.py +39 -28
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/storage/storage_strategy.py +87 -19
- digitalkin-0.3.3.dev0/src/digitalkin/services/task_manager/__init__.py +6 -0
- digitalkin-0.3.3.dev0/src/digitalkin/services/task_manager/default_task_manager.py +89 -0
- digitalkin-0.3.3.dev0/src/digitalkin/services/task_manager/grpc_task_manager.py +675 -0
- digitalkin-0.3.3.dev0/src/digitalkin/services/task_manager/task_manager_strategy.py +52 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/user_profile/default_user_profile.py +7 -14
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/user_profile/grpc_user_profile.py +13 -19
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/user_profile/user_profile_strategy.py +3 -3
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/utils/arg_parser.py +14 -5
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/utils/conditional_schema.py +4 -2
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/utils/development_mode_action.py +11 -6
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/utils/dynamic_schema.py +11 -7
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/utils/llm_ready_schema.py +6 -2
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/utils/package_discover.py +44 -15
- digitalkin-0.3.3.dev0/src/digitalkin/utils/proto_utils.py +21 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/utils/schema_splitter.py +8 -22
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin.egg-info/PKG-INFO +17 -148
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin.egg-info/SOURCES.txt +10 -2
- digitalkin-0.3.3.dev0/src/digitalkin.egg-info/requires.txt +18 -0
- digitalkin-0.3.2.dev30/README.md +0 -135
- digitalkin-0.3.2.dev30/src/digitalkin/__init__.py +0 -8
- digitalkin-0.3.2.dev30/src/digitalkin/core/common/__init__.py +0 -9
- digitalkin-0.3.2.dev30/src/digitalkin/core/job_manager/taskiq_broker.py +0 -311
- digitalkin-0.3.2.dev30/src/digitalkin/core/task_manager/surrealdb_repository.py +0 -266
- digitalkin-0.3.2.dev30/src/digitalkin/core/task_manager/task_session.py +0 -368
- digitalkin-0.3.2.dev30/src/digitalkin/grpc_servers/module_servicer.py +0 -563
- digitalkin-0.3.2.dev30/src/digitalkin/grpc_servers/utils/grpc_client_wrapper.py +0 -88
- digitalkin-0.3.2.dev30/src/digitalkin/mixins/chat_history_mixin.py +0 -110
- digitalkin-0.3.2.dev30/src/digitalkin/mixins/file_history_mixin.py +0 -93
- digitalkin-0.3.2.dev30/src/digitalkin/mixins/logger_mixin.py +0 -51
- digitalkin-0.3.2.dev30/src/digitalkin/models/core/task_monitor.py +0 -74
- digitalkin-0.3.2.dev30/src/digitalkin/models/module/tool_reference.py +0 -158
- digitalkin-0.3.2.dev30/src/digitalkin/services/cost/grpc_cost.py +0 -138
- digitalkin-0.3.2.dev30/src/digitalkin.egg-info/requires.txt +0 -12
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/LICENSE +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/base_server/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/base_server/mock/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/base_server/mock/mock_pb2.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/base_server/mock/mock_pb2_grpc.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/base_server/server_async_insecure.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/base_server/server_async_secure.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/base_server/server_sync_insecure.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/base_server/server_sync_secure.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/modules/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/modules/cpu_intensive_module.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/modules/minimal_llm_module.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/monitoring/digitalkin_observability/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/monitoring/digitalkin_observability/http_server.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/monitoring/digitalkin_observability/interceptors.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/monitoring/digitalkin_observability/metrics.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/monitoring/digitalkin_observability/prometheus.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/examples/monitoring/tests/test_metrics.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/setup.cfg +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/core/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/core/job_manager/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/core/task_manager/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/grpc_servers/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/grpc_servers/utils/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/mixins/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/mixins/base_mixin.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/mixins/callback_mixin.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/core/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/grpc_servers/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/grpc_servers/types.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/module/module.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/module/module_types.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/services/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/services/registry.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/models/services/storage.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/modules/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/modules/archetype_module.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/modules/triggers/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/py.typed +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/agent/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/agent/default_agent.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/communication/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/cost/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/filesystem/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/identity/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/registry/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/registry/exceptions.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/registry/registry_models.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/setup/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/snapshot/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/snapshot/default_snapshot.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/snapshot/snapshot_strategy.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/storage/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/services/user_profile/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin/utils/__init__.py +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/src/digitalkin.egg-info/dependency_links.txt +0 -0
- {digitalkin-0.3.2.dev30 → digitalkin-0.3.3.dev0}/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.
|
|
3
|
+
Version: 0.3.3.dev0
|
|
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,7 +437,7 @@ License: Attribution-NonCommercial-ShareAlike 4.0 International
|
|
|
437
437
|
Project-URL: Documentation, https://github.com/DigitalKin-ai/digitalkin
|
|
438
438
|
Project-URL: Homepage, https://github.com/DigitalKin-ai/digitalkin
|
|
439
439
|
Project-URL: Issues, https://github.com/DigitalKin-ai/digitalkin/issues
|
|
440
|
-
Keywords: agent,digitalkin,
|
|
440
|
+
Keywords: agent,digitalkin,grpc,kin,sdk
|
|
441
441
|
Classifier: Development Status :: 3 - Alpha
|
|
442
442
|
Classifier: Intended Audience :: Developers
|
|
443
443
|
Classifier: License :: Other/Proprietary License
|
|
@@ -452,151 +452,20 @@ Classifier: Topic :: Software Development :: Libraries
|
|
|
452
452
|
Requires-Python: >=3.10
|
|
453
453
|
Description-Content-Type: text/markdown
|
|
454
454
|
License-File: LICENSE
|
|
455
|
-
Requires-Dist: agentic-mesh-protocol==0.2.
|
|
456
|
-
Requires-Dist:
|
|
457
|
-
Requires-Dist: grpcio-
|
|
458
|
-
Requires-Dist: grpcio-
|
|
459
|
-
Requires-Dist:
|
|
460
|
-
Requires-Dist:
|
|
455
|
+
Requires-Dist: agentic-mesh-protocol==0.2.3
|
|
456
|
+
Requires-Dist: anyio==4.12.1
|
|
457
|
+
Requires-Dist: grpcio-health-checking==1.78.0
|
|
458
|
+
Requires-Dist: grpcio-reflection==1.78.0
|
|
459
|
+
Requires-Dist: grpcio-status==1.78.0
|
|
460
|
+
Requires-Dist: pydantic==2.12.5
|
|
461
|
+
Provides-Extra: profiling
|
|
462
|
+
Requires-Dist: asyncio-inspector==0.1.0; extra == "profiling"
|
|
463
|
+
Requires-Dist: pyinstrument==5.1.2; extra == "profiling"
|
|
464
|
+
Requires-Dist: viztracer==1.1.1; extra == "profiling"
|
|
465
|
+
Requires-Dist: yappi==1.7.3; extra == "profiling"
|
|
461
466
|
Provides-Extra: taskiq
|
|
462
|
-
Requires-Dist: rstream
|
|
463
|
-
Requires-Dist: taskiq-aio-pika
|
|
464
|
-
Requires-Dist: taskiq-redis
|
|
465
|
-
Requires-Dist: taskiq[reload]
|
|
467
|
+
Requires-Dist: rstream==1.0.0; extra == "taskiq"
|
|
468
|
+
Requires-Dist: taskiq-aio-pika==0.6.0; extra == "taskiq"
|
|
469
|
+
Requires-Dist: taskiq-redis==1.2.2; extra == "taskiq"
|
|
470
|
+
Requires-Dist: taskiq[reload]==0.12.1; extra == "taskiq"
|
|
466
471
|
Dynamic: license-file
|
|
467
|
-
|
|
468
|
-
# DigitalKin Python SDK
|
|
469
|
-
|
|
470
|
-
[](https://github.com/DigitalKin-ai/digitalkin/actions/workflows/ci.yml)
|
|
471
|
-
[](https://pypi.org/project/digitalkin/)
|
|
472
|
-
[](https://pypi.org/project/digitalkin/)
|
|
473
|
-
[](https://github.com/DigitalKin-ai/digitalkin/blob/main/LICENSE)
|
|
474
|
-
|
|
475
|
-
Welcome to the DigitalKin Python SDK, a powerful tool designed for developers
|
|
476
|
-
who aim to build and manage agents within multi-agent systems according to the
|
|
477
|
-
innovative DigitalKin agentic mesh standards. This SDK streamlines the process
|
|
478
|
-
of creating and managing custom Tools, Triggers, and Kin Archetypes while
|
|
479
|
-
ensuring full compliance with the DigitalKin ecosystem's standards.
|
|
480
|
-
|
|
481
|
-
## 🚀 Features
|
|
482
|
-
|
|
483
|
-
- **Seamless Integration**: Easily integrate with DigitalKin's services using
|
|
484
|
-
our comprehensive gRPC support.
|
|
485
|
-
- **Customizable Agents**: Build custom agents and manage their lifecycle
|
|
486
|
-
efficiently.
|
|
487
|
-
- **Standards Compliance**: Adhere to the latest DigitalKin agentic mesh
|
|
488
|
-
standards.
|
|
489
|
-
- **Robust Development Tools**: Utilize advanced development tools for testing,
|
|
490
|
-
building, and deploying your projects.
|
|
491
|
-
|
|
492
|
-
## 📦 Installation
|
|
493
|
-
|
|
494
|
-
To install the DigitalKin SDK, simply run:
|
|
495
|
-
|
|
496
|
-
```bash
|
|
497
|
-
pip install digitalkin
|
|
498
|
-
```
|
|
499
|
-
|
|
500
|
-
**Optional Taskiq Integration**: Asynchronous task execution powered by Taskiq, backed by RabbitMQ and Redis
|
|
501
|
-
To enable the Rabbitmq streaming capabilities, run:
|
|
502
|
-
|
|
503
|
-
```sh
|
|
504
|
-
sudo rabbitmq-plugins enable rabbitmq_stream
|
|
505
|
-
|
|
506
|
-
# Core + Taskiq integration (RabbitMQ broker)
|
|
507
|
-
pip install digitalkin[taskiq]
|
|
508
|
-
```
|
|
509
|
-
|
|
510
|
-
## 🛠️ Usage
|
|
511
|
-
|
|
512
|
-
### Basic Import
|
|
513
|
-
|
|
514
|
-
Start by importing the necessary modules:
|
|
515
|
-
|
|
516
|
-
```python
|
|
517
|
-
import digitalkin
|
|
518
|
-
```
|
|
519
|
-
|
|
520
|
-
## Features
|
|
521
|
-
|
|
522
|
-
### Taskiq with RabbitMQ
|
|
523
|
-
|
|
524
|
-
TaskIQ intergration allows the module to scale for heavy CPU tasks by having the request's stateless module in a new instance.
|
|
525
|
-
|
|
526
|
-
- **Decoupled Scalability**: RabbitMQ brokers messages, letting producers and consumers scale independently.
|
|
527
|
-
- **Reliability**: Durable queues, acknowledgements, and dead-lettering ensure tasks aren’t lost.
|
|
528
|
-
- **Concurrency Control**: Taskiq’s worker pool manages parallel execution without custom schedulers.
|
|
529
|
-
- **Flexibility**: Built-in retries, exponential backoff, and Redis result-backend for resilient workflows.
|
|
530
|
-
- **Ecosystem**: Battle-tested `aio-pika` AMQP client plus Taskiq’s decorator-based API.
|
|
531
|
-
|
|
532
|
-
By combining Taskiq’s async API with RabbitMQ’s guarantees, you get a robust, production-ready queue with minimal boilerplate.
|
|
533
|
-
|
|
534
|
-
## 👷♂️ Development
|
|
535
|
-
|
|
536
|
-
### Prerequisites
|
|
537
|
-
|
|
538
|
-
Ensure you have the following installed:
|
|
539
|
-
|
|
540
|
-
- Python 3.10+
|
|
541
|
-
- [uv](https://astral.sh/uv) - Modern Python package management
|
|
542
|
-
- [buf](https://buf.build/docs/installation) - Protocol buffer toolkit
|
|
543
|
-
- [protoc](https://grpc.io/docs/protoc-installation/) - Protocol Buffers
|
|
544
|
-
compiler
|
|
545
|
-
- [Task](https://taskfile.dev/) - Task runner
|
|
546
|
-
|
|
547
|
-
### Setting Up Your Development Environment
|
|
548
|
-
|
|
549
|
-
Clone the repository and set up your environment with these commands:
|
|
550
|
-
|
|
551
|
-
```bash
|
|
552
|
-
# Clone the repository with submodules
|
|
553
|
-
git clone --recurse-submodules https://github.com/DigitalKin-ai/digitalkin.git
|
|
554
|
-
cd digitalkin
|
|
555
|
-
|
|
556
|
-
# Setup development environment
|
|
557
|
-
task setup-dev
|
|
558
|
-
task setup-dev
|
|
559
|
-
source .venv/bin/activate
|
|
560
|
-
```
|
|
561
|
-
|
|
562
|
-
### Common Development Tasks
|
|
563
|
-
|
|
564
|
-
Utilize the following commands for common tasks:
|
|
565
|
-
|
|
566
|
-
```bash
|
|
567
|
-
# Build the package
|
|
568
|
-
task build-package
|
|
569
|
-
|
|
570
|
-
# Run tests
|
|
571
|
-
task run-tests
|
|
572
|
-
|
|
573
|
-
# Format code using Ruff linter and formatter
|
|
574
|
-
task linter
|
|
575
|
-
|
|
576
|
-
# Clean build artifacts
|
|
577
|
-
task clean
|
|
578
|
-
|
|
579
|
-
# Bump version (major, minor, patch)
|
|
580
|
-
task bump-version -- major|minor|patch
|
|
581
|
-
```
|
|
582
|
-
|
|
583
|
-
### Publishing Process
|
|
584
|
-
|
|
585
|
-
1. Update code and commit changes. (following conventional branch/commit
|
|
586
|
-
standard)
|
|
587
|
-
2. Use `task bump-version -- major|minor|patch` command to commit new version.
|
|
588
|
-
3. Use GitHub "Create Release" workflow to plublish the new version.
|
|
589
|
-
4. Workflow automatically publishes to Test PyPI and PyPI.
|
|
590
|
-
|
|
591
|
-
## 📄 License
|
|
592
|
-
|
|
593
|
-
This project is licensed under the terms specified in the LICENSE file.
|
|
594
|
-
|
|
595
|
-
---
|
|
596
|
-
|
|
597
|
-
For more information, please visit our
|
|
598
|
-
[Homepage](https://github.com/DigitalKin-ai/digitalkin), check our
|
|
599
|
-
[Documentation](https://github.com/DigitalKin-ai/digitalkin), or report issues
|
|
600
|
-
on our [Issues page](https://github.com/DigitalKin-ai/digitalkin/issues).
|
|
601
|
-
|
|
602
|
-
Happy coding! 🎉🚀
|
|
@@ -156,7 +156,7 @@ class DynamicAgentSetup(SetupModel):
|
|
|
156
156
|
le=4096,
|
|
157
157
|
title="Max Tokens",
|
|
158
158
|
description="Maximum tokens in the response.",
|
|
159
|
-
json_schema_extra={"
|
|
159
|
+
json_schema_extra={"ui:widget": "hidden"},
|
|
160
160
|
)
|
|
161
161
|
|
|
162
162
|
# Static field without any special flags
|
|
@@ -326,9 +326,9 @@ async def demonstrate_dynamic_schema() -> None:
|
|
|
326
326
|
force=False,
|
|
327
327
|
)
|
|
328
328
|
|
|
329
|
-
#
|
|
329
|
+
# Runtime fields including hidden
|
|
330
330
|
await DynamicAgentSetup.get_clean_model(
|
|
331
|
-
config_fields=
|
|
331
|
+
config_fields=False,
|
|
332
332
|
hidden_fields=True,
|
|
333
333
|
force=False,
|
|
334
334
|
)
|
|
@@ -114,7 +114,7 @@ class TextTransformModule(BaseModule[TextTransformInput, TextTransformOutput, Te
|
|
|
114
114
|
self.capabilities,
|
|
115
115
|
)
|
|
116
116
|
|
|
117
|
-
self.db_id = self.storage.store(
|
|
117
|
+
self.db_id = await self.storage.store(
|
|
118
118
|
"monitor",
|
|
119
119
|
{
|
|
120
120
|
"module": self.metadata["name"],
|
|
@@ -173,12 +173,12 @@ class TextTransformModule(BaseModule[TextTransformInput, TextTransformOutput, Te
|
|
|
173
173
|
transformed,
|
|
174
174
|
)
|
|
175
175
|
|
|
176
|
-
monitor_obj: StorageRecord | None = self.storage.read("monitor")
|
|
176
|
+
monitor_obj: StorageRecord | None = await self.storage.read("monitor")
|
|
177
177
|
if monitor_obj is None:
|
|
178
178
|
logger.error("Monitor object not found in storage.")
|
|
179
179
|
break
|
|
180
180
|
monitor_obj.data.consumption += 1
|
|
181
|
-
updated_monitor_obj: StorageRecord | None = self.storage.
|
|
181
|
+
updated_monitor_obj: StorageRecord | None = await self.storage.update("monitor", monitor_obj.data.model_dump())
|
|
182
182
|
self.db_id = updated_monitor_obj.name if updated_monitor_obj else "monitor"
|
|
183
183
|
|
|
184
184
|
# Send results through callback and wait for acknowledgment
|
|
@@ -194,10 +194,10 @@ class TextTransformModule(BaseModule[TextTransformInput, TextTransformOutput, Te
|
|
|
194
194
|
Use it to close connections, free resources, etc.
|
|
195
195
|
"""
|
|
196
196
|
logger.info(f"Cleaning up module {self.metadata['name']}")
|
|
197
|
-
monitor_obj = self.storage.read("monitor")
|
|
197
|
+
monitor_obj = await self.storage.read("monitor")
|
|
198
198
|
if monitor_obj is None:
|
|
199
199
|
logger.error("Monitor object not found in storage.")
|
|
200
200
|
return
|
|
201
201
|
monitor_obj.data.ended = True
|
|
202
|
-
updated_monitor_obj: StorageRecord | None = self.storage.
|
|
202
|
+
updated_monitor_obj: StorageRecord | None = await self.storage.update("monitor", monitor_obj.data.model_dump())
|
|
203
203
|
self.db_id = updated_monitor_obj.name if updated_monitor_obj else "monitor"
|
|
@@ -124,7 +124,7 @@ class ExampleModule(ArchetypeModule[ExampleInput, ExampleOutput, ExampleSetup, E
|
|
|
124
124
|
replace_if_exists=True,
|
|
125
125
|
)
|
|
126
126
|
|
|
127
|
-
records, uploaded, failed = self.filesystem.upload_files(files=[file])
|
|
127
|
+
records, uploaded, failed = await self.filesystem.upload_files(files=[file])
|
|
128
128
|
for record in records:
|
|
129
129
|
logger.info("Uploaded file: %s, uploaded: %d, failed: %d", record, uploaded, failed)
|
|
130
130
|
logger.info("Stored file with ID: %s", record.id)
|
|
@@ -175,16 +175,16 @@ async def test_module() -> None:
|
|
|
175
175
|
|
|
176
176
|
# Check the storage
|
|
177
177
|
if module.status == ModuleStatus.STOPPED:
|
|
178
|
-
files, _nb_results = module.filesystem.get_files(
|
|
178
|
+
files, _nb_results = await module.filesystem.get_files(
|
|
179
179
|
filters=FileFilter(name="example_output.txt", context="test-mission-123"),
|
|
180
180
|
)
|
|
181
181
|
for file in files:
|
|
182
|
-
module.filesystem.update_file(file.id, file_type="updated")
|
|
182
|
+
await module.filesystem.update_file(file.id, file_type="updated")
|
|
183
183
|
# module.filesystem.delete_files(filters=FileFilter(name="example_output.txt", context="test-mission-123"), permanent=True)
|
|
184
184
|
|
|
185
185
|
logger.info("Retrieved file: %s with ID: %s", file.name, file.id)
|
|
186
186
|
try:
|
|
187
|
-
file_record = module.filesystem.get_file(file_id=file.id, include_content=True)
|
|
187
|
+
file_record = await module.filesystem.get_file(file_id=file.id, include_content=True)
|
|
188
188
|
if file_record:
|
|
189
189
|
logger.info("File ID: %s", file_record.id)
|
|
190
190
|
logger.info("File name: %s", file_record.name)
|
|
@@ -134,7 +134,7 @@ class ExampleModule(ArchetypeModule[ExampleInput, ExampleOutput, ExampleSetup, E
|
|
|
134
134
|
)
|
|
135
135
|
|
|
136
136
|
# Store the output data in storage
|
|
137
|
-
storage_id = self.storage.store(
|
|
137
|
+
storage_id = await self.storage.store(
|
|
138
138
|
collection="example", record_id="example_outputs", data=output_data.model_dump(), data_type="OUTPUT"
|
|
139
139
|
)
|
|
140
140
|
|
|
@@ -176,12 +176,12 @@ async def test_module() -> None:
|
|
|
176
176
|
|
|
177
177
|
# Check the storage
|
|
178
178
|
if module.status == ModuleStatus.STOPPED:
|
|
179
|
-
result: StorageRecord = module.storage.read("example", "example_outputs")
|
|
179
|
+
result: StorageRecord = await module.storage.read("example", "example_outputs")
|
|
180
180
|
if result:
|
|
181
181
|
pass
|
|
182
182
|
|
|
183
183
|
|
|
184
|
-
def test_storage_directly() -> None:
|
|
184
|
+
async def test_storage_directly() -> None:
|
|
185
185
|
"""Test the storage service directly."""
|
|
186
186
|
# Initialize storage service
|
|
187
187
|
storage = ServicesConfig().storage(
|
|
@@ -189,10 +189,10 @@ def test_storage_directly() -> None:
|
|
|
189
189
|
)
|
|
190
190
|
|
|
191
191
|
# Create a test record
|
|
192
|
-
storage.store("example", "test_table", {"test_key": "test_value"}, "OUTPUT")
|
|
192
|
+
await storage.store("example", "test_table", {"test_key": "test_value"}, "OUTPUT")
|
|
193
193
|
|
|
194
194
|
# Retrieve the record
|
|
195
|
-
retrieved = storage.read("example", "test_table")
|
|
195
|
+
retrieved = await storage.read("example", "test_table")
|
|
196
196
|
|
|
197
197
|
if retrieved:
|
|
198
198
|
pass
|
|
@@ -203,4 +203,4 @@ if __name__ == "__main__":
|
|
|
203
203
|
asyncio.run(test_module())
|
|
204
204
|
|
|
205
205
|
# Test storage directly
|
|
206
|
-
test_storage_directly()
|
|
206
|
+
asyncio.run(test_storage_directly())
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[build-system]
|
|
2
2
|
build-backend = "setuptools.build_meta"
|
|
3
|
-
requires = ["setuptools
|
|
3
|
+
requires = [ "setuptools == 82.0.0", "wheel==0.46.3" ]
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
readme = "README.md"
|
|
11
11
|
requires-python = ">=3.10"
|
|
12
12
|
|
|
13
|
-
keywords = ["agent", "digitalkin", "
|
|
13
|
+
keywords = [ "agent", "digitalkin", "grpc", "kin", "sdk" ]
|
|
14
14
|
|
|
15
15
|
classifiers = [
|
|
16
16
|
"Development Status :: 3 - Alpha",
|
|
@@ -25,25 +25,30 @@
|
|
|
25
25
|
"Programming Language :: Python",
|
|
26
26
|
"Topic :: Software Development :: Libraries",
|
|
27
27
|
]
|
|
28
|
-
version = "0.3.2.dev30"
|
|
29
28
|
|
|
30
29
|
dependencies = [
|
|
31
|
-
"agentic-mesh-protocol==0.2.
|
|
32
|
-
"
|
|
33
|
-
"grpcio-
|
|
34
|
-
"grpcio-
|
|
35
|
-
"
|
|
36
|
-
"
|
|
30
|
+
"agentic-mesh-protocol==0.2.3",
|
|
31
|
+
"anyio==4.12.1",
|
|
32
|
+
"grpcio-health-checking==1.78.0",
|
|
33
|
+
"grpcio-reflection==1.78.0",
|
|
34
|
+
"grpcio-status==1.78.0",
|
|
35
|
+
"pydantic==2.12.5",
|
|
37
36
|
]
|
|
37
|
+
version = "0.3.3.dev0"
|
|
38
38
|
|
|
39
39
|
[project.optional-dependencies]
|
|
40
|
+
profiling = [
|
|
41
|
+
"asyncio-inspector==0.1.0",
|
|
42
|
+
"pyinstrument==5.1.2",
|
|
43
|
+
"viztracer==1.1.1",
|
|
44
|
+
"yappi==1.7.3",
|
|
45
|
+
]
|
|
40
46
|
taskiq = [
|
|
41
|
-
"rstream
|
|
42
|
-
"taskiq-aio-pika
|
|
43
|
-
"taskiq-redis
|
|
44
|
-
"taskiq[reload]
|
|
47
|
+
"rstream==1.0.0",
|
|
48
|
+
"taskiq-aio-pika==0.6.0",
|
|
49
|
+
"taskiq-redis==1.2.2",
|
|
50
|
+
"taskiq[reload]==0.12.1",
|
|
45
51
|
]
|
|
46
|
-
|
|
47
52
|
[project.urls]
|
|
48
53
|
Documentation = "https://github.com/DigitalKin-ai/digitalkin"
|
|
49
54
|
Homepage = "https://github.com/DigitalKin-ai/digitalkin"
|
|
@@ -55,63 +60,67 @@
|
|
|
55
60
|
|
|
56
61
|
[dependency-groups]
|
|
57
62
|
dev = [
|
|
58
|
-
"build
|
|
59
|
-
"bump-my-version
|
|
60
|
-
"cryptography
|
|
61
|
-
"mypy
|
|
62
|
-
"pre-commit
|
|
63
|
-
"pyright
|
|
64
|
-
"ruff
|
|
65
|
-
"twine
|
|
66
|
-
"
|
|
63
|
+
"build==1.4.0",
|
|
64
|
+
"bump-my-version==1.2.7",
|
|
65
|
+
"cryptography==46.0.5",
|
|
66
|
+
"mypy==1.19.1",
|
|
67
|
+
"pre-commit==4.5.1",
|
|
68
|
+
"pyright==1.1.408",
|
|
69
|
+
"ruff==0.15.5",
|
|
70
|
+
"twine==6.2.0",
|
|
71
|
+
"types-grpcio-health-checking==1.0.0.20250506",
|
|
72
|
+
"types-grpcio-reflection==1.0.0.20250506",
|
|
73
|
+
"types-grpcio==1.0.0.20251009",
|
|
74
|
+
"types-protobuf==6.32.1.20260221",
|
|
75
|
+
"typos==1.44.0",
|
|
67
76
|
]
|
|
68
77
|
docs = [
|
|
69
|
-
"griffe-inherited-docstrings
|
|
70
|
-
"markdown-callouts
|
|
71
|
-
"markdown-exec
|
|
72
|
-
"mike
|
|
73
|
-
"mkdocs-autorefs
|
|
74
|
-
"mkdocs-awesome-pages-plugin
|
|
75
|
-
"mkdocs-coverage
|
|
76
|
-
"mkdocs-git-committers-plugin-2
|
|
77
|
-
"mkdocs-git-revision-date-localized-plugin
|
|
78
|
-
"mkdocs-glightbox
|
|
79
|
-
"mkdocs-include-markdown-plugin
|
|
80
|
-
"mkdocs-literate-nav
|
|
81
|
-
"mkdocs-llmstxt
|
|
82
|
-
"mkdocs-material[imaging]
|
|
83
|
-
"mkdocs-minify-plugin
|
|
84
|
-
"mkdocs-open-in-new-tab
|
|
85
|
-
"mkdocs-redirects
|
|
86
|
-
"mkdocs-section-index
|
|
87
|
-
"mkdocs
|
|
88
|
-
"mkdocstrings-python
|
|
89
|
-
"mkdocstrings
|
|
90
|
-
"tomli
|
|
78
|
+
"griffe-inherited-docstrings==1.1.3",
|
|
79
|
+
"markdown-callouts==0.4.0",
|
|
80
|
+
"markdown-exec==1.12.1",
|
|
81
|
+
"mike==2.1.4",
|
|
82
|
+
"mkdocs-autorefs==1.4.4",
|
|
83
|
+
"mkdocs-awesome-pages-plugin==2.10.1",
|
|
84
|
+
"mkdocs-coverage==2.0.0",
|
|
85
|
+
"mkdocs-git-committers-plugin-2==2.5.0",
|
|
86
|
+
"mkdocs-git-revision-date-localized-plugin==1.5.1",
|
|
87
|
+
"mkdocs-glightbox==0.5.2",
|
|
88
|
+
"mkdocs-include-markdown-plugin==7.2.1",
|
|
89
|
+
"mkdocs-literate-nav==0.6.2",
|
|
90
|
+
"mkdocs-llmstxt==0.5.0",
|
|
91
|
+
"mkdocs-material[imaging]==9.7.5",
|
|
92
|
+
"mkdocs-minify-plugin==0.8.0",
|
|
93
|
+
"mkdocs-open-in-new-tab==1.0.8",
|
|
94
|
+
"mkdocs-redirects==1.2.2",
|
|
95
|
+
"mkdocs-section-index==0.3.10",
|
|
96
|
+
"mkdocs==1.6.1",
|
|
97
|
+
"mkdocstrings-python==2.0.3",
|
|
98
|
+
"mkdocstrings==1.0.3",
|
|
99
|
+
"tomli==2.4.0",
|
|
91
100
|
]
|
|
92
101
|
tests = [
|
|
93
|
-
"freezegun
|
|
94
|
-
"grpcio-testing
|
|
95
|
-
"hdrhistogram
|
|
96
|
-
"psutil
|
|
97
|
-
"pytest-asyncio
|
|
98
|
-
"pytest-cov
|
|
99
|
-
"pytest-html==4.
|
|
102
|
+
"freezegun==1.5.5",
|
|
103
|
+
"grpcio-testing==1.78.0",
|
|
104
|
+
"hdrhistogram==0.10.3",
|
|
105
|
+
"psutil==7.2.2",
|
|
106
|
+
"pytest-asyncio==1.3.0",
|
|
107
|
+
"pytest-cov==7.0.0",
|
|
108
|
+
"pytest-html==4.2.0",
|
|
100
109
|
"pytest-json-report==1.5.0",
|
|
101
|
-
"pytest-timeout
|
|
102
|
-
"pytest
|
|
110
|
+
"pytest-timeout==2.4.0",
|
|
111
|
+
"pytest==9.0.2",
|
|
103
112
|
]
|
|
104
113
|
[tool.setuptools]
|
|
105
114
|
package-dir = { "" = "src" }
|
|
106
115
|
|
|
107
116
|
[tool.setuptools.packages.find]
|
|
108
|
-
where = ["examples", "src"]
|
|
109
|
-
|
|
117
|
+
where = [ "examples", "src" ]
|
|
110
118
|
[tool.ruff]
|
|
119
|
+
|
|
111
120
|
indent-width = 4
|
|
112
121
|
line-length = 120
|
|
113
122
|
show-fixes = true
|
|
114
|
-
src = ["src"]
|
|
123
|
+
src = [ "src" ]
|
|
115
124
|
target-version = "py310"
|
|
116
125
|
unsafe-fixes = true
|
|
117
126
|
# Enable preview features.
|
|
@@ -191,12 +200,18 @@
|
|
|
191
200
|
]
|
|
192
201
|
|
|
193
202
|
ignore = [
|
|
194
|
-
"
|
|
195
|
-
"
|
|
196
|
-
"
|
|
203
|
+
"ANN401", # Allow typing.Any — gRPC stubs, callbacks, and dynamic APIs require it
|
|
204
|
+
"COM812", # Disable because of formatter incompatibility
|
|
205
|
+
"DOC502", # Allow extraneous-exception in docstring
|
|
206
|
+
"F401", # Allow unused imports — used for availability checks (e.g. taskiq)
|
|
207
|
+
"N802", # Allow PascalCase methods — gRPC servicer convention
|
|
208
|
+
"PLC0415", # Allow lazy imports — needed to break circular dependencies
|
|
209
|
+
"PLW3201", # Allow __get_pydantic_core_schema__ — Pydantic dunder hook
|
|
210
|
+
"S105", # Hardcoded-password
|
|
211
|
+
"S403", # Allow pickle import — required for Taskiq serialization
|
|
197
212
|
]
|
|
198
213
|
|
|
199
|
-
fixable = ["ALL"]
|
|
214
|
+
fixable = [ "ALL" ]
|
|
200
215
|
|
|
201
216
|
[tool.ruff.lint.pydocstyle]
|
|
202
217
|
convention = "google"
|
|
@@ -250,19 +265,20 @@
|
|
|
250
265
|
skip-magic-trailing-comma = false
|
|
251
266
|
|
|
252
267
|
[tool.pyright]
|
|
253
|
-
exclude = ["**/.venv", "**/__pycache__"]
|
|
254
|
-
include = ["src"]
|
|
268
|
+
exclude = [ "**/.*", "**/.venv", "**/__pycache__", "**/node_modules" ]
|
|
269
|
+
include = [ "src" ]
|
|
255
270
|
|
|
256
271
|
[tool.mypy]
|
|
257
|
-
exclude = ["examples", "tests"]
|
|
258
272
|
|
|
273
|
+
exclude = [ "examples", "tests" ]
|
|
274
|
+
ignore_missing_imports = true
|
|
259
275
|
[tool.pytest.ini_options]
|
|
276
|
+
|
|
260
277
|
asyncio_mode = "auto"
|
|
278
|
+
log_cli = false
|
|
279
|
+
log_level = "ERROR"
|
|
261
280
|
python_files = "test_*.py"
|
|
262
|
-
testpaths = ["tests"]
|
|
263
|
-
|
|
264
|
-
log_cli = false
|
|
265
|
-
log_level = "ERROR"
|
|
281
|
+
testpaths = [ "tests" ]
|
|
266
282
|
|
|
267
283
|
# Default timeout for tests (in seconds)
|
|
268
284
|
timeout = 10
|
|
@@ -272,8 +288,10 @@
|
|
|
272
288
|
markers = [
|
|
273
289
|
"edge_case: marks tests for boundary conditions and edge cases",
|
|
274
290
|
"grpc: marks tests for gRPC service functionality",
|
|
275
|
-
"integration: marks tests that require
|
|
291
|
+
"integration: marks tests that require external service connections (deselect with '-m \"not integration\"')",
|
|
276
292
|
"regression: marks tests for previously fixed bugs",
|
|
277
293
|
"smoke: marks critical path tests that should always pass",
|
|
294
|
+
"stress: marks stress/load tests for performance under pressure",
|
|
295
|
+
"taskiq: marks tests for Taskiq distributed job execution",
|
|
278
296
|
"validation: marks tests for input validation and schema checking",
|
|
279
297
|
]
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""DigitalKin SDK!
|
|
2
|
+
|
|
3
|
+
This package implements the DigitalKin agentic mesh standards.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from digitalkin.__version__ import __version__
|
|
7
|
+
from digitalkin.models.module.module import ModuleStatus
|
|
8
|
+
from digitalkin.models.module.module_context import ModuleContext
|
|
9
|
+
from digitalkin.modules.archetype_module import ArchetypeModule
|
|
10
|
+
from digitalkin.modules.tool_module import ToolModule
|
|
11
|
+
from digitalkin.modules.trigger_handler import TriggerHandler
|
|
12
|
+
from digitalkin.services.services_config import ServicesConfig
|
|
13
|
+
|
|
14
|
+
__all__ = [
|
|
15
|
+
"ArchetypeModule",
|
|
16
|
+
"ModuleContext",
|
|
17
|
+
"ModuleStatus",
|
|
18
|
+
"ServicesConfig",
|
|
19
|
+
"ToolModule",
|
|
20
|
+
"TriggerHandler",
|
|
21
|
+
"__version__",
|
|
22
|
+
]
|