griptape-nodes 0.37.1__py3-none-any.whl → 0.38.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/__init__.py +292 -132
- griptape_nodes/app/__init__.py +1 -6
- griptape_nodes/app/app.py +108 -76
- griptape_nodes/drivers/storage/griptape_cloud_storage_driver.py +80 -5
- griptape_nodes/drivers/storage/local_storage_driver.py +5 -1
- griptape_nodes/exe_types/core_types.py +84 -3
- griptape_nodes/exe_types/node_types.py +260 -50
- griptape_nodes/machines/node_resolution.py +2 -14
- griptape_nodes/retained_mode/events/agent_events.py +7 -0
- griptape_nodes/retained_mode/events/base_events.py +16 -0
- griptape_nodes/retained_mode/events/library_events.py +26 -0
- griptape_nodes/retained_mode/events/parameter_events.py +31 -0
- griptape_nodes/retained_mode/griptape_nodes.py +32 -0
- griptape_nodes/retained_mode/managers/agent_manager.py +25 -12
- griptape_nodes/retained_mode/managers/config_manager.py +37 -4
- griptape_nodes/retained_mode/managers/event_manager.py +15 -0
- griptape_nodes/retained_mode/managers/flow_manager.py +64 -61
- griptape_nodes/retained_mode/managers/library_manager.py +215 -45
- griptape_nodes/retained_mode/managers/node_manager.py +344 -147
- griptape_nodes/retained_mode/managers/operation_manager.py +6 -0
- griptape_nodes/retained_mode/managers/os_manager.py +6 -1
- griptape_nodes/retained_mode/managers/secrets_manager.py +7 -2
- griptape_nodes/retained_mode/managers/settings.py +2 -11
- griptape_nodes/retained_mode/managers/static_files_manager.py +12 -3
- griptape_nodes/retained_mode/managers/version_compatibility_manager.py +105 -0
- griptape_nodes/retained_mode/managers/workflow_manager.py +4 -4
- griptape_nodes/updater/__init__.py +14 -8
- griptape_nodes/version_compatibility/__init__.py +1 -0
- griptape_nodes/version_compatibility/versions/__init__.py +1 -0
- griptape_nodes/version_compatibility/versions/v0_39_0/__init__.py +1 -0
- griptape_nodes/version_compatibility/versions/v0_39_0/modified_parameters_set_removal.py +77 -0
- {griptape_nodes-0.37.1.dist-info → griptape_nodes-0.38.0.dist-info}/METADATA +4 -1
- {griptape_nodes-0.37.1.dist-info → griptape_nodes-0.38.0.dist-info}/RECORD +36 -33
- griptape_nodes/app/app_websocket.py +0 -481
- griptape_nodes/app/nodes_api_socket_manager.py +0 -117
- {griptape_nodes-0.37.1.dist-info → griptape_nodes-0.38.0.dist-info}/WHEEL +0 -0
- {griptape_nodes-0.37.1.dist-info → griptape_nodes-0.38.0.dist-info}/entry_points.txt +0 -0
- {griptape_nodes-0.37.1.dist-info → griptape_nodes-0.38.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -53,6 +53,7 @@ if TYPE_CHECKING:
|
|
|
53
53
|
GetParameterDetailsRequest,
|
|
54
54
|
GetParameterValueRequest,
|
|
55
55
|
RemoveParameterFromNodeRequest,
|
|
56
|
+
RenameParameterRequest,
|
|
56
57
|
SetParameterValueRequest,
|
|
57
58
|
)
|
|
58
59
|
from griptape_nodes.retained_mode.managers.config_manager import ConfigManager
|
|
@@ -411,6 +412,11 @@ class PayloadConverter:
|
|
|
411
412
|
|
|
412
413
|
return f"""cmd.create_flow({command_params})"""
|
|
413
414
|
|
|
415
|
+
@staticmethod
|
|
416
|
+
def _handle_RenameParameterRequest(payload: RenameParameterRequest) -> str:
|
|
417
|
+
"""Handle RenameParameterRequest payloads."""
|
|
418
|
+
return f"""cmd.rename_param(node_name="{payload.node_name}",parameter_name="{payload.parameter_name}",new_parameter_name="{payload.new_parameter_name}")"""
|
|
419
|
+
|
|
414
420
|
# GENERIC HANDLERS FOR PAYLOADS WITHOUT SPECIFIC HANDLERS
|
|
415
421
|
|
|
416
422
|
|
|
@@ -119,7 +119,12 @@ class OSManager:
|
|
|
119
119
|
|
|
120
120
|
return OpenAssociatedFileResultSuccess()
|
|
121
121
|
except subprocess.CalledProcessError as e:
|
|
122
|
-
logger.error(
|
|
122
|
+
logger.error(
|
|
123
|
+
"Process error when opening file: return code=%s, stdout=%s, stderr=%s",
|
|
124
|
+
e.returncode,
|
|
125
|
+
e.stdout,
|
|
126
|
+
e.stderr,
|
|
127
|
+
)
|
|
123
128
|
return OpenAssociatedFileResultFailure()
|
|
124
129
|
except Exception as e:
|
|
125
130
|
logger.error("Exception occurred when trying to open file: %s", type(e).__name__)
|
|
@@ -100,13 +100,18 @@ class SecretsManager:
|
|
|
100
100
|
return DeleteSecretValueResultSuccess()
|
|
101
101
|
|
|
102
102
|
def get_secret(self, secret_name: str, *, should_error_on_not_found: bool = True) -> str | None:
|
|
103
|
-
"""Return the secret value
|
|
103
|
+
"""Return the secret value with the following search precedence (highest to lowest priority).
|
|
104
|
+
|
|
105
|
+
1. OS environment variables (highest priority)
|
|
106
|
+
2. Workspace .env file (<workspace>/.env)
|
|
107
|
+
3. Global .env file (~/.config/griptape_nodes/.env) (lowest priority)
|
|
108
|
+
"""
|
|
104
109
|
secret_name = SecretsManager._apply_secret_name_compliance(secret_name)
|
|
105
110
|
|
|
106
111
|
search_order = [
|
|
112
|
+
("environment variables", lambda: getenv(secret_name)),
|
|
107
113
|
(str(self.workspace_env_path), lambda: DotEnv(self.workspace_env_path).get(secret_name)),
|
|
108
114
|
(str(ENV_VAR_PATH), lambda: DotEnv(ENV_VAR_PATH).get(secret_name)),
|
|
109
|
-
("environment variables", lambda: getenv(secret_name)),
|
|
110
115
|
]
|
|
111
116
|
|
|
112
117
|
value = None
|
|
@@ -2,20 +2,11 @@ from pathlib import Path
|
|
|
2
2
|
from typing import Any, Literal
|
|
3
3
|
|
|
4
4
|
from pydantic import BaseModel, ConfigDict, Field
|
|
5
|
-
from xdg_base_dirs import xdg_data_home
|
|
6
5
|
|
|
7
6
|
|
|
8
7
|
class AppInitializationComplete(BaseModel):
|
|
9
|
-
libraries_to_register: list[str] = Field(
|
|
10
|
-
|
|
11
|
-
str(xdg_data_home() / "griptape_nodes/libraries/griptape_nodes_library/griptape_nodes_library.json")
|
|
12
|
-
]
|
|
13
|
-
)
|
|
14
|
-
workflows_to_register: list[str] = Field(
|
|
15
|
-
default_factory=lambda: [
|
|
16
|
-
str(xdg_data_home() / "griptape_nodes/workflows/templates/"),
|
|
17
|
-
]
|
|
18
|
-
)
|
|
8
|
+
libraries_to_register: list[str] = Field(default_factory=list)
|
|
9
|
+
workflows_to_register: list[str] = Field(default_factory=list)
|
|
19
10
|
|
|
20
11
|
|
|
21
12
|
class AppEvents(BaseModel):
|
|
@@ -49,11 +49,20 @@ class StaticFilesManager:
|
|
|
49
49
|
|
|
50
50
|
match storage_backend:
|
|
51
51
|
case "gtc":
|
|
52
|
+
bucket_id = secrets_manager.get_secret("GT_CLOUD_BUCKET_ID")
|
|
53
|
+
|
|
54
|
+
if not bucket_id:
|
|
55
|
+
msg = "GT_CLOUD_BUCKET_ID secret is required for gtc storage backend"
|
|
56
|
+
logger.error(msg)
|
|
57
|
+
raise ValueError(msg)
|
|
58
|
+
|
|
59
|
+
static_files_directory = config_manager.get_config_value(
|
|
60
|
+
"static_files_directory", default="staticfiles"
|
|
61
|
+
)
|
|
52
62
|
self.storage_driver = GriptapeCloudStorageDriver(
|
|
53
|
-
|
|
54
|
-
# Automatically provision a bucket if it doesn't exist
|
|
55
|
-
bucket_id=secrets_manager.get_secret("GT_CLOUD_BUCKET_ID"),
|
|
63
|
+
bucket_id=bucket_id,
|
|
56
64
|
api_key=secrets_manager.get_secret("GT_CLOUD_API_KEY"),
|
|
65
|
+
static_files_directory=static_files_directory,
|
|
57
66
|
)
|
|
58
67
|
case "local":
|
|
59
68
|
self.storage_driver = LocalStorageDriver()
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import importlib
|
|
4
|
+
import logging
|
|
5
|
+
from abc import ABC, abstractmethod
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
from typing import TYPE_CHECKING, NamedTuple
|
|
8
|
+
|
|
9
|
+
from griptape_nodes.retained_mode.events.app_events import (
|
|
10
|
+
GetEngineVersionRequest,
|
|
11
|
+
GetEngineVersionResultSuccess,
|
|
12
|
+
)
|
|
13
|
+
from griptape_nodes.retained_mode.griptape_nodes import GriptapeNodes, Version
|
|
14
|
+
|
|
15
|
+
if TYPE_CHECKING:
|
|
16
|
+
from griptape_nodes.node_library.library_registry import LibrarySchema
|
|
17
|
+
from griptape_nodes.retained_mode.managers.event_manager import EventManager
|
|
18
|
+
from griptape_nodes.retained_mode.managers.library_manager import LibraryManager
|
|
19
|
+
|
|
20
|
+
logger = logging.getLogger("griptape_nodes")
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class LibraryVersionCompatibilityIssue(NamedTuple):
|
|
24
|
+
"""Represents a library version compatibility issue found in a library."""
|
|
25
|
+
|
|
26
|
+
message: str
|
|
27
|
+
severity: LibraryManager.LibraryStatus
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class LibraryVersionCompatibilityCheck(ABC):
|
|
31
|
+
"""Abstract base class for library version compatibility checks."""
|
|
32
|
+
|
|
33
|
+
@abstractmethod
|
|
34
|
+
def applies_to_library(self, library_data: LibrarySchema) -> bool:
|
|
35
|
+
"""Return True if this check applies to the given library."""
|
|
36
|
+
|
|
37
|
+
@abstractmethod
|
|
38
|
+
def check_library(self, library_data: LibrarySchema) -> list[LibraryVersionCompatibilityIssue]:
|
|
39
|
+
"""Perform the library compatibility check."""
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class VersionCompatibilityManager:
|
|
43
|
+
"""Manages version compatibility checks for libraries and other components."""
|
|
44
|
+
|
|
45
|
+
def __init__(self, event_manager: EventManager) -> None:
|
|
46
|
+
self._event_manager = event_manager
|
|
47
|
+
self._compatibility_checks: list[LibraryVersionCompatibilityCheck] = []
|
|
48
|
+
self._discover_version_checks()
|
|
49
|
+
|
|
50
|
+
def _discover_version_checks(self) -> None:
|
|
51
|
+
"""Automatically discover and register library version compatibility checks."""
|
|
52
|
+
# Get the path to the version_compatibility/versions directory
|
|
53
|
+
import griptape_nodes.version_compatibility.versions as versions_module
|
|
54
|
+
|
|
55
|
+
versions_path = Path(versions_module.__file__).parent
|
|
56
|
+
|
|
57
|
+
# Iterate through version directories
|
|
58
|
+
for version_dir in versions_path.iterdir():
|
|
59
|
+
if version_dir.is_dir() and not version_dir.name.startswith("__"):
|
|
60
|
+
self._discover_checks_in_version_dir(version_dir)
|
|
61
|
+
|
|
62
|
+
def _discover_checks_in_version_dir(self, version_dir: Path) -> None:
|
|
63
|
+
"""Discover compatibility checks in a specific version directory."""
|
|
64
|
+
# Iterate through Python files in the version directory
|
|
65
|
+
for check_file in version_dir.glob("*.py"):
|
|
66
|
+
if check_file.name.startswith("__"):
|
|
67
|
+
continue
|
|
68
|
+
|
|
69
|
+
# Import the module
|
|
70
|
+
module_path = f"griptape_nodes.version_compatibility.versions.{version_dir.name}.{check_file.stem}"
|
|
71
|
+
module = importlib.import_module(module_path)
|
|
72
|
+
|
|
73
|
+
# Look for classes that inherit from LibraryVersionCompatibilityCheck
|
|
74
|
+
for attr_name in dir(module):
|
|
75
|
+
attr = getattr(module, attr_name)
|
|
76
|
+
if (
|
|
77
|
+
isinstance(attr, type)
|
|
78
|
+
and issubclass(attr, LibraryVersionCompatibilityCheck)
|
|
79
|
+
and attr is not LibraryVersionCompatibilityCheck
|
|
80
|
+
):
|
|
81
|
+
check_instance = attr()
|
|
82
|
+
self._compatibility_checks.append(check_instance)
|
|
83
|
+
logger.debug("Registered library version compatibility check: %s", attr_name)
|
|
84
|
+
|
|
85
|
+
def check_library_version_compatibility(
|
|
86
|
+
self, library_data: LibrarySchema
|
|
87
|
+
) -> list[LibraryVersionCompatibilityIssue]:
|
|
88
|
+
"""Check a library for version compatibility issues."""
|
|
89
|
+
version_issues = []
|
|
90
|
+
|
|
91
|
+
# Run all discovered compatibility checks
|
|
92
|
+
for check_instance in self._compatibility_checks:
|
|
93
|
+
if check_instance.applies_to_library(library_data):
|
|
94
|
+
issues = check_instance.check_library(library_data)
|
|
95
|
+
version_issues.extend(issues)
|
|
96
|
+
|
|
97
|
+
return version_issues
|
|
98
|
+
|
|
99
|
+
def _get_current_engine_version(self) -> Version:
|
|
100
|
+
"""Get the current engine version."""
|
|
101
|
+
result = GriptapeNodes.handle_request(GetEngineVersionRequest())
|
|
102
|
+
if isinstance(result, GetEngineVersionResultSuccess):
|
|
103
|
+
return Version(major=result.major, minor=result.minor, patch=result.patch)
|
|
104
|
+
msg = "Failed to get engine version"
|
|
105
|
+
raise RuntimeError(msg)
|
|
@@ -749,18 +749,18 @@ class WorkflowManager:
|
|
|
749
749
|
had_critical_error = True
|
|
750
750
|
elif delta > WorkflowManager.MAX_MINOR_VERSION_DEVIATION:
|
|
751
751
|
problems.append(
|
|
752
|
-
f"
|
|
752
|
+
f"This workflow was built with library '{library_name}' v{desired_version}, but you have v{library_version}. This large version difference may cause compatibility issues. You can update the library to a compatible version or save this workflow to update it to your current library versions."
|
|
753
753
|
)
|
|
754
754
|
status = WorkflowManager.WorkflowDependencyStatus.BAD
|
|
755
755
|
had_critical_error = True
|
|
756
756
|
else:
|
|
757
757
|
problems.append(
|
|
758
|
-
f"
|
|
758
|
+
f"This workflow was built with library '{library_name}' v{desired_version}, but you have v{library_version}. Minor differences are usually compatible. If you experience issues, you can update the library or save this workflow to update it to your current library versions."
|
|
759
759
|
)
|
|
760
760
|
status = WorkflowManager.WorkflowDependencyStatus.CAUTION
|
|
761
761
|
else:
|
|
762
762
|
problems.append(
|
|
763
|
-
f"
|
|
763
|
+
f"This workflow requires library '{library_name}' v{desired_version}, but you have v{library_version}. Major version changes may include breaking changes. Consider updating the library to match, or save this workflow to update it to your current library versions."
|
|
764
764
|
)
|
|
765
765
|
status = WorkflowManager.WorkflowDependencyStatus.BAD
|
|
766
766
|
had_critical_error = True
|
|
@@ -793,7 +793,7 @@ class WorkflowManager:
|
|
|
793
793
|
|
|
794
794
|
def register_workflows_from_config(self, config_section: str) -> None:
|
|
795
795
|
workflows_to_register = GriptapeNodes.ConfigManager().get_config_value(config_section)
|
|
796
|
-
if workflows_to_register
|
|
796
|
+
if workflows_to_register:
|
|
797
797
|
self.register_list_of_workflows(workflows_to_register)
|
|
798
798
|
|
|
799
799
|
def register_list_of_workflows(self, workflows_to_register: list[str]) -> None:
|
|
@@ -21,7 +21,7 @@ def main() -> None:
|
|
|
21
21
|
"""Entry point for the updater CLI."""
|
|
22
22
|
try:
|
|
23
23
|
_download_and_run_installer()
|
|
24
|
-
|
|
24
|
+
_sync_libraries()
|
|
25
25
|
except subprocess.CalledProcessError:
|
|
26
26
|
console.print("[red]Error during update process.[/red]")
|
|
27
27
|
else:
|
|
@@ -41,29 +41,35 @@ def _download_and_run_installer() -> None:
|
|
|
41
41
|
subprocess.run( # noqa: S603
|
|
42
42
|
["uv", "tool", "upgrade", "griptape-nodes"], # noqa: S607
|
|
43
43
|
text=True,
|
|
44
|
+
capture_output=True,
|
|
44
45
|
check=True,
|
|
45
46
|
)
|
|
46
47
|
except subprocess.CalledProcessError as e:
|
|
47
|
-
console.print(
|
|
48
|
+
console.print(
|
|
49
|
+
f"[red]Error during update: return code={e.returncode}, stdout={e.stdout}, stderr={e.stderr}[/red]"
|
|
50
|
+
)
|
|
48
51
|
raise
|
|
49
52
|
else:
|
|
50
53
|
console.print("[green]Finished updating self.[/green]")
|
|
51
54
|
|
|
52
55
|
|
|
53
|
-
def
|
|
54
|
-
"""Syncs the
|
|
55
|
-
console.print("[bold green]Syncing
|
|
56
|
+
def _sync_libraries() -> None:
|
|
57
|
+
"""Syncs the libraries for the engine."""
|
|
58
|
+
console.print("[bold green]Syncing libraries...[/bold green]")
|
|
56
59
|
try:
|
|
57
60
|
subprocess.run( # noqa: S603
|
|
58
|
-
["griptape-nodes", "
|
|
61
|
+
["griptape-nodes", "libraries", "sync"], # noqa: S607
|
|
59
62
|
text=True,
|
|
63
|
+
capture_output=True,
|
|
60
64
|
check=True,
|
|
61
65
|
)
|
|
62
66
|
except subprocess.CalledProcessError as e:
|
|
63
|
-
console.print(
|
|
67
|
+
console.print(
|
|
68
|
+
f"[red]Error during libraries sync: return code={e.returncode}, stdout={e.stdout}, stderr={e.stderr}[/red]"
|
|
69
|
+
)
|
|
64
70
|
raise
|
|
65
71
|
else:
|
|
66
|
-
console.print("[green]Finished syncing
|
|
72
|
+
console.print("[green]Finished syncing libraries.[/green]")
|
|
67
73
|
|
|
68
74
|
|
|
69
75
|
if __name__ == "__main__":
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Version compatibility checking system for Griptape Nodes libraries."""
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Version-specific compatibility checks for Griptape Nodes libraries."""
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Version compatibility checks for Griptape Nodes 0.40.0."""
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import TYPE_CHECKING
|
|
4
|
+
|
|
5
|
+
from griptape_nodes.retained_mode.events.app_events import (
|
|
6
|
+
GetEngineVersionRequest,
|
|
7
|
+
GetEngineVersionResultSuccess,
|
|
8
|
+
)
|
|
9
|
+
from griptape_nodes.retained_mode.griptape_nodes import GriptapeNodes, Version
|
|
10
|
+
from griptape_nodes.retained_mode.managers.library_manager import LibraryManager
|
|
11
|
+
from griptape_nodes.retained_mode.managers.version_compatibility_manager import (
|
|
12
|
+
LibraryVersionCompatibilityCheck,
|
|
13
|
+
LibraryVersionCompatibilityIssue,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
if TYPE_CHECKING:
|
|
17
|
+
from griptape_nodes.node_library.library_registry import LibrarySchema
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class ModifiedParametersSetRemovalCheck(LibraryVersionCompatibilityCheck):
|
|
21
|
+
"""Check for libraries impacted by the modified_parameters_set deprecation timeline."""
|
|
22
|
+
|
|
23
|
+
def applies_to_library(self, library_data: LibrarySchema) -> bool:
|
|
24
|
+
"""Check applies to libraries with engine_version < 0.39.0."""
|
|
25
|
+
library_version = Version.from_string(library_data.metadata.engine_version)
|
|
26
|
+
return library_version is not None and library_version < Version(0, 39, 0)
|
|
27
|
+
|
|
28
|
+
def check_library(self, library_data: LibrarySchema) -> list[LibraryVersionCompatibilityIssue]:
|
|
29
|
+
"""Perform the modified_parameters_set deprecation check."""
|
|
30
|
+
# Get current engine version
|
|
31
|
+
engine_version_result = GriptapeNodes.handle_request(GetEngineVersionRequest())
|
|
32
|
+
if not isinstance(engine_version_result, GetEngineVersionResultSuccess):
|
|
33
|
+
# If we can't get current engine version, skip version-specific warnings
|
|
34
|
+
return []
|
|
35
|
+
|
|
36
|
+
current_engine_version = Version(
|
|
37
|
+
engine_version_result.major, engine_version_result.minor, engine_version_result.patch
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
# Determine which phase we're in based on current engine version
|
|
41
|
+
library_version_str = library_data.metadata.engine_version
|
|
42
|
+
|
|
43
|
+
if current_engine_version >= Version(0, 39, 0):
|
|
44
|
+
# 0.39+ Release: Parameter removed, reject incompatible libraries
|
|
45
|
+
return [
|
|
46
|
+
LibraryVersionCompatibilityIssue(
|
|
47
|
+
message=f"This library (built for engine version {library_version_str}) is incompatible with Griptape Nodes 0.39+. "
|
|
48
|
+
"The 'modified_parameters_set' parameter has been removed from BaseNode methods: 'after_incoming_connection', 'after_outgoing_connection', 'after_incoming_connection_removed', 'after_outgoing_connection_removed', 'before_value_set', and 'after_value_set'. "
|
|
49
|
+
"If this library overrides any of these methods, it will not load or function properly. Please update to a newer version of this library or contact the library author immediately.",
|
|
50
|
+
severity=LibraryManager.LibraryStatus.UNUSABLE,
|
|
51
|
+
),
|
|
52
|
+
LibraryVersionCompatibilityIssue(
|
|
53
|
+
message=f"This library (built for engine version {library_version_str}) is incompatible with Griptape Nodes 0.39+."
|
|
54
|
+
"The 'ui_options' field has been modified on all Elements. In order to function properly, all nodes must update ui_options by setting its value to a new dictionary. Updating ui_options by accessing the private field _ui_options will no longer create UI updates in the editor."
|
|
55
|
+
"If this library accesses the private _ui_options field, it will not update the editor properly. Please update to a newer version of this library or contact the library author immediately.",
|
|
56
|
+
severity=LibraryManager.LibraryStatus.UNUSABLE,
|
|
57
|
+
),
|
|
58
|
+
]
|
|
59
|
+
if current_engine_version >= Version(0, 38, 0):
|
|
60
|
+
# 0.38 Release: Warning about upcoming removal in 0.39
|
|
61
|
+
return [
|
|
62
|
+
LibraryVersionCompatibilityIssue(
|
|
63
|
+
message=f"WARNING: The 'modified_parameters_set' parameter will be removed in Griptape Nodes 0.39 from BaseNode methods: 'after_incoming_connection', 'after_outgoing_connection', 'after_incoming_connection_removed', 'after_outgoing_connection_removed', 'before_value_set', and 'after_value_set'. "
|
|
64
|
+
f"This library (built for engine version {library_version_str}) must be updated before the 0.39 release. "
|
|
65
|
+
"If this library overrides any of these methods, it will fail to load in 0.39. If not, no action is necessary. Please contact the library author to confirm whether this library is impacted.",
|
|
66
|
+
severity=LibraryManager.LibraryStatus.FLAWED,
|
|
67
|
+
),
|
|
68
|
+
LibraryVersionCompatibilityIssue(
|
|
69
|
+
message="WARNING: The 'ui_options' field has been modified in Griptape Nodes 0.38 on all BaseNodeElements."
|
|
70
|
+
"In order to function properly, all nodes must update ui_options by setting its value to a new dictionary. Updating ui_options by accessing the private field _ui_options will no longer create UI updates in the editor."
|
|
71
|
+
"If this library accesses the private _ui_options field, it will not update the editor properly. Please update to a newer version of this library or contact the library author immediately.",
|
|
72
|
+
severity=LibraryManager.LibraryStatus.FLAWED,
|
|
73
|
+
),
|
|
74
|
+
]
|
|
75
|
+
|
|
76
|
+
# No compatibility issues for current version
|
|
77
|
+
return []
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: griptape-nodes
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.38.0
|
|
4
4
|
Summary: Add your description here
|
|
5
5
|
License-File: LICENSE
|
|
6
6
|
Requires-Python: ~=3.12
|
|
7
7
|
Requires-Dist: fastapi>=0.115.12
|
|
8
8
|
Requires-Dist: griptape[drivers-prompt-amazon-bedrock,drivers-prompt-anthropic,drivers-prompt-cohere,drivers-prompt-ollama,drivers-web-scraper-trafilatura,drivers-web-search-duckduckgo,drivers-web-search-exa,loaders-image]>=1.7.1
|
|
9
9
|
Requires-Dist: httpx<1.0.0,>=0.28.0
|
|
10
|
+
Requires-Dist: imageio-ffmpeg>=0.6.0
|
|
10
11
|
Requires-Dist: json-repair>=0.46.1
|
|
11
12
|
Requires-Dist: packaging>=25.0
|
|
12
13
|
Requires-Dist: pydantic>=2.10.6
|
|
@@ -17,6 +18,8 @@ Requires-Dist: uv>=0.6.16
|
|
|
17
18
|
Requires-Dist: uvicorn>=0.34.2
|
|
18
19
|
Requires-Dist: websockets<16.0.0,>=15.0.1
|
|
19
20
|
Requires-Dist: xdg-base-dirs>=6.0.2
|
|
21
|
+
Provides-Extra: profiling
|
|
22
|
+
Requires-Dist: austin-dist>=3.7.0; extra == 'profiling'
|
|
20
23
|
Description-Content-Type: text/markdown
|
|
21
24
|
|
|
22
25
|
# Griptape Nodes
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
griptape_nodes/__init__.py,sha256=
|
|
1
|
+
griptape_nodes/__init__.py,sha256=eR5gLjOtO8XGKLHIq8r076vx_t6uEY36EOZ1OJedgg0,36638
|
|
2
2
|
griptape_nodes/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
3
|
griptape_nodes/app/.python-version,sha256=e1X45ntWI8S-8_ppEojalDfXnTq6FW3kjUgdsyrH0W0,5
|
|
4
|
-
griptape_nodes/app/__init__.py,sha256=
|
|
5
|
-
griptape_nodes/app/app.py,sha256=
|
|
6
|
-
griptape_nodes/app/app_websocket.py,sha256=XPJ11HcbAugq2m0O_43YJFZd1O-TNy3b4lcIJHiWvCE,18921
|
|
7
|
-
griptape_nodes/app/nodes_api_socket_manager.py,sha256=J7K4yi7jfzJat2xIW0upqNJz3jnQBOb0eJGWT7CCJ9Q,4745
|
|
4
|
+
griptape_nodes/app/__init__.py,sha256=DB-DTsgcNnbmEClXEouwzGhrmo3gHBCWXB9BkPGpdQI,90
|
|
5
|
+
griptape_nodes/app/app.py,sha256=O5zLX_xroifpOR-hAeStkhAZ-LUFjAgaGY3A-_RHVKY,18920
|
|
8
6
|
griptape_nodes/app/watch.py,sha256=Jh7sQoptOuVzEobyhHG5EThxOcb8wfkW0JOmYE-WDpE,1848
|
|
9
7
|
griptape_nodes/bootstrap/__init__.py,sha256=ENv3SIzQ9TtlRrg1y4e4CnoBpJaFpFSkNpTFBV8X5Ls,25
|
|
10
8
|
griptape_nodes/bootstrap/bootstrap_script.py,sha256=QLLu3wu1VGmoUU8SKGeyLGDOijKBLGAJYv1RlI9sub0,1312
|
|
@@ -20,62 +18,63 @@ griptape_nodes/bootstrap/workflow_runners/workflow_runner.py,sha256=fmtCH8_c_Vdu
|
|
|
20
18
|
griptape_nodes/drivers/__init__.py,sha256=tHmiFQn6uJyFVhC2PrqHgRUH3d3yDsqMQpWqRasmaqA,42
|
|
21
19
|
griptape_nodes/drivers/storage/__init__.py,sha256=Ld66cE_B8mxl0ydcZzbX84hc9o2EV5E5q6sb2EUiqnA,133
|
|
22
20
|
griptape_nodes/drivers/storage/base_storage_driver.py,sha256=di1tqC-o8tEeZ8h_asUxb5KgixwJbTlQLe_lUtqcunQ,1050
|
|
23
|
-
griptape_nodes/drivers/storage/griptape_cloud_storage_driver.py,sha256=
|
|
24
|
-
griptape_nodes/drivers/storage/local_storage_driver.py,sha256=
|
|
21
|
+
griptape_nodes/drivers/storage/griptape_cloud_storage_driver.py,sha256=zYQHzHxlE3TcOitytk9WpD3YTKTRyfrzW-H_vXpgTLQ,6083
|
|
22
|
+
griptape_nodes/drivers/storage/local_storage_driver.py,sha256=PnKgnjkhmnzI5SOI3VKXTkwbb5G1lLs25pLTr022W_c,2196
|
|
25
23
|
griptape_nodes/exe_types/__init__.py,sha256=wGGwKGX9-TSarUFbXpDvdU_J7eXIbWTBl_NCLOZa-G8,32
|
|
26
24
|
griptape_nodes/exe_types/connections.py,sha256=_-VNzf6Kay62QzJlSX-LlHTUhz-CKF-UDsbZLJ0l6Wk,12435
|
|
27
|
-
griptape_nodes/exe_types/core_types.py,sha256=
|
|
25
|
+
griptape_nodes/exe_types/core_types.py,sha256=34Xvp1fzlSMgo957jBDH8RvGYxfawf1fa2wMyznF_fQ,58012
|
|
28
26
|
griptape_nodes/exe_types/flow.py,sha256=FAjs6vWEWbuoU5OvUGjs8BY_kEB7IWKvlJ-X5HXkoZ4,21095
|
|
29
|
-
griptape_nodes/exe_types/node_types.py,sha256=
|
|
27
|
+
griptape_nodes/exe_types/node_types.py,sha256=Bxvh0x-LJ9VTpBKMCHAxDkQUZvgE915JW9v52GhYMXg,45972
|
|
30
28
|
griptape_nodes/exe_types/type_validator.py,sha256=RTz1vX09jzQpHhozITMJ0siOZUXvsERDhrApjdaM1WM,1120
|
|
31
29
|
griptape_nodes/machines/__init__.py,sha256=v0jkwr-CFOLmfEYUQvX8BKQLOdvhSsA6toXkdHcPGUE,30
|
|
32
30
|
griptape_nodes/machines/control_flow.py,sha256=LegXG4If6M5N6ZNlrQywLGQe-sjg_VKDeKPu5gmqbxU,8421
|
|
33
31
|
griptape_nodes/machines/fsm.py,sha256=JwNz32UmcajoADDMm_fL5MqDRNjr6t8CIUzck-7TFhE,1784
|
|
34
|
-
griptape_nodes/machines/node_resolution.py,sha256=
|
|
32
|
+
griptape_nodes/machines/node_resolution.py,sha256=w5eG2PGY6gPeYucwJ8phH80UF-xKDwIzOK4Em_eyMcY,19685
|
|
35
33
|
griptape_nodes/node_library/__init__.py,sha256=U3FcSdmq6UW7qt6E3Up3NWKvUEn5_5lqL-u5qbzfxMQ,28
|
|
36
34
|
griptape_nodes/node_library/library_registry.py,sha256=NZeQw_e0bkzka7D4hP-odNwb3LMQapAH6Mn54-HnXO8,11214
|
|
37
35
|
griptape_nodes/node_library/workflow_registry.py,sha256=UabpodU15TpS5pcGYkw3-VgAs_eYOsASItNWzMgwC_U,4257
|
|
38
36
|
griptape_nodes/retained_mode/__init__.py,sha256=X12DKL6KhLsiRTPIlrPj2h76_sJ0q0eH4r0kMQkodm0,29
|
|
39
|
-
griptape_nodes/retained_mode/griptape_nodes.py,sha256=
|
|
37
|
+
griptape_nodes/retained_mode/griptape_nodes.py,sha256=_ydd84yIzuP4g7vgs1iZugGYwkN3SE_-ReY0RM6obiE,27466
|
|
40
38
|
griptape_nodes/retained_mode/retained_mode.py,sha256=HUKoiTtDYm61a1wipeLKk_1oRfkMeIjiWrzGQ6x61d0,54779
|
|
41
39
|
griptape_nodes/retained_mode/events/__init__.py,sha256=7B1C-c0jVvnShtHJ2lfX6BZPE0U1DgQwg1e4DorhKG0,22
|
|
42
|
-
griptape_nodes/retained_mode/events/agent_events.py,sha256=
|
|
40
|
+
griptape_nodes/retained_mode/events/agent_events.py,sha256=dzjwKXPTSGVi8HGZTZjGR-4k5umyIKpfybWWnw-OWYU,1981
|
|
43
41
|
griptape_nodes/retained_mode/events/app_events.py,sha256=tDoZFw1v8GHIVkh1PgpfkGcWu2WYeo94nJlfL9mCd_4,1456
|
|
44
42
|
griptape_nodes/retained_mode/events/arbitrary_python_events.py,sha256=9IJKVyzo9jqef2Dt3thoqnq4FWKTX5yG5SnOvXHvLns,797
|
|
45
|
-
griptape_nodes/retained_mode/events/base_events.py,sha256=
|
|
43
|
+
griptape_nodes/retained_mode/events/base_events.py,sha256=3HRcu9Q9P1olQxIKbLjxwk2yZMGl8CyF-y_piJCkjd8,19528
|
|
46
44
|
griptape_nodes/retained_mode/events/config_events.py,sha256=cgx5Qe0wSHxpehHj7CDb4bF6UfUERD5oAMA0Eb3BSgk,2454
|
|
47
45
|
griptape_nodes/retained_mode/events/connection_events.py,sha256=XbuzSchjNmM8SMD-QrnhEQxwyt5pQPmB6j46GGjFNRI,2261
|
|
48
46
|
griptape_nodes/retained_mode/events/context_events.py,sha256=je81-kK-ORLUunvAM8r-2xtN4fIHlt0d2qoUZ3a-u0M,1042
|
|
49
47
|
griptape_nodes/retained_mode/events/execution_events.py,sha256=ZYj87Us-iMaornesQRHbAeABftqNPfCdRevg1860ixM,5701
|
|
50
48
|
griptape_nodes/retained_mode/events/flow_events.py,sha256=1BtdgefElLDRlVjELm1Dlcmn770z7Y0zA0Ml9hWcUN8,7967
|
|
51
49
|
griptape_nodes/retained_mode/events/generate_request_payload_schemas.py,sha256=PQ0QRZAUBljSIGjB8QhYUeRmSrfmLsJ6XVcygJKi13I,1102
|
|
52
|
-
griptape_nodes/retained_mode/events/library_events.py,sha256=
|
|
50
|
+
griptape_nodes/retained_mode/events/library_events.py,sha256=5i9Tn2-L8GaN2wJr0-Z_ASoPpGPw7kd7MSyeZNmavSY,5752
|
|
53
51
|
griptape_nodes/retained_mode/events/logger_events.py,sha256=e5Xu9cVk4_V24dI-leqWbzWSf_c2wRHJpsEfJT9_p8M,325
|
|
54
52
|
griptape_nodes/retained_mode/events/node_events.py,sha256=-rpsN0889umeQA8BRkV6cqhiyooK9j0Pz2dDlYFx9_A,14962
|
|
55
53
|
griptape_nodes/retained_mode/events/object_events.py,sha256=ZNuRFw2zhrfAIWKwu_aumn-1-kedvvEoVUq82P6RyAs,1283
|
|
56
54
|
griptape_nodes/retained_mode/events/os_events.py,sha256=QWhTJs9SzGGIuvFB2-3w8Bfhk5KcCZOuFfn1eeJvWdk,659
|
|
57
|
-
griptape_nodes/retained_mode/events/parameter_events.py,sha256=
|
|
55
|
+
griptape_nodes/retained_mode/events/parameter_events.py,sha256=2Ex4_9-GE-dzasP1DHutslzLMuF-tu4egHLHSsTEdp4,9495
|
|
58
56
|
griptape_nodes/retained_mode/events/payload_registry.py,sha256=q-wxUqp63vhNj-Pl1JGJHnBkhUefcCArPoMN3KBREEI,1691
|
|
59
57
|
griptape_nodes/retained_mode/events/secrets_events.py,sha256=gK6RkIHEIyQJRtYI-REf3FmSXCRw5VrP5YJH8D8rmWY,1788
|
|
60
58
|
griptape_nodes/retained_mode/events/static_file_events.py,sha256=ZKsLQUHL5tFVETd4it6pwdiLhbMjsGkRJQrUxmFGaDQ,2091
|
|
61
59
|
griptape_nodes/retained_mode/events/validation_events.py,sha256=a3DwE1xmrmAZ9Y2HCAMHecyRl1Q5Ozy0cEOKgzeAQNE,1434
|
|
62
60
|
griptape_nodes/retained_mode/events/workflow_events.py,sha256=qninIeAh3aGCdmIPCJb25wbmcPoMVEf6hbVzrn3dA7M,4105
|
|
63
61
|
griptape_nodes/retained_mode/managers/__init__.py,sha256=OTXysKusqYCQeAYwnVj4PbE3MxvAUTq9xOZT6vUE3JA,24
|
|
64
|
-
griptape_nodes/retained_mode/managers/agent_manager.py,sha256=
|
|
62
|
+
griptape_nodes/retained_mode/managers/agent_manager.py,sha256=_-4neXj6oe7OPXW-5EogAnTdiC5aMxX9Io9w1Xlk_eQ,5391
|
|
65
63
|
griptape_nodes/retained_mode/managers/arbitrary_code_exec_manager.py,sha256=QnqI2_IkDpc9SHzbb-jwsyYkm91W0V9kLlxARUbbVUI,1777
|
|
66
|
-
griptape_nodes/retained_mode/managers/config_manager.py,sha256=
|
|
64
|
+
griptape_nodes/retained_mode/managers/config_manager.py,sha256=0fs-xd6vpetBGYrsm6sqPBhWb0qChMdtUcxco92qTqQ,25344
|
|
67
65
|
griptape_nodes/retained_mode/managers/context_manager.py,sha256=DiGNh09TZ7rsLEcXqqB9Yrh2ietBy59LPF7GM0OBQS8,22930
|
|
68
|
-
griptape_nodes/retained_mode/managers/event_manager.py,sha256=
|
|
69
|
-
griptape_nodes/retained_mode/managers/flow_manager.py,sha256=
|
|
70
|
-
griptape_nodes/retained_mode/managers/library_manager.py,sha256=
|
|
71
|
-
griptape_nodes/retained_mode/managers/node_manager.py,sha256=
|
|
66
|
+
griptape_nodes/retained_mode/managers/event_manager.py,sha256=5Y8oKasS2bISu5qdDhX9YRy2LD7lyIsfd2FxpXOnZ6c,6726
|
|
67
|
+
griptape_nodes/retained_mode/managers/flow_manager.py,sha256=8r7XGkmUuudkfwmsZkyeEOlvFCSaD7YMG3Tghcx3CQI,72821
|
|
68
|
+
griptape_nodes/retained_mode/managers/library_manager.py,sha256=iKB7pY9vFtRw-OCl6JkGnXj5pptVPCqK3pyMirPU7Io,62390
|
|
69
|
+
griptape_nodes/retained_mode/managers/node_manager.py,sha256=3SdfB-WT84ewhEH6HNUEvg9v9xm2rELO7hQSC21RFPE,127142
|
|
72
70
|
griptape_nodes/retained_mode/managers/object_manager.py,sha256=mgNK8o-iYFzNl2IBzUKIqECiiqk5dI3cNNqirLam7vc,11828
|
|
73
|
-
griptape_nodes/retained_mode/managers/operation_manager.py,sha256=
|
|
74
|
-
griptape_nodes/retained_mode/managers/os_manager.py,sha256=
|
|
75
|
-
griptape_nodes/retained_mode/managers/secrets_manager.py,sha256=
|
|
76
|
-
griptape_nodes/retained_mode/managers/settings.py,sha256=
|
|
77
|
-
griptape_nodes/retained_mode/managers/static_files_manager.py,sha256=
|
|
78
|
-
griptape_nodes/retained_mode/managers/
|
|
71
|
+
griptape_nodes/retained_mode/managers/operation_manager.py,sha256=6nHx1fADdj7nyt5dIrNNuSkR362XgR1AMVESI1UCF6o,19746
|
|
72
|
+
griptape_nodes/retained_mode/managers/os_manager.py,sha256=jeWvm0X_ma40ZBJFqgU_RgNR2nSfDxCxGUEQxZyujmQ,5104
|
|
73
|
+
griptape_nodes/retained_mode/managers/secrets_manager.py,sha256=oRdTN__mgM5tQTxVKZ8e0R8BcKfL6_zMA-AKuFV9QE8,6038
|
|
74
|
+
griptape_nodes/retained_mode/managers/settings.py,sha256=nzEziQ1_Ba_PtQYtOgF_Uq7w0eF6eZ93Sqbl36mqlhk,4094
|
|
75
|
+
griptape_nodes/retained_mode/managers/static_files_manager.py,sha256=xMQXHE2FNks7o5hP-jjuM6BJSpjMwO8JxTIQZ9wyIpg,7032
|
|
76
|
+
griptape_nodes/retained_mode/managers/version_compatibility_manager.py,sha256=1lwwuof4C6Ho1xh59Re_ajmvcc2lUyxpO1-RkHfKBYc,4385
|
|
77
|
+
griptape_nodes/retained_mode/managers/workflow_manager.py,sha256=29zCJi-_a5h7Gu-90A_K3bEelLYQGRX9wLDIDUpjvXQ,103320
|
|
79
78
|
griptape_nodes/traits/__init__.py,sha256=bTLXTiZTJz2z15RRLoPI4nvLnNW9FiLcKL_2pT4E10g,32
|
|
80
79
|
griptape_nodes/traits/add_param_button.py,sha256=Xtc39SfvYY6JDjhxu2wmdeaHW2X4LkpNAQufSTCP3hY,655
|
|
81
80
|
griptape_nodes/traits/button.py,sha256=rpQQ77ASKH3YJabc5WWw9DpEHQiMg1jx0i0sdkwH-SA,611
|
|
@@ -87,13 +86,17 @@ griptape_nodes/traits/options.py,sha256=Kj7isw0XkhI1jmCCYuXP63Td8K8rg21nGC77ultN
|
|
|
87
86
|
griptape_nodes/traits/slider.py,sha256=bLe46gtCmjhMCHaGzUstIWMJv2Zl2Yee7fkT6g4Q6Rk,1236
|
|
88
87
|
griptape_nodes/traits/trait_registry.py,sha256=pU26mW2ztfu1UARGYloflsTPqJ1X_-u013cMNoel9Hw,1171
|
|
89
88
|
griptape_nodes/traits/traits.json,sha256=xtY7lcMzeUPiyh494xj4LyRl44c0VBFL-LRAkywuxD4,60
|
|
90
|
-
griptape_nodes/updater/__init__.py,sha256=
|
|
89
|
+
griptape_nodes/updater/__init__.py,sha256=NO6xJfvQhJKli-CsuLIK83XiM4g3gg4Tqg24Rvp3olA,2461
|
|
91
90
|
griptape_nodes/updater/__main__.py,sha256=lhMMctbBeni57ximitvkwqJ1TQzk79Jg9w0rkKjtp5Y,79
|
|
92
91
|
griptape_nodes/utils/__init__.py,sha256=5-NvqVvxiwuRx2UgyzenuLFXyodvfDqJ_dzcrgZpPOk,33
|
|
93
92
|
griptape_nodes/utils/dict_utils.py,sha256=kyli5MOfzSor0a8lmXfYBVS_NXGf6UK1SM6k_Qn5bs8,6889
|
|
94
93
|
griptape_nodes/utils/metaclasses.py,sha256=RSKyAvZppH_hbMugmUmIr8QqOg1sYY4uRNfQybD4O8Q,287
|
|
95
|
-
griptape_nodes
|
|
96
|
-
griptape_nodes
|
|
97
|
-
griptape_nodes
|
|
98
|
-
griptape_nodes
|
|
99
|
-
griptape_nodes-0.
|
|
94
|
+
griptape_nodes/version_compatibility/__init__.py,sha256=JMz1sB7Zsj6pS1S5sdsPR0kn89s1A0sB0kFIvygJYfo,74
|
|
95
|
+
griptape_nodes/version_compatibility/versions/__init__.py,sha256=PWSxM28LPUdBdRPA98j4RUWvuZ4NqfX1day2VU6SqPw,74
|
|
96
|
+
griptape_nodes/version_compatibility/versions/v0_39_0/__init__.py,sha256=21iKlFpsmBW4WsAexSD0WMAJnsYmMq2sIbDeYC831fc,62
|
|
97
|
+
griptape_nodes/version_compatibility/versions/v0_39_0/modified_parameters_set_removal.py,sha256=KJeyhyn_iUaDx32FRi1-__yxw6rp9tG4eTBCimpurBM,5306
|
|
98
|
+
griptape_nodes-0.38.0.dist-info/METADATA,sha256=0HhiWLNP8_sAaER2EYYt9yO5291kDvcInk5-1-6JSSw,4102
|
|
99
|
+
griptape_nodes-0.38.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
100
|
+
griptape_nodes-0.38.0.dist-info/entry_points.txt,sha256=Q8V3Ydy7PNfJgTjNEVkPui25AwZ4HJ3kZCU3oh4mq-c,81
|
|
101
|
+
griptape_nodes-0.38.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
102
|
+
griptape_nodes-0.38.0.dist-info/RECORD,,
|