digitalkin 1.0.4.dev1__tar.gz → 1.0.4.dev3__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-1.0.4.dev1 → digitalkin-1.0.4.dev3}/PKG-INFO +2 -2
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/pyproject.toml +45 -45
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/__version__.py +1 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/toolkits/registry/action.py +0 -13
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/toolkits/registry/base.py +1 -5
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/toolkits/registry/loader/action.py +1 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/toolkits/registry/loader/kit.py +1 -1
- digitalkin-1.0.4.dev3/src/digitalkin/community/agno/toolkits/registry/services/action.py +92 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/toolkits/registry/services/kit.py +5 -9
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/job_manager/single_job_manager.py +1 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/profiling/task_profiler.py +3 -3
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/resilience/bulkhead.py +5 -6
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/task_manager/base_task_manager.py +1 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/task_manager/local_task_manager.py +1 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/task_manager/module_runner.py +6 -6
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/task_manager/redis/proto_streams.py +2 -2
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/task_manager/redis/redis_client.py +1 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/task_manager/redis/redis_signal.py +6 -6
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/task_manager/redis/redis_state.py +1 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/task_manager/remote_task_manager.py +1 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/task_manager/task_executor.py +3 -3
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/grpc_servers/_base_server.py +15 -15
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/grpc_servers/gateway_servicer.py +21 -21
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/grpc_servers/interceptors/permission.py +9 -9
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/grpc_servers/interceptors/request_ids.py +1 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/grpc_servers/m2m_call_registry.py +2 -2
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/grpc_servers/module_server.py +18 -9
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/grpc_servers/module_servicer.py +6 -10
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/grpc_servers/stream_registry.py +3 -3
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/grpc_servers/utils/circuit_breaker.py +3 -3
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/grpc_servers/utils/grpc_client_wrapper.py +7 -7
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/grpc_servers/utils/grpc_error_handler.py +1 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/grpc_servers/utils/utility_schema_extender.py +2 -2
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/grpc_servers/utils/validators.py +1 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/logger.py +1 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/mixins/agui_mixin.py +1 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/grpc_servers/models.py +30 -39
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/module/module_context.py +1 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/module/setup_types.py +1 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/services/registry.py +0 -3
- digitalkin-1.0.4.dev3/src/digitalkin/models/settings/certificate.py +90 -0
- digitalkin-1.0.4.dev3/src/digitalkin/models/settings/client/__init__.py +1 -0
- digitalkin-1.0.4.dev3/src/digitalkin/models/settings/client/channel.py +68 -0
- digitalkin-1.0.4.dev3/src/digitalkin/models/settings/client/circuit_breaker.py +19 -0
- digitalkin-1.0.4.dev3/src/digitalkin/models/settings/client/client.py +55 -0
- digitalkin-1.0.4.dev3/src/digitalkin/models/settings/client/grpc.py +148 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/settings/module.py +12 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/settings/profiling.py +1 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/settings/redis.py +5 -1
- digitalkin-1.0.4.dev3/src/digitalkin/models/settings/resilience.py +61 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/settings/server/channel.py +23 -3
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/settings/server/grpc.py +1 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/settings/server/server.py +4 -2
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/settings/utils/channel.py +46 -8
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/modules/_base_module.py +7 -7
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/modules/trigger_handler.py +1 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/modules/triggers/healthcheck_ping_trigger.py +2 -2
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/modules/triggers/healthcheck_services_trigger.py +3 -3
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/modules/triggers/healthcheck_status_trigger.py +2 -2
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/communication/communication_strategy.py +1 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/communication/default_communication.py +5 -5
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/communication/exceptions.py +2 -2
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/communication/grpc_communication.py +6 -6
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/filesystem/default_filesystem.py +13 -13
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/identity/default_identity.py +1 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/registry/default_registry.py +2 -5
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/registry/grpc_registry.py +2 -3
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/registry/registry_strategy.py +2 -2
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/services_config.py +16 -4
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/setup/default_setup.py +6 -32
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/setup/grpc_setup.py +12 -54
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/setup/setup_strategy.py +6 -23
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/storage/default_storage.py +1 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/task_manager/default_task_manager.py +4 -4
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/user_profile/default_user_profile.py +1 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/utils/arg_parser.py +6 -6
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/utils/development_mode_action.py +12 -20
- digitalkin-1.0.4.dev3/src/digitalkin/utils/env_manager.py +139 -0
- digitalkin-1.0.4.dev3/src/digitalkin/utils/env_template.py +233 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/utils/llm_ready_schema.py +1 -1
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/utils/package_discover.py +3 -3
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/utils/schema_splitter.py +4 -4
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin.egg-info/PKG-INFO +2 -2
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin.egg-info/SOURCES.txt +8 -2
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin.egg-info/requires.txt +1 -1
- digitalkin-1.0.4.dev1/src/digitalkin/community/agno/toolkits/registry/services/action.py +0 -151
- digitalkin-1.0.4.dev1/src/digitalkin/models/settings/grpc_client.py +0 -127
- digitalkin-1.0.4.dev1/src/digitalkin/models/settings/resilience.py +0 -31
- digitalkin-1.0.4.dev1/src/digitalkin/utils/json_structure.py +0 -363
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/LICENSE +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/README.md +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/base_server/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/base_server/mock/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/base_server/mock/mock_pb2.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/base_server/mock/mock_pb2_grpc.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/base_server/server_async_insecure.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/base_server/server_async_secure.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/base_server/server_sync_insecure.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/base_server/server_sync_secure.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/bench_module/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/bench_module/echo_module.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/bench_module/models/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/bench_module/models/input.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/bench_module/models/output.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/bench_module/models/secret.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/bench_module/models/setup.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/bench_module/server.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/bench_module/triggers/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/bench_module/triggers/message_trigger.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/modules/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/modules/archetype_with_tools_module.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/modules/cpu_intensive_module.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/modules/dynamic_setup_module.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/modules/minimal_llm_module.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/modules/text_transform_module.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/monitoring/digitalkin_observability/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/monitoring/digitalkin_observability/http_server.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/monitoring/digitalkin_observability/interceptors.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/monitoring/digitalkin_observability/metrics.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/monitoring/digitalkin_observability/prometheus.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/monitoring/tests/test_metrics.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/redis_demo/client.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/redis_demo/echo_module.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/redis_demo/models/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/redis_demo/models/input.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/redis_demo/models/output.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/redis_demo/models/secret.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/redis_demo/models/setup.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/redis_demo/server.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/redis_demo/triggers/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/redis_demo/triggers/message_trigger.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/services/filesystem_module.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/examples/services/storage_module.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/setup.cfg +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/agno_adapter.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/agui_tools.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/hitl.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/models.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/module_toolkit.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/toolkits/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/toolkits/base.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/toolkits/chat_history.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/toolkits/defaults.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/toolkits/registry/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/toolkits/registry/kins/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/toolkits/registry/kins/action.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/toolkits/registry/kins/kit.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/toolkits/registry/loader/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/toolkits/registry/services/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/toolkits/registry/tools/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/toolkits/registry/tools/action.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/toolkits/registry/tools/kit.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/community/agno/toolkits/user_profile.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/common/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/common/factories.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/exceptions.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/job_manager/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/job_manager/base_job_manager.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/profiling/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/profiling/step_timer.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/resilience/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/resilience/task_supervisor.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/task_manager/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/task_manager/redis/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/task_manager/redis/redis_idempotency.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/task_manager/task_session.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/exceptions.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/grpc_servers/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/grpc_servers/exceptions.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/grpc_servers/interceptors/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/grpc_servers/stream_session.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/grpc_servers/utils/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/mixins/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/mixins/base_mixin.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/mixins/cost_mixin.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/mixins/file_history_mixin.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/mixins/filesystem_mixin.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/mixins/logger_mixin.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/mixins/storage_mixin.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/core/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/core/job_manager_models.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/core/redis.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/core/task_monitor.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/events/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/events/agent_events.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/grpc_servers/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/grpc_servers/circuit_breaker.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/grpc_servers/m2m.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/grpc_servers/stream_error_codes.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/grpc_servers/types.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/module/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/module/ag_ui.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/module/base_types.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/module/loaded_tools.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/module/module.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/module/module_types.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/module/request_metadata.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/module/select_schema.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/module/tool_cache.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/module/tool_reference.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/module/utility.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/services/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/services/cost.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/services/services.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/services/storage.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/settings/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/settings/gateway.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/settings/log.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/settings/queue.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/settings/registry.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/settings/server/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/settings/server/servicer.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/settings/task_manager.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/settings/utils/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/utils/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/models/utils/dynamic_schema.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/modules/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/modules/archetype_module.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/modules/tool_module.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/modules/triggers/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/py.typed +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/base_strategy.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/communication/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/cost/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/cost/cost_strategy.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/cost/default_cost.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/cost/exceptions.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/cost/grpc_cost.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/filesystem/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/filesystem/exceptions.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/filesystem/filesystem_strategy.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/filesystem/grpc_filesystem.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/identity/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/identity/identity_strategy.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/registry/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/registry/exceptions.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/registry/registry_models.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/secret/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/secret/default_secret.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/secret/exceptions.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/secret/grpc_secret.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/secret/secret_strategy.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/services_models.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/setup/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/setup/exceptions.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/storage/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/storage/exceptions.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/storage/grpc_storage.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/storage/storage_strategy.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/task_manager/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/task_manager/exceptions.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/task_manager/redis_task_manager.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/task_manager/task_manager_strategy.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/user_profile/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/user_profile/exceptions.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/user_profile/grpc_user_profile.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/services/user_profile/user_profile_strategy.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/utils/__init__.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/utils/conditional_schema.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/utils/dynamic_schema.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/utils/exceptions.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/utils/proto_utils.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/utils/setup_content_validator.py +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin.egg-info/dependency_links.txt +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin.egg-info/top_level.txt +0 -0
- {digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/tests/test_exceptions.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: digitalkin
|
|
3
|
-
Version: 1.0.4.
|
|
3
|
+
Version: 1.0.4.dev3
|
|
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.21.dev1787220377
|
|
456
|
-
Requires-Dist: agentic-mesh-protocol==1.0.
|
|
456
|
+
Requires-Dist: agentic-mesh-protocol==1.0.1
|
|
457
457
|
Requires-Dist: agno<3,>=2.8.0
|
|
458
458
|
Requires-Dist: anyio>=4.13.0
|
|
459
459
|
Requires-Dist: grpcio-health-checking==1.82.1
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
# which is how a nested run's output is attributed to its author. Pinned exactly
|
|
32
32
|
# because it is a dated prerelease; move to >=0.1.21 once that ships stable.
|
|
33
33
|
"ag-ui-protocol==0.1.21.dev1787220377",
|
|
34
|
-
"agentic-mesh-protocol==1.0.
|
|
34
|
+
"agentic-mesh-protocol==1.0.1",
|
|
35
35
|
"agno>=2.8.0,<3",
|
|
36
36
|
"anyio>=4.13.0",
|
|
37
37
|
"grpcio-health-checking==1.82.1",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"pydantic>=2.12.4",
|
|
42
42
|
"redis[hiredis]>=7.4.0,<9",
|
|
43
43
|
]
|
|
44
|
-
|
|
44
|
+
version = "1.0.4.dev3"
|
|
45
45
|
|
|
46
46
|
[project.optional-dependencies]
|
|
47
47
|
agno = [ "agno>=2.6" ]
|
|
@@ -208,15 +208,15 @@
|
|
|
208
208
|
]
|
|
209
209
|
|
|
210
210
|
ignore = [
|
|
211
|
-
"
|
|
212
|
-
"
|
|
213
|
-
"
|
|
214
|
-
"
|
|
215
|
-
"
|
|
216
|
-
"
|
|
217
|
-
"
|
|
218
|
-
"
|
|
219
|
-
"
|
|
211
|
+
"ANN401", # Allow typing.Any — gRPC stubs, callbacks, and dynamic APIs require it
|
|
212
|
+
"COM812", # Disable because of formatter incompatibility
|
|
213
|
+
"DOC502", # Allow extraneous-exception in docstring
|
|
214
|
+
"F401", # Allow unused imports — used for availability checks
|
|
215
|
+
"N802", # Allow PascalCase methods — gRPC servicer convention
|
|
216
|
+
"PLC0415", # Allow lazy imports — needed to break circular dependencies
|
|
217
|
+
"PLW3201", # Allow __get_pydantic_core_schema__ — Pydantic dunder hook
|
|
218
|
+
"S105", # Hardcoded-password
|
|
219
|
+
"S403", # Allow pickle import
|
|
220
220
|
]
|
|
221
221
|
|
|
222
222
|
fixable = [ "ALL" ]
|
|
@@ -226,40 +226,40 @@
|
|
|
226
226
|
|
|
227
227
|
[tool.ruff.lint.per-file-ignores]
|
|
228
228
|
"tests/**/*.py" = [
|
|
229
|
-
"
|
|
230
|
-
"
|
|
231
|
-
"
|
|
232
|
-
"
|
|
233
|
-
"
|
|
234
|
-
"
|
|
235
|
-
"
|
|
236
|
-
"
|
|
237
|
-
"
|
|
238
|
-
"
|
|
239
|
-
"
|
|
240
|
-
"
|
|
241
|
-
"
|
|
242
|
-
"
|
|
243
|
-
"
|
|
244
|
-
"
|
|
245
|
-
"
|
|
246
|
-
"
|
|
247
|
-
"
|
|
248
|
-
"
|
|
249
|
-
"
|
|
250
|
-
"
|
|
251
|
-
"
|
|
252
|
-
"
|
|
253
|
-
"
|
|
254
|
-
"
|
|
255
|
-
"
|
|
256
|
-
"
|
|
257
|
-
"
|
|
258
|
-
"
|
|
259
|
-
"
|
|
260
|
-
"
|
|
261
|
-
"
|
|
262
|
-
"
|
|
229
|
+
"ANN001",
|
|
230
|
+
"ANN002",
|
|
231
|
+
"ANN003",
|
|
232
|
+
"ANN201",
|
|
233
|
+
"ANN401",
|
|
234
|
+
"ARG001",
|
|
235
|
+
"ARG002",
|
|
236
|
+
"C901",
|
|
237
|
+
"D100",
|
|
238
|
+
"D101",
|
|
239
|
+
"D102",
|
|
240
|
+
"D103",
|
|
241
|
+
"D107",
|
|
242
|
+
"D417",
|
|
243
|
+
"DOC201",
|
|
244
|
+
"DOC501",
|
|
245
|
+
"E501",
|
|
246
|
+
"ERA001",
|
|
247
|
+
"FBT001",
|
|
248
|
+
"FBT002",
|
|
249
|
+
"G004",
|
|
250
|
+
"N802",
|
|
251
|
+
"PERF203",
|
|
252
|
+
"PLC2701",
|
|
253
|
+
"PLR0911",
|
|
254
|
+
"PLR0912",
|
|
255
|
+
"PLR0914",
|
|
256
|
+
"PLR0915",
|
|
257
|
+
"PLR1702",
|
|
258
|
+
"PLR2004",
|
|
259
|
+
"PLR6301",
|
|
260
|
+
"S101",
|
|
261
|
+
"SLF001",
|
|
262
|
+
"TRY002",
|
|
263
263
|
]
|
|
264
264
|
|
|
265
265
|
[tool.ruff.lint.pylint]
|
|
@@ -136,9 +136,6 @@ class SearchAction(RegistryAction):
|
|
|
136
136
|
"visibility": setup.visibility.value if setup.visibility else None,
|
|
137
137
|
"status": setup.status.value if setup.status else None,
|
|
138
138
|
"description": (setup.documentation or "")[: self._DOC_PREVIEW_CHARS],
|
|
139
|
-
# The shape of the configuration, so choosing a scope needs no second call:
|
|
140
|
-
# read a key from here and pass it to ``load``.
|
|
141
|
-
"structure": setup.structure,
|
|
142
139
|
}
|
|
143
140
|
for setup in usable[:cap]
|
|
144
141
|
]
|
|
@@ -169,15 +166,6 @@ class UpdateAction(RegistryAction):
|
|
|
169
166
|
"without changing what the instance currently serves, then activate it later with "
|
|
170
167
|
"``set_version``.",
|
|
171
168
|
)
|
|
172
|
-
structure: dict[str, str] | None = Field(
|
|
173
|
-
default=None,
|
|
174
|
-
description="Refreshed map of key path -> one-line summary of what lives at it, "
|
|
175
|
-
"describing the content this call carries. Same form as on create: summarise what each "
|
|
176
|
-
'key is FOR, join nested keys with "." (llm.model), bracket-quote a key containing '
|
|
177
|
-
'. [ ] " or \\ (limits["max.tokens"]), index a list element (tools[0]). Omitting it '
|
|
178
|
-
"replaces the stored map with one derived from the raw values, losing every written "
|
|
179
|
-
"summary — supply it whenever the instance had one.",
|
|
180
|
-
)
|
|
181
169
|
|
|
182
170
|
async def execute(self, ctx: RegistryActionCtx) -> Any:
|
|
183
171
|
"""Cut a new version of the setup's content and rename it.
|
|
@@ -196,7 +184,6 @@ class UpdateAction(RegistryAction):
|
|
|
196
184
|
"name": self.name,
|
|
197
185
|
"content": self.content,
|
|
198
186
|
"set_as_current": self.set_as_current,
|
|
199
|
-
"structure": self.structure,
|
|
200
187
|
})
|
|
201
188
|
|
|
202
189
|
|
|
@@ -346,11 +346,7 @@ class RegistryObjectToolKit(DkToolkit):
|
|
|
346
346
|
Also echoes ``visibility`` back in the caller's vocabulary — the input enum is
|
|
347
347
|
``public``/``private``/``internal`` but the backend returns the proto name
|
|
348
348
|
``VISIBILITY_INTERNAL``, so a naive round-trip fails. Strip the prefix and
|
|
349
|
-
lower-case it so the field read back matches the field written.
|
|
350
|
-
model branch on purpose: every action carrying a real setup visibility returns a
|
|
351
|
-
``SetupData``, while the actions returning a plain dict return a *configuration*
|
|
352
|
-
(``load``) or its key map (``structure``), where a key called ``visibility`` is the
|
|
353
|
-
service's own data and rewriting it would corrupt what the caller asked for.
|
|
349
|
+
lower-case it so the field read back matches the field written.
|
|
354
350
|
|
|
355
351
|
Args:
|
|
356
352
|
value: A Pydantic model, proto message, or plain scalar/collection.
|
|
@@ -134,7 +134,7 @@ class LoadToolAction(LoadAction):
|
|
|
134
134
|
)
|
|
135
135
|
return None
|
|
136
136
|
|
|
137
|
-
async def execute(self, ctx: LoadActionCtx) -> LoadOutcome: #
|
|
137
|
+
async def execute(self, ctx: LoadActionCtx) -> LoadOutcome: # noqa: C901, PLR0911 — each return is a distinct, LLM-readable outcome
|
|
138
138
|
"""Resolve the setup into a ModuleToolkit and append it to the live tool list.
|
|
139
139
|
|
|
140
140
|
Idempotent per ``setup_id``; never raises. The setup's family is read first so a
|
|
@@ -63,7 +63,7 @@ class LoadManager(DkToolkit):
|
|
|
63
63
|
"""
|
|
64
64
|
self._base_tools = base_tools
|
|
65
65
|
|
|
66
|
-
async def load_manager(self, action: LoadActions) -> str: #
|
|
66
|
+
async def load_manager(self, action: LoadActions) -> str: # noqa: ARG002 — schema-only stub, never run
|
|
67
67
|
"""Load a discovered object into the agent so it becomes usable right now.
|
|
68
68
|
|
|
69
69
|
Loading is a two-step flow, and this is step two: first DISCOVER the object with its
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"""Actions for the ``services_manager`` dispatcher.
|
|
2
|
+
|
|
3
|
+
Adds the two service-specific actions to the shared CRUD + search set:
|
|
4
|
+
|
|
5
|
+
- ``create`` — create a shareable service from a name + configuration JSON;
|
|
6
|
+
- ``load`` — return the service's stored JSON configuration content (distinct from
|
|
7
|
+
Tool.load, which loads a live tool into the agent).
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
from typing import TYPE_CHECKING, Annotated, Any, ClassVar, Literal
|
|
13
|
+
|
|
14
|
+
from pydantic import Field
|
|
15
|
+
|
|
16
|
+
from digitalkin.community.agno.toolkits.registry.action import (
|
|
17
|
+
ChangeVisibilityAction,
|
|
18
|
+
DeleteAction,
|
|
19
|
+
GetAction,
|
|
20
|
+
ListVersionsAction,
|
|
21
|
+
SearchAction,
|
|
22
|
+
SetVersionAction,
|
|
23
|
+
UpdateAction,
|
|
24
|
+
)
|
|
25
|
+
from digitalkin.community.agno.toolkits.registry.base import RegistryAction
|
|
26
|
+
|
|
27
|
+
if TYPE_CHECKING:
|
|
28
|
+
from digitalkin.community.agno.toolkits.registry.base import RegistryActionCtx
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class CreateServiceAction(RegistryAction):
|
|
32
|
+
"""Create a shareable service other kins can discover.
|
|
33
|
+
|
|
34
|
+
Only a name and the configuration JSON are needed — owner, organisation and kind
|
|
35
|
+
are derived server-side. Once created it is discoverable via ``search`` and
|
|
36
|
+
readable via ``load``.
|
|
37
|
+
The service is always created *private* (owner only): visibility is not a creation
|
|
38
|
+
parameter. Widening it to ``internal`` (whole organisation) or ``public`` (everyone)
|
|
39
|
+
requires a separate ``change_visibility`` call.
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
action: Literal["create"] = "create"
|
|
43
|
+
writes: ClassVar[bool] = True
|
|
44
|
+
name: str = Field(..., description="Human-readable service name.")
|
|
45
|
+
content: dict[str, Any] = Field(
|
|
46
|
+
...,
|
|
47
|
+
min_length=1,
|
|
48
|
+
description="The service configuration (a non-empty JSON object). "
|
|
49
|
+
"Note: JSON numbers round-trip as floats over the wire.",
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
async def execute(self, ctx: RegistryActionCtx) -> Any:
|
|
53
|
+
"""Create the service setup from its name and content.
|
|
54
|
+
|
|
55
|
+
Returns:
|
|
56
|
+
The created service setup.
|
|
57
|
+
"""
|
|
58
|
+
return await ctx.setup.create_service_setup(self.name, self.content)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class LoadServiceAction(RegistryAction):
|
|
62
|
+
"""Load a service: return its stored JSON configuration content."""
|
|
63
|
+
|
|
64
|
+
action: Literal["load"] = "load"
|
|
65
|
+
setup_id: str = Field(..., description="The service setup id to load (from a search result).")
|
|
66
|
+
|
|
67
|
+
async def execute(self, ctx: RegistryActionCtx) -> Any:
|
|
68
|
+
"""Return the service's configuration content (latest version).
|
|
69
|
+
|
|
70
|
+
Guards the object type first: without it ``load`` would happily return a tool's
|
|
71
|
+
internal configuration — the most dangerous type-confusion, since the response
|
|
72
|
+
carries no field the caller could use to notice it read the wrong kind.
|
|
73
|
+
|
|
74
|
+
Returns:
|
|
75
|
+
The service configuration JSON object, or ``None`` when not found.
|
|
76
|
+
"""
|
|
77
|
+
setup = await ctx.ensure_kind(self.setup_id)
|
|
78
|
+
return setup.current_setup_version.content
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
ServiceActions = Annotated[
|
|
82
|
+
GetAction
|
|
83
|
+
| CreateServiceAction
|
|
84
|
+
| SearchAction
|
|
85
|
+
| LoadServiceAction
|
|
86
|
+
| UpdateAction
|
|
87
|
+
| DeleteAction
|
|
88
|
+
| ChangeVisibilityAction
|
|
89
|
+
| ListVersionsAction
|
|
90
|
+
| SetVersionAction,
|
|
91
|
+
Field(discriminator="action"),
|
|
92
|
+
]
|
|
@@ -37,15 +37,11 @@ class ServicesManager(RegistryObjectToolKit):
|
|
|
37
37
|
name="services_manager",
|
|
38
38
|
actions=ServiceActions,
|
|
39
39
|
description=(
|
|
40
|
-
"Manage Service SETUPS: create, search,
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"the same map for an id you already hold), then 'load' with a key copied verbatim "
|
|
46
|
-
"from it returns just that part. Load without a key only when the whole document is "
|
|
47
|
-
"genuinely needed. On create and update you write that map yourself, describing what "
|
|
48
|
-
"each key is for — it is how other agents find their way around the configuration."
|
|
40
|
+
"Manage Service SETUPS: create, search, load, update, delete, change_visibility, plus "
|
|
41
|
+
"list_versions / set_version to inspect the configuration history and undo a bad "
|
|
42
|
+
"update. The "
|
|
43
|
+
"action discriminator selects the operation; 'load' returns a service's configuration "
|
|
44
|
+
"content for use."
|
|
49
45
|
),
|
|
50
46
|
entrypoint=self.services_manager,
|
|
51
47
|
)
|
|
@@ -186,7 +186,7 @@ class SingleJobManager(BaseJobManager[InputModelT, OutputModelT, SetupModelT]):
|
|
|
186
186
|
data = output_data.model_dump(mode="json")
|
|
187
187
|
|
|
188
188
|
# Lock guards only the session validity check; queue.put() runs outside.
|
|
189
|
-
async with session._write_lock: #
|
|
189
|
+
async with session._write_lock: # noqa: SLF001
|
|
190
190
|
if self.tasks_sessions.get(job_id) is None:
|
|
191
191
|
logger.debug("Queue write rejected - session removed during lock wait", extra={"job_id": job_id})
|
|
192
192
|
return
|
{digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/profiling/task_profiler.py
RENAMED
|
@@ -55,7 +55,7 @@ class TaskProfiler:
|
|
|
55
55
|
for stale in candidates[keep_n:]:
|
|
56
56
|
try:
|
|
57
57
|
stale.unlink()
|
|
58
|
-
except OSError: #
|
|
58
|
+
except OSError: # noqa: PERF203
|
|
59
59
|
logger.debug("Profiler rotation: could not delete %s", stale)
|
|
60
60
|
|
|
61
61
|
def start(self) -> None:
|
|
@@ -63,7 +63,7 @@ class TaskProfiler:
|
|
|
63
63
|
if self._mode == ProfilerMode.NONE:
|
|
64
64
|
return
|
|
65
65
|
|
|
66
|
-
try: #
|
|
66
|
+
try: # noqa: PLW0717
|
|
67
67
|
os.makedirs(self._output_dir, exist_ok=True)
|
|
68
68
|
|
|
69
69
|
if self._mode == ProfilerMode.VIZTRACER:
|
|
@@ -100,7 +100,7 @@ class TaskProfiler:
|
|
|
100
100
|
if self._profiler is None and not self._yappi_started:
|
|
101
101
|
return
|
|
102
102
|
|
|
103
|
-
try: #
|
|
103
|
+
try: # noqa: PLW0717
|
|
104
104
|
timestamp = datetime.datetime.now(datetime.timezone.utc).strftime("%Y%m%dT%H%M%S%f")
|
|
105
105
|
base = f"{self._task_id}_{timestamp}"
|
|
106
106
|
|
|
@@ -15,13 +15,12 @@ Usage in ModuleContext or service wrapper::
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
17
|
import asyncio
|
|
18
|
-
import os
|
|
19
18
|
from typing import ClassVar
|
|
20
19
|
|
|
21
20
|
from typing_extensions import Self
|
|
22
21
|
|
|
23
22
|
from digitalkin.core.exceptions import BulkheadFullError
|
|
24
|
-
from digitalkin.models.settings.resilience import get_bulkhead_settings
|
|
23
|
+
from digitalkin.models.settings.resilience import BulkheadServiceSettings, get_bulkhead_settings
|
|
25
24
|
|
|
26
25
|
|
|
27
26
|
class Bulkhead:
|
|
@@ -62,10 +61,10 @@ class Bulkhead:
|
|
|
62
61
|
del cls._instances[oldest]
|
|
63
62
|
|
|
64
63
|
settings = get_bulkhead_settings()
|
|
65
|
-
#
|
|
66
|
-
#
|
|
67
|
-
|
|
68
|
-
max_concurrent =
|
|
64
|
+
# The override carries the service id in the variable name; the settings
|
|
65
|
+
# class builds that prefix itself, so nothing here touches the environment.
|
|
66
|
+
override = BulkheadServiceSettings(service_id).max
|
|
67
|
+
max_concurrent = override if override is not None else settings.default_max
|
|
69
68
|
|
|
70
69
|
inst = cls(
|
|
71
70
|
service_id=service_id,
|
|
@@ -78,7 +78,7 @@ class BaseTaskManager(ABC):
|
|
|
78
78
|
session = self.tasks_sessions.get(task_id)
|
|
79
79
|
if session is not None:
|
|
80
80
|
# Close stream under the write lock so pending writes see stream_closed.
|
|
81
|
-
async with session._write_lock: #
|
|
81
|
+
async with session._write_lock: # noqa: SLF001
|
|
82
82
|
session.close_stream()
|
|
83
83
|
|
|
84
84
|
session = self.tasks_sessions.pop(task_id, None)
|
|
@@ -49,7 +49,7 @@ class LocalTaskManager(BaseTaskManager):
|
|
|
49
49
|
"""
|
|
50
50
|
await self._acquire_task_slot(coro)
|
|
51
51
|
registered = False
|
|
52
|
-
try: #
|
|
52
|
+
try: # noqa: PLW0717
|
|
53
53
|
async with self._tasks_lock:
|
|
54
54
|
await self._validate_task_creation(task_id, mission_id, coro)
|
|
55
55
|
session = self._create_session(task_id, mission_id, module)
|
{digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/task_manager/module_runner.py
RENAMED
|
@@ -43,7 +43,7 @@ class ModuleRunner:
|
|
|
43
43
|
self._redis_client = redis_client
|
|
44
44
|
self._servicer = servicer
|
|
45
45
|
|
|
46
|
-
async def run( #
|
|
46
|
+
async def run( # noqa: C901, PLR0914, PLR0915
|
|
47
47
|
self,
|
|
48
48
|
query: struct_pb2.Struct,
|
|
49
49
|
*,
|
|
@@ -80,11 +80,11 @@ class ModuleRunner:
|
|
|
80
80
|
|
|
81
81
|
top_level_keys: list[str] = []
|
|
82
82
|
query_byte_size = 0
|
|
83
|
-
try: #
|
|
83
|
+
try: # noqa: PLW0717
|
|
84
84
|
timer.mark("entry")
|
|
85
85
|
profiler.start()
|
|
86
86
|
|
|
87
|
-
try: #
|
|
87
|
+
try: # noqa: PLW0717
|
|
88
88
|
setup_version = await self._servicer.resolve_setup(setup_id, mission_id)
|
|
89
89
|
timer.mark("setup_resolve")
|
|
90
90
|
|
|
@@ -93,8 +93,8 @@ class ModuleRunner:
|
|
|
93
93
|
|
|
94
94
|
tool_cache = self._servicer.get_tool_cache(setup_version.setup_id)
|
|
95
95
|
if tool_cache is None:
|
|
96
|
-
registry = self._servicer._get_registry() #
|
|
97
|
-
communication = self._servicer._get_communication() #
|
|
96
|
+
registry = self._servicer._get_registry() # noqa: SLF001
|
|
97
|
+
communication = self._servicer._get_communication() # noqa: SLF001
|
|
98
98
|
if registry is not None and communication is not None:
|
|
99
99
|
tool_cache = await self._servicer.get_or_build_tool_cache(
|
|
100
100
|
setup_version.setup_id,
|
|
@@ -207,7 +207,7 @@ class ModuleRunner:
|
|
|
207
207
|
|
|
208
208
|
except ValidationError as exc:
|
|
209
209
|
input_format_cls = (
|
|
210
|
-
self._servicer.module_class._extended_input_format #
|
|
210
|
+
self._servicer.module_class._extended_input_format # noqa: SLF001
|
|
211
211
|
or self._servicer.module_class.input_format
|
|
212
212
|
)
|
|
213
213
|
model_name = input_format_cls.__name__ if input_format_cls is not None else "<unknown>"
|
|
@@ -43,7 +43,7 @@ class ProtoStreamReader:
|
|
|
43
43
|
"""Initialize proto stream reader.
|
|
44
44
|
|
|
45
45
|
Cursor TTL comes from ``GatewayStreamSettings.redis_cursor_ttl`` (env
|
|
46
|
-
``
|
|
46
|
+
``DIGITALKIN_GATEWAY_STREAM_REDIS_CURSOR_TTL``).
|
|
47
47
|
|
|
48
48
|
Args:
|
|
49
49
|
task_id: Unique task identifier.
|
|
@@ -69,7 +69,7 @@ class ProtoStreamReader:
|
|
|
69
69
|
"""Persist the current cursor to Redis."""
|
|
70
70
|
await self._redis_client.set(self._cursor_key, self._last_id, ex=get_gateway_settings().stream.redis_cursor_ttl)
|
|
71
71
|
|
|
72
|
-
async def read_structs( #
|
|
72
|
+
async def read_structs( # noqa: C901
|
|
73
73
|
self,
|
|
74
74
|
count: int = 50,
|
|
75
75
|
cursor_save_interval: int = 100,
|
|
@@ -10,7 +10,7 @@ import uuid
|
|
|
10
10
|
from typing import TYPE_CHECKING, Any, ClassVar
|
|
11
11
|
|
|
12
12
|
from digitalkin.core.resilience.task_supervisor import log_unhandled
|
|
13
|
-
from digitalkin.core.task_manager.redis.redis_client import RedisClient #
|
|
13
|
+
from digitalkin.core.task_manager.redis.redis_client import RedisClient # noqa: TC001
|
|
14
14
|
from digitalkin.logger import logger
|
|
15
15
|
from digitalkin.models.settings.redis import get_redis_settings
|
|
16
16
|
|
|
@@ -41,7 +41,7 @@ class SharedRedisListener:
|
|
|
41
41
|
if key not in cls._instances:
|
|
42
42
|
cls._instances[key] = cls(redis_client)
|
|
43
43
|
inst = cls._instances[key]
|
|
44
|
-
inst._refcount += 1 #
|
|
44
|
+
inst._refcount += 1 # noqa: SLF001
|
|
45
45
|
return inst
|
|
46
46
|
|
|
47
47
|
@classmethod
|
|
@@ -50,8 +50,8 @@ class SharedRedisListener:
|
|
|
50
50
|
inst = cls._instances.get(key)
|
|
51
51
|
if inst is None:
|
|
52
52
|
return
|
|
53
|
-
inst._refcount -= 1 #
|
|
54
|
-
if inst._refcount <= 0: #
|
|
53
|
+
inst._refcount -= 1 # noqa: SLF001
|
|
54
|
+
if inst._refcount <= 0: # noqa: SLF001
|
|
55
55
|
cls._instances.pop(key, None)
|
|
56
56
|
await inst.close()
|
|
57
57
|
|
|
@@ -244,7 +244,7 @@ class SharedRedisListener:
|
|
|
244
244
|
"""Drain PubSub messages; exponential-backoff retry on transient Redis errors."""
|
|
245
245
|
backoff = 0.1
|
|
246
246
|
while not self._stop_event.is_set():
|
|
247
|
-
try: #
|
|
247
|
+
try: # noqa: PLW0717
|
|
248
248
|
if self._pubsub is None:
|
|
249
249
|
self._pubsub = self._redis_client.pubsub()
|
|
250
250
|
psub_t0 = time.perf_counter_ns()
|
|
@@ -282,7 +282,7 @@ class SharedRedisListener:
|
|
|
282
282
|
backoff = min(backoff * 2, 10.0)
|
|
283
283
|
|
|
284
284
|
now = time.monotonic()
|
|
285
|
-
if now - self._last_counters_log >= 60.0: #
|
|
285
|
+
if now - self._last_counters_log >= 60.0: # noqa: PLR2004
|
|
286
286
|
c = self._counters
|
|
287
287
|
logger.debug(
|
|
288
288
|
"[perf] signal_counters: origin=%s received=%d deduped=%d evicted=%d "
|
|
@@ -10,7 +10,7 @@ from __future__ import annotations
|
|
|
10
10
|
from datetime import datetime, timezone
|
|
11
11
|
from typing import Any
|
|
12
12
|
|
|
13
|
-
from digitalkin.core.task_manager.redis.redis_client import RedisClient #
|
|
13
|
+
from digitalkin.core.task_manager.redis.redis_client import RedisClient # noqa: TC001
|
|
14
14
|
from digitalkin.logger import logger
|
|
15
15
|
from digitalkin.models.settings.redis import get_redis_settings
|
|
16
16
|
|
|
@@ -39,7 +39,7 @@ class RemoteTaskManager(BaseTaskManager):
|
|
|
39
39
|
"""
|
|
40
40
|
await self._acquire_task_slot(coro)
|
|
41
41
|
registered = False
|
|
42
|
-
try: #
|
|
42
|
+
try: # noqa: PLW0717
|
|
43
43
|
# Validate and register session atomically
|
|
44
44
|
async with self._tasks_lock:
|
|
45
45
|
await self._validate_task_creation(task_id, mission_id, coro)
|
{digitalkin-1.0.4.dev1 → digitalkin-1.0.4.dev3}/src/digitalkin/core/task_manager/task_executor.py
RENAMED
|
@@ -28,7 +28,7 @@ class TaskExecutor:
|
|
|
28
28
|
"""
|
|
29
29
|
|
|
30
30
|
@staticmethod
|
|
31
|
-
async def execute_task( #
|
|
31
|
+
async def execute_task( # noqa: C901
|
|
32
32
|
task_id: str,
|
|
33
33
|
mission_id: str,
|
|
34
34
|
coro: Coroutine[Any, Any, None],
|
|
@@ -73,11 +73,11 @@ class TaskExecutor:
|
|
|
73
73
|
action = session.pending_signal_action
|
|
74
74
|
session.pending_signal_action = ""
|
|
75
75
|
if action == "stop":
|
|
76
|
-
await session._handle_stop() #
|
|
76
|
+
await session._handle_stop() # noqa: SLF001
|
|
77
77
|
else:
|
|
78
78
|
if session.cancellation_reason == CancellationReason.UNKNOWN:
|
|
79
79
|
session.cancellation_reason = CancellationReason.SIGNAL_SERVICE_CANCEL
|
|
80
|
-
await session._handle_cancel(session.cancellation_reason) #
|
|
80
|
+
await session._handle_cancel(session.cancellation_reason) # noqa: SLF001
|
|
81
81
|
logger.info("Task cancelled (%s)", session.cancellation_reason.value, extra=ids)
|
|
82
82
|
except Exception as e:
|
|
83
83
|
await session.set_status("failed")
|