digitalkin 0.3.1.dev2__py3-none-any.whl → 0.3.2.dev14__py3-none-any.whl

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.
Files changed (79) hide show
  1. base_server/server_async_insecure.py +6 -5
  2. base_server/server_async_secure.py +6 -5
  3. base_server/server_sync_insecure.py +5 -4
  4. base_server/server_sync_secure.py +5 -4
  5. digitalkin/__version__.py +1 -1
  6. digitalkin/core/job_manager/base_job_manager.py +1 -1
  7. digitalkin/core/job_manager/single_job_manager.py +28 -9
  8. digitalkin/core/job_manager/taskiq_broker.py +7 -6
  9. digitalkin/core/job_manager/taskiq_job_manager.py +1 -1
  10. digitalkin/core/task_manager/surrealdb_repository.py +7 -7
  11. digitalkin/core/task_manager/task_session.py +60 -98
  12. digitalkin/grpc_servers/module_server.py +109 -168
  13. digitalkin/grpc_servers/module_servicer.py +38 -16
  14. digitalkin/grpc_servers/utils/grpc_client_wrapper.py +24 -8
  15. digitalkin/grpc_servers/utils/utility_schema_extender.py +100 -0
  16. digitalkin/models/__init__.py +1 -1
  17. digitalkin/models/core/job_manager_models.py +0 -8
  18. digitalkin/models/core/task_monitor.py +4 -0
  19. digitalkin/models/grpc_servers/models.py +91 -6
  20. digitalkin/models/module/__init__.py +18 -13
  21. digitalkin/models/module/base_types.py +61 -0
  22. digitalkin/models/module/module_context.py +173 -13
  23. digitalkin/models/module/module_types.py +28 -392
  24. digitalkin/models/module/setup_types.py +490 -0
  25. digitalkin/models/module/tool_cache.py +68 -0
  26. digitalkin/models/module/tool_reference.py +117 -0
  27. digitalkin/models/module/utility.py +167 -0
  28. digitalkin/models/services/registry.py +35 -0
  29. digitalkin/modules/__init__.py +5 -1
  30. digitalkin/modules/_base_module.py +154 -61
  31. digitalkin/modules/archetype_module.py +6 -1
  32. digitalkin/modules/tool_module.py +6 -1
  33. digitalkin/modules/triggers/__init__.py +8 -0
  34. digitalkin/modules/triggers/healthcheck_ping_trigger.py +45 -0
  35. digitalkin/modules/triggers/healthcheck_services_trigger.py +63 -0
  36. digitalkin/modules/triggers/healthcheck_status_trigger.py +52 -0
  37. digitalkin/services/__init__.py +4 -0
  38. digitalkin/services/communication/__init__.py +7 -0
  39. digitalkin/services/communication/communication_strategy.py +76 -0
  40. digitalkin/services/communication/default_communication.py +101 -0
  41. digitalkin/services/communication/grpc_communication.py +234 -0
  42. digitalkin/services/cost/grpc_cost.py +1 -1
  43. digitalkin/services/filesystem/grpc_filesystem.py +1 -1
  44. digitalkin/services/registry/__init__.py +22 -1
  45. digitalkin/services/registry/default_registry.py +135 -4
  46. digitalkin/services/registry/exceptions.py +47 -0
  47. digitalkin/services/registry/grpc_registry.py +306 -0
  48. digitalkin/services/registry/registry_models.py +15 -0
  49. digitalkin/services/registry/registry_strategy.py +88 -4
  50. digitalkin/services/services_config.py +25 -3
  51. digitalkin/services/services_models.py +5 -1
  52. digitalkin/services/setup/default_setup.py +1 -1
  53. digitalkin/services/setup/grpc_setup.py +1 -1
  54. digitalkin/services/storage/grpc_storage.py +1 -1
  55. digitalkin/services/user_profile/__init__.py +11 -0
  56. digitalkin/services/user_profile/grpc_user_profile.py +2 -2
  57. digitalkin/services/user_profile/user_profile_strategy.py +0 -15
  58. digitalkin/utils/schema_splitter.py +207 -0
  59. {digitalkin-0.3.1.dev2.dist-info → digitalkin-0.3.2.dev14.dist-info}/METADATA +5 -5
  60. digitalkin-0.3.2.dev14.dist-info/RECORD +143 -0
  61. {digitalkin-0.3.1.dev2.dist-info → digitalkin-0.3.2.dev14.dist-info}/top_level.txt +1 -0
  62. modules/archetype_with_tools_module.py +244 -0
  63. modules/cpu_intensive_module.py +1 -1
  64. modules/dynamic_setup_module.py +5 -29
  65. modules/minimal_llm_module.py +1 -1
  66. modules/text_transform_module.py +1 -1
  67. monitoring/digitalkin_observability/__init__.py +46 -0
  68. monitoring/digitalkin_observability/http_server.py +150 -0
  69. monitoring/digitalkin_observability/interceptors.py +176 -0
  70. monitoring/digitalkin_observability/metrics.py +201 -0
  71. monitoring/digitalkin_observability/prometheus.py +137 -0
  72. monitoring/tests/test_metrics.py +172 -0
  73. services/filesystem_module.py +7 -5
  74. services/storage_module.py +4 -2
  75. digitalkin/grpc_servers/registry_server.py +0 -65
  76. digitalkin/grpc_servers/registry_servicer.py +0 -456
  77. digitalkin-0.3.1.dev2.dist-info/RECORD +0 -119
  78. {digitalkin-0.3.1.dev2.dist-info → digitalkin-0.3.2.dev14.dist-info}/WHEEL +0 -0
  79. {digitalkin-0.3.1.dev2.dist-info → digitalkin-0.3.2.dev14.dist-info}/licenses/LICENSE +0 -0
@@ -7,23 +7,27 @@ from pydantic import BaseModel
7
7
 
