griptape-nodes 0.57.1__py3-none-any.whl → 0.58.0__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.
- griptape_nodes/api_client/__init__.py +9 -0
- griptape_nodes/api_client/client.py +279 -0
- griptape_nodes/api_client/request_client.py +273 -0
- griptape_nodes/app/app.py +57 -150
- griptape_nodes/bootstrap/utils/python_subprocess_executor.py +1 -1
- griptape_nodes/bootstrap/workflow_executors/local_session_workflow_executor.py +22 -50
- griptape_nodes/bootstrap/workflow_executors/local_workflow_executor.py +6 -1
- griptape_nodes/bootstrap/workflow_executors/subprocess_workflow_executor.py +27 -46
- griptape_nodes/bootstrap/workflow_executors/utils/subprocess_script.py +7 -0
- griptape_nodes/bootstrap/workflow_publishers/local_workflow_publisher.py +3 -1
- griptape_nodes/bootstrap/workflow_publishers/subprocess_workflow_publisher.py +3 -1
- griptape_nodes/bootstrap/workflow_publishers/utils/subprocess_script.py +16 -1
- griptape_nodes/common/node_executor.py +466 -0
- griptape_nodes/drivers/storage/base_storage_driver.py +0 -11
- griptape_nodes/drivers/storage/griptape_cloud_storage_driver.py +7 -25
- griptape_nodes/drivers/storage/local_storage_driver.py +2 -2
- griptape_nodes/exe_types/connections.py +37 -9
- griptape_nodes/exe_types/core_types.py +1 -1
- griptape_nodes/exe_types/node_types.py +115 -22
- griptape_nodes/machines/control_flow.py +48 -7
- griptape_nodes/machines/parallel_resolution.py +98 -29
- griptape_nodes/machines/sequential_resolution.py +61 -22
- griptape_nodes/node_library/library_registry.py +24 -1
- griptape_nodes/node_library/workflow_registry.py +38 -2
- griptape_nodes/retained_mode/events/execution_events.py +8 -1
- griptape_nodes/retained_mode/events/flow_events.py +90 -3
- griptape_nodes/retained_mode/events/node_events.py +17 -10
- griptape_nodes/retained_mode/events/workflow_events.py +5 -0
- griptape_nodes/retained_mode/griptape_nodes.py +16 -219
- griptape_nodes/retained_mode/managers/config_manager.py +0 -46
- griptape_nodes/retained_mode/managers/engine_identity_manager.py +225 -74
- griptape_nodes/retained_mode/managers/flow_manager.py +1276 -230
- griptape_nodes/retained_mode/managers/library_manager.py +7 -8
- griptape_nodes/retained_mode/managers/node_manager.py +197 -9
- griptape_nodes/retained_mode/managers/secrets_manager.py +26 -0
- griptape_nodes/retained_mode/managers/session_manager.py +264 -227
- griptape_nodes/retained_mode/managers/settings.py +4 -38
- griptape_nodes/retained_mode/managers/static_files_manager.py +3 -3
- griptape_nodes/retained_mode/managers/version_compatibility_manager.py +135 -6
- griptape_nodes/retained_mode/managers/workflow_manager.py +206 -78
- griptape_nodes/servers/mcp.py +23 -15
- griptape_nodes/utils/async_utils.py +36 -0
- griptape_nodes/utils/dict_utils.py +8 -2
- griptape_nodes/version_compatibility/versions/v0_39_0/modified_parameters_set_removal.py +11 -6
- griptape_nodes/version_compatibility/workflow_versions/v0_7_0/local_executor_argument_addition.py +12 -5
- {griptape_nodes-0.57.1.dist-info → griptape_nodes-0.58.0.dist-info}/METADATA +4 -3
- {griptape_nodes-0.57.1.dist-info → griptape_nodes-0.58.0.dist-info}/RECORD +49 -47
- {griptape_nodes-0.57.1.dist-info → griptape_nodes-0.58.0.dist-info}/WHEEL +1 -1
- griptape_nodes/retained_mode/utils/engine_identity.py +0 -245
- griptape_nodes/servers/ws_request_manager.py +0 -268
- {griptape_nodes-0.57.1.dist-info → griptape_nodes-0.58.0.dist-info}/entry_points.txt +0 -0
|
@@ -2,11 +2,13 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import TYPE_CHECKING
|
|
4
4
|
|
|
5
|
+
import semver
|
|
6
|
+
|
|
5
7
|
from griptape_nodes.retained_mode.events.app_events import (
|
|
6
8
|
GetEngineVersionRequest,
|
|
7
9
|
GetEngineVersionResultSuccess,
|
|
8
10
|
)
|
|
9
|
-
from griptape_nodes.retained_mode.griptape_nodes import GriptapeNodes
|
|
11
|
+
from griptape_nodes.retained_mode.griptape_nodes import GriptapeNodes
|
|
10
12
|
from griptape_nodes.retained_mode.managers.library_lifecycle.library_status import LibraryStatus
|
|
11
13
|
from griptape_nodes.retained_mode.managers.version_compatibility_manager import (
|
|
12
14
|
LibraryVersionCompatibilityCheck,
|
|
@@ -22,8 +24,11 @@ class ModifiedParametersSetRemovalCheck(LibraryVersionCompatibilityCheck):
|
|
|
22
24
|
|
|
23
25
|
def applies_to_library(self, library_data: LibrarySchema) -> bool:
|
|
24
26
|
"""Check applies to libraries with engine_version < 0.39.0."""
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
try:
|
|
28
|
+
library_version = semver.VersionInfo.parse(library_data.metadata.engine_version)
|
|
29
|
+
return library_version < semver.VersionInfo(0, 39, 0)
|
|
30
|
+
except Exception:
|
|
31
|
+
return False
|
|
27
32
|
|
|
28
33
|
def check_library(self, library_data: LibrarySchema) -> list[LibraryVersionCompatibilityIssue]:
|
|
29
34
|
"""Perform the modified_parameters_set deprecation check."""
|
|
@@ -33,14 +38,14 @@ class ModifiedParametersSetRemovalCheck(LibraryVersionCompatibilityCheck):
|
|
|
33
38
|
# If we can't get current engine version, skip version-specific warnings
|
|
34
39
|
return []
|
|
35
40
|
|
|
36
|
-
current_engine_version =
|
|
41
|
+
current_engine_version = semver.VersionInfo(
|
|
37
42
|
engine_version_result.major, engine_version_result.minor, engine_version_result.patch
|
|
38
43
|
)
|
|
39
44
|
|
|
40
45
|
# Determine which phase we're in based on current engine version
|
|
41
46
|
library_version_str = library_data.metadata.engine_version
|
|
42
47
|
|
|
43
|
-
if current_engine_version >=
|
|
48
|
+
if current_engine_version >= semver.VersionInfo(0, 39, 0):
|
|
44
49
|
# 0.39+ Release: Parameter removed, reject incompatible libraries
|
|
45
50
|
return [
|
|
46
51
|
LibraryVersionCompatibilityIssue(
|
|
@@ -56,7 +61,7 @@ class ModifiedParametersSetRemovalCheck(LibraryVersionCompatibilityCheck):
|
|
|
56
61
|
severity=LibraryStatus.UNUSABLE,
|
|
57
62
|
),
|
|
58
63
|
]
|
|
59
|
-
if current_engine_version >=
|
|
64
|
+
if current_engine_version >= semver.VersionInfo(0, 38, 0):
|
|
60
65
|
# 0.38 Release: Warning about upcoming removal in 0.39
|
|
61
66
|
return [
|
|
62
67
|
LibraryVersionCompatibilityIssue(
|
griptape_nodes/version_compatibility/workflow_versions/v0_7_0/local_executor_argument_addition.py
CHANGED
|
@@ -4,7 +4,8 @@ from __future__ import annotations
|
|
|
4
4
|
|
|
5
5
|
from typing import TYPE_CHECKING
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
import semver
|
|
8
|
+
|
|
8
9
|
from griptape_nodes.retained_mode.managers.version_compatibility_manager import (
|
|
9
10
|
WorkflowVersionCompatibilityCheck,
|
|
10
11
|
WorkflowVersionCompatibilityIssue,
|
|
@@ -20,16 +21,22 @@ class LocalExecutorArgumentAddition(WorkflowVersionCompatibilityCheck):
|
|
|
20
21
|
|
|
21
22
|
def applies_to_workflow(self, workflow_metadata: WorkflowMetadata) -> bool:
|
|
22
23
|
"""Apply this check to workflows with schema version < 0.7.0."""
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
try:
|
|
25
|
+
workflow_version = semver.VersionInfo.parse(workflow_metadata.schema_version)
|
|
26
|
+
return workflow_version < semver.VersionInfo(0, 7, 0)
|
|
27
|
+
except Exception:
|
|
28
|
+
return False
|
|
25
29
|
|
|
26
30
|
def check_workflow(self, workflow_metadata: WorkflowMetadata) -> list[WorkflowVersionCompatibilityIssue]:
|
|
27
31
|
"""Check workflow schema version compatibility."""
|
|
28
32
|
issues = []
|
|
29
33
|
|
|
30
|
-
|
|
34
|
+
try:
|
|
35
|
+
workflow_schema_version = semver.VersionInfo.parse(workflow_metadata.schema_version)
|
|
36
|
+
except Exception:
|
|
37
|
+
return issues
|
|
31
38
|
|
|
32
|
-
if workflow_schema_version
|
|
39
|
+
if workflow_schema_version < semver.VersionInfo(0, 7, 0):
|
|
33
40
|
issues.append(
|
|
34
41
|
WorkflowVersionCompatibilityIssue(
|
|
35
42
|
message=f"Workflow schema version {workflow_metadata.schema_version} is older than version 0.7.0. "
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: griptape-nodes
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.58.0
|
|
4
4
|
Summary: Add your description here
|
|
5
|
-
Requires-Dist: griptape>=1.8.
|
|
5
|
+
Requires-Dist: griptape>=1.8.5
|
|
6
6
|
Requires-Dist: pydantic>=2.10.6
|
|
7
7
|
Requires-Dist: python-dotenv>=1.0.1
|
|
8
8
|
Requires-Dist: xdg-base-dirs>=6.0.2
|
|
@@ -20,8 +20,9 @@ Requires-Dist: binaryornot>=0.4.4
|
|
|
20
20
|
Requires-Dist: pillow>=11.3.0
|
|
21
21
|
Requires-Dist: watchfiles>=1.1.0
|
|
22
22
|
Requires-Dist: typer>=0.15.0
|
|
23
|
-
Requires-Dist: huggingface-hub>=0.28.0
|
|
23
|
+
Requires-Dist: huggingface-hub[xf-xet]>=0.28.0
|
|
24
24
|
Requires-Dist: rich>=14.1.0
|
|
25
|
+
Requires-Dist: semver>=3.0.4
|
|
25
26
|
Requires-Dist: austin-dist>=3.7.0 ; extra == 'profiling'
|
|
26
27
|
Requires-Python: >=3.12.0, <3.13
|
|
27
28
|
Provides-Extra: profiling
|
|
@@ -1,24 +1,27 @@
|
|
|
1
1
|
griptape_nodes/__init__.py,sha256=WxWjICLxwuyZGDpPUyCmj047GbN7PIspi4YMWgmrrQc,671
|
|
2
2
|
griptape_nodes/__main__.py,sha256=fJhor6_1A27abwbnceyNheONP1iXkPzjjsV5jBEfF2M,144
|
|
3
|
+
griptape_nodes/api_client/__init__.py,sha256=9iyLcPbcXjxxLhhCSYQ5zgvlwxceyrNXDE8YhOIVH8g,216
|
|
4
|
+
griptape_nodes/api_client/client.py,sha256=3qmTLMeVTFeyO-XlxTUUWwsEgG41R8swE64EccotaJQ,9664
|
|
5
|
+
griptape_nodes/api_client/request_client.py,sha256=2_fi1RN8BE89SVmLl_JRAkZvNTNqc7b4rFUfW-mWYJI,9620
|
|
3
6
|
griptape_nodes/app/.python-version,sha256=e1X45ntWI8S-8_ppEojalDfXnTq6FW3kjUgdsyrH0W0,5
|
|
4
7
|
griptape_nodes/app/__init__.py,sha256=DB-DTsgcNnbmEClXEouwzGhrmo3gHBCWXB9BkPGpdQI,90
|
|
5
|
-
griptape_nodes/app/app.py,sha256=
|
|
8
|
+
griptape_nodes/app/app.py,sha256=q1dRMnMxFcinyI36ehhU08buni1scBhU1zm2U6WUVDo,15333
|
|
6
9
|
griptape_nodes/app/watch.py,sha256=hKVP_SuV9C17bH1h9o4uIVTKH-IL_-0iyHaNYmILTWU,1594
|
|
7
10
|
griptape_nodes/bootstrap/__init__.py,sha256=ENv3SIzQ9TtlRrg1y4e4CnoBpJaFpFSkNpTFBV8X5Ls,25
|
|
8
11
|
griptape_nodes/bootstrap/utils/__init__.py,sha256=tlNEApJLZazcBNhxkTdup4URwznnz4nZxjSaRfFrTBM,31
|
|
9
|
-
griptape_nodes/bootstrap/utils/python_subprocess_executor.py,sha256=
|
|
12
|
+
griptape_nodes/bootstrap/utils/python_subprocess_executor.py,sha256=8T_hqABisEBWemh4__XpnrR0Edbli4RQc_uF5jL0lMY,4294
|
|
10
13
|
griptape_nodes/bootstrap/workflow_executors/__init__.py,sha256=pyjN81-eLtjyECFYLXOtMCixiiI9qBi5yald86iM7Ek,34
|
|
11
|
-
griptape_nodes/bootstrap/workflow_executors/local_session_workflow_executor.py,sha256=
|
|
12
|
-
griptape_nodes/bootstrap/workflow_executors/local_workflow_executor.py,sha256=
|
|
13
|
-
griptape_nodes/bootstrap/workflow_executors/subprocess_workflow_executor.py,sha256=
|
|
14
|
+
griptape_nodes/bootstrap/workflow_executors/local_session_workflow_executor.py,sha256=Xgnp5JKemMhCBX1nhfQ2hksWJx7JtQKBWEAHArcAhZo,16858
|
|
15
|
+
griptape_nodes/bootstrap/workflow_executors/local_workflow_executor.py,sha256=816m9wf_lOUj7GXGAH4DbQBMT_JEjkUbvg3btzzm-ns,10114
|
|
16
|
+
griptape_nodes/bootstrap/workflow_executors/subprocess_workflow_executor.py,sha256=XKxK01j7LdvZIYCF788SJr3gQGBKXSFb6T_DADfN0Mw,12861
|
|
14
17
|
griptape_nodes/bootstrap/workflow_executors/utils/__init__.py,sha256=IEz4GHM4-w_u6VpLemrj-V38v8aZJinr5Wya9ucEad0,40
|
|
15
|
-
griptape_nodes/bootstrap/workflow_executors/utils/subprocess_script.py,sha256=
|
|
18
|
+
griptape_nodes/bootstrap/workflow_executors/utils/subprocess_script.py,sha256=LCW6P3s3DTG_cUvG41l4GxRyj43c1p9yYlcJMACeW3s,1659
|
|
16
19
|
griptape_nodes/bootstrap/workflow_executors/workflow_executor.py,sha256=MBbUFdbvsYOJl_ebxxSCxq1R37StghQ1gAdMkIcGtbI,1145
|
|
17
20
|
griptape_nodes/bootstrap/workflow_publishers/__init__.py,sha256=7ncdCGtEArgTBgSFDNCSBoIIAJpzlph1wTd2wipwvvM,35
|
|
18
|
-
griptape_nodes/bootstrap/workflow_publishers/local_workflow_publisher.py,sha256=
|
|
19
|
-
griptape_nodes/bootstrap/workflow_publishers/subprocess_workflow_publisher.py,sha256=
|
|
21
|
+
griptape_nodes/bootstrap/workflow_publishers/local_workflow_publisher.py,sha256=f2jQL1RO5HnC0_gZVlx4UOTo5X7pqUAkgmJj_tliAcg,1788
|
|
22
|
+
griptape_nodes/bootstrap/workflow_publishers/subprocess_workflow_publisher.py,sha256=O9gK7BvBE-5pMSG70rXLjibbUKfJuce85hWcs6iYyXg,2879
|
|
20
23
|
griptape_nodes/bootstrap/workflow_publishers/utils/__init__.py,sha256=Kj-IIxgg01ihyUmLWgZu4ZJ6M7V1fK4Efw9quCcu-ZM,41
|
|
21
|
-
griptape_nodes/bootstrap/workflow_publishers/utils/subprocess_script.py,sha256=
|
|
24
|
+
griptape_nodes/bootstrap/workflow_publishers/utils/subprocess_script.py,sha256=5NfuaGrL-97Wb6JORRhR-zU4ooj3FaxOjqJizGb96Y0,2060
|
|
22
25
|
griptape_nodes/cli/__init__.py,sha256=HuXHtxqDMtpYRokxiFYuNB7R5EgkOshPil273kTmgNg,33
|
|
23
26
|
griptape_nodes/cli/commands/__init__.py,sha256=8EbS15rm9xrbcPocuQO2RmOwSD1BBwa8iDgPSdsvzuU,35
|
|
24
27
|
griptape_nodes/cli/commands/config.py,sha256=zh5rs2vCY_x9dEUK2jtQQJGcjlJzhpJJ-EgHHvkrvdg,2302
|
|
@@ -31,31 +34,32 @@ griptape_nodes/cli/main.py,sha256=A9k-4vdxOrm3Z0NNtDWLmvSW5ecvtIXInLR0zn2AERA,17
|
|
|
31
34
|
griptape_nodes/cli/shared.py,sha256=JnUt-i7_hi81rqkT2fpVBJMTmODNiGFd7-Cv0Xt9QOU,2600
|
|
32
35
|
griptape_nodes/common/__init__.py,sha256=HTbJfTpu6-nU91zFCZW2qUNeW6bitNWNDayWqH6fpbA,22
|
|
33
36
|
griptape_nodes/common/directed_graph.py,sha256=hk3C_S4GiG4FZOmufjebb-6_2SwQrbyTidYTSbCDWMU,2361
|
|
37
|
+
griptape_nodes/common/node_executor.py,sha256=bMM6hiaNfwN6wxkL43xqklSC9gzt2Ml3EINx2J6hw5s,20921
|
|
34
38
|
griptape_nodes/drivers/__init__.py,sha256=tHmiFQn6uJyFVhC2PrqHgRUH3d3yDsqMQpWqRasmaqA,42
|
|
35
39
|
griptape_nodes/drivers/storage/__init__.py,sha256=_7p8vJt3YnnF6sD3Uxxw38c-gazuMIHSS-m3G6sa2Qk,208
|
|
36
|
-
griptape_nodes/drivers/storage/base_storage_driver.py,sha256=
|
|
37
|
-
griptape_nodes/drivers/storage/griptape_cloud_storage_driver.py,sha256
|
|
38
|
-
griptape_nodes/drivers/storage/local_storage_driver.py,sha256=
|
|
40
|
+
griptape_nodes/drivers/storage/base_storage_driver.py,sha256=47PrMzxOuJhV2ee4CbPT7YOqR2MjlHr3VxhGON_ygio,3945
|
|
41
|
+
griptape_nodes/drivers/storage/griptape_cloud_storage_driver.py,sha256=wFAssDP4pE06-KJXzKfpykSDjwDWgPlz0hWfOfnL-zg,6854
|
|
42
|
+
griptape_nodes/drivers/storage/local_storage_driver.py,sha256=6FqtT4I4lZTRSa_7gQG7hDHShVKYySWXaQUCe6i-RmM,3674
|
|
39
43
|
griptape_nodes/drivers/storage/storage_backend.py,sha256=3QBIwrgPc1krBIiPYLoK2swhIPDiKJnnucOEdyx7y3c,184
|
|
40
44
|
griptape_nodes/exe_types/__init__.py,sha256=wGGwKGX9-TSarUFbXpDvdU_J7eXIbWTBl_NCLOZa-G8,32
|
|
41
|
-
griptape_nodes/exe_types/connections.py,sha256=
|
|
42
|
-
griptape_nodes/exe_types/core_types.py,sha256=
|
|
45
|
+
griptape_nodes/exe_types/connections.py,sha256=Cjt-RLjYhkTUHTrYlNIUZrYVzsyH7OXo6JO2O6exI8k,13853
|
|
46
|
+
griptape_nodes/exe_types/core_types.py,sha256=9QNMFintNgP5iqmrEbbKUHS2QHjsEEP3GL_wbaVTkBg,81327
|
|
43
47
|
griptape_nodes/exe_types/flow.py,sha256=pCeTrx8yrUgLw1U9yQxC7arzJjyP2vag-pG0QTKut-M,5716
|
|
44
|
-
griptape_nodes/exe_types/node_types.py,sha256=
|
|
48
|
+
griptape_nodes/exe_types/node_types.py,sha256=JAf5m7XZTvwtZdldj7oljRD5JOOg6Akse6HML_qB1O8,81833
|
|
45
49
|
griptape_nodes/exe_types/param_components/__init__.py,sha256=ocm75WnsgiD6ozKVGFhoH9cQe_FEzeF2osxrRujOes0,60
|
|
46
50
|
griptape_nodes/exe_types/param_components/execution_status_component.py,sha256=eeUcUOOraGa6sDH_zg_QnGPoP0K-pm3fu90-KAtrmq8,5532
|
|
47
51
|
griptape_nodes/exe_types/type_validator.py,sha256=RTz1vX09jzQpHhozITMJ0siOZUXvsERDhrApjdaM1WM,1120
|
|
48
52
|
griptape_nodes/machines/__init__.py,sha256=v0jkwr-CFOLmfEYUQvX8BKQLOdvhSsA6toXkdHcPGUE,30
|
|
49
|
-
griptape_nodes/machines/control_flow.py,sha256=
|
|
53
|
+
griptape_nodes/machines/control_flow.py,sha256=INMj9HU-WOgd-e9HD3-rkbGGCePw_ImviLfSn2MeiGo,17340
|
|
50
54
|
griptape_nodes/machines/dag_builder.py,sha256=Fijbe46OsZQztcXGlvel2VUtn-CFbJm7Ui3_zCeKNXA,9932
|
|
51
55
|
griptape_nodes/machines/fsm.py,sha256=WNo2w5c9Gbgzo5odcvbRT02EhCMFf3n3WYbZ0GYk1WI,2553
|
|
52
|
-
griptape_nodes/machines/parallel_resolution.py,sha256=
|
|
53
|
-
griptape_nodes/machines/sequential_resolution.py,sha256=
|
|
56
|
+
griptape_nodes/machines/parallel_resolution.py,sha256=l4ijlef_yi638YFudOCR6Hspvbzko_-P331k08j2Lx0,29487
|
|
57
|
+
griptape_nodes/machines/sequential_resolution.py,sha256=x0qi21iCtb6rkc5keeuAk0_MlFFzD4QwuHsHM47YXHw,18827
|
|
54
58
|
griptape_nodes/mcp_server/__init__.py,sha256=GSpJWqE4lICaryhsQR1okeMH2x6j1bBL0HVxtr52WLg,42
|
|
55
59
|
griptape_nodes/node_library/__init__.py,sha256=U3FcSdmq6UW7qt6E3Up3NWKvUEn5_5lqL-u5qbzfxMQ,28
|
|
56
60
|
griptape_nodes/node_library/advanced_node_library.py,sha256=B1ZaxuFIzQ6tx_3MLIxlsHuahthEC1Hw_t6K_ByIdzs,2104
|
|
57
|
-
griptape_nodes/node_library/library_registry.py,sha256=
|
|
58
|
-
griptape_nodes/node_library/workflow_registry.py,sha256=
|
|
61
|
+
griptape_nodes/node_library/library_registry.py,sha256=s77u0NbESOzaB29-PzQ1EKrR1WyQKOQTRGaKx3ORXoY,13888
|
|
62
|
+
griptape_nodes/node_library/workflow_registry.py,sha256=q7CdlBVptccSu43AUd6eJvKvAvNiZt4wvtoMi2sqsBY,10522
|
|
59
63
|
griptape_nodes/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
60
64
|
griptape_nodes/retained_mode/__init__.py,sha256=X12DKL6KhLsiRTPIlrPj2h76_sJ0q0eH4r0kMQkodm0,29
|
|
61
65
|
griptape_nodes/retained_mode/events/__init__.py,sha256=7B1C-c0jVvnShtHJ2lfX6BZPE0U1DgQwg1e4DorhKG0,22
|
|
@@ -66,14 +70,14 @@ griptape_nodes/retained_mode/events/base_events.py,sha256=UPEMkoU7lUtm8L_wdeTp8Y
|
|
|
66
70
|
griptape_nodes/retained_mode/events/config_events.py,sha256=Y03YMLoJTXy0Sz6tq-6lOIs37CmXn1Br3GYAinl02nY,7070
|
|
67
71
|
griptape_nodes/retained_mode/events/connection_events.py,sha256=QjHAp0SeCbRSG-dF_nU_CPaOcSKItq2DWJ_FHWgF1b4,4744
|
|
68
72
|
griptape_nodes/retained_mode/events/context_events.py,sha256=-FIwjI0hJodDhfM4BF-3GTRycu80v1TlSSOX34oA9nA,2122
|
|
69
|
-
griptape_nodes/retained_mode/events/execution_events.py,sha256=
|
|
70
|
-
griptape_nodes/retained_mode/events/flow_events.py,sha256=
|
|
73
|
+
griptape_nodes/retained_mode/events/execution_events.py,sha256=MQY-igbmaPCM45fcWl2-U6I66cUbI6VjxGYvtrIpjyw,10802
|
|
74
|
+
griptape_nodes/retained_mode/events/flow_events.py,sha256=QLHzD3IvdKzuA8LC_PlqDfFDhfVSfiyaYMQ_Xwe7_Qo,21284
|
|
71
75
|
griptape_nodes/retained_mode/events/generate_request_payload_schemas.py,sha256=PQ0QRZAUBljSIGjB8QhYUeRmSrfmLsJ6XVcygJKi13I,1102
|
|
72
76
|
griptape_nodes/retained_mode/events/library_events.py,sha256=9KVMHA5VazY3fXEIm31Zmy-rJ43AxNgna4SzVPmy8Pg,17629
|
|
73
77
|
griptape_nodes/retained_mode/events/logger_events.py,sha256=jYlxzPomgCsJuPtJ0znWBhD8QJfC8qC4xfChDiuVuyg,705
|
|
74
78
|
griptape_nodes/retained_mode/events/mcp_events.py,sha256=51OlMZVcabdcIxBb_ojvrHtq2jAzZA31pooPBKaApyg,10734
|
|
75
79
|
griptape_nodes/retained_mode/events/model_events.py,sha256=EbSjIpJrQi2RuRRFJsoioAyMchAba-vEOXvLBCR0xi0,9227
|
|
76
|
-
griptape_nodes/retained_mode/events/node_events.py,sha256=
|
|
80
|
+
griptape_nodes/retained_mode/events/node_events.py,sha256=jTcO5-Mw52fAJUzVc6UaXwRKHfO2HO0hnNYcGg9phVo,30321
|
|
77
81
|
griptape_nodes/retained_mode/events/object_events.py,sha256=cJaqEU73Lzf1RRxJrFqEpl8eTr-gDhKpXKywJ-vVCJQ,2631
|
|
78
82
|
griptape_nodes/retained_mode/events/os_events.py,sha256=X0mmyk_r5t6upaQ8eWClD7J25AiX2ggsAuxMZSW9Vx0,8085
|
|
79
83
|
griptape_nodes/retained_mode/events/parameter_events.py,sha256=32dDaVe9oV_fNRtz5xv4_9GP_yr_EXUMsRi2i1rTSNI,19276
|
|
@@ -84,16 +88,16 @@ griptape_nodes/retained_mode/events/static_file_events.py,sha256=c8kKkrxAPZxrE9f
|
|
|
84
88
|
griptape_nodes/retained_mode/events/sync_events.py,sha256=AoxBZLPPdzx4S5CiOJVRDebHnQb349Dq5jVO8Fh_sn8,2016
|
|
85
89
|
griptape_nodes/retained_mode/events/validation_events.py,sha256=H2yWoHp2t7QwGV_fDQXRy7JojYnK4k6SOAlEvRYST_Q,3062
|
|
86
90
|
griptape_nodes/retained_mode/events/variable_events.py,sha256=fnl_sY8GWI_R4UJQTEJSlmsyCD9TiEW0U2UD2seBabs,10587
|
|
87
|
-
griptape_nodes/retained_mode/events/workflow_events.py,sha256=
|
|
88
|
-
griptape_nodes/retained_mode/griptape_nodes.py,sha256=
|
|
91
|
+
griptape_nodes/retained_mode/events/workflow_events.py,sha256=FjARlC9wwWFMqtugEkPOEf_y9eyEhfzP-MZSl4TGRBI,22530
|
|
92
|
+
griptape_nodes/retained_mode/griptape_nodes.py,sha256=jB8Ufn13JbanahY3pc_43C9-DS-p4YAX_h8OvkOLgSw,18826
|
|
89
93
|
griptape_nodes/retained_mode/managers/__init__.py,sha256=OTXysKusqYCQeAYwnVj4PbE3MxvAUTq9xOZT6vUE3JA,24
|
|
90
94
|
griptape_nodes/retained_mode/managers/agent_manager.py,sha256=GeBAMGnSB7wnkA6LGwBxR7WVXOc028X6B-Y4d2Two1I,15447
|
|
91
95
|
griptape_nodes/retained_mode/managers/arbitrary_code_exec_manager.py,sha256=3IRIrpKR62MvTdGWfQa1ARUVxCmMUNtzUU4xMcQdlCY,1891
|
|
92
|
-
griptape_nodes/retained_mode/managers/config_manager.py,sha256=
|
|
96
|
+
griptape_nodes/retained_mode/managers/config_manager.py,sha256=WfzvFDPyboHgsCMpVGER6Ar1OHyPD_827LQx9xaUsMM,25573
|
|
93
97
|
griptape_nodes/retained_mode/managers/context_manager.py,sha256=eb44_CAZhCg2iYIoodlAPpYc67tG3sHyq9dPNoiq_1s,23031
|
|
94
|
-
griptape_nodes/retained_mode/managers/engine_identity_manager.py,sha256
|
|
98
|
+
griptape_nodes/retained_mode/managers/engine_identity_manager.py,sha256=-31364A03kU0YmAx3nM7nHdWfKnkej5Cawt_Plbwa68,10526
|
|
95
99
|
griptape_nodes/retained_mode/managers/event_manager.py,sha256=n8qt5kefgEk-5uba9n96yHeUzB_3zJukqG_qo2pvhqo,12910
|
|
96
|
-
griptape_nodes/retained_mode/managers/flow_manager.py,sha256=
|
|
100
|
+
griptape_nodes/retained_mode/managers/flow_manager.py,sha256=_ozGVx5binKfoMx_kuB3qLkDgOJVI_gDqYfpVeSaZ94,202232
|
|
97
101
|
griptape_nodes/retained_mode/managers/library_lifecycle/__init__.py,sha256=Iq79VxTdETiExBfFWXceJggDZqS6X3OkzXE9XwFclVw,1340
|
|
98
102
|
griptape_nodes/retained_mode/managers/library_lifecycle/data_models.py,sha256=fvAP0VaYGPHYl_Kg3RL4gdJlpqya8UTvpP-C49r950k,6723
|
|
99
103
|
griptape_nodes/retained_mode/managers/library_lifecycle/library_directory.py,sha256=Ywno93eVJH4sAtQ1dgHG2Pw9B3vw8fN8oAL0gn_l6OI,14836
|
|
@@ -106,10 +110,10 @@ griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/packa
|
|
|
106
110
|
griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/sandbox.py,sha256=XgG7whE74zWDxX1pOvhASW0pwjOei1EDLvIH19xdzT0,6117
|
|
107
111
|
griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance.py,sha256=cCGr-MQ1RlVBiUTZepYEKdVhPgC4ebcYrmpv8rI3VeM,894
|
|
108
112
|
griptape_nodes/retained_mode/managers/library_lifecycle/library_status.py,sha256=K3UEBzAdCY9wphyBbLxDYP0Q43aYvhLZ_Pz7_SzcPec,443
|
|
109
|
-
griptape_nodes/retained_mode/managers/library_manager.py,sha256=
|
|
113
|
+
griptape_nodes/retained_mode/managers/library_manager.py,sha256=UWumU3HSLdECEhfUscOIredXZVrYympOzh4_c3V0rTM,100104
|
|
110
114
|
griptape_nodes/retained_mode/managers/mcp_manager.py,sha256=BxNVDYUAn5-iylGzURqVZq1DRintrIK5T6q2X_rxm_U,15596
|
|
111
115
|
griptape_nodes/retained_mode/managers/model_manager.py,sha256=tjrzCYaacFsmcTMplxt2IDis9hkrVa7wuu3NQq9Sba0,44519
|
|
112
|
-
griptape_nodes/retained_mode/managers/node_manager.py,sha256=
|
|
116
|
+
griptape_nodes/retained_mode/managers/node_manager.py,sha256=udPMF0OJWYQa0_D8CtDenFdIqpwWgk6Yqij8yQUoid4,159928
|
|
113
117
|
griptape_nodes/retained_mode/managers/object_manager.py,sha256=NDbDSGI4PLU78xXBK0WGbk1Ejh5BN21I7dJOXbgl1bU,12814
|
|
114
118
|
griptape_nodes/retained_mode/managers/operation_manager.py,sha256=lTkMZlaacTgtV5oV-YF6HG8xsx9V_LwX1eg074WTs2k,20137
|
|
115
119
|
griptape_nodes/retained_mode/managers/os_manager.py,sha256=uQ0jRGXOimdmcdnwZUMAJnEdqvE33p7w5bBXjPN20fw,40128
|
|
@@ -122,23 +126,21 @@ griptape_nodes/retained_mode/managers/resource_manager.py,sha256=c1JETPMseisT1zu
|
|
|
122
126
|
griptape_nodes/retained_mode/managers/resource_types/__init__.py,sha256=ganDZJriNgrxvLPs45X48XpLK8ifzljVpD95xeCPzO8,80
|
|
123
127
|
griptape_nodes/retained_mode/managers/resource_types/cpu_resource.py,sha256=YHjU6_Pm41wGvdMlRzNkQS9yJY8wD2NN2-WwOFpVpUo,3830
|
|
124
128
|
griptape_nodes/retained_mode/managers/resource_types/os_resource.py,sha256=ImgkOQI_br4yI3EY777D93NR20al8b4q9IocqWESjkw,3082
|
|
125
|
-
griptape_nodes/retained_mode/managers/secrets_manager.py,sha256=
|
|
126
|
-
griptape_nodes/retained_mode/managers/session_manager.py,sha256=
|
|
127
|
-
griptape_nodes/retained_mode/managers/settings.py,sha256=
|
|
128
|
-
griptape_nodes/retained_mode/managers/static_files_manager.py,sha256=
|
|
129
|
+
griptape_nodes/retained_mode/managers/secrets_manager.py,sha256=2DU2002dgr3XipnAhmjqLXH82ZFb8wlGpTWX8pl4f7E,7722
|
|
130
|
+
griptape_nodes/retained_mode/managers/session_manager.py,sha256=u3OEir9rjwG7GFM4MA5crKwcwq6F-lCUKlFzxlFU4co,14085
|
|
131
|
+
griptape_nodes/retained_mode/managers/settings.py,sha256=4wJte850nr_M4laXFbEjWkmN5Ysuo18t5fujBofktOc,9343
|
|
132
|
+
griptape_nodes/retained_mode/managers/static_files_manager.py,sha256=dDeX1Z5cmviNPkEBkF2MWYryLacJOh0TTpu-t7oCHps,11283
|
|
129
133
|
griptape_nodes/retained_mode/managers/sync_manager.py,sha256=-m2krEh2YtGs8iAPc8bhFGX8JqjeM5kEV1rnCmcj_yk,21247
|
|
130
134
|
griptape_nodes/retained_mode/managers/variable_manager.py,sha256=TnuqHSRK9Yiu_EtKxQksF9SyyQb72lbFQuTQZdpBxeE,24116
|
|
131
|
-
griptape_nodes/retained_mode/managers/version_compatibility_manager.py,sha256=
|
|
132
|
-
griptape_nodes/retained_mode/managers/workflow_manager.py,sha256=
|
|
135
|
+
griptape_nodes/retained_mode/managers/version_compatibility_manager.py,sha256=3GEsJs1yNub8NP_ZNBgUEbaqHJXte8-u3Uapim_x0OU,14709
|
|
136
|
+
griptape_nodes/retained_mode/managers/workflow_manager.py,sha256=eUrgBMLeKqpiU07-mMH3Z96vIflKWjXNnd-WCQbHftY,200444
|
|
133
137
|
griptape_nodes/retained_mode/retained_mode.py,sha256=wGMkZX7clW7o4bA-t5ovPDK5cQaPQo_4_Yrvy4KxwL4,57615
|
|
134
138
|
griptape_nodes/retained_mode/utils/__init__.py,sha256=W5dvv8YwvVVq_8eVTgMd3Z_VB_Dtq1sIIVq8745QH_I,52
|
|
135
|
-
griptape_nodes/retained_mode/utils/engine_identity.py,sha256=PZmdlYM69-B-6Z1F4iJfZyVm2twJY5cSGoiUJCMj0xU,7846
|
|
136
139
|
griptape_nodes/retained_mode/utils/name_generator.py,sha256=IZLahtfP3XC79XApLdGoZ0IKKUkgiITpd16RK7NbyEs,2524
|
|
137
140
|
griptape_nodes/retained_mode/variable_types.py,sha256=GVrSWMB3gEDAufSPOBXbNfIRhA9M43MoxpqLyuIg_HE,435
|
|
138
141
|
griptape_nodes/servers/__init__.py,sha256=JCmorB8tQUu_kQ8hSRhgw4VsOqsC0iZjZ-mCXYy9ZOQ,60
|
|
139
|
-
griptape_nodes/servers/mcp.py,sha256=
|
|
142
|
+
griptape_nodes/servers/mcp.py,sha256=du0xBErKpAMS2sbe8HBTAHUhii4BmBGK-7-pbLOs--U,5452
|
|
140
143
|
griptape_nodes/servers/static.py,sha256=j-RiY10i8OhQRYi22eeq5rZ7I2An-DzIPA96rF5Tm4o,6975
|
|
141
|
-
griptape_nodes/servers/ws_request_manager.py,sha256=UpXOKNq_VauQmJ0Rx0C7OrzcwjeCoDfjpx3IE38NgsE,10949
|
|
142
144
|
griptape_nodes/traits/__init__.py,sha256=bTLXTiZTJz2z15RRLoPI4nvLnNW9FiLcKL_2pT4E10g,32
|
|
143
145
|
griptape_nodes/traits/add_param_button.py,sha256=27RZDVLMD0HmRF6hjfz7iV7LBau92vMc_d2eD2Ey8fA,649
|
|
144
146
|
griptape_nodes/traits/button.py,sha256=cnI2YXYpz9Y3WlmZW64IgaTISRBwbGKMmM65wf1W8p0,13422
|
|
@@ -157,8 +159,8 @@ griptape_nodes/traits/traits.json,sha256=JwFsOaFfLeR1ohcyh6XApc5N2-mWMPGSaYbpA-m
|
|
|
157
159
|
griptape_nodes/updater/__init__.py,sha256=eWalSt_N5a0RPT2YkXeIee_YPiCL47OB0G9GB0gn3pY,2522
|
|
158
160
|
griptape_nodes/updater/__main__.py,sha256=lhMMctbBeni57ximitvkwqJ1TQzk79Jg9w0rkKjtp5Y,79
|
|
159
161
|
griptape_nodes/utils/__init__.py,sha256=kzDZW_VPyxWJFonM3kYTl7A91_JmtHPK0Io4KPLTYT4,122
|
|
160
|
-
griptape_nodes/utils/async_utils.py,sha256=
|
|
161
|
-
griptape_nodes/utils/dict_utils.py,sha256=
|
|
162
|
+
griptape_nodes/utils/async_utils.py,sha256=4IrW8Ub8iJ2QB9yguZtfN1EB9B5nXHS7jbDaLOHWso0,4844
|
|
163
|
+
griptape_nodes/utils/dict_utils.py,sha256=1VP2EoyOP0nswoAgjPehpA0izpkygWRX7L--ArN6LV8,7314
|
|
162
164
|
griptape_nodes/utils/image_preview.py,sha256=NhYIqohRF9vbFpWIEvZHdPLLPK_JdUBvC4RvNAsSa1w,4480
|
|
163
165
|
griptape_nodes/utils/metaclasses.py,sha256=RSKyAvZppH_hbMugmUmIr8QqOg1sYY4uRNfQybD4O8Q,287
|
|
164
166
|
griptape_nodes/utils/uv_utils.py,sha256=ZK37LmacKfxMVKkcIOyJ35HOXgV6sFWE9CzgKPmaRU0,519
|
|
@@ -166,11 +168,11 @@ griptape_nodes/utils/version_utils.py,sha256=Y-HJfJW6Jxuz_jOnHxMiy-pmMauHRnY-7BO
|
|
|
166
168
|
griptape_nodes/version_compatibility/__init__.py,sha256=JMz1sB7Zsj6pS1S5sdsPR0kn89s1A0sB0kFIvygJYfo,74
|
|
167
169
|
griptape_nodes/version_compatibility/versions/__init__.py,sha256=PWSxM28LPUdBdRPA98j4RUWvuZ4NqfX1day2VU6SqPw,74
|
|
168
170
|
griptape_nodes/version_compatibility/versions/v0_39_0/__init__.py,sha256=21iKlFpsmBW4WsAexSD0WMAJnsYmMq2sIbDeYC831fc,62
|
|
169
|
-
griptape_nodes/version_compatibility/versions/v0_39_0/modified_parameters_set_removal.py,sha256=
|
|
171
|
+
griptape_nodes/version_compatibility/versions/v0_39_0/modified_parameters_set_removal.py,sha256=nYGBKDDXIPerHBD15VSwUzXWr7O2dyqRufhAkj5ftpg,5357
|
|
170
172
|
griptape_nodes/version_compatibility/workflow_versions/__init__.py,sha256=z5XDgkizoNByCXpyo34hfsJKFsWlOHbD6hgzfYH9ubc,52
|
|
171
173
|
griptape_nodes/version_compatibility/workflow_versions/v0_7_0/__init__.py,sha256=IzPPmGK86h2swfGGTOHyVcBIlOng6SjgWQzlbf3ngmo,51
|
|
172
|
-
griptape_nodes/version_compatibility/workflow_versions/v0_7_0/local_executor_argument_addition.py,sha256=
|
|
173
|
-
griptape_nodes-0.
|
|
174
|
-
griptape_nodes-0.
|
|
175
|
-
griptape_nodes-0.
|
|
176
|
-
griptape_nodes-0.
|
|
174
|
+
griptape_nodes/version_compatibility/workflow_versions/v0_7_0/local_executor_argument_addition.py,sha256=Y8n1wzI5a-ZCHK5eiwtnnD3zF5lN-52R67rxYn0hxyI,2069
|
|
175
|
+
griptape_nodes-0.58.0.dist-info/WHEEL,sha256=I8-bO5cg2sb8TH6ZM6EgCP87Y1cV_f9UGgWnfAhVOZI,78
|
|
176
|
+
griptape_nodes-0.58.0.dist-info/entry_points.txt,sha256=qvevqd3BVbAV5TcantnAm0ouqaqYKhsRO3pkFymWLWM,82
|
|
177
|
+
griptape_nodes-0.58.0.dist-info/METADATA,sha256=zbvjKxo7pKYzffX1nvD4ZEio6pn7JPn3cf43sq4Gz9Y,5076
|
|
178
|
+
griptape_nodes-0.58.0.dist-info/RECORD,,
|
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
"""Manages engine identity for multiple engines per machine.
|
|
2
|
-
|
|
3
|
-
Handles engine ID, name storage, and generation for unique engine identification.
|
|
4
|
-
Supports multiple engines with selection via GTN_ENGINE_ID environment variable.
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
import json
|
|
8
|
-
import os
|
|
9
|
-
import uuid
|
|
10
|
-
from datetime import UTC, datetime
|
|
11
|
-
from pathlib import Path
|
|
12
|
-
|
|
13
|
-
from xdg_base_dirs import xdg_data_home
|
|
14
|
-
|
|
15
|
-
from .name_generator import generate_engine_name
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class EngineIdentity:
|
|
19
|
-
"""Manages engine identity for multiple engines per machine."""
|
|
20
|
-
|
|
21
|
-
_ENGINE_DATA_FILE = "engines.json"
|
|
22
|
-
|
|
23
|
-
@classmethod
|
|
24
|
-
def _get_engine_data_dir(cls) -> Path:
|
|
25
|
-
"""Get the XDG data directory for engine identity storage."""
|
|
26
|
-
return xdg_data_home() / "griptape_nodes"
|
|
27
|
-
|
|
28
|
-
@classmethod
|
|
29
|
-
def _get_engine_data_file(cls) -> Path:
|
|
30
|
-
"""Get the path to the engine data storage file."""
|
|
31
|
-
return cls._get_engine_data_dir() / cls._ENGINE_DATA_FILE
|
|
32
|
-
|
|
33
|
-
@classmethod
|
|
34
|
-
def _load_engines_data(cls) -> dict:
|
|
35
|
-
"""Load engines data from storage.
|
|
36
|
-
|
|
37
|
-
Returns:
|
|
38
|
-
dict: Engines data structure with engines array and default_engine_id
|
|
39
|
-
"""
|
|
40
|
-
engine_data_file = cls._get_engine_data_file()
|
|
41
|
-
|
|
42
|
-
if engine_data_file.exists():
|
|
43
|
-
try:
|
|
44
|
-
with engine_data_file.open("r") as f:
|
|
45
|
-
data = json.load(f)
|
|
46
|
-
if isinstance(data, dict) and "engines" in data:
|
|
47
|
-
return data
|
|
48
|
-
except (json.JSONDecodeError, OSError):
|
|
49
|
-
pass
|
|
50
|
-
|
|
51
|
-
return {"engines": [], "default_engine_id": None}
|
|
52
|
-
|
|
53
|
-
@classmethod
|
|
54
|
-
def _save_engines_data(cls, engines_data: dict) -> None:
|
|
55
|
-
"""Save engines data to storage.
|
|
56
|
-
|
|
57
|
-
Args:
|
|
58
|
-
engines_data: Engines data structure to save
|
|
59
|
-
"""
|
|
60
|
-
engine_data_dir = cls._get_engine_data_dir()
|
|
61
|
-
engine_data_dir.mkdir(parents=True, exist_ok=True)
|
|
62
|
-
|
|
63
|
-
engine_data_file = cls._get_engine_data_file()
|
|
64
|
-
with engine_data_file.open("w") as f:
|
|
65
|
-
json.dump(engines_data, f, indent=2)
|
|
66
|
-
|
|
67
|
-
@classmethod
|
|
68
|
-
def _get_selected_engine_id(cls) -> str | None:
|
|
69
|
-
"""Get the selected engine ID from environment variable or default.
|
|
70
|
-
|
|
71
|
-
Returns:
|
|
72
|
-
str | None: The selected engine ID or None if not specified
|
|
73
|
-
"""
|
|
74
|
-
return os.getenv("GTN_ENGINE_ID")
|
|
75
|
-
|
|
76
|
-
@classmethod
|
|
77
|
-
def _find_engine_by_id(cls, engines_data: dict, engine_id: str) -> dict | None:
|
|
78
|
-
"""Find an engine by ID in the engines data.
|
|
79
|
-
|
|
80
|
-
Args:
|
|
81
|
-
engines_data: The engines data structure
|
|
82
|
-
engine_id: The engine ID to find
|
|
83
|
-
|
|
84
|
-
Returns:
|
|
85
|
-
dict | None: The engine data if found, None otherwise
|
|
86
|
-
"""
|
|
87
|
-
for engine in engines_data.get("engines", []):
|
|
88
|
-
if engine.get("id") == engine_id:
|
|
89
|
-
return engine
|
|
90
|
-
return None
|
|
91
|
-
|
|
92
|
-
@classmethod
|
|
93
|
-
def get_engine_data(cls) -> dict:
|
|
94
|
-
"""Get the current engine data, creating default if it doesn't exist.
|
|
95
|
-
|
|
96
|
-
Returns:
|
|
97
|
-
dict: The current engine data
|
|
98
|
-
"""
|
|
99
|
-
engines_data = cls._load_engines_data()
|
|
100
|
-
|
|
101
|
-
# Determine which engine to use
|
|
102
|
-
selected_engine_id = cls._get_selected_engine_id()
|
|
103
|
-
|
|
104
|
-
if selected_engine_id:
|
|
105
|
-
# Use specified engine ID
|
|
106
|
-
engine_data = cls._find_engine_by_id(engines_data, selected_engine_id)
|
|
107
|
-
if engine_data:
|
|
108
|
-
return engine_data
|
|
109
|
-
# If specified engine not found, create it
|
|
110
|
-
engine_data = {
|
|
111
|
-
"id": selected_engine_id,
|
|
112
|
-
"name": generate_engine_name(),
|
|
113
|
-
"created_at": datetime.now(tz=UTC).isoformat(),
|
|
114
|
-
}
|
|
115
|
-
else:
|
|
116
|
-
# Use default engine (first one) or create new one
|
|
117
|
-
if engines_data.get("engines"):
|
|
118
|
-
default_id = engines_data.get("default_engine_id")
|
|
119
|
-
if default_id:
|
|
120
|
-
engine_data = cls._find_engine_by_id(engines_data, default_id)
|
|
121
|
-
if engine_data:
|
|
122
|
-
return engine_data
|
|
123
|
-
# Fall back to first engine
|
|
124
|
-
return engines_data["engines"][0]
|
|
125
|
-
|
|
126
|
-
# Create new engine
|
|
127
|
-
engine_data = {
|
|
128
|
-
"id": str(uuid.uuid4()),
|
|
129
|
-
"name": generate_engine_name(),
|
|
130
|
-
"created_at": datetime.now(tz=UTC).isoformat(),
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
# Add or update engine in the data structure
|
|
134
|
-
cls._add_or_update_engine(engine_data)
|
|
135
|
-
return engine_data
|
|
136
|
-
|
|
137
|
-
@classmethod
|
|
138
|
-
def _add_or_update_engine(cls, engine_data: dict) -> None:
|
|
139
|
-
"""Add or update an engine in the engines data structure.
|
|
140
|
-
|
|
141
|
-
Args:
|
|
142
|
-
engine_data: The engine data to add or update
|
|
143
|
-
"""
|
|
144
|
-
engines_data = cls._load_engines_data()
|
|
145
|
-
|
|
146
|
-
# Find existing engine
|
|
147
|
-
engine_id = engine_data["id"]
|
|
148
|
-
existing_engine = cls._find_engine_by_id(engines_data, engine_id)
|
|
149
|
-
|
|
150
|
-
if existing_engine:
|
|
151
|
-
# Update existing engine
|
|
152
|
-
existing_engine.update(engine_data)
|
|
153
|
-
existing_engine["updated_at"] = datetime.now(tz=UTC).isoformat()
|
|
154
|
-
else:
|
|
155
|
-
# Add new engine
|
|
156
|
-
engines_data.setdefault("engines", []).append(engine_data)
|
|
157
|
-
|
|
158
|
-
# Set as default if it's the first engine
|
|
159
|
-
if not engines_data.get("default_engine_id") and len(engines_data["engines"]) == 1:
|
|
160
|
-
engines_data["default_engine_id"] = engine_id
|
|
161
|
-
|
|
162
|
-
cls._save_engines_data(engines_data)
|
|
163
|
-
|
|
164
|
-
@classmethod
|
|
165
|
-
def get_engine_id(cls) -> str:
|
|
166
|
-
"""Get the engine ID.
|
|
167
|
-
|
|
168
|
-
Returns:
|
|
169
|
-
str: The engine ID (UUID)
|
|
170
|
-
"""
|
|
171
|
-
engine_data = cls.get_engine_data()
|
|
172
|
-
return engine_data["id"]
|
|
173
|
-
|
|
174
|
-
@classmethod
|
|
175
|
-
def get_engine_name(cls) -> str:
|
|
176
|
-
"""Get the engine name.
|
|
177
|
-
|
|
178
|
-
Returns:
|
|
179
|
-
str: The engine name
|
|
180
|
-
"""
|
|
181
|
-
engine_data = cls.get_engine_data()
|
|
182
|
-
return engine_data["name"]
|
|
183
|
-
|
|
184
|
-
@classmethod
|
|
185
|
-
def set_engine_name(cls, engine_name: str) -> None:
|
|
186
|
-
"""Set and persist the current engine name.
|
|
187
|
-
|
|
188
|
-
Args:
|
|
189
|
-
engine_name: The new engine name to set
|
|
190
|
-
"""
|
|
191
|
-
# Get current engine data
|
|
192
|
-
engine_data = cls.get_engine_data()
|
|
193
|
-
|
|
194
|
-
# Update the name
|
|
195
|
-
engine_data["name"] = engine_name
|
|
196
|
-
engine_data["updated_at"] = datetime.now(tz=UTC).isoformat()
|
|
197
|
-
|
|
198
|
-
# Save updated engine data
|
|
199
|
-
cls._add_or_update_engine(engine_data)
|
|
200
|
-
|
|
201
|
-
@classmethod
|
|
202
|
-
def get_all_engines(cls) -> list[dict]:
|
|
203
|
-
"""Get all registered engines.
|
|
204
|
-
|
|
205
|
-
Returns:
|
|
206
|
-
list[dict]: List of all engine data
|
|
207
|
-
"""
|
|
208
|
-
engines_data = cls._load_engines_data()
|
|
209
|
-
return engines_data.get("engines", [])
|
|
210
|
-
|
|
211
|
-
@classmethod
|
|
212
|
-
def get_default_engine_id(cls) -> str | None:
|
|
213
|
-
"""Get the default engine ID.
|
|
214
|
-
|
|
215
|
-
Returns:
|
|
216
|
-
str | None: The default engine ID or None if not set
|
|
217
|
-
"""
|
|
218
|
-
engines_data = cls._load_engines_data()
|
|
219
|
-
return engines_data.get("default_engine_id")
|
|
220
|
-
|
|
221
|
-
@classmethod
|
|
222
|
-
def set_default_engine_id(cls, engine_id: str) -> None:
|
|
223
|
-
"""Set the default engine ID.
|
|
224
|
-
|
|
225
|
-
Args:
|
|
226
|
-
engine_id: The engine ID to set as default
|
|
227
|
-
"""
|
|
228
|
-
engines_data = cls._load_engines_data()
|
|
229
|
-
|
|
230
|
-
# Verify the engine exists
|
|
231
|
-
if cls._find_engine_by_id(engines_data, engine_id):
|
|
232
|
-
engines_data["default_engine_id"] = engine_id
|
|
233
|
-
cls._save_engines_data(engines_data)
|
|
234
|
-
else:
|
|
235
|
-
msg = f"Engine with ID {engine_id} not found"
|
|
236
|
-
raise ValueError(msg)
|
|
237
|
-
|
|
238
|
-
@classmethod
|
|
239
|
-
def get_engine_data_file_path(cls) -> Path:
|
|
240
|
-
"""Get the path where engine data is stored (for debugging/inspection).
|
|
241
|
-
|
|
242
|
-
Returns:
|
|
243
|
-
Path: The path to the engine data file
|
|
244
|
-
"""
|
|
245
|
-
return cls._get_engine_data_file()
|