digitalkin 1.0.0.dev24__tar.gz → 1.0.0.dev25__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.0.dev24 → digitalkin-1.0.0.dev25}/PKG-INFO +1 -1
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/pyproject.toml +1 -1
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/__version__.py +1 -1
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/gateway_servicer.py +5 -37
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/module_servicer.py +6 -1
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/utils/grpc_client_wrapper.py +4 -1
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/settings/gateway.py +4 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/communication/grpc_communication.py +48 -26
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/services_config.py +8 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin.egg-info/PKG-INFO +1 -1
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/LICENSE +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/README.md +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/base_server/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/base_server/mock/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/base_server/mock/mock_pb2.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/base_server/mock/mock_pb2_grpc.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/base_server/server_async_insecure.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/base_server/server_async_secure.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/base_server/server_sync_insecure.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/base_server/server_sync_secure.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/bench_module/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/bench_module/echo_module.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/bench_module/models/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/bench_module/models/input.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/bench_module/models/output.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/bench_module/models/secret.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/bench_module/models/setup.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/bench_module/server.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/bench_module/triggers/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/bench_module/triggers/message_trigger.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/modules/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/modules/archetype_with_tools_module.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/modules/cpu_intensive_module.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/modules/dynamic_setup_module.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/modules/minimal_llm_module.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/modules/text_transform_module.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/monitoring/digitalkin_observability/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/monitoring/digitalkin_observability/http_server.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/monitoring/digitalkin_observability/interceptors.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/monitoring/digitalkin_observability/metrics.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/monitoring/digitalkin_observability/prometheus.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/monitoring/tests/test_metrics.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/redis_demo/client.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/redis_demo/echo_module.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/redis_demo/models/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/redis_demo/models/input.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/redis_demo/models/output.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/redis_demo/models/secret.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/redis_demo/models/setup.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/redis_demo/server.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/redis_demo/triggers/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/redis_demo/triggers/message_trigger.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/services/filesystem_module.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/services/storage_module.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/setup.cfg +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/community/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/community/agno/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/community/agno/agno_adapter.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/community/agno/agui_tools.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/community/agno/hitl.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/community/agno/models.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/common/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/common/factories.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/exceptions.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/job_manager/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/job_manager/base_job_manager.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/job_manager/single_job_manager.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/profiling/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/profiling/step_timer.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/profiling/task_profiler.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/resilience/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/resilience/bulkhead.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/resilience/task_supervisor.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/task_manager/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/task_manager/base_task_manager.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/task_manager/local_task_manager.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/task_manager/module_runner.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/task_manager/redis/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/task_manager/redis/proto_streams.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/task_manager/redis/redis_client.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/task_manager/redis/redis_idempotency.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/task_manager/redis/redis_signal.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/task_manager/redis/redis_state.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/task_manager/remote_task_manager.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/task_manager/task_executor.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/task_manager/task_session.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/exceptions.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/_base_server.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/exceptions.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/interceptors/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/interceptors/permission.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/interceptors/request_ids.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/m2m_call_registry.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/module_server.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/stream_registry.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/stream_session.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/utils/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/utils/circuit_breaker.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/utils/grpc_error_handler.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/utils/utility_schema_extender.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/utils/validators.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/logger.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/mixins/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/mixins/agui_mixin.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/mixins/base_mixin.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/mixins/cost_mixin.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/mixins/file_history_mixin.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/mixins/filesystem_mixin.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/mixins/logger_mixin.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/mixins/storage_mixin.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/core/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/core/job_manager_models.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/core/redis.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/core/task_monitor.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/events/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/events/agent_events.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/grpc_servers/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/grpc_servers/circuit_breaker.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/grpc_servers/m2m.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/grpc_servers/models.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/grpc_servers/stream_error_codes.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/grpc_servers/types.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/module/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/module/ag_ui.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/module/base_types.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/module/module.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/module/module_context.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/module/module_types.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/module/request_metadata.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/module/select_schema.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/module/setup_types.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/module/tool_cache.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/module/tool_reference.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/module/utility.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/services/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/services/cost.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/services/registry.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/services/services.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/services/storage.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/settings/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/settings/grpc_client.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/settings/log.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/settings/module.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/settings/profiling.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/settings/queue.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/settings/redis.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/settings/resilience.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/settings/server/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/settings/server/channel.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/settings/server/grpc.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/settings/server/server.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/settings/server/servicer.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/settings/task_manager.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/settings/utils/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/settings/utils/channel.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/utils/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/utils/dynamic_schema.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/modules/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/modules/_base_module.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/modules/archetype_module.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/modules/tool_module.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/modules/trigger_handler.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/modules/triggers/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/modules/triggers/healthcheck_ping_trigger.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/modules/triggers/healthcheck_services_trigger.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/modules/triggers/healthcheck_status_trigger.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/py.typed +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/base_strategy.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/communication/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/communication/communication_strategy.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/communication/default_communication.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/communication/exceptions.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/cost/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/cost/cost_strategy.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/cost/default_cost.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/cost/exceptions.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/cost/grpc_cost.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/filesystem/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/filesystem/default_filesystem.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/filesystem/exceptions.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/filesystem/filesystem_strategy.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/filesystem/grpc_filesystem.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/identity/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/identity/default_identity.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/identity/identity_strategy.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/registry/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/registry/default_registry.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/registry/exceptions.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/registry/grpc_registry.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/registry/registry_models.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/registry/registry_strategy.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/secret/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/secret/default_secret.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/secret/exceptions.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/secret/grpc_secret.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/secret/secret_strategy.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/services_models.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/setup/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/setup/default_setup.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/setup/exceptions.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/setup/grpc_setup.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/setup/setup_strategy.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/storage/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/storage/default_storage.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/storage/exceptions.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/storage/grpc_storage.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/storage/storage_strategy.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/task_manager/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/task_manager/default_task_manager.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/task_manager/exceptions.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/task_manager/redis_task_manager.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/task_manager/task_manager_strategy.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/user_profile/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/user_profile/default_user_profile.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/user_profile/exceptions.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/user_profile/grpc_user_profile.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/user_profile/user_profile_strategy.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/utils/__init__.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/utils/arg_parser.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/utils/conditional_schema.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/utils/development_mode_action.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/utils/dynamic_schema.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/utils/exceptions.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/utils/llm_ready_schema.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/utils/package_discover.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/utils/proto_utils.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/utils/schema_splitter.py +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin.egg-info/SOURCES.txt +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin.egg-info/dependency_links.txt +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin.egg-info/requires.txt +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin.egg-info/top_level.txt +0 -0
- {digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/tests/test_exceptions.py +0 -0
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/gateway_servicer.py
RENAMED
|
@@ -7,7 +7,6 @@ import contextlib
|
|
|
7
7
|
import json
|
|
8
8
|
import random
|
|
9
9
|
import time
|
|
10
|
-
import uuid
|
|
11
10
|
from datetime import datetime, timezone
|
|
12
11
|
from typing import TYPE_CHECKING, Any
|
|
13
12
|
|
|
@@ -159,44 +158,13 @@ class GatewayServicer:
|
|
|
159
158
|
await self._m2m.stop()
|
|
160
159
|
await self._registry.shutdown()
|
|
161
160
|
|
|
162
|
-
async def AssociateTask(
|
|
163
|
-
|
|
164
|
-
request: Any,
|
|
165
|
-
context: grpc.aio.ServicerContext, # noqa: ARG002
|
|
166
|
-
) -> Any:
|
|
167
|
-
"""Mint a sub-task id linked to a running parent task.
|
|
161
|
+
async def AssociateTask(self, request: Any, context: grpc.aio.ServicerContext) -> Any: # noqa: ARG002, PLR6301
|
|
162
|
+
"""Not served by the SDK — the backend mints sub-tasks.
|
|
168
163
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
context: gRPC service context.
|
|
172
|
-
|
|
173
|
-
Returns:
|
|
174
|
-
AssociateTaskResponse(task_id, parent_task_id); empty ``task_id`` on rejection.
|
|
164
|
+
Present only so the generated ``add_GatewayServiceServicer_to_server`` finds all
|
|
165
|
+
four RPCs; nothing dials the module for it. Callers use the backend endpoint.
|
|
175
166
|
"""
|
|
176
|
-
|
|
177
|
-
err = GatewayValidator.validate_id(parent_task_id, "parent_task_id")
|
|
178
|
-
if err is not None:
|
|
179
|
-
logger.warning("AssociateTask rejected: %s", err)
|
|
180
|
-
return gateway_pb2.AssociateTaskResponse(task_id="", parent_task_id=parent_task_id)
|
|
181
|
-
|
|
182
|
-
child_task_id = str(uuid.uuid4())
|
|
183
|
-
ttl = get_gateway_settings().stream.redis_stream_initial_ttl
|
|
184
|
-
try:
|
|
185
|
-
await self._redis_client.sadd(f"task:{parent_task_id}:children", child_task_id)
|
|
186
|
-
await self._redis_client.expire(f"task:{parent_task_id}:children", ttl)
|
|
187
|
-
await self._redis_client.set(f"task:{child_task_id}:parent", parent_task_id, ex=ttl)
|
|
188
|
-
except RedisError:
|
|
189
|
-
logger.warning(
|
|
190
|
-
"[VALIDATE AT1] AssociateTask persist failed parent=%s → task_id=''",
|
|
191
|
-
parent_task_id,
|
|
192
|
-
exc_info=True,
|
|
193
|
-
) # TODO(validate): remove after prod validation
|
|
194
|
-
return gateway_pb2.AssociateTaskResponse(task_id="", parent_task_id=parent_task_id)
|
|
195
|
-
|
|
196
|
-
logger.info(
|
|
197
|
-
"[VALIDATE AT1] AssociateTask: parent=%s child=%s", parent_task_id, child_task_id
|
|
198
|
-
) # TODO(validate): remove after prod validation
|
|
199
|
-
return gateway_pb2.AssociateTaskResponse(task_id=child_task_id, parent_task_id=parent_task_id)
|
|
167
|
+
await context.abort(grpc.StatusCode.UNIMPLEMENTED, "AssociateTask is served by the backend")
|
|
200
168
|
|
|
201
169
|
async def StartStream( # noqa: PLR0911
|
|
202
170
|
self,
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/module_servicer.py
RENAMED
|
@@ -253,7 +253,12 @@ class ModuleServicer(module_service_pb2_grpc.ModuleServiceServicer, ArgParser):
|
|
|
253
253
|
|
|
254
254
|
from digitalkin.services.communication.grpc_communication import GrpcCommunication
|
|
255
255
|
|
|
256
|
-
|
|
256
|
+
gateway_backend_config = (self.module_class.services_config_params.get("user_profile") or {}).get(
|
|
257
|
+
"client_config"
|
|
258
|
+
)
|
|
259
|
+
self._communication_cache = GrpcCommunication(
|
|
260
|
+
"", "", "", client_config, gateway_backend_config=gateway_backend_config
|
|
261
|
+
)
|
|
257
262
|
return self._communication_cache
|
|
258
263
|
|
|
259
264
|
def _cache_setup(self, setup_id: str, version_data: SetupVersionData) -> None:
|
|
@@ -230,6 +230,7 @@ class GrpcClientWrapper:
|
|
|
230
230
|
query_endpoint: str,
|
|
231
231
|
request: Any,
|
|
232
232
|
timeout: float | None = None,
|
|
233
|
+
metadata: tuple[tuple[str, str], ...] | None = None,
|
|
233
234
|
) -> Any:
|
|
234
235
|
"""Execute a gRPC query with circuit breaker protection and retry.
|
|
235
236
|
|
|
@@ -245,6 +246,8 @@ class GrpcClientWrapper:
|
|
|
245
246
|
query_endpoint: rpc query name (e.g., "GetSetup", "CreateSetupVersion")
|
|
246
247
|
request: gRPC protobuf request object
|
|
247
248
|
timeout: Per-call timeout in seconds. ``None`` applies no client-side deadline.
|
|
249
|
+
metadata: Optional gRPC metadata pairs (e.g. an idempotency key); the same
|
|
250
|
+
metadata is sent on every retry attempt.
|
|
248
251
|
|
|
249
252
|
Returns:
|
|
250
253
|
gRPC protobuf response object.
|
|
@@ -279,7 +282,7 @@ class GrpcClientWrapper:
|
|
|
279
282
|
await asyncio.sleep(backoff_delays[attempt - 1])
|
|
280
283
|
|
|
281
284
|
try:
|
|
282
|
-
response = await rpc_method(request, timeout=eff_timeout)
|
|
285
|
+
response = await rpc_method(request, timeout=eff_timeout, metadata=metadata)
|
|
283
286
|
except grpc.RpcError as e:
|
|
284
287
|
last_error = e
|
|
285
288
|
if e.code() in self._RETRYABLE_CODES and attempt < max_retries:
|
|
@@ -93,6 +93,10 @@ class GatewayM2MSettings(BaseSettings):
|
|
|
93
93
|
default=2.0,
|
|
94
94
|
description="Best-effort SendSignal(CANCEL) deadline when call_module is cancelled.",
|
|
95
95
|
)
|
|
96
|
+
call_associate_timeout_s: float = Field(
|
|
97
|
+
default=5.0,
|
|
98
|
+
description="Per-call deadline on the backend AssociateTask mint (bounded, not the 30s default).",
|
|
99
|
+
)
|
|
96
100
|
call_queue_maxsize: int = Field(
|
|
97
101
|
default=1024,
|
|
98
102
|
gt=0,
|
|
@@ -4,6 +4,7 @@ from __future__ import annotations
|
|
|
4
4
|
|
|
5
5
|
import asyncio
|
|
6
6
|
import time
|
|
7
|
+
import uuid
|
|
7
8
|
from typing import TYPE_CHECKING, Any
|
|
8
9
|
|
|
9
10
|
import grpc.aio
|
|
@@ -36,6 +37,21 @@ if TYPE_CHECKING:
|
|
|
36
37
|
from digitalkin.grpc_servers.m2m_call_registry import M2MCallRegistry
|
|
37
38
|
|
|
38
39
|
|
|
40
|
+
class _GatewayBackendClient(GrpcClientWrapper):
|
|
41
|
+
"""Resilient client to the backend GatewayService (own circuit breaker) for AssociateTask."""
|
|
42
|
+
|
|
43
|
+
service_name: str = "GatewayBackendService"
|
|
44
|
+
|
|
45
|
+
def __init__(self, client_config: ClientConfig) -> None:
|
|
46
|
+
"""Dial the backend GatewayService and cache its stub.
|
|
47
|
+
|
|
48
|
+
Args:
|
|
49
|
+
client_config: Backend services-provider config (same host as user_profile).
|
|
50
|
+
"""
|
|
51
|
+
self._init_channel(client_config)
|
|
52
|
+
self.stub = self._get_or_create_stub(gateway_service_pb2_grpc.GatewayServiceStub)
|
|
53
|
+
|
|
54
|
+
|
|
39
55
|
class GrpcCommunication(CommunicationStrategy, GrpcClientWrapper):
|
|
40
56
|
"""gRPC client for module-to-module communication."""
|
|
41
57
|
|
|
@@ -95,6 +111,7 @@ class GrpcCommunication(CommunicationStrategy, GrpcClientWrapper):
|
|
|
95
111
|
setup_version_id: str,
|
|
96
112
|
client_config: ClientConfig,
|
|
97
113
|
m2m_calls: M2MCallRegistry | None = None,
|
|
114
|
+
gateway_backend_config: ClientConfig | None = None,
|
|
98
115
|
) -> None:
|
|
99
116
|
"""Initialize the gRPC communication client.
|
|
100
117
|
|
|
@@ -105,11 +122,16 @@ class GrpcCommunication(CommunicationStrategy, GrpcClientWrapper):
|
|
|
105
122
|
client_config: gRPC client config.
|
|
106
123
|
m2m_calls: Optional ``M2MCallRegistry``; falls back to the
|
|
107
124
|
class-level slot from :meth:`set_m2m_call_registry`.
|
|
125
|
+
gateway_backend_config: Backend GatewayService config for AssociateTask
|
|
126
|
+
(same host as user_profile). Required for M2M tool calls.
|
|
108
127
|
"""
|
|
109
128
|
BaseStrategy.__init__(self, mission_id, setup_id, setup_version_id)
|
|
110
129
|
self.client_config = client_config
|
|
111
130
|
self._m2m_calls = m2m_calls if m2m_calls is not None else self._shared_m2m_calls
|
|
112
131
|
self._pool_keys: set[str] = set()
|
|
132
|
+
self._gateway_backend = (
|
|
133
|
+
_GatewayBackendClient(gateway_backend_config) if gateway_backend_config is not None else None
|
|
134
|
+
)
|
|
113
135
|
|
|
114
136
|
logger.debug("Initialized GrpcCommunication (security=%s)", client_config.security)
|
|
115
137
|
|
|
@@ -146,6 +168,8 @@ class GrpcCommunication(CommunicationStrategy, GrpcClientWrapper):
|
|
|
146
168
|
async def close(self) -> None:
|
|
147
169
|
"""Release all pooled gRPC channels."""
|
|
148
170
|
await self.close_all_channels()
|
|
171
|
+
if self._gateway_backend is not None:
|
|
172
|
+
await self._gateway_backend.close_channel()
|
|
149
173
|
|
|
150
174
|
def dial_consumer_stream(
|
|
151
175
|
self,
|
|
@@ -341,37 +365,28 @@ class GrpcCommunication(CommunicationStrategy, GrpcClientWrapper):
|
|
|
341
365
|
timer.mark("acquire_slot")
|
|
342
366
|
last_mark = "acquire_slot"
|
|
343
367
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
)
|
|
358
|
-
|
|
359
|
-
breaker.record_failure()
|
|
360
|
-
logger.warning(
|
|
361
|
-
"[m2m] AssociateTask failed: [%s] %s",
|
|
362
|
-
exc.code().name,
|
|
363
|
-
exc.details() or "",
|
|
364
|
-
extra=log_extra,
|
|
365
|
-
)
|
|
366
|
-
raise
|
|
368
|
+
# The BACKEND mints + registers the sub-task (linked to the running parent's
|
|
369
|
+
# mission), so it is a real task the tool module's CheckResourceAccess accepts.
|
|
370
|
+
# Resilient: deadline + retry + own breaker via exec_grpc_query; retries are safe
|
|
371
|
+
# because the idempotency nonce dedupes them backend-side. Fail-closed on error.
|
|
372
|
+
if self._gateway_backend is None:
|
|
373
|
+
msg = "gateway_backend_config is required for M2M AssociateTask"
|
|
374
|
+
raise RuntimeError(msg) # noqa: TRY301
|
|
375
|
+
parent_task_id = RequestContext.current().get("task_id", "")
|
|
376
|
+
idem_key = uuid.uuid4().hex # idempotency nonce, NOT a task_id (backend mints the id)
|
|
377
|
+
assoc = await self._gateway_backend.exec_grpc_query(
|
|
378
|
+
"AssociateTask",
|
|
379
|
+
gateway_pb2.AssociateTaskRequest(parent_task_id=parent_task_id),
|
|
380
|
+
timeout=m2m_settings.call_associate_timeout_s,
|
|
381
|
+
metadata=(("x-idempotency-key", idem_key),),
|
|
382
|
+
)
|
|
367
383
|
task_id = assoc.task_id
|
|
368
384
|
if not task_id:
|
|
369
|
-
|
|
370
|
-
msg = f"target {target_key} returned no task_id from AssociateTask"
|
|
385
|
+
msg = f"backend returned no task_id from AssociateTask (parent={parent_task_id})"
|
|
371
386
|
raise RuntimeError(msg) # noqa: TRY301
|
|
372
387
|
logger.info(
|
|
373
388
|
"[VALIDATE AT2] AssociateTask minted: parent=%s child=%s target=%s",
|
|
374
|
-
|
|
389
|
+
parent_task_id,
|
|
375
390
|
task_id,
|
|
376
391
|
target_key,
|
|
377
392
|
extra=log_extra,
|
|
@@ -380,6 +395,13 @@ class GrpcCommunication(CommunicationStrategy, GrpcClientWrapper):
|
|
|
380
395
|
timer.mark("associate_task")
|
|
381
396
|
last_mark = "associate_task"
|
|
382
397
|
|
|
398
|
+
self._get_or_create_channel(module_address, module_port)
|
|
399
|
+
timer.mark("channel_create")
|
|
400
|
+
last_mark = "channel_create"
|
|
401
|
+
stub = self._get_or_create_stub(gateway_service_pb2_grpc.GatewayServiceStub)
|
|
402
|
+
timer.mark("stub_create")
|
|
403
|
+
last_mark = "stub_create"
|
|
404
|
+
|
|
383
405
|
output_queue: asyncio.Queue[struct_pb2.Struct | None] = asyncio.Queue(
|
|
384
406
|
maxsize=m2m_settings.call_queue_maxsize,
|
|
385
407
|
)
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/services/services_config.py
RENAMED
|
@@ -84,6 +84,14 @@ class ServicesConfig(BaseModel):
|
|
|
84
84
|
if not self._configs.get("secret"):
|
|
85
85
|
self._configs["secret"] = self._configs.get("user_profile") or {}
|
|
86
86
|
|
|
87
|
+
# AssociateTask is minted by the backend (same services-provider as user_profile /
|
|
88
|
+
# CheckResourceAccess). In REMOTE mode, give the communication client that backend
|
|
89
|
+
# address so it can dial AssociateTask for M2M tool calls. Skipped in LOCAL (no backend,
|
|
90
|
+
# and DefaultCommunication takes no such arg).
|
|
91
|
+
up_client_config = (self._configs.get("user_profile") or {}).get("client_config")
|
|
92
|
+
if up_client_config is not None:
|
|
93
|
+
self._configs["communication"].setdefault("gateway_backend_config", up_client_config)
|
|
94
|
+
|
|
87
95
|
@classmethod
|
|
88
96
|
def valid_strategy_names(cls) -> set[str]:
|
|
89
97
|
"""Get the list of valid strategy names.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/base_server/mock/mock_pb2_grpc.py
RENAMED
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/base_server/server_async_insecure.py
RENAMED
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/base_server/server_async_secure.py
RENAMED
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/base_server/server_sync_insecure.py
RENAMED
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/base_server/server_sync_secure.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/bench_module/triggers/__init__.py
RENAMED
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/bench_module/triggers/message_trigger.py
RENAMED
|
File without changes
|
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/modules/archetype_with_tools_module.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/examples/redis_demo/triggers/message_trigger.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/community/agno/agno_adapter.py
RENAMED
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/community/agno/agui_tools.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/job_manager/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/profiling/step_timer.py
RENAMED
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/profiling/task_profiler.py
RENAMED
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/resilience/__init__.py
RENAMED
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/resilience/bulkhead.py
RENAMED
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/resilience/task_supervisor.py
RENAMED
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/task_manager/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/task_manager/module_runner.py
RENAMED
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/task_manager/redis/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/task_manager/task_executor.py
RENAMED
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/core/task_manager/task_session.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/_base_server.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/m2m_call_registry.py
RENAMED
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/module_server.py
RENAMED
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/stream_registry.py
RENAMED
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/stream_session.py
RENAMED
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/grpc_servers/utils/validators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/mixins/file_history_mixin.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/core/job_manager_models.py
RENAMED
|
File without changes
|
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/core/task_monitor.py
RENAMED
|
File without changes
|
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/events/agent_events.py
RENAMED
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/grpc_servers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/grpc_servers/models.py
RENAMED
|
File without changes
|
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/grpc_servers/types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{digitalkin-1.0.0.dev24 → digitalkin-1.0.0.dev25}/src/digitalkin/models/module/base_types.py
RENAMED
|
File without changes
|
|
File without changes
|