8
8
  from digitalkin.logger import logger
9
9
  from digitalkin.services.agent import AgentStrategy
10
+ from digitalkin.services.communication import CommunicationStrategy
10
11
  from digitalkin.services.cost import CostStrategy
11
12
  from digitalkin.services.filesystem import FilesystemStrategy
12
13
  from digitalkin.services.identity import IdentityStrategy
13
14
  from digitalkin.services.registry import RegistryStrategy
14
15
  from digitalkin.services.snapshot import SnapshotStrategy
15
16
  from digitalkin.services.storage import StorageStrategy
17
+ from digitalkin.services.user_profile import UserProfileStrategy
16
18
 
17
19
  # Define type variables
18
20
  T = TypeVar(
19
21
  "T",
20
22
  bound=AgentStrategy
23
+ | CommunicationStrategy
21
24
  | CostStrategy
22
25
  | FilesystemStrategy
23
26
  | IdentityStrategy
24
27
  | RegistryStrategy
25
28
  | SnapshotStrategy
26
- | StorageStrategy,
29
+ | StorageStrategy
30
+ | UserProfileStrategy,
27
31
  )
28
32
 
29
33
 
@@ -173,7 +173,7 @@ class DefaultSetup(SetupStrategy):
173
173
  return [
174
174
  value
175
175
  for value in self.setup_versions[setup_version_dict["setup_id"]].values()
176
- if setup_version_dict["query_versions"] in value.version or setup_version_dict["name"] in value.name
176
+ if setup_version_dict["query_versions"] in value.version
177
177
  ]
178
178
 
179
179
  def update_setup_version(self, setup_version_dict: dict[str, Any]) -> bool:
@@ -5,7 +5,7 @@ from contextlib import contextmanager
5
5
  from typing import Any
6
6
 
7
7
  import grpc
