digitalkin 0.4.2.dev1__tar.gz → 0.4.3.dev2__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.4.2.dev1 → digitalkin-0.4.3.dev2}/PKG-INFO +2 -2
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/pyproject.toml +2 -2
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/__version__.py +1 -1
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/modules/_base_module.py +4 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/storage/default_storage.py +27 -19
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/storage/grpc_storage.py +26 -40
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/storage/storage_strategy.py +103 -82
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin.egg-info/PKG-INFO +2 -2
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin.egg-info/requires.txt +1 -1
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/LICENSE +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/README.md +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/examples/base_server/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/examples/base_server/mock/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/examples/base_server/mock/mock_pb2.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/examples/base_server/mock/mock_pb2_grpc.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/examples/base_server/server_async_insecure.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/examples/base_server/server_async_secure.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/examples/base_server/server_sync_insecure.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/examples/base_server/server_sync_secure.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/examples/modules/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/examples/modules/archetype_with_tools_module.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/examples/modules/cpu_intensive_module.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/examples/modules/dynamic_setup_module.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/examples/modules/minimal_llm_module.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/examples/modules/text_transform_module.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/examples/monitoring/digitalkin_observability/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/examples/monitoring/digitalkin_observability/http_server.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/examples/monitoring/digitalkin_observability/interceptors.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/examples/monitoring/digitalkin_observability/metrics.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/examples/monitoring/digitalkin_observability/prometheus.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/examples/monitoring/tests/test_metrics.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/examples/services/filesystem_module.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/examples/services/storage_module.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/setup.cfg +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/community/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/community/agno/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/community/agno/agno_adapter.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/community/agno/agui_tools.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/community/agno/hitl.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/core/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/core/common/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/core/common/factories.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/core/job_manager/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/core/job_manager/base_job_manager.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/core/job_manager/single_job_manager.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/core/job_manager/taskiq_broker.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/core/job_manager/taskiq_job_manager.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/core/profiling/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/core/profiling/asyncio_monitor.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/core/profiling/task_profiler.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/core/task_manager/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/core/task_manager/base_task_manager.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/core/task_manager/local_task_manager.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/core/task_manager/remote_task_manager.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/core/task_manager/task_executor.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/core/task_manager/task_session.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/grpc_servers/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/grpc_servers/_base_server.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/grpc_servers/module_server.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/grpc_servers/module_servicer.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/grpc_servers/utils/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/grpc_servers/utils/exceptions.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/grpc_servers/utils/grpc_client_wrapper.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/grpc_servers/utils/grpc_error_handler.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/grpc_servers/utils/utility_schema_extender.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/logger.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/mixins/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/mixins/agui_mixin.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/mixins/base_mixin.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/mixins/callback_mixin.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/mixins/chat_history_mixin.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/mixins/cost_mixin.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/mixins/file_history_mixin.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/mixins/filesystem_mixin.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/mixins/logger_mixin.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/mixins/storage_mixin.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/core/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/core/job_manager_models.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/core/task_monitor.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/events/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/events/agent_events.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/grpc_servers/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/grpc_servers/models.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/grpc_servers/types.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/module/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/module/ag_ui.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/module/base_types.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/module/module.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/module/module_context.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/module/module_types.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/module/request_metadata.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/module/select_schema.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/module/setup_types.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/module/tool_cache.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/module/tool_reference.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/module/utility.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/services/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/services/cost.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/services/registry.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/services/storage.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/settings/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/settings/server/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/settings/server/channel.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/settings/server/grpc.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/settings/server/server.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/settings/utils/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/models/settings/utils/channel.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/modules/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/modules/archetype_module.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/modules/tool_module.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/modules/trigger_handler.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/modules/triggers/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/modules/triggers/healthcheck_ping_trigger.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/modules/triggers/healthcheck_services_trigger.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/modules/triggers/healthcheck_status_trigger.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/py.typed +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/agent/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/agent/agent_strategy.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/agent/default_agent.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/base_strategy.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/communication/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/communication/communication_strategy.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/communication/default_communication.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/communication/grpc_communication.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/cost/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/cost/cost_strategy.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/cost/default_cost.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/cost/grpc_cost.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/filesystem/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/filesystem/default_filesystem.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/filesystem/filesystem_strategy.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/filesystem/grpc_filesystem.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/identity/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/identity/default_identity.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/identity/identity_strategy.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/registry/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/registry/default_registry.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/registry/exceptions.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/registry/grpc_registry.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/registry/registry_models.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/registry/registry_strategy.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/services_config.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/services_models.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/setup/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/setup/default_setup.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/setup/grpc_setup.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/setup/setup_strategy.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/snapshot/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/snapshot/default_snapshot.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/snapshot/snapshot_strategy.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/storage/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/task_manager/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/task_manager/default_task_manager.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/task_manager/grpc_task_manager.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/task_manager/task_manager_strategy.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/user_profile/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/user_profile/default_user_profile.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/user_profile/grpc_user_profile.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/user_profile/user_profile_strategy.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/utils/__init__.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/utils/arg_parser.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/utils/conditional_schema.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/utils/development_mode_action.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/utils/dynamic_schema.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/utils/llm_ready_schema.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/utils/package_discover.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/utils/proto_utils.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/utils/schema_splitter.py +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin.egg-info/SOURCES.txt +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin.egg-info/dependency_links.txt +0 -0
- {digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/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.4.
|
|
3
|
+
Version: 0.4.3.dev2
|
|
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
|
|
@@ -453,7 +453,7 @@ Requires-Python: >=3.10
|
|
|
453
453
|
Description-Content-Type: text/markdown
|
|
454
454
|
License-File: LICENSE
|
|
455
455
|
Requires-Dist: ag-ui-protocol>=0.1.14
|
|
456
|
-
Requires-Dist: agentic-mesh-protocol==0.2.
|
|
456
|
+
Requires-Dist: agentic-mesh-protocol==0.2.4
|
|
457
457
|
Requires-Dist: anyio==4.13.0
|
|
458
458
|
Requires-Dist: grpcio-health-checking==1.78.0
|
|
459
459
|
Requires-Dist: grpcio-reflection==1.78.0
|
|
@@ -28,14 +28,14 @@
|
|
|
28
28
|
|
|
29
29
|
dependencies = [
|
|
30
30
|
"ag-ui-protocol>=0.1.14",
|
|
31
|
-
"agentic-mesh-protocol==0.2.
|
|
31
|
+
"agentic-mesh-protocol==0.2.4",
|
|
32
32
|
"anyio==4.13.0",
|
|
33
33
|
"grpcio-health-checking==1.78.0",
|
|
34
34
|
"grpcio-reflection==1.78.0",
|
|
35
35
|
"grpcio-status==1.78.0",
|
|
36
36
|
"pydantic==2.12.5",
|
|
37
37
|
]
|
|
38
|
-
version = "0.4.
|
|
38
|
+
version = "0.4.3.dev2"
|
|
39
39
|
|
|
40
40
|
[project.optional-dependencies]
|
|
41
41
|
profiling = [
|
|
@@ -649,6 +649,10 @@ class BaseModule( # Module SDK base class requires many public methods # noqa:
|
|
|
649
649
|
config_setup_data: Setup data containing tool references.
|
|
650
650
|
"""
|
|
651
651
|
logger.debug("Starting tool resolution", extra=self.context.session.current_ids())
|
|
652
|
+
# New setup version: discard any inherited resolved_tools so the live
|
|
653
|
+
# tool-module schemas are re-fetched. Mission runs reuse the persisted
|
|
654
|
+
# resolved_tools (via build_tool_cache in start()) and never reach here.
|
|
655
|
+
config_setup_data.resolved_tools = {}
|
|
652
656
|
tool_cache = await config_setup_data.build_tool_cache(self.context.registry, self.context.communication)
|
|
653
657
|
self.context.tool_cache = tool_cache
|
|
654
658
|
logger.debug(
|
{digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/storage/default_storage.py
RENAMED
|
@@ -62,7 +62,7 @@ class DefaultStorage(StorageStrategy):
|
|
|
62
62
|
continue
|
|
63
63
|
data_model = model_cls.model_validate(rd["data"])
|
|
64
64
|
rec = StorageRecord(
|
|
65
|
-
|
|
65
|
+
context=rd["context"],
|
|
66
66
|
collection=rd["collection"],
|
|
67
67
|
record_id=rd["record_id"],
|
|
68
68
|
data=data_model,
|
|
@@ -93,7 +93,7 @@ class DefaultStorage(StorageStrategy):
|
|
|
93
93
|
serial: dict[str, dict] = {}
|
|
94
94
|
for key, record in self.storage.items():
|
|
95
95
|
serial[key] = {
|
|
96
|
-
"
|
|
96
|
+
"context": record.context,
|
|
97
97
|
"collection": record.collection,
|
|
98
98
|
"record_id": record.record_id,
|
|
99
99
|
"data_type": record.data_type.name,
|
|
@@ -119,7 +119,7 @@ class DefaultStorage(StorageStrategy):
|
|
|
119
119
|
Raises:
|
|
120
120
|
ValueError: If the record already exists
|
|
121
121
|
"""
|
|
122
|
-
key =
|
|
122
|
+
key = self._key(record.context, record.collection, record.record_id)
|
|
123
123
|
if key in self.storage:
|
|
124
124
|
msg = f"Document {key!r} already exists"
|
|
125
125
|
raise ValueError(msg)
|
|
@@ -131,31 +131,36 @@ class DefaultStorage(StorageStrategy):
|
|
|
131
131
|
logger.debug("Created %s", key)
|
|
132
132
|
return record
|
|
133
133
|
|
|
134
|
-
|
|
135
|
-
|
|
134
|
+
@staticmethod
|
|
135
|
+
def _key(context: str, collection: str, record_id: str) -> str:
|
|
136
|
+
return f"{context}|{collection}:{record_id}"
|
|
137
|
+
|
|
138
|
+
async def _read(self, collection: str, record_id: str, context: str) -> StorageRecord | None:
|
|
139
|
+
"""Get a record from the database scoped to a specific context.
|
|
136
140
|
|
|
137
141
|
Args:
|
|
138
142
|
collection: The unique name to retrieve data for
|
|
139
143
|
record_id: The unique ID of the record
|
|
144
|
+
context: Owner context scoping the lookup.
|
|
140
145
|
|
|
141
146
|
Returns:
|
|
142
147
|
StorageRecord: The corresponding record
|
|
143
148
|
"""
|
|
144
|
-
|
|
145
|
-
return self.storage.get(key)
|
|
149
|
+
return self.storage.get(self._key(context, collection, record_id))
|
|
146
150
|
|
|
147
|
-
async def _update(self, collection: str, record_id: str, data: BaseModel) -> StorageRecord | None:
|
|
148
|
-
"""Update
|
|
151
|
+
async def _update(self, collection: str, record_id: str, data: BaseModel, context: str) -> StorageRecord | None:
|
|
152
|
+
"""Update a record in the database scoped to a specific context.
|
|
149
153
|
|
|
150
154
|
Args:
|
|
151
155
|
collection: The unique name to retrieve data for
|
|
152
156
|
record_id: The unique ID of the record
|
|
153
157
|
data: The data to modify
|
|
158
|
+
context: Owner context scoping the update.
|
|
154
159
|
|
|
155
160
|
Returns:
|
|
156
161
|
StorageRecord: The modified record
|
|
157
162
|
"""
|
|
158
|
-
key =
|
|
163
|
+
key = self._key(context, collection, record_id)
|
|
159
164
|
rec = self.storage.get(key)
|
|
160
165
|
if not rec:
|
|
161
166
|
return None
|
|
@@ -165,17 +170,18 @@ class DefaultStorage(StorageStrategy):
|
|
|
165
170
|
logger.debug("Modified %s", key)
|
|
166
171
|
return rec
|
|
167
172
|
|
|
168
|
-
async def _remove(self, collection: str, record_id: str) -> bool:
|
|
169
|
-
"""Delete
|
|
173
|
+
async def _remove(self, collection: str, record_id: str, context: str) -> bool:
|
|
174
|
+
"""Delete a record from the database scoped to a specific context.
|
|
170
175
|
|
|
171
176
|
Args:
|
|
172
177
|
collection: The unique name to retrieve data for
|
|
173
178
|
record_id: The unique ID of the record
|
|
179
|
+
context: Owner context scoping the deletion.
|
|
174
180
|
|
|
175
181
|
Returns:
|
|
176
182
|
bool: True if the record was removed, False otherwise
|
|
177
183
|
"""
|
|
178
|
-
key =
|
|
184
|
+
key = self._key(context, collection, record_id)
|
|
179
185
|
if key not in self.storage:
|
|
180
186
|
return False
|
|
181
187
|
del self.storage[key]
|
|
@@ -183,28 +189,30 @@ class DefaultStorage(StorageStrategy):
|
|
|
183
189
|
logger.debug("Removed %s", key)
|
|
184
190
|
return True
|
|
185
191
|
|
|
186
|
-
async def _list(self, collection: str) -> list[StorageRecord]:
|
|
187
|
-
"""
|
|
192
|
+
async def _list(self, collection: str, context: str) -> list[StorageRecord]:
|
|
193
|
+
"""List records in a collection scoped to a specific context.
|
|
188
194
|
|
|
189
195
|
Args:
|
|
190
196
|
collection: The unique name to retrieve data for
|
|
197
|
+
context: Owner context scoping the listing.
|
|
191
198
|
|
|
192
199
|
Returns:
|
|
193
200
|
A list of storage records
|
|
194
201
|
"""
|
|
195
|
-
prefix = f"{collection}:"
|
|
202
|
+
prefix = f"{context}|{collection}:"
|
|
196
203
|
return [r for k, r in self.storage.items() if k.startswith(prefix)]
|
|
197
204
|
|
|
198
|
-
async def _remove_collection(self, collection: str) -> bool:
|
|
199
|
-
"""
|
|
205
|
+
async def _remove_collection(self, collection: str, context: str) -> bool:
|
|
206
|
+
"""Wipe a collection scoped to a specific context.
|
|
200
207
|
|
|
201
208
|
Args:
|
|
202
209
|
collection: The unique name to retrieve data for
|
|
210
|
+
context: Owner context scoping the wipe.
|
|
203
211
|
|
|
204
212
|
Returns:
|
|
205
213
|
bool: True if the collection was removed, False otherwise
|
|
206
214
|
"""
|
|
207
|
-
prefix = f"{collection}:"
|
|
215
|
+
prefix = f"{context}|{collection}:"
|
|
208
216
|
to_delete = [k for k in self.storage if k.startswith(prefix)]
|
|
209
217
|
for k in to_delete:
|
|
210
218
|
del self.storage[k]
|
{digitalkin-0.4.2.dev1 → digitalkin-0.4.3.dev2}/src/digitalkin/services/storage/grpc_storage.py
RENAMED
|
@@ -34,7 +34,7 @@ class GrpcStorage(StorageStrategy, GrpcClientWrapper):
|
|
|
34
34
|
A fully validated StorageRecord.
|
|
35
35
|
"""
|
|
36
36
|
# Direct field access for scalars (avoids full MessageToDict overhead)
|
|
37
|
-
|
|
37
|
+
ctx = proto.context
|
|
38
38
|
coll = proto.collection
|
|
39
39
|
rid = proto.record_id
|
|
40
40
|
dtype = DataType[data_pb2.DataType.Name(proto.data_type)]
|
|
@@ -48,7 +48,7 @@ class GrpcStorage(StorageStrategy, GrpcClientWrapper):
|
|
|
48
48
|
|
|
49
49
|
validated = self._validate_data(coll, payload)
|
|
50
50
|
return StorageRecord(
|
|
51
|
-
|
|
51
|
+
context=ctx,
|
|
52
52
|
collection=coll,
|
|
53
53
|
record_id=rid,
|
|
54
54
|
data=validated,
|
|
@@ -75,7 +75,7 @@ class GrpcStorage(StorageStrategy, GrpcClientWrapper):
|
|
|
75
75
|
data_struct.update(record.data.model_dump())
|
|
76
76
|
req = data_pb2.StoreRecordRequest(
|
|
77
77
|
data=data_struct,
|
|
78
|
-
|
|
78
|
+
context=record.context,
|
|
79
79
|
collection=record.collection,
|
|
80
80
|
record_id=record.record_id,
|
|
81
81
|
data_type=record.data_type.name,
|
|
@@ -90,16 +90,16 @@ class GrpcStorage(StorageStrategy, GrpcClientWrapper):
|
|
|
90
90
|
)
|
|
91
91
|
raise StorageServiceError(str(e)) from e
|
|
92
92
|
|
|
93
|
-
async def _read(self, collection: str, record_id: str) -> StorageRecord | None:
|
|
94
|
-
"""Fetch a single document
|
|
93
|
+
async def _read(self, collection: str, record_id: str, context: str) -> StorageRecord | None:
|
|
94
|
+
"""Fetch a single document scoped to a specific context.
|
|
95
95
|
|
|
96
96
|
Returns:
|
|
97
97
|
StorageData: The record
|
|
98
98
|
"""
|
|
99
|
-
logger.debug("debug:_read collection=%s id=%s", collection, record_id)
|
|
99
|
+
logger.debug("debug:_read context=%s collection=%s id=%s", context, collection, record_id)
|
|
100
100
|
try:
|
|
101
101
|
req = data_pb2.ReadRecordRequest(
|
|
102
|
-
|
|
102
|
+
context=context,
|
|
103
103
|
collection=collection,
|
|
104
104
|
record_id=record_id,
|
|
105
105
|
)
|
|
@@ -114,24 +114,20 @@ class GrpcStorage(StorageStrategy, GrpcClientWrapper):
|
|
|
114
114
|
collection: str,
|
|
115
115
|
record_id: str,
|
|
116
116
|
data: BaseModel,
|
|
117
|
+
context: str,
|
|
117
118
|
) -> StorageRecord | None:
|
|
118
|
-
"""Overwrite a document via gRPC.
|
|
119
|
-
|
|
120
|
-
Args:
|
|
121
|
-
collection: The unique name for the record type
|
|
122
|
-
record_id: The unique ID for the record
|
|
123
|
-
data: The validated data model
|
|
119
|
+
"""Overwrite a document via gRPC scoped to a specific context.
|
|
124
120
|
|
|
125
121
|
Returns:
|
|
126
|
-
StorageRecord: The updated record
|
|
122
|
+
StorageRecord: The updated record, or None on failure.
|
|
127
123
|
"""
|
|
128
|
-
logger.debug("debug:_update collection=%s id=%s", collection, record_id)
|
|
124
|
+
logger.debug("debug:_update context=%s collection=%s id=%s", context, collection, record_id)
|
|
129
125
|
try:
|
|
130
126
|
struct = Struct()
|
|
131
127
|
struct.update(data.model_dump())
|
|
132
128
|
req = data_pb2.UpdateRecordRequest(
|
|
133
129
|
data=struct,
|
|
134
|
-
|
|
130
|
+
context=context,
|
|
135
131
|
collection=collection,
|
|
136
132
|
record_id=record_id,
|
|
137
133
|
)
|
|
@@ -141,20 +137,16 @@ class GrpcStorage(StorageStrategy, GrpcClientWrapper):
|
|
|
141
137
|
logger.warning("gRPC UpdateRecord failed for %s:%s", collection, record_id)
|
|
142
138
|
return None
|
|
143
139
|
|
|
144
|
-
async def _remove(self, collection: str, record_id: str) -> bool:
|
|
145
|
-
"""Delete a document via gRPC.
|
|
146
|
-
|
|
147
|
-
Args:
|
|
148
|
-
collection: The unique name for the record type
|
|
149
|
-
record_id: The unique ID for the record
|
|
140
|
+
async def _remove(self, collection: str, record_id: str, context: str) -> bool:
|
|
141
|
+
"""Delete a document via gRPC scoped to a specific context.
|
|
150
142
|
|
|
151
143
|
Returns:
|
|
152
|
-
bool: True if the record was deleted, False otherwise
|
|
144
|
+
bool: True if the record was deleted, False otherwise.
|
|
153
145
|
"""
|
|
154
|
-
logger.debug("debug:_remove collection=%s id=%s", collection, record_id)
|
|
146
|
+
logger.debug("debug:_remove context=%s collection=%s id=%s", context, collection, record_id)
|
|
155
147
|
try:
|
|
156
148
|
req = data_pb2.RemoveRecordRequest(
|
|
157
|
-
|
|
149
|
+
context=context,
|
|
158
150
|
collection=collection,
|
|
159
151
|
record_id=record_id,
|
|
160
152
|
)
|
|
@@ -168,19 +160,16 @@ class GrpcStorage(StorageStrategy, GrpcClientWrapper):
|
|
|
168
160
|
return False
|
|
169
161
|
return True
|
|
170
162
|
|
|
171
|
-
async def _list(self, collection: str) -> list[StorageRecord]:
|
|
172
|
-
"""List all documents in a collection via gRPC.
|
|
173
|
-
|
|
174
|
-
Args:
|
|
175
|
-
collection: The unique name for the record type
|
|
163
|
+
async def _list(self, collection: str, context: str) -> list[StorageRecord]:
|
|
164
|
+
"""List all documents in a collection via gRPC scoped to a specific context.
|
|
176
165
|
|
|
177
166
|
Returns:
|
|
178
|
-
list[StorageRecord]:
|
|
167
|
+
list[StorageRecord]: The records found, or an empty list on failure.
|
|
179
168
|
"""
|
|
180
|
-
logger.debug("debug:_list collection=%s", collection)
|
|
169
|
+
logger.debug("debug:_list context=%s collection=%s", context, collection)
|
|
181
170
|
try:
|
|
182
171
|
req = data_pb2.ListRecordsRequest(
|
|
183
|
-
|
|
172
|
+
context=context,
|
|
184
173
|
collection=collection,
|
|
185
174
|
)
|
|
186
175
|
resp = await self.exec_grpc_query("ListRecords", req)
|
|
@@ -189,18 +178,15 @@ class GrpcStorage(StorageStrategy, GrpcClientWrapper):
|
|
|
189
178
|
logger.warning("gRPC ListRecords failed for %s", collection)
|
|
190
179
|
return []
|
|
191
180
|
|
|
192
|
-
async def _remove_collection(self, collection: str) -> bool:
|
|
193
|
-
"""Delete an entire collection via gRPC.
|
|
194
|
-
|
|
195
|
-
Args:
|
|
196
|
-
collection: The unique name for the record type
|
|
181
|
+
async def _remove_collection(self, collection: str, context: str) -> bool:
|
|
182
|
+
"""Delete an entire collection via gRPC scoped to a specific context.
|
|
197
183
|
|
|
198
184
|
Returns:
|
|
199
|
-
bool: True if the collection was
|
|
185
|
+
bool: True if the collection was removed, False otherwise.
|
|
200
186
|
"""
|
|
201
187
|
try:
|
|
202
188
|
req = data_pb2.RemoveCollectionRequest(
|
|
203
|
-
|
|
189
|
+
context=context,
|
|
204
190
|
collection=collection,
|
|
205
191
|
)
|
|
206
192
|
await self.exec_grpc_query("RemoveCollection", req)
|