digitalkin 0.3.1.dev1__py3-none-any.whl → 0.3.2a2__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 (87) 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 +78 -36
  8. digitalkin/core/job_manager/taskiq_broker.py +8 -7
  9. digitalkin/core/job_manager/taskiq_job_manager.py +9 -5
  10. digitalkin/core/task_manager/base_task_manager.py +3 -1
  11. digitalkin/core/task_manager/surrealdb_repository.py +13 -7
  12. digitalkin/core/task_manager/task_executor.py +27 -10
  13. digitalkin/core/task_manager/task_session.py +133 -101
  14. digitalkin/grpc_servers/module_server.py +95 -171
  15. digitalkin/grpc_servers/module_servicer.py +133 -27
  16. digitalkin/grpc_servers/utils/grpc_client_wrapper.py +36 -10
  17. digitalkin/grpc_servers/utils/utility_schema_extender.py +106 -0
  18. digitalkin/models/__init__.py +1 -1
  19. digitalkin/models/core/job_manager_models.py +0 -8
  20. digitalkin/models/core/task_monitor.py +23 -1
  21. digitalkin/models/grpc_servers/models.py +95 -8
  22. digitalkin/models/module/__init__.py +26 -13
  23. digitalkin/models/module/base_types.py +61 -0
  24. digitalkin/models/module/module_context.py +279 -13
  25. digitalkin/models/module/module_types.py +29 -109
  26. digitalkin/models/module/setup_types.py +547 -0
  27. digitalkin/models/module/tool_cache.py +230 -0
  28. digitalkin/models/module/tool_reference.py +160 -0
  29. digitalkin/models/module/utility.py +167 -0
  30. digitalkin/models/services/cost.py +22 -1
  31. digitalkin/models/services/registry.py +77 -0
  32. digitalkin/modules/__init__.py +5 -1
  33. digitalkin/modules/_base_module.py +253 -90
  34. digitalkin/modules/archetype_module.py +6 -1
  35. digitalkin/modules/tool_module.py +6 -1
  36. digitalkin/modules/triggers/__init__.py +8 -0
  37. digitalkin/modules/triggers/healthcheck_ping_trigger.py +45 -0
  38. digitalkin/modules/triggers/healthcheck_services_trigger.py +63 -0
  39. digitalkin/modules/triggers/healthcheck_status_trigger.py +52 -0
  40. digitalkin/services/__init__.py +4 -0
  41. digitalkin/services/communication/__init__.py +7 -0
  42. digitalkin/services/communication/communication_strategy.py +87 -0
  43. digitalkin/services/communication/default_communication.py +104 -0
  44. digitalkin/services/communication/grpc_communication.py +264 -0
  45. digitalkin/services/cost/cost_strategy.py +36 -14
  46. digitalkin/services/cost/default_cost.py +61 -1
  47. digitalkin/services/cost/grpc_cost.py +98 -2
  48. digitalkin/services/filesystem/grpc_filesystem.py +9 -2
  49. digitalkin/services/registry/__init__.py +22 -1
  50. digitalkin/services/registry/default_registry.py +156 -4
  51. digitalkin/services/registry/exceptions.py +47 -0
  52. digitalkin/services/registry/grpc_registry.py +382 -0
  53. digitalkin/services/registry/registry_models.py +15 -0
  54. digitalkin/services/registry/registry_strategy.py +106 -4
  55. digitalkin/services/services_config.py +25 -3
  56. digitalkin/services/services_models.py +5 -1
  57. digitalkin/services/setup/default_setup.py +1 -1
  58. digitalkin/services/setup/grpc_setup.py +1 -1
  59. digitalkin/services/storage/grpc_storage.py +1 -1
  60. digitalkin/services/user_profile/__init__.py +11 -0
  61. digitalkin/services/user_profile/grpc_user_profile.py +2 -2
  62. digitalkin/services/user_profile/user_profile_strategy.py +0 -15
  63. digitalkin/utils/__init__.py +40 -0
  64. digitalkin/utils/conditional_schema.py +260 -0
  65. digitalkin/utils/dynamic_schema.py +487 -0
  66. digitalkin/utils/schema_splitter.py +290 -0
  67. {digitalkin-0.3.1.dev1.dist-info → digitalkin-0.3.2a2.dist-info}/METADATA +13 -13
  68. digitalkin-0.3.2a2.dist-info/RECORD +144 -0
  69. {digitalkin-0.3.1.dev1.dist-info → digitalkin-0.3.2a2.dist-info}/WHEEL +1 -1
  70. {digitalkin-0.3.1.dev1.dist-info → digitalkin-0.3.2a2.dist-info}/top_level.txt +1 -0
  71. modules/archetype_with_tools_module.py +232 -0
  72. modules/cpu_intensive_module.py +1 -1
  73. modules/dynamic_setup_module.py +338 -0
  74. modules/minimal_llm_module.py +1 -1
  75. modules/text_transform_module.py +1 -1
  76. monitoring/digitalkin_observability/__init__.py +46 -0
  77. monitoring/digitalkin_observability/http_server.py +150 -0
  78. monitoring/digitalkin_observability/interceptors.py +176 -0
  79. monitoring/digitalkin_observability/metrics.py +201 -0
  80. monitoring/digitalkin_observability/prometheus.py +137 -0
  81. monitoring/tests/test_metrics.py +172 -0
  82. services/filesystem_module.py +7 -5
  83. services/storage_module.py +4 -2
  84. digitalkin/grpc_servers/registry_server.py +0 -65
  85. digitalkin/grpc_servers/registry_servicer.py +0 -456
  86. digitalkin-0.3.1.dev1.dist-info/RECORD +0 -117
  87. {digitalkin-0.3.1.dev1.dist-info → digitalkin-0.3.2a2.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,290 @@
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
+ schema_defs = combined_schema.get("$defs", {})
21
+ if schema_defs:
22
+ for def_name, def_value in schema_defs.items():
23
+ if isinstance(def_value, dict):
24
+ defs_ui[def_name] = {}
25
+ cls._extract_ui_properties(def_value, defs_ui[def_name], schema_defs)
26
+
27
+ json_schema: dict[str, Any] = {}
28
+ ui_schema: dict[str, Any] = {}
29
+ cls._process_object(combined_schema, json_schema, ui_schema, defs_ui, schema_defs)
30
+ return json_schema, ui_schema
31
+
32
+ @classmethod
33
+ def _extract_ui_properties( # noqa: C901, PLR0912
34
+ cls,
35
+ source: dict[str, Any],
36
+ ui_target: dict[str, Any],
37
+ defs: dict[str, Any] | None = None,
38
+ ) -> None:
39
+ """Extract ui:* properties from source into ui_target recursively.
40
+
41
+ Args:
42
+ source: Source dict to extract from.
43
+ ui_target: Target dict for ui properties.
44
+ defs: The $defs dictionary to resolve $ref references.
45
+ """
46
+ for key, value in source.items():
47
+ if key.startswith("ui:"):
48
+ ui_target[key] = value
49
+ elif key == "properties" and isinstance(value, dict):
50
+ for prop_name, prop_value in value.items():
51
+ if isinstance(prop_value, dict):
52
+ prop_ui: dict[str, Any] = {}
53
+ cls._extract_ui_properties(prop_value, prop_ui, defs)
54
+ if prop_ui:
55
+ ui_target[prop_name] = prop_ui
56
+ elif key == "items" and isinstance(value, dict):
57
+ items_ui: dict[str, Any] = {}
58
+ cls._extract_ui_properties(value, items_ui, defs)
59
+ if items_ui:
60
+ ui_target["items"] = items_ui
61
+ elif key in {"allOf", "oneOf", "anyOf"} and isinstance(value, list):
62
+ # For oneOf/anyOf, create a mirrored structure in ui_target
63
+ if key in {"oneOf", "anyOf"}:
64
+ ui_target[key] = []
65
+ for item in value:
66
+ if isinstance(item, dict):
67
+ item_ui: dict[str, Any] = {}
68
+ cls._extract_ui_properties(item, item_ui, defs)
69
+ ui_target[key].append(item_ui)
70
+ else: # allOf - merge into parent
71
+ for item in value:
72
+ if isinstance(item, dict):
73
+ cls._extract_ui_properties(item, ui_target, defs)
74
+ elif key in {"if", "then", "else"} and isinstance(value, dict):
75
+ cls._extract_ui_properties(value, ui_target, defs)
76
+ elif key == "$ref" and isinstance(value, str) and defs is not None and value.startswith("#/$defs/"):
77
+ # Resolve $ref and extract UI properties from the referenced definition
78
+ def_name = value[8:]
79
+ if def_name in defs:
80
+ cls._extract_ui_properties(defs[def_name], ui_target, defs)
81
+
82
+ @classmethod
83
+ def _process_object( # noqa: C901, PLR0912, PLR0915
84
+ cls,
85
+ source: dict[str, Any],
86
+ json_target: dict[str, Any],
87
+ ui_target: dict[str, Any],
88
+ defs_ui: dict[str, dict[str, Any]],
89
+ schema_defs: dict[str, Any] | None = None,
90
+ ) -> None:
91
+ """Process an object, splitting json and ui properties.
92
+
93
+ Args:
94
+ source: Source object to process.
95
+ json_target: Target dict for json schema.
96
+ ui_target: Target dict for ui schema.
97
+ defs_ui: Pre-extracted UI properties from $defs.
98
+ schema_defs: The original $defs dictionary to resolve $ref in _extract_ui_properties.
99
+ """
100
+ for key, value in source.items():
101
+ if key.startswith("ui:"):
102
+ ui_target[key] = value
103
+ elif key == "properties" and isinstance(value, dict):
104
+ json_target["properties"] = {}
105
+ for prop_name, prop_value in value.items():
106
+ if isinstance(prop_value, dict):
107
+ # Skip hidden fields
108
+ if prop_value.get("hidden") is True:
109
+ continue
110
+ json_target["properties"][prop_name] = {}
111
+ prop_ui: dict[str, Any] = {}
112
+ cls._process_property(prop_value, json_target["properties"][prop_name], prop_ui, defs_ui)
113
+ if prop_ui:
114
+ ui_target[prop_name] = prop_ui
115
+ else:
116
+ json_target["properties"][prop_name] = prop_value
117
+ elif key == "$defs" and isinstance(value, dict):
118
+ json_target["$defs"] = {}
119
+ for def_name, def_value in value.items():
120
+ if isinstance(def_value, dict):
121
+ json_target["$defs"][def_name] = {}
122
+ cls._strip_ui_properties(def_value, json_target["$defs"][def_name])
123
+ else:
124
+ json_target["$defs"][def_name] = def_value
125
+ elif key == "items" and isinstance(value, dict):
126
+ json_target["items"] = {}
127
+ items_ui: dict[str, Any] = {}
128
+ cls._process_property(value, json_target["items"], items_ui, defs_ui)
129
+ if items_ui:
130
+ ui_target["items"] = items_ui
131
+ elif key == "allOf" and isinstance(value, list):
132
+ json_target["allOf"] = []
133
+ for item in value:
134
+ if isinstance(item, dict):
135
+ item_json_all_of: dict[str, Any] = {}
136
+ cls._strip_ui_properties(item, item_json_all_of)
137
+ json_target["allOf"].append(item_json_all_of)
138
+ # Extract UI properties from allOf item
139
+ cls._extract_ui_properties(item, ui_target, schema_defs)
140
+ else:
141
+ json_target["allOf"].append(item)
142
+ elif key in {"oneOf", "anyOf"} and isinstance(value, list):
143
+ json_target[key] = []
144
+ ui_target[key] = [] # Mirror structure in ui_schema
145
+ for item in value:
146
+ if isinstance(item, dict):
147
+ item_json_oneof_anyof: dict[str, Any] = {}
148
+ cls._strip_ui_properties(item, item_json_oneof_anyof)
149
+ json_target[key].append(item_json_oneof_anyof)
150
+ # Extract UI properties into a separate dict for this variant
151
+ item_ui_oneof_anyof: dict[str, Any] = {}
152
+ cls._extract_ui_properties(item, item_ui_oneof_anyof, schema_defs)
153
+ ui_target[key].append(item_ui_oneof_anyof)
154
+ else:
155
+ json_target[key].append(item)
156
+ elif key in {"if", "then", "else"} and isinstance(value, dict):
157
+ json_target[key] = {}
158
+ cls._strip_ui_properties(value, json_target[key])
159
+ # Extract UI properties from conditional
160
+ cls._extract_ui_properties(value, ui_target, schema_defs)
161
+ elif key == "hidden":
162
+ # Strip hidden key from json schema
163
+ continue
164
+ else:
165
+ json_target[key] = value
166
+
167
+ @classmethod
168
+ def _process_property( # noqa: C901, PLR0912
169
+ cls,
170
+ source: dict[str, Any],
171
+ json_target: dict[str, Any],
172
+ ui_target: dict[str, Any],
173
+ defs_ui: dict[str, dict[str, Any]],
174
+ ) -> None:
175
+ """Process a property, resolving $ref for UI properties.
176
+
177
+ Args:
178
+ source: Source property dict.
179
+ json_target: Target dict for json schema.
180
+ ui_target: Target dict for ui schema.
181
+ defs_ui: Pre-extracted UI properties from $defs.
182
+ """
183
+ if "$ref" in source:
184
+ ref_path = source["$ref"]
185
+ if ref_path.startswith("#/$defs/"):
186
+ def_name = ref_path[8:]
187
+ if def_name in defs_ui:
188
+ ui_target.update(defs_ui[def_name])
189
+
190
+ for key, value in source.items():
191
+ if key.startswith("ui:"):
192
+ ui_target[key] = value
193
+ elif key == "properties" and isinstance(value, dict):
194
+ json_target["properties"] = {}
195
+ for prop_name, prop_value in value.items():
196
+ if isinstance(prop_value, dict):
197
+ # Skip hidden fields
198
+ if prop_value.get("hidden") is True:
199
+ continue
200
+ json_target["properties"][prop_name] = {}
201
+ prop_ui: dict[str, Any] = {}
202
+ cls._process_property(prop_value, json_target["properties"][prop_name], prop_ui, defs_ui)
203
+ if prop_ui:
204
+ ui_target[prop_name] = prop_ui
205
+ else:
206
+ json_target["properties"][prop_name] = prop_value
207
+ elif key == "items" and isinstance(value, dict):
208
+ json_target["items"] = {}
209
+ items_ui: dict[str, Any] = {}
210
+ cls._process_property(value, json_target["items"], items_ui, defs_ui)
211
+ if items_ui:
212
+ ui_target["items"] = items_ui
213
+ elif key in {"oneOf", "anyOf"} and isinstance(value, list):
214
+ json_target[key] = []
215
+ ui_target[key] = [] # Mirror structure in ui_schema
216
+ for item in value:
217
+ if isinstance(item, dict):
218
+ item_json_oneof_anyof: dict[str, Any] = {}
219
+ cls._strip_ui_properties(item, item_json_oneof_anyof)
220
+ json_target[key].append(item_json_oneof_anyof)
221
+ # Extract UI properties for this variant
222
+ item_ui_oneof_anyof: dict[str, Any] = {}
223
+ ref_path = item.get("$ref", "")
224
+ if ref_path.startswith("#/$defs/") and ref_path[8:] in defs_ui:
225
+ item_ui_oneof_anyof.update(defs_ui[ref_path[8:]])
226
+ ui_target[key].append(item_ui_oneof_anyof)
227
+ else:
228
+ json_target[key].append(item)
229
+ elif key == "hidden":
230
+ # Strip hidden key from json schema
231
+ continue
232
+ else:
233
+ json_target[key] = value
234
+
235
+ @classmethod
236
+ def _strip_ui_properties(cls, source: dict[str, Any], json_target: dict[str, Any]) -> None: # noqa: C901, PLR0912
237
+ """Copy source to json_target, stripping ui:* properties.
238
+
239
+ Args:
240
+ source: Source dict.
241
+ json_target: Target dict without ui:* properties.
242
+ """
243
+ for key, value in source.items():
244
+ if key.startswith("ui:") or key == "hidden":
245
+ continue
246
+ if key == "properties" and isinstance(value, dict):
247
+ json_target["properties"] = {}
248
+ for prop_name, prop_value in value.items():
249
+ if isinstance(prop_value, dict):
250
+ # Skip hidden fields
251
+ if prop_value.get("hidden") is True:
252
+ continue
253
+ json_target["properties"][prop_name] = {}
254
+ cls._strip_ui_properties(prop_value, json_target["properties"][prop_name])
255
+ else:
256
+ json_target["properties"][prop_name] = prop_value
257
+ elif key == "$defs" and isinstance(value, dict):
258
+ json_target["$defs"] = {}
259
+ for def_name, def_value in value.items():
260
+ if isinstance(def_value, dict):
261
+ json_target["$defs"][def_name] = {}
262
+ cls._strip_ui_properties(def_value, json_target["$defs"][def_name])
263
+ else:
264
+ json_target["$defs"][def_name] = def_value
265
+ elif key == "items" and isinstance(value, dict):
266
+ json_target["items"] = {}
267
+ cls._strip_ui_properties(value, json_target["items"])
268
+ elif key == "allOf" and isinstance(value, list):
269
+ json_target["allOf"] = []
270
+ for item in value:
271
+ if isinstance(item, dict):
272
+ item_json_all_of: dict[str, Any] = {}
273
+ cls._strip_ui_properties(item, item_json_all_of)
274
+ json_target["allOf"].append(item_json_all_of)
275
+ else:
276
+ json_target["allOf"].append(item)
277
+ elif key in {"oneOf", "anyOf"} and isinstance(value, list):
278
+ json_target[key] = []
279
+ for item in value:
280
+ if isinstance(item, dict):
281
+ item_json_oneof_anyof: dict[str, Any] = {}
282
+ cls._strip_ui_properties(item, item_json_oneof_anyof)
283
+ json_target[key].append(item_json_oneof_anyof)
284
+ else:
285
+ json_target[key].append(item)
286
+ elif key in {"if", "then", "else"} and isinstance(value, dict):
287
+ json_target[key] = {}
288
+ cls._strip_ui_properties(value, json_target[key])
289
+ else:
290
+ json_target[key] = value
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: digitalkin
3
- Version: 0.3.1.dev1
3
+ Version: 0.3.2a2
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
@@ -434,35 +434,35 @@ License: Attribution-NonCommercial-ShareAlike 4.0 International
434
434
  Creative Commons may be contacted at creativecommons.org.
435
435
  https://creativecommons.org/licenses/by-nc-sa/4.0/
436
436
 
437
- Project-URL: Homepage, https://github.com/DigitalKin-ai/digitalkin
438
437
  Project-URL: Documentation, https://github.com/DigitalKin-ai/digitalkin
438
+ Project-URL: Homepage, https://github.com/DigitalKin-ai/digitalkin
439
439
  Project-URL: Issues, https://github.com/DigitalKin-ai/digitalkin/issues
440
- Keywords: digitalkin,kin,agent,gprc,sdk
440
+ Keywords: agent,digitalkin,gprc,kin,sdk
441
441
  Classifier: Development Status :: 3 - Alpha
442
442
  Classifier: Intended Audience :: Developers
443
+ Classifier: License :: Other/Proprietary License
443
444
  Classifier: Operating System :: OS Independent
444
- Classifier: Topic :: Software Development :: Libraries
445
- Classifier: Programming Language :: Python
445
+ Classifier: Programming Language :: Python :: 3 :: Only
446
446
  Classifier: Programming Language :: Python :: 3.10
447
447
  Classifier: Programming Language :: Python :: 3.11
448
448
  Classifier: Programming Language :: Python :: 3.12
449
449
  Classifier: Programming Language :: Python :: 3.13
450
- Classifier: Programming Language :: Python :: 3 :: Only
451
- Classifier: License :: Other/Proprietary License
450
+ Classifier: Programming Language :: Python
451
+ Classifier: Topic :: Software Development :: Libraries
452
452
  Requires-Python: >=3.10
453
453
  Description-Content-Type: text/markdown
454
454
  License-File: LICENSE
455
- Requires-Dist: digitalkin-proto==0.2.0.dev4
455
+ Requires-Dist: agentic-mesh-protocol==0.2.1.dev1
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
- Requires-Dist: pydantic>=2.12.4
460
- Requires-Dist: surrealdb>=1.0.6
459
+ Requires-Dist: pydantic>=2.12.5
460
+ Requires-Dist: surrealdb>=1.0.7
461
461
  Provides-Extra: taskiq
462
- Requires-Dist: rstream>=0.40.0; extra == "taskiq"
462
+ Requires-Dist: rstream>=0.40.1; 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.11.20; 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,144 @@
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=Ax_aYd7TkL4irPiANTsxbqr0Wwn-cJMP8BvBEqQjCzE,193
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=XWI5xOtaiQ20UeiYYfh6GWgKj8bssG5GVupbKeYVfWU,15280
19
+ digitalkin/core/job_manager/taskiq_broker.py,sha256=ORGg2QSLDaWiCqie8ZGkbcDq7LDuWWSx7hg-SoUv99E,11544
20
+ digitalkin/core/job_manager/taskiq_job_manager.py,sha256=i18uu2Cikd0thaEizWK_ZSsD7G27IuqBIW57929G9wU,21432
21
+ digitalkin/core/task_manager/__init__.py,sha256=k9i-qIoee_1yXogyQolaVFDUQBIZU3ENbYKtjrCNmTQ,31
22
+ digitalkin/core/task_manager/base_task_manager.py,sha256=9njUerhlJ7s3KA7IKgpVC3DYxq_HMHSqOcDhtZKkDiU,19439
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=rUNPGK_flDdOl3-ritZif97zYHxQ7SIt_Aq_P2dymTQ,10092
26
+ digitalkin/core/task_manager/task_executor.py,sha256=ByON-CxRBMbaDUgL6z5XYjbrUwV9X4DGktUBa0jqIPE,12005
27
+ digitalkin/core/task_manager/task_session.py,sha256=iujisx6SHTP7qqQxZbMHG9xQTiDsGOsblg35zsejt30,14739
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=JE1hn1JTUPFakQOmhcTLTohC9n5-kVYUZD6ZKZKQBx8,7035
31
+ digitalkin/grpc_servers/module_servicer.py,sha256=eK3mZoyBt-Ym46mJUe1xqI0-cv3qLjre2-PAe8PoG60,23734
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=5y26tvoJWlKs1xljI3Rx35QcD7M4ebuEssuucfeI-ic,3626
35
+ digitalkin/grpc_servers/utils/grpc_error_handler.py,sha256=0wPEU4713_ZlgIilaeXJV2bi90tHwYO1myDrSLeenKk,1848
36
+ digitalkin/grpc_servers/utils/utility_schema_extender.py,sha256=79zivSnkuJbtvgNuLQ0jLlVjpnkOyNV8HT694P-x2Bo,4064
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=yo-WKEXu8slKnahfdtUV6ISIf5fYrTVDuvh60nQLrEw,3207
50
+ digitalkin/models/grpc_servers/__init__.py,sha256=0tA71nPSXgRrh9DoLvx-TSwZXdYIRUEItoadpTL1cTo,42
51
+ digitalkin/models/grpc_servers/models.py,sha256=kuoH2QTZwbUa8HsB5e7hm9X2S5tCqKArFKhYxGmaozE,13917
52
+ digitalkin/models/grpc_servers/types.py,sha256=rQ78s4nAet2jy-NIDj_PUWriT0kuGHr_w6ELjmjgBao,539
53
+ digitalkin/models/module/__init__.py,sha256=YDOsaX-4fYaZR6Cs3ksTr6pa0LSzo7lvSzWftLZJuwU,913
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=pcIiNd_Je3rK4xRrfSykYQJUxJR8RCepjdL_76CNlWo,14234
57
+ digitalkin/models/module/module_types.py,sha256=C9azCNBk76xMa-Mww8_6AiwQR8MLAsEyUOvBYxytovI,739
58
+ digitalkin/models/module/setup_types.py,sha256=Jh6zkSoKTdRTU2YsSoLGrVquLcYHvSeFUX9jpEiZyLU,19268
59
+ digitalkin/models/module/tool_cache.py,sha256=5e7PFm2-GavgDPXk9Gkw-i6DO7D2rWtsD4U5a8DRS04,6760
60
+ digitalkin/models/module/tool_reference.py,sha256=sgbLeIJfDr4xIgB8V_W0q2yQgekc_CqSSN3S1xr09Mk,5559
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=yA0gnv1g16u21d_InZwD8TckXwQaOvMizeLZAyqTGHo,2139
64
+ digitalkin/models/services/registry.py,sha256=bCdVpsiu8bqKL-7P5r3OPmllZj4MAtpsfsdlsg5TAww,1887
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=OfN3pqd5qu_WsttBcr94dX7skyoJhwHD-Rlp2sYDyAk,23635
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=yRicJTOjEnDNLNfpN3ZjGL14ZF5oD18e9kZKAdekB4U,2709
84
+ digitalkin/services/communication/default_communication.py,sha256=f1MA6MxIw-uuGy9sqVCcIqDAxykD7IvzjLhCm047v3E,3249
85
+ digitalkin/services/communication/grpc_communication.py,sha256=EoR8_CQcrRG-e2v8U1DSwQOYSaauBJb7Pt7uHOxhBnM,9442
86
+ digitalkin/services/cost/__init__.py,sha256=sD_a5LrnLluASOC5m5vgIqjaco-MzZJd6XhillIBHr0,400
87
+ digitalkin/services/cost/cost_strategy.py,sha256=cJV226YMXEG2tDhtnP1HaJvTR-n4xlfZDnVqu8JPOWw,3229
88
+ digitalkin/services/cost/default_cost.py,sha256=5VCb8CsIoKuvknkhiiLFGG7ECljA8_rH1WVCs8fRqHc,6020
89
+ digitalkin/services/cost/grpc_cost.py,sha256=_yWpKMjQ2Enz7qco80sU7yDOJGlNlhE160tBReJbwHM,9104
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=7vUR0n8_1KmG35mXsSWgfFRIGsb6_m9A3NAOIHDfHyw,12384
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=Uzt5bmdjl64dNsJk44f_d0ofJKL2piRa8b9E2Lcn1Vk,4838
99
+ digitalkin/services/registry/exceptions.py,sha256=tAcVXioCzDqfBvxB_P0uQpaK_LDLrFb0KpymROuqs-8,1371
100
+ digitalkin/services/registry/grpc_registry.py,sha256=pbDneAYt03y8mkNZFsyJYt5lwL8vXgKoAClwYVh4zjE,13805
101
+ digitalkin/services/registry/registry_models.py,sha256=DJEwMJg5_BewpgHDtY8xIGWj9jA9H07iYgHLCv81giY,331
102
+ digitalkin/services/registry/registry_strategy.py,sha256=Y2KiFR6VoioJN1Ms2HIUtqJueQTkhfZwi24Oim4ywV8,3239
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=_RXXALotIr_JToSQdhwDi3eizghKz9KrQtvC8Um80H8,808
119
+ digitalkin/utils/arg_parser.py,sha256=wzscRlE1Qp1gGl-lAJlkkwnbU1O2oezj6BwK_BZFBIk,3158
120
+ digitalkin/utils/conditional_schema.py,sha256=ZyGvY-DWkM_d0OuLElUpqnvUeDgZ2hXX3dFnKXbgL5k,8373
121
+ digitalkin/utils/development_mode_action.py,sha256=2hznh0ajW_4ZTysfoc0Y49161f_PQPATRgNk8NAn1_o,1623
122
+ digitalkin/utils/dynamic_schema.py,sha256=y5csxjuqVHjWDpnTUzxbcUuI_wou9-ibRVHQlBs_btY,15275
123
+ digitalkin/utils/llm_ready_schema.py,sha256=JjMug_lrQllqFoanaC091VgOqwAd-_YzcpqFlS7p778,2375
124
+ digitalkin/utils/package_discover.py,sha256=sa6Zp5Kape1Zr4iYiNrnZxiHDnqM06ODk6yfWHom53w,13465
125
+ digitalkin/utils/schema_splitter.py,sha256=lMaReyLD4kGAZSQ9MSxpNZ4D4luWANVArFqNWV_bsko,14040
126
+ digitalkin-0.3.2a2.dist-info/licenses/LICENSE,sha256=Ies4HFv2r2hzDRakJYxk3Y60uDFLiG-orIgeTpstnIo,20327
127
+ modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
+ modules/archetype_with_tools_module.py,sha256=kJkVhAFWG0aDDqzupOXOnV3l8j3z5bEdWos_6Z9rUP8,7303
129
+ modules/cpu_intensive_module.py,sha256=GZlirQDZdYuXrI46sv1q4RNAHZjL4EptHVQTvgK9zz8,8363
130
+ modules/dynamic_setup_module.py,sha256=tKvUWZdlYZkfAgKR0mLuFcLiFGKpVgpsz10LeJ6B2QI,11410
131
+ modules/minimal_llm_module.py,sha256=N9aIzZQI-miyH4AB4xTmGHpMvdSLnYyXNOD4Z3YFzis,11216
132
+ modules/text_transform_module.py,sha256=MfhI_Ki1U6qk379ne6oazNEu4PhO4R3cRezEcr0nGPw,7251
133
+ monitoring/digitalkin_observability/__init__.py,sha256=PXG4xbMbmiVNkIaVG899H9CHvcld7c0bSbaLHqKeDeo,1247
134
+ monitoring/digitalkin_observability/http_server.py,sha256=kFbWFQvaqq2VVwwqDozV0pRPe7RkAXsa9xCWruMlOyk,4527
135
+ monitoring/digitalkin_observability/interceptors.py,sha256=Sx6o0s8FSMfIGKVAtjVl7l-sIygP45od6eITl7DroBU,6219
136
+ monitoring/digitalkin_observability/metrics.py,sha256=XhVRE8y6tbzJqxIzEHa5MT3I0k3hgpxjzZf_R6SyjbQ,7553
137
+ monitoring/digitalkin_observability/prometheus.py,sha256=gDmM9ySaVwPAe7Yg84pLxmEKu0Cudezi8pK3RtqWs6g,5457
138
+ monitoring/tests/test_metrics.py,sha256=ugnYfAwqBPO6zA8z4afKTlyBWECTivacYSN-URQCn2E,5856
139
+ services/filesystem_module.py,sha256=U4dgqtuDadaXz8PJ1d_uQ_1EPncBqudAQCLUICF9yL4,7421
140
+ services/storage_module.py,sha256=Wz2MzLvqs2D_bnBBgtnujYcAKK2V2KFMk8K21RoepSE,6972
141
+ digitalkin-0.3.2a2.dist-info/METADATA,sha256=H_Vj7SYn9cFu8jpO3-zwsiQFB_NC4x_xsQT1I746tYU,29721
142
+ digitalkin-0.3.2a2.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
143
+ digitalkin-0.3.2a2.dist-info/top_level.txt,sha256=AYVIesKrO0jnedQ-Muog9JBehG81WeTCNeOFoJgwsgE,51
144
+ digitalkin-0.3.2a2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,4 +1,5 @@
1
1
  base_server
2
2
  digitalkin
3
3
  modules
4
+ monitoring
4
5
  services