8
- from digitalkin_proto.agentic_mesh_protocol.setup.v1 import (
8
+ from agentic_mesh_protocol.setup.v1 import (
9
9
  setup_pb2,
10
10
  setup_service_pb2_grpc,
11
11
  )
@@ -1,6 +1,6 @@
1
1
  """This module implements the default storage strategy."""
2
2
 
3
- from digitalkin_proto.agentic_mesh_protocol.storage.v1 import data_pb2, storage_service_pb2_grpc
3
+ from agentic_mesh_protocol.storage.v1 import data_pb2, storage_service_pb2_grpc
4
4
  from google.protobuf import json_format
5
5
  from google.protobuf.struct_pb2 import Struct
6
6
  from pydantic import BaseModel
@@ -1 +1,12 @@
1
1
  """UserProfile service package."""
2
+
3
+ from digitalkin.services.user_profile.default_user_profile import DefaultUserProfile
4
+ from digitalkin.services.user_profile.grpc_user_profile import GrpcUserProfile
5
+ from digitalkin.services.user_profile.user_profile_strategy import UserProfileServiceError, UserProfileStrategy
6
+
7
+ __all__ = [
8
+ "DefaultUserProfile",
9
+ "GrpcUserProfile",
10
+ "UserProfileServiceError",
11
+ "UserProfileStrategy",
12
+ ]
@@ -2,7 +2,7 @@
2
2
 
3
3
  from typing import Any
4
4
 
5
- from digitalkin_proto.agentic_mesh_protocol.user_profile.v1 import (
5
+ from agentic_mesh_protocol.user_profile.v1 import (
6
6
  user_profile_pb2,
7
7
  user_profile_service_pb2_grpc,
8
8
  )
@@ -49,7 +49,7 @@ class GrpcUserProfile(UserProfileStrategy, GrpcClientWrapper, GrpcErrorHandlerMi
49
49
  ServerError: If gRPC operation fails
50
50
  """
51
51
  with self.handle_grpc_errors("GetUserProfile", UserProfileServiceError):
52
- # mission_id maps to the user context in the proto request
52
+ # mission_id typically contains user context
53
53
  request = user_profile_pb2.GetUserProfileRequest(mission_id=self.mission_id)
54
54
  response = self.exec_grpc_query("GetUserProfile", request)
55
55
 
@@ -13,21 +13,6 @@ class UserProfileServiceError(Exception):
13
13
  class UserProfileStrategy(BaseStrategy, ABC):
14
14
  """Abstract base class for UserProfile strategies."""
15
15
 
16
- def __init__(
17
- self,
18
- mission_id: str,
19
- setup_id: str,
20
- setup_version_id: str,
21
- ) -> None:
22
- """Initialize the strategy.
23
-
24
- Args:
25
- mission_id: The ID of the mission this strategy is associated with
26
- setup_id: The ID of the setup
27
- setup_version_id: The ID of the setup version this strategy is associated with
28
- """
29
- super().__init__(mission_id, setup_id, setup_version_id)
30
-
31
16
  @abstractmethod
32
17
  def get_user_profile(self) -> dict[str, Any]:
33
18
  """Get user profile data.
@@ -0,0 +1,207 @@
1
+ """Schema splitter for react-jsonschema-form."""
2
+
3
+ from typing import Any
4
+
5
+
6
+ class SchemaSplitter:
7
+ """Splits a combined JSON schema into jsonschema and uischema for react-jsonschema-form."""
8
+
9
+ @classmethod
10
+ def split(cls, combined_schema: dict[str, Any]) -> tuple[dict[str, Any], dict[str, Any]]:
11
+ """Split schema into (jsonschema, uischema).
12
+
13
+ Args:
14
+ combined_schema: Combined JSON schema with ui:* properties.
15
+
16
+ Returns:
17
+ Tuple of (jsonschema, uischema).
18
+ """
19
+ defs_ui: dict[str, dict[str, Any]] = {}
20
+ if "$defs" in combined_schema:
21
+ for def_name, def_value in combined_schema["$defs"].items():
22
+ if isinstance(def_value, dict):
23
+ defs_ui[def_name] = {}
24
+ cls._extract_ui_properties(def_value, defs_ui[def_name])
25
+
26
+ json_schema: dict[str, Any] = {}
27
+ ui_schema: dict[str, Any] = {}
28
+ cls._process_object(combined_schema, json_schema, ui_schema, defs_ui)
29
+ return json_schema, ui_schema
30
+
31
+ @classmethod
32
+ def _extract_ui_properties(cls, source: dict[str, Any], ui_target: dict[str, Any]) -> None: # noqa: C901
33
+ """Extract ui:* properties from source into ui_target recursively.
34
+
35
+ Args:
36
+ source: Source dict to extract from.
37
+ ui_target: Target dict for ui properties.
38
+ """
39
+ for key, value in source.items():
40
+ if key.startswith("ui:"):
41
+ ui_target[key] = value
42
+ elif key == "properties" and isinstance(value, dict):
43
+ for prop_name, prop_value in value.items():
44
+ if isinstance(prop_value, dict):
45
+ prop_ui: dict[str, Any] = {}
46
+ cls._extract_ui_properties(prop_value, prop_ui)
47
+ if prop_ui:
48
+ ui_target[prop_name] = prop_ui
49
+ elif key == "items" and isinstance(value, dict):
50
+ items_ui: dict[str, Any] = {}
51
+ cls._extract_ui_properties(value, items_ui)
52
+ if items_ui:
53
+ ui_target["items"] = items_ui
54
+ elif key == "allOf" and isinstance(value, list):
55
+ for item in value:
56
+ if isinstance(item, dict):
57
+ cls._extract_ui_properties(item, ui_target)
58
+
59
+ @classmethod
60
+ def _process_object( # noqa: C901, PLR0912
61
+ cls,
62
+ source: dict[str, Any],
63
+ json_target: dict[str, Any],
64
+ ui_target: dict[str, Any],
65
+ defs_ui: dict[str, dict[str, Any]],
66
+ ) -> None:
67
+ """Process an object, splitting json and ui properties.
68
+
69
+ Args:
70
+ source: Source object to process.
71
+ json_target: Target dict for json schema.
72
+ ui_target: Target dict for ui schema.
73
+ defs_ui: Pre-extracted UI properties from $defs.
74
+ """
75
+ for key, value in source.items():
76
+ if key.startswith("ui:"):
77
+ ui_target[key] = value
78
+ elif key == "properties" and isinstance(value, dict):
79
+ json_target["properties"] = {}
80
+ for prop_name, prop_value in value.items():
81
+ if isinstance(prop_value, dict):
82
+ json_target["properties"][prop_name] = {}
83
+ prop_ui: dict[str, Any] = {}
84
+ cls._process_property(prop_value, json_target["properties"][prop_name], prop_ui, defs_ui)
85
+ if prop_ui:
86
+ ui_target[prop_name] = prop_ui
87
+ else:
88
+ json_target["properties"][prop_name] = prop_value
89
+ elif key == "$defs" and isinstance(value, dict):
90
+ json_target["$defs"] = {}
91
+ for def_name, def_value in value.items():
92
+ if isinstance(def_value, dict):
93
+ json_target["$defs"][def_name] = {}
94
+ cls._strip_ui_properties(def_value, json_target["$defs"][def_name])
95
+ else:
96
+ json_target["$defs"][def_name] = def_value
97
+ elif key == "items" and isinstance(value, dict):
98
+ json_target["items"] = {}
99
+ items_ui: dict[str, Any] = {}
100
+ cls._process_property(value, json_target["items"], items_ui, defs_ui)
101
+ if items_ui:
102
+ ui_target["items"] = items_ui
103
+ elif key == "allOf" and isinstance(value, list):
104
+ json_target["allOf"] = []
105
+ for item in value:
106
+ if isinstance(item, dict):
107
+ item_json: dict[str, Any] = {}
108
+ cls._strip_ui_properties(item, item_json)
109
+ json_target["allOf"].append(item_json)
110
+ else:
111
+ json_target["allOf"].append(item)
112
+ elif key in {"if", "then", "else"} and isinstance(value, dict):
113
+ json_target[key] = {}
114
+ cls._strip_ui_properties(value, json_target[key])
115
+ else:
116
+ json_target[key] = value
117
+
118
+ @classmethod
119
+ def _process_property( # noqa: C901, PLR0912
120
+ cls,
121
+ source: dict[str, Any],
122
+ json_target: dict[str, Any],
123
+ ui_target: dict[str, Any],
124
+ defs_ui: dict[str, dict[str, Any]],
125
+ ) -> None:
126
+ """Process a property, resolving $ref for UI properties.
127
+
128
+ Args:
129
+ source: Source property dict.
130
+ json_target: Target dict for json schema.
131
+ ui_target: Target dict for ui schema.
132
+ defs_ui: Pre-extracted UI properties from $defs.
133
+ """
134
+ if "$ref" in source:
135
+ ref_path = source["$ref"]
136
+ if ref_path.startswith("#/$defs/"):
137
+ def_name = ref_path[8:]
138
+ if def_name in defs_ui:
139
+ ui_target.update(defs_ui[def_name])
140
+
141
+ for key, value in source.items():
142
+ if key.startswith("ui:"):
143
+ ui_target[key] = value
144
+ elif key == "properties" and isinstance(value, dict):
145
+ json_target["properties"] = {}
146
+ for prop_name, prop_value in value.items():
147
+ if isinstance(prop_value, dict):
148
+ json_target["properties"][prop_name] = {}
149
+ prop_ui: dict[str, Any] = {}
150
+ cls._process_property(prop_value, json_target["properties"][prop_name], prop_ui, defs_ui)
151
+ if prop_ui:
152
+ ui_target[prop_name] = prop_ui
153
+ else:
154
+ json_target["properties"][prop_name] = prop_value
155
+ elif key == "items" and isinstance(value, dict):
156
+ json_target["items"] = {}
157
+ items_ui: dict[str, Any] = {}
158
+ cls._process_property(value, json_target["items"], items_ui, defs_ui)
159
+ if items_ui:
160
+ ui_target["items"] = items_ui
161
+ else:
162
+ json_target[key] = value
163
+
164
+ @classmethod
165
+ def _strip_ui_properties(cls, source: dict[str, Any], json_target: dict[str, Any]) -> None: # noqa: C901, PLR0912
166
+ """Copy source to json_target, stripping ui:* properties.
167
+
168
+ Args:
169
+ source: Source dict.
170
+ json_target: Target dict without ui:* properties.
171
+ """
172
+ for key, value in source.items():
173
+ if key.startswith("ui:"):
174
+ continue
175
+ if key == "properties" and isinstance(value, dict):
176
+ json_target["properties"] = {}
177
+ for prop_name, prop_value in value.items():
178
+ if isinstance(prop_value, dict):
179
+ json_target["properties"][prop_name] = {}
180
+ cls._strip_ui_properties(prop_value, json_target["properties"][prop_name])
181
+ else:
182
+ json_target["properties"][prop_name] = prop_value
183
+ elif key == "$defs" and isinstance(value, dict):
184
+ json_target["$defs"] = {}
185
+ for def_name, def_value in value.items():
186
+ if isinstance(def_value, dict):
187
+ json_target["$defs"][def_name] = {}
188
+ cls._strip_ui_properties(def_value, json_target["$defs"][def_name])
189
+ else:
190
+ json_target["$defs"][def_name] = def_value
191
+ elif key == "items" and isinstance(value, dict):
192
+ json_target["items"] = {}
193
+ cls._strip_ui_properties(value, json_target["items"])
194
+ elif key == "allOf" and isinstance(value, list):
195
+ json_target["allOf"] = []
196
+ for item in value:
197
+ if isinstance(item, dict):
198
+ item_json: dict[str, Any] = {}
199
+ cls._strip_ui_properties(item, item_json)
200
+ json_target["allOf"].append(item_json)
201
+ else:
202
+ json_target["allOf"].append(item)
203
+ elif key in {"if", "then", "else"} and isinstance(value, dict):
204
+ json_target[key] = {}
205
+ cls._strip_ui_properties(value, json_target[key])
206
+ else:
207
+ json_target[key] = value
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: digitalkin
3
- Version: 0.3.1.dev2
3
+ Version: 0.3.2.dev14
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
@@ -452,17 +452,17 @@ Classifier: License :: Other/Proprietary License
452
452
  Requires-Python: >=3.10
453
453
  Description-Content-Type: text/markdown
454
454
  License-File: LICENSE
455
- Requires-Dist: digitalkin-proto==0.2.0.dev5
455
+ Requires-Dist: agentic-mesh-protocol==0.2.1.dev0
456
456
  Requires-Dist: grpcio-health-checking>=1.76.0
457
457
  Requires-Dist: grpcio-reflection>=1.76.0
458
458
  Requires-Dist: grpcio-status>=1.76.0
459
459
  Requires-Dist: pydantic>=2.12.5
460
- Requires-Dist: surrealdb>=1.0.6
460
+ Requires-Dist: surrealdb>=1.0.7
461
461
  Provides-Extra: taskiq
462
462
  Requires-Dist: rstream>=0.40.0; extra == "taskiq"
463
463
  Requires-Dist: taskiq-aio-pika>=0.5.0; extra == "taskiq"
464
- Requires-Dist: taskiq-redis>=1.1.2; extra == "taskiq"
465
- Requires-Dist: taskiq[reload]>=0.12.0; extra == "taskiq"
464
+ Requires-Dist: taskiq-redis>=1.2.0; extra == "taskiq"
465
+ Requires-Dist: taskiq[reload]>=0.12.1; extra == "taskiq"
466
466
  Dynamic: license-file
467
467
 
468
468
  # DigitalKin Python SDK
@@ -0,0 +1,143 @@
1
+ base_server/__init__.py,sha256=gs8t9Dg0dNVHRdYYbEQY8bn8tzEUv2zE6eBhKNPG3kU,88
2
+ base_server/server_async_insecure.py,sha256=VkOj_v_lDA5QfZi34goVGExf4t03_HfqrntcUC4VwfA,3894
3
+ base_server/server_async_secure.py,sha256=6JFlvs53aAGjgC1uDA3rjA9brBDbnj_tkyOiarVOZfA,4691
4
+ base_server/server_sync_insecure.py,sha256=Z9PUywCOr4gJTZWJ4UxunazKL1t9l4GoW0w7lNr94A8,3133
5
+ base_server/server_sync_secure.py,sha256=BhzXtrT3zFUocq05EReDyhX40ty5oW8RterHV5Pyl40,3945
6
+ base_server/mock/__init__.py,sha256=YZFT-F1l_TpvJYuIPX-7kTeE1CfOjhx9YmNRXVoi-jQ,143
7
+ base_server/mock/mock_pb2.py,sha256=sETakcS3PAAm4E-hTCV1jIVaQTPEAIoVVHupB8Z_k7Y,1843
8
+ base_server/mock/mock_pb2_grpc.py,sha256=BbOT70H6q3laKgkHfOx1QdfmCS_HxCY4wCOX84YAdG4,3180
9
+ digitalkin/__init__.py,sha256=7LLBAba0th-3SGqcpqFO-lopWdUkVLKzLZiMtB-mW3M,162
10
+ digitalkin/__version__.py,sha256=tx0UO-z3MMklNvXWALLHn-_8akwd6_mCkqJ81h4kFg0,196
11
+ digitalkin/logger.py,sha256=8ze_tjt2G6mDTuQcsf7-UTXWP3UHZ7LZVSs_iqF4rX4,4685
12
+ digitalkin/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
+ digitalkin/core/__init__.py,sha256=FJRcJ-B1Viyn-38L8XpOpZ8KOnf1I7PCDOAmKXLQhqc,71
14
+ digitalkin/core/common/__init__.py,sha256=Gh2eJAJRnrUE93jSEfG7r0nb01Xh1kSkNL6nEpfzK_s,218
15
+ digitalkin/core/common/factories.py,sha256=mV6SmXXrZxzIQ7DLdDtPdjapSDZt5Ua-nBIDsozs_Vk,5047
16
+ digitalkin/core/job_manager/__init__.py,sha256=gGtgQpE6vbBHxAj1SYMbcpj45Q6x8IcsqnyQPfyZZ-8,25
17
+ digitalkin/core/job_manager/base_job_manager.py,sha256=fRnoR74uduImGYOKj4kZ5bo0xv9hrXSCUuq0NHfDpPE,10089
18
+ digitalkin/core/job_manager/single_job_manager.py,sha256=xOgl8HNUpfd_OPmoJpUt8hJznxDTeUzFpEFBRgEYzp4,14464
19
+ digitalkin/core/job_manager/taskiq_broker.py,sha256=ORGg2QSLDaWiCqie8ZGkbcDq7LDuWWSx7hg-SoUv99E,11544
20
+ digitalkin/core/job_manager/taskiq_job_manager.py,sha256=d23iylsc2RUvoE95VxZWa5Kb_yqptMOF63l7MDtuZtk,21264
21
+ digitalkin/core/task_manager/__init__.py,sha256=k9i-qIoee_1yXogyQolaVFDUQBIZU3ENbYKtjrCNmTQ,31
22
+ digitalkin/core/task_manager/base_task_manager.py,sha256=ahkflSul07hMAWRX22CoJf9FxpQhWzi_oKZz3YAN6lc,19416
23
+ digitalkin/core/task_manager/local_task_manager.py,sha256=Z1gv4dCGD32LBSfMZJ4dGyYDe80lZRAyowTgGC6E4Vk,3534
24
+ digitalkin/core/task_manager/remote_task_manager.py,sha256=zgccmnwwtB0nyeIZlL5Ji8SY1J89z_vjA4JD9ur7HzY,3082
25
+ digitalkin/core/task_manager/surrealdb_repository.py,sha256=a22FblutOYbtWtoh0SEqNIm_f6it3XkRReyBBLqy6Qk,9874
26
+ digitalkin/core/task_manager/task_executor.py,sha256=8xh5_1zuRAaGZIH_gWyNsA4T7YYaF0sl51dLS8a6aAk,10981
27
+ digitalkin/core/task_manager/task_session.py,sha256=5jw21bT_SPXUzWE7tk6YG62EXqlRJcrSakFXDFDRy28,12730
28
+ digitalkin/grpc_servers/__init__.py,sha256=ZIRMJ1Lcas8yQ106GCup6hn2UBOsx1sNk8ap0lpEDnY,72
29
+ digitalkin/grpc_servers/_base_server.py,sha256=ZVeCDwI7w7fFbPTXPkeJb_SOuLfd2T7za3T4oCu2UWY,18680
30
+ digitalkin/grpc_servers/module_server.py,sha256=Ec3izzV2YpdN8rGs_cX-iVulQ00FkLR5dBflHlQ8a6Y,7849
31
+ digitalkin/grpc_servers/module_servicer.py,sha256=7GQOyAPYMxHVaJGplgDNiVoKr1oaAIL-zdZpyDpznTA,20530
32
+ digitalkin/grpc_servers/utils/__init__.py,sha256=ZnAIb_F8z4NhtPypqkdmzgRSzolKnJTk3oZx5GfWH5Y,38
33
+ digitalkin/grpc_servers/utils/exceptions.py,sha256=LtaDtlqXCeT6iqApogs4pbtezotOVeg4fhnFzGBvFsY,692
34
+ digitalkin/grpc_servers/utils/grpc_client_wrapper.py,sha256=nGG8QdKnBH0UG9qbKrlPwIvcvPgW3osw7O3cImxisPE,3279
35
+ digitalkin/grpc_servers/utils/grpc_error_handler.py,sha256=0wPEU4713_ZlgIilaeXJV2bi90tHwYO1myDrSLeenKk,1848
36
+ digitalkin/grpc_servers/utils/utility_schema_extender.py,sha256=UCJR5YAKA_Wg5Q9feInf4AZW6AVtSQZYRZuMsaEgZVo,3775
37
+ digitalkin/mixins/__init__.py,sha256=d6ljaoyJZJT9XxOrXZG5FVNvbLURb3_CZrkp4GPZWYM,590
38
+ digitalkin/mixins/base_mixin.py,sha256=uLkg6MbDtVc9DysjdfNIGKahxQLnnjuL3DYpuyNLbk8,486
39
+ digitalkin/mixins/callback_mixin.py,sha256=90nHm9-pbKT14GAy3CB3fsBtpYu5IH0woOQdNLM2e_Y,836
40
+ digitalkin/mixins/chat_history_mixin.py,sha256=SqCmnh6Ybed3TQoQbvUjbzwKs_evvfW_lr4j_Uncg0A,4231
41
+ digitalkin/mixins/cost_mixin.py,sha256=nFqhLsRHdXAt3GOH6qI8sqX9KW3leTPW3gaclensBVw,2274
42
+ digitalkin/mixins/file_history_mixin.py,sha256=5MgxglccVe11M7YnoeuXbJYXNEwVZdiGd5Fl8sytcTM,3504
43
+ digitalkin/mixins/filesystem_mixin.py,sha256=Q1sEY_dKZVi2Sa21fypwpsz9h7uQ7ggVqzpuVgheF_o,1510
44
+ digitalkin/mixins/logger_mixin.py,sha256=l-SK3qACIzRfyHgj7KhzvW3ZhmVa-W1JB9tmppgpqg4,1842
45
+ digitalkin/mixins/storage_mixin.py,sha256=ptZ4a2bydIa48q0V9e395vWHTu7yw4A6rI4jwKY6gwI,2392
46
+ digitalkin/models/__init__.py,sha256=xK0YGXsHI4ghGzIURRhIRYYM3sxbnOsk9UeMXdl5l-o,170
47
+ digitalkin/models/core/__init__.py,sha256=jOMDmPX0uSfGA9zUi0u_kOvYJ46VdIssoIhVYvNSeew,19
48
+ digitalkin/models/core/job_manager_models.py,sha256=wvf2dzRzAu0-zzzAXQe6XTC36cNA10sXRLt2p_TFqjk,1003
49
+ digitalkin/models/core/task_monitor.py,sha256=CW-jydSgXMV464W0pqfar0HpgqlSxqdujmC-f8p9EQc,2639
50
+ digitalkin/models/grpc_servers/__init__.py,sha256=0tA71nPSXgRrh9DoLvx-TSwZXdYIRUEItoadpTL1cTo,42
51
+ digitalkin/models/grpc_servers/models.py,sha256=gRX94eL71a5mLIie-lCOwE7a0As_AuGduxPPzTHbAe4,13797
52
+ digitalkin/models/grpc_servers/types.py,sha256=rQ78s4nAet2jy-NIDj_PUWriT0kuGHr_w6ELjmjgBao,539
53
+ digitalkin/models/module/__init__.py,sha256=N55wan3rAUVPEGLIDjXoFM_-DYY_zxvbQOZHzNDfwoY,751
54
+ digitalkin/models/module/base_types.py,sha256=oIylVNqo0idTFj4dRgCt7P19daNZ-AlvgCPpL9TJvto,1850
55
+ digitalkin/models/module/module.py,sha256=k0W8vfJJFth8XdDzkHm32SyTuSf3h2qF0hSrxAfGF1s,956
56
+ digitalkin/models/module/module_context.py,sha256=qpjyMYgTCyQS0lW2RhTKZsoQKwFpv6l08FIM0sqC6DQ,10326
57
+ digitalkin/models/module/module_types.py,sha256=C9azCNBk76xMa-Mww8_6AiwQR8MLAsEyUOvBYxytovI,739
58
+ digitalkin/models/module/setup_types.py,sha256=XMKyDm-7n_Za9tDBv1AkgXUowlUj46SMxWANa_yg_LU,18311
59
+ digitalkin/models/module/tool_cache.py,sha256=RP3JwASV8dFUZEKudyALbu0_tq81lstuEc4QHMQpmvM,2073
60
+ digitalkin/models/module/tool_reference.py,sha256=6GhLQC4pqCV3b7Nmm0mr0TZC13RDHIUOm1J-pIdWsmo,3479
61
+ digitalkin/models/module/utility.py,sha256=gnbYfWpXGbomUI0fWf7T-Qm_VvT-LXDv1OuA9zObwVg,5589
62
+ digitalkin/models/services/__init__.py,sha256=jhfVw6egq0OcHmos_fypH9XFehbHTBw09wluVFVFEyw,226
63
+ digitalkin/models/services/cost.py,sha256=9PXvd5RrIk9vCrRjcUGQ9ZyAokEbwLg4s0RfnE-aLP4,1616
64
+ digitalkin/models/services/registry.py,sha256=hz_r03-K633XHu2fOb5HWsE59EPFusBBipy0Gz6OBvI,705
65
+ digitalkin/models/services/storage.py,sha256=wp7F-AvTsU46ujGPcguqM5kUKRZx4399D4EGAAJt2zs,1143
66
+ digitalkin/modules/__init__.py,sha256=vTQk8DWopxQSJ17BjE5dNhq247Rou55iQLJdBxoPUmo,296
67
+ digitalkin/modules/_base_module.py,sha256=4-fS376f9ti3xSgM946yRccHcEGttdo2QYKaxdqk1kY,22451
68
+ digitalkin/modules/archetype_module.py,sha256=XC9tl1Yr6QlbPn_x0eov6UUZwQgwW--BYPPMYVJH_NU,505
69
+ digitalkin/modules/tool_module.py,sha256=GBis7bKCkvWFCYLRvaS9oZVmLBBve1w8BhVnKOU2sCc,506
70
+ digitalkin/modules/trigger_handler.py,sha256=qPNMi-8NHqscOxciHeaXtpwjXApT3YzjMF23zQAjaZY,1770
71
+ digitalkin/modules/triggers/__init__.py,sha256=OKzUWqlnm9wzAAvztPocSK36i69giWEQnxn0hbdfCsM,323
72
+ digitalkin/modules/triggers/healthcheck_ping_trigger.py,sha256=fQjfOB_NMPocISXAT8rlk896_pXIY8v0op0JhZNv_G0,1558
73
+ digitalkin/modules/triggers/healthcheck_services_trigger.py,sha256=TpPw5XTnw3Bt9VCoFXQ_V-SIAR8LMoJmDGiyegWW6To,2286
74
+ digitalkin/modules/triggers/healthcheck_status_trigger.py,sha256=rozWQWvO7a2ZTg8BjFCyEWeAai5vdbi7BBwu0vR5jv8,1768
75
+ digitalkin/services/__init__.py,sha256=DugdZZ3uKXFsA5C-DuP41ssGegU1FybI3HQcW_Se4bk,1101
76
+ digitalkin/services/base_strategy.py,sha256=yA9KUJGRKuuaxA6l3GcMv8zKfWoIsW03UxJT80Yea2I,766
77
+ digitalkin/services/services_config.py,sha256=rz1cJdO_dfUN3kwOQ40XRSE4ZH3mgM43vXka94gjymY,8689
78
+ digitalkin/services/services_models.py,sha256=Cb-ajJxHlEOQmoylMCfNdN08T6IOmMLXHrAZ6pxprrQ,1855
79
+ digitalkin/services/agent/__init__.py,sha256=vJc8JN0pdtA8ecypLBeHrwAUIW6H2C8NyW-dk24rTpk,244
80
+ digitalkin/services/agent/agent_strategy.py,sha256=42Q9RciHX6tg3CgDQkbrlIx4h_TX0WIuSpLmCjitVmA,492
81
+ digitalkin/services/agent/default_agent.py,sha256=4N_E_eQxJGOx1KVUUg5jNOje-3ncMxF3ePB-uDuGrJc,345
82
+ digitalkin/services/communication/__init__.py,sha256=YbRjrg_BbNURgS56SlXSCzRBvyUELGgrIkuX19eA1f8,408
83
+ digitalkin/services/communication/communication_strategy.py,sha256=u35O-al9LQxiORM9ZrGeHrBtT7CegtCsMwGdwvu2MlQ,2335
84
+ digitalkin/services/communication/default_communication.py,sha256=zBExaitUxpuIyoWANdx5JHY9pHDRnSffTiHLvU5QqwY,3166
85
+ digitalkin/services/communication/grpc_communication.py,sha256=I78vlWlvn4ACTgOiUedgksApQvX2v1_FkitAGwSgCjs,8023
86
+ digitalkin/services/cost/__init__.py,sha256=sD_a5LrnLluASOC5m5vgIqjaco-MzZJd6XhillIBHr0,400
87
+ digitalkin/services/cost/cost_strategy.py,sha256=MpPX33P_S5b2by6F4zT-rcyeRuh2V4NYPZe05VpDOGQ,2649
88
+ digitalkin/services/cost/default_cost.py,sha256=XE7kNFde8NmbulU9m1lc3mi-vHFkbaJf0XHUc0D4UHE,3945
89
+ digitalkin/services/cost/grpc_cost.py,sha256=2xJ3baTNubCnawpbNftTuFVnPpDZPouSrUWe1cVlInE,5272
90
+ digitalkin/services/filesystem/__init__.py,sha256=BhwMl_BUvM0d65fmglkp0SVwn3RfYiUOKJgIMnOCaGM,381
91
+ digitalkin/services/filesystem/default_filesystem.py,sha256=WQbU-Bsi9r-28VqhKbrplce3otzjSKS-5iqKEpGWdQU,15117
92
+ digitalkin/services/filesystem/filesystem_strategy.py,sha256=zibVLvX_IBQ-kgh-KYzHdszDeiHFPEAZszu_k99x1GQ,9487
93
+ digitalkin/services/filesystem/grpc_filesystem.py,sha256=9Cjp4ie-mJ2EMMZ8DjCqeV6S6CiS_gwWalGoeCAusEk,12137
94
+ digitalkin/services/identity/__init__.py,sha256=InkeyLgFYYwItx8mePA8HpfacOMWZwwuc0G4pWtKq9s,270
95
+ digitalkin/services/identity/default_identity.py,sha256=Y2auZHrGSZTIN5D8HyjLvLcNbYFM1CNUE23x7p5VIGw,386
96
+ digitalkin/services/identity/identity_strategy.py,sha256=skappBbds1_qa0Gr24FGrNX1N0_OYhYT1Lh7dUaAirE,429
97
+ digitalkin/services/registry/__init__.py,sha256=WPGQM3U-QvMXhsaOy9BN0kVMU3QkPFwAMT3lGmTR-Ko,835
98
+ digitalkin/services/registry/default_registry.py,sha256=tOqw9Ve9w_BzhqrZmHuUl5Ps-J_KTEwYg3tu1gNIHmw,4258
99
+ digitalkin/services/registry/exceptions.py,sha256=tAcVXioCzDqfBvxB_P0uQpaK_LDLrFb0KpymROuqs-8,1371
100
+ digitalkin/services/registry/grpc_registry.py,sha256=2_He-I9I4SXdjYA9QYxFWQrr_xBao6LIYXsgiICkeHY,10822
101
+ digitalkin/services/registry/registry_models.py,sha256=DJEwMJg5_BewpgHDtY8xIGWj9jA9H07iYgHLCv81giY,331
102
+ digitalkin/services/registry/registry_strategy.py,sha256=N6oLxMwnYkM_XVW7WDxZoSfFafjUtsFDig3F8VQZj7Q,2745
103
+ digitalkin/services/setup/__init__.py,sha256=t6xcvEWqTbcRZstBFK9cESEqaZKvpW14VtYygxIqfYQ,65
104
+ digitalkin/services/setup/default_setup.py,sha256=zTG9Nvw3Tqy9qctSEnjWE4Mlqol321AUaTlIm6Jl1k0,8195
105
+ digitalkin/services/setup/grpc_setup.py,sha256=aEAHiG0WSzNSQtJjn7xAGQwj70b0HrFO8GBKFXRx3aI,13925
106
+ digitalkin/services/setup/setup_strategy.py,sha256=ZnJ_HwWCkHCPrqKekSD5L9y3p8wMwfjQ8sj2hLZq6go,4004
107
+ digitalkin/services/snapshot/__init__.py,sha256=Uzlnzo0CYlSpVsdiI37hW7xQk8hu3YA1fOI6O6MSzB0,270
108
+ digitalkin/services/snapshot/default_snapshot.py,sha256=Mb8QwWRsHh9I_tN0ln_ZiFa1QCZxOVWmuVLemQOTWpc,1058
109
+ digitalkin/services/snapshot/snapshot_strategy.py,sha256=B1TU3V_k9A-OdqBkdyc41-ihnrW5Btcwd1KyQdHT46A,898
110
+ digitalkin/services/storage/__init__.py,sha256=T-ocYLLphudkQgzvG47jBOm5GQsRFRIGA88y7Ur4akg,341
111
+ digitalkin/services/storage/default_storage.py,sha256=D8e-UYUkb2GvDEHMWcN3EkcIKXWA8DrsaQsXVjoXAYQ,7975
112
+ digitalkin/services/storage/grpc_storage.py,sha256=c6HWDEI3lr6NO9HHSTBpRhZ7h0qqMBIBCMnjjj4e2c4,7200
113
+ digitalkin/services/storage/storage_strategy.py,sha256=sERF5tIJnzpb1iNqTXic9xRkGaXMifo6kb709ubB-Yo,8848
114
+ digitalkin/services/user_profile/__init__.py,sha256=RKEZCsgCHS7fmswhWgUoQd6vZ_1pYnRqERoF8fmu7jw,434
115
+ digitalkin/services/user_profile/default_user_profile.py,sha256=46DH_VBCHKXJVyagVcc8kH5sLwRK54Fe_0ahqYJ1maA,1847
116
+ digitalkin/services/user_profile/grpc_user_profile.py,sha256=xDiUC5Ceofa6QtGPmqJV3ik5j8HDHc1zxtpia49rlRw,2780
117
+ digitalkin/services/user_profile/user_profile_strategy.py,sha256=CH8kT__1MUwA21k5djjmB5ZZ6pYg57OWbe_7owBCgwU,681
118
+ digitalkin/utils/__init__.py,sha256=gDoEk5CP8tiBmIq-38aPhIMlnDUiqRrduuVXhpSPQnc,541
119
+ digitalkin/utils/arg_parser.py,sha256=wzscRlE1Qp1gGl-lAJlkkwnbU1O2oezj6BwK_BZFBIk,3158
120
+ digitalkin/utils/development_mode_action.py,sha256=2hznh0ajW_4ZTysfoc0Y49161f_PQPATRgNk8NAn1_o,1623
121
+ digitalkin/utils/dynamic_schema.py,sha256=5-B3dBGlCYYv6uRJkgudtc0ZpBOTYxl0yKedDGsteZQ,15184
122
+ digitalkin/utils/llm_ready_schema.py,sha256=JjMug_lrQllqFoanaC091VgOqwAd-_YzcpqFlS7p778,2375
123
+ digitalkin/utils/package_discover.py,sha256=sa6Zp5Kape1Zr4iYiNrnZxiHDnqM06ODk6yfWHom53w,13465
124
+ digitalkin/utils/schema_splitter.py,sha256=KMvYRHDHlwdhh_c6FJxkWvLStZo9Kbj-jd3pIGPZfxk,9317
125
+ digitalkin-0.3.2.dev14.dist-info/licenses/LICENSE,sha256=Ies4HFv2r2hzDRakJYxk3Y60uDFLiG-orIgeTpstnIo,20327
126
+ modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
+ modules/archetype_with_tools_module.py,sha256=PXTS6IXmC_OjxTmVrL_pYVI0MKwXjD5I1UJO_2xa10Q,7632
128
+ modules/cpu_intensive_module.py,sha256=GZlirQDZdYuXrI46sv1q4RNAHZjL4EptHVQTvgK9zz8,8363
129
+ modules/dynamic_setup_module.py,sha256=tKvUWZdlYZkfAgKR0mLuFcLiFGKpVgpsz10LeJ6B2QI,11410
130
+ modules/minimal_llm_module.py,sha256=N9aIzZQI-miyH4AB4xTmGHpMvdSLnYyXNOD4Z3YFzis,11216
131
+ modules/text_transform_module.py,sha256=MfhI_Ki1U6qk379ne6oazNEu4PhO4R3cRezEcr0nGPw,7251
132
+ monitoring/digitalkin_observability/__init__.py,sha256=PXG4xbMbmiVNkIaVG899H9CHvcld7c0bSbaLHqKeDeo,1247
133
+ monitoring/digitalkin_observability/http_server.py,sha256=kFbWFQvaqq2VVwwqDozV0pRPe7RkAXsa9xCWruMlOyk,4527
134
+ monitoring/digitalkin_observability/interceptors.py,sha256=Sx6o0s8FSMfIGKVAtjVl7l-sIygP45od6eITl7DroBU,6219
135
+ monitoring/digitalkin_observability/metrics.py,sha256=XhVRE8y6tbzJqxIzEHa5MT3I0k3hgpxjzZf_R6SyjbQ,7553
136
+ monitoring/digitalkin_observability/prometheus.py,sha256=gDmM9ySaVwPAe7Yg84pLxmEKu0Cudezi8pK3RtqWs6g,5457
137
+ monitoring/tests/test_metrics.py,sha256=ugnYfAwqBPO6zA8z4afKTlyBWECTivacYSN-URQCn2E,5856
138
+ services/filesystem_module.py,sha256=U4dgqtuDadaXz8PJ1d_uQ_1EPncBqudAQCLUICF9yL4,7421
139
+ services/storage_module.py,sha256=Wz2MzLvqs2D_bnBBgtnujYcAKK2V2KFMk8K21RoepSE,6972
140
+ digitalkin-0.3.2.dev14.dist-info/METADATA,sha256=03YpSbukSbDTJwmfICpNbhT_10U739n0pJL7vJgxk1A,29725
141
+ digitalkin-0.3.2.dev14.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
142
+ digitalkin-0.3.2.dev14.dist-info/top_level.txt,sha256=AYVIesKrO0jnedQ-Muog9JBehG81WeTCNeOFoJgwsgE,51
143
+ digitalkin-0.3.2.dev14.dist-info/RECORD,,
@@ -1,4 +1,5 @@
1
1
  base_server
2
2
  digitalkin
3
3
  modules
4
+ monitoring
4
5
  services