griptape-nodes 0.49.0__py3-none-any.whl → 0.51.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/exe_types/core_types.py +8 -0
- griptape_nodes/exe_types/node_types.py +275 -1
- griptape_nodes/retained_mode/events/node_events.py +97 -0
- griptape_nodes/retained_mode/events/parameter_events.py +2 -0
- griptape_nodes/retained_mode/managers/flow_manager.py +47 -6
- griptape_nodes/retained_mode/managers/node_manager.py +248 -19
- {griptape_nodes-0.49.0.dist-info → griptape_nodes-0.51.0.dist-info}/METADATA +1 -1
- griptape_nodes-0.51.0.dist-info/RECORD +127 -0
- {griptape_nodes-0.49.0.dist-info → griptape_nodes-0.51.0.dist-info}/WHEEL +1 -1
- griptape_nodes-0.49.0.dist-info/RECORD +0 -127
- {griptape_nodes-0.49.0.dist-info → griptape_nodes-0.51.0.dist-info}/entry_points.txt +0 -0
|
@@ -13,10 +13,17 @@ from griptape_nodes.exe_types.core_types import (
|
|
|
13
13
|
ParameterTypeBuiltin,
|
|
14
14
|
)
|
|
15
15
|
from griptape_nodes.exe_types.flow import ControlFlow
|
|
16
|
-
from griptape_nodes.exe_types.node_types import
|
|
16
|
+
from griptape_nodes.exe_types.node_types import (
|
|
17
|
+
BaseNode,
|
|
18
|
+
EndLoopNode,
|
|
19
|
+
ErrorProxyNode,
|
|
20
|
+
NodeResolutionState,
|
|
21
|
+
StartLoopNode,
|
|
22
|
+
)
|
|
17
23
|
from griptape_nodes.exe_types.type_validator import TypeValidator
|
|
18
24
|
from griptape_nodes.node_library.library_registry import LibraryNameAndVersion, LibraryRegistry
|
|
19
25
|
from griptape_nodes.retained_mode.events.base_events import (
|
|
26
|
+
ResultDetails,
|
|
20
27
|
ResultPayload,
|
|
21
28
|
ResultPayloadFailure,
|
|
22
29
|
)
|
|
@@ -46,6 +53,9 @@ from griptape_nodes.retained_mode.events.library_events import (
|
|
|
46
53
|
GetLibraryMetadataResultSuccess,
|
|
47
54
|
)
|
|
48
55
|
from griptape_nodes.retained_mode.events.node_events import (
|
|
56
|
+
BatchSetNodeMetadataRequest,
|
|
57
|
+
BatchSetNodeMetadataResultFailure,
|
|
58
|
+
BatchSetNodeMetadataResultSuccess,
|
|
49
59
|
CreateNodeRequest,
|
|
50
60
|
CreateNodeResultFailure,
|
|
51
61
|
CreateNodeResultSuccess,
|
|
@@ -73,6 +83,9 @@ from griptape_nodes.retained_mode.events.node_events import (
|
|
|
73
83
|
ListParametersOnNodeRequest,
|
|
74
84
|
ListParametersOnNodeResultFailure,
|
|
75
85
|
ListParametersOnNodeResultSuccess,
|
|
86
|
+
SendNodeMessageRequest,
|
|
87
|
+
SendNodeMessageResultFailure,
|
|
88
|
+
SendNodeMessageResultSuccess,
|
|
76
89
|
SerializedNodeCommands,
|
|
77
90
|
SerializedParameterValueTracker,
|
|
78
91
|
SerializedSelectedNodesCommands,
|
|
@@ -142,6 +155,9 @@ class NodeManager:
|
|
|
142
155
|
)
|
|
143
156
|
event_manager.assign_manager_to_request_type(GetNodeMetadataRequest, self.on_get_node_metadata_request)
|
|
144
157
|
event_manager.assign_manager_to_request_type(SetNodeMetadataRequest, self.on_set_node_metadata_request)
|
|
158
|
+
event_manager.assign_manager_to_request_type(
|
|
159
|
+
BatchSetNodeMetadataRequest, self.on_batch_set_node_metadata_request
|
|
160
|
+
)
|
|
145
161
|
event_manager.assign_manager_to_request_type(
|
|
146
162
|
ListConnectionsForNodeRequest, self.on_list_connections_for_node_request
|
|
147
163
|
)
|
|
@@ -288,7 +304,30 @@ class NodeManager:
|
|
|
288
304
|
traceback.print_exc()
|
|
289
305
|
details = f"Could not create Node '{final_node_name}' of type '{request.node_type}': {err}"
|
|
290
306
|
logger.error(details)
|
|
291
|
-
|
|
307
|
+
|
|
308
|
+
# Check if we should create an Error Proxy node instead of failing
|
|
309
|
+
if request.create_error_proxy_on_failure:
|
|
310
|
+
try:
|
|
311
|
+
# Create ErrorProxyNode directly since it needs special initialization
|
|
312
|
+
node = ErrorProxyNode(
|
|
313
|
+
name=final_node_name,
|
|
314
|
+
original_node_type=request.node_type,
|
|
315
|
+
original_library_name=request.specific_library_name or "Unknown",
|
|
316
|
+
failure_reason=str(err),
|
|
317
|
+
metadata=request.metadata,
|
|
318
|
+
)
|
|
319
|
+
|
|
320
|
+
logger.warning(
|
|
321
|
+
"Created Error Proxy (placeholder) node '%s' to substitute for failed '%s'",
|
|
322
|
+
final_node_name,
|
|
323
|
+
request.node_type,
|
|
324
|
+
)
|
|
325
|
+
except Exception as proxy_err:
|
|
326
|
+
details = f"Failed to create Error Proxy (placeholder) node: {proxy_err}"
|
|
327
|
+
logger.error(details)
|
|
328
|
+
return CreateNodeResultFailure(result_details=details)
|
|
329
|
+
else:
|
|
330
|
+
return CreateNodeResultFailure(result_details=details)
|
|
292
331
|
# Add it to the Flow.
|
|
293
332
|
parent_flow.add_node(node)
|
|
294
333
|
|
|
@@ -632,6 +671,46 @@ class NodeManager:
|
|
|
632
671
|
result = SetNodeMetadataResultSuccess()
|
|
633
672
|
return result
|
|
634
673
|
|
|
674
|
+
def on_batch_set_node_metadata_request(self, request: BatchSetNodeMetadataRequest) -> ResultPayload:
|
|
675
|
+
updated_nodes = []
|
|
676
|
+
failed_nodes = {}
|
|
677
|
+
|
|
678
|
+
for node_name, metadata_update in request.node_metadata_updates.items():
|
|
679
|
+
# Resolve node name and get node object
|
|
680
|
+
node = None
|
|
681
|
+
if node_name is None:
|
|
682
|
+
# Get from current context
|
|
683
|
+
if not GriptapeNodes.ContextManager().has_current_node():
|
|
684
|
+
failed_nodes["current_context"] = "No current context node available"
|
|
685
|
+
continue
|
|
686
|
+
node = GriptapeNodes.ContextManager().get_current_node()
|
|
687
|
+
actual_node_name = node.name
|
|
688
|
+
else:
|
|
689
|
+
actual_node_name = node_name
|
|
690
|
+
|
|
691
|
+
# Look up node if we don't have it yet
|
|
692
|
+
if node is None:
|
|
693
|
+
obj_mgr = GriptapeNodes.ObjectManager()
|
|
694
|
+
node = obj_mgr.attempt_get_object_by_name_as_type(actual_node_name, BaseNode)
|
|
695
|
+
if node is None:
|
|
696
|
+
failed_nodes[actual_node_name] = f"Node '{actual_node_name}' not found"
|
|
697
|
+
continue
|
|
698
|
+
|
|
699
|
+
single_request = SetNodeMetadataRequest(node_name=actual_node_name, metadata=metadata_update)
|
|
700
|
+
result = self.on_set_node_metadata_request(single_request)
|
|
701
|
+
|
|
702
|
+
if isinstance(result, SetNodeMetadataResultSuccess):
|
|
703
|
+
updated_nodes.append(actual_node_name)
|
|
704
|
+
else:
|
|
705
|
+
failed_nodes[actual_node_name] = result.result_details
|
|
706
|
+
|
|
707
|
+
if not updated_nodes:
|
|
708
|
+
return BatchSetNodeMetadataResultFailure(
|
|
709
|
+
result_details=f"Failed to update any nodes. Failed nodes: {failed_nodes}"
|
|
710
|
+
)
|
|
711
|
+
|
|
712
|
+
return BatchSetNodeMetadataResultSuccess(updated_nodes=updated_nodes, failed_nodes=failed_nodes)
|
|
713
|
+
|
|
635
714
|
def on_list_connections_for_node_request(self, request: ListConnectionsForNodeRequest) -> ResultPayload:
|
|
636
715
|
node_name = request.node_name
|
|
637
716
|
node = None
|
|
@@ -873,7 +952,7 @@ class NodeManager:
|
|
|
873
952
|
input_types=request.input_types,
|
|
874
953
|
output_type=request.output_type,
|
|
875
954
|
default_value=request.default_value,
|
|
876
|
-
user_defined=
|
|
955
|
+
user_defined=request.is_user_defined,
|
|
877
956
|
tooltip=request.tooltip,
|
|
878
957
|
tooltip_as_input=request.tooltip_as_input,
|
|
879
958
|
tooltip_as_property=request.tooltip_as_property,
|
|
@@ -1263,7 +1342,7 @@ class NodeManager:
|
|
|
1263
1342
|
|
|
1264
1343
|
return None
|
|
1265
1344
|
|
|
1266
|
-
def on_alter_parameter_details_request(self, request: AlterParameterDetailsRequest) -> ResultPayload: # noqa: C901, PLR0911
|
|
1345
|
+
def on_alter_parameter_details_request(self, request: AlterParameterDetailsRequest) -> ResultPayload: # noqa: C901, PLR0911, PLR0912
|
|
1267
1346
|
node_name = request.node_name
|
|
1268
1347
|
node = None
|
|
1269
1348
|
|
|
@@ -1292,6 +1371,24 @@ class NodeManager:
|
|
|
1292
1371
|
logger.error(details)
|
|
1293
1372
|
return AlterParameterDetailsResultFailure(result_details=details)
|
|
1294
1373
|
|
|
1374
|
+
# Handle ErrorProxyNode parameter alteration requests
|
|
1375
|
+
if isinstance(node, ErrorProxyNode):
|
|
1376
|
+
if request.initial_setup:
|
|
1377
|
+
# Record the alteration request for serialization replay
|
|
1378
|
+
node.record_initialization_request(request)
|
|
1379
|
+
|
|
1380
|
+
# Early return with warning - we're just preserving the original changes
|
|
1381
|
+
details = f"Parameter '{request.parameter_name}' alteration recorded for ErrorProxyNode '{node_name}'. Original node '{node.original_node_type}' had loading errors - preserving changes for correct recreation when dependency '{node.original_library_name}' is resolved."
|
|
1382
|
+
logger.warning(details)
|
|
1383
|
+
|
|
1384
|
+
result_details = ResultDetails(message=details, level="WARNING")
|
|
1385
|
+
return AlterParameterDetailsResultSuccess(result_details=result_details)
|
|
1386
|
+
|
|
1387
|
+
# Reject runtime parameter alterations on ErrorProxy
|
|
1388
|
+
details = f"Cannot modify parameter '{request.parameter_name}' on placeholder node '{node_name}'. This placeholder preserves your workflow structure but doesn't allow parameter modifications, as they could cause issues when the original node is restored."
|
|
1389
|
+
logger.error(details)
|
|
1390
|
+
return AlterParameterDetailsResultFailure(result_details=details)
|
|
1391
|
+
|
|
1295
1392
|
# Does the Element actually exist on the Node?
|
|
1296
1393
|
element = node.get_element_by_name_and_type(request.parameter_name)
|
|
1297
1394
|
if element is None:
|
|
@@ -1426,6 +1523,22 @@ class NodeManager:
|
|
|
1426
1523
|
logger.error(details)
|
|
1427
1524
|
return SetParameterValueResultFailure(result_details=details)
|
|
1428
1525
|
|
|
1526
|
+
# Handle ErrorProxyNode parameter value requests
|
|
1527
|
+
if isinstance(node, ErrorProxyNode):
|
|
1528
|
+
if request.initial_setup:
|
|
1529
|
+
# For initial_setup, actually create the parameter and set the value
|
|
1530
|
+
# This allows normal serialization to handle it, rather than recording the command
|
|
1531
|
+
node.on_attempt_set_parameter_value(param_name)
|
|
1532
|
+
# Continue with normal parameter value setting logic below
|
|
1533
|
+
logger.debug(
|
|
1534
|
+
"Created parameter '%s' on ErrorProxyNode '%s' during initial setup", param_name, node_name
|
|
1535
|
+
)
|
|
1536
|
+
else:
|
|
1537
|
+
# Reject runtime parameter value changes on ErrorProxy
|
|
1538
|
+
details = f"Cannot set parameter '{param_name}' on placeholder node '{node_name}'. This placeholder preserves your workflow structure but doesn't allow parameter changes, as they could cause issues when the original node is restored."
|
|
1539
|
+
logger.error(details)
|
|
1540
|
+
return SetParameterValueResultFailure(result_details=details)
|
|
1541
|
+
|
|
1429
1542
|
# Does the Parameter actually exist on the Node?
|
|
1430
1543
|
parameter = node.get_parameter_by_name(param_name)
|
|
1431
1544
|
if parameter is None:
|
|
@@ -1885,20 +1998,42 @@ class NodeManager:
|
|
|
1885
1998
|
library_used = node.metadata["library"]
|
|
1886
1999
|
# Get the library metadata so we can get the version.
|
|
1887
2000
|
library_metadata_request = GetLibraryMetadataRequest(library=library_used)
|
|
1888
|
-
|
|
2001
|
+
# Call LibraryManager directly to avoid error toasts when library is unavailable (expected for ErrorProxyNode)
|
|
2002
|
+
# Per https://github.com/griptape-ai/griptape-nodes/issues/1940
|
|
2003
|
+
library_metadata_result = GriptapeNodes.LibraryManager().get_library_metadata_request(
|
|
2004
|
+
library_metadata_request
|
|
2005
|
+
)
|
|
2006
|
+
|
|
1889
2007
|
if not isinstance(library_metadata_result, GetLibraryMetadataResultSuccess):
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
2008
|
+
if isinstance(node, ErrorProxyNode):
|
|
2009
|
+
# For ErrorProxyNode, use descriptive message when original library unavailable
|
|
2010
|
+
library_version = "<version unavailable; workflow was saved when library was unable to be loaded>"
|
|
2011
|
+
library_details = LibraryNameAndVersion(library_name=library_used, library_version=library_version)
|
|
2012
|
+
details = f"Serializing Node '{node_name}' (original type: {node.original_node_type}) with unavailable library '{library_used}'. Saving as ErrorProxy with placeholder version. Fix the missing library and reload the workflow to restore the original node."
|
|
2013
|
+
logger.warning(details)
|
|
2014
|
+
else:
|
|
2015
|
+
# For regular nodes, this is still an error
|
|
2016
|
+
details = f"Attempted to serialize Node '{node_name}' to commands. Failed to get metadata for library '{library_used}'."
|
|
2017
|
+
logger.error(details)
|
|
2018
|
+
return SerializeNodeToCommandsResultFailure(result_details=details)
|
|
2019
|
+
else:
|
|
2020
|
+
library_version = library_metadata_result.metadata.library_version
|
|
2021
|
+
library_details = LibraryNameAndVersion(library_name=library_used, library_version=library_version)
|
|
2022
|
+
|
|
2023
|
+
# Handle ErrorProxyNode serialization - serialize as original node type
|
|
1893
2024
|
|
|
1894
|
-
|
|
1895
|
-
|
|
2025
|
+
if isinstance(node, ErrorProxyNode):
|
|
2026
|
+
serialized_node_type = node.original_node_type
|
|
2027
|
+
serialized_library_name = node.original_library_name
|
|
2028
|
+
else:
|
|
2029
|
+
serialized_node_type = node.__class__.__name__
|
|
2030
|
+
serialized_library_name = library_details.library_name
|
|
1896
2031
|
|
|
1897
2032
|
# Get the creation details.
|
|
1898
2033
|
create_node_request = CreateNodeRequest(
|
|
1899
|
-
node_type=
|
|
2034
|
+
node_type=serialized_node_type,
|
|
1900
2035
|
node_name=node_name,
|
|
1901
|
-
specific_library_name=
|
|
2036
|
+
specific_library_name=serialized_library_name,
|
|
1902
2037
|
metadata=copy.deepcopy(node.metadata),
|
|
1903
2038
|
# If it is actively resolving, mark as unresolved.
|
|
1904
2039
|
resolution=node.state.value,
|
|
@@ -1906,20 +2041,42 @@ class NodeManager:
|
|
|
1906
2041
|
)
|
|
1907
2042
|
|
|
1908
2043
|
# We're going to compare this node instance vs. a canonical one. Rez that one up.
|
|
1909
|
-
|
|
2044
|
+
# For ErrorProxyNode, we can't create a reference node, so skip comparison
|
|
2045
|
+
if isinstance(node, ErrorProxyNode):
|
|
2046
|
+
reference_node = None
|
|
2047
|
+
else:
|
|
2048
|
+
reference_node = type(node)(name="REFERENCE NODE")
|
|
1910
2049
|
|
|
1911
2050
|
# Now creation or alteration of all of the elements.
|
|
1912
2051
|
element_modification_commands = []
|
|
1913
2052
|
for parameter in node.parameters:
|
|
1914
2053
|
# Create the parameter, or alter it on the existing node
|
|
1915
2054
|
if parameter.user_defined:
|
|
1916
|
-
#
|
|
2055
|
+
# Always serialize user-defined parameters regardless of node type
|
|
2056
|
+
param_dict = parameter.to_dict()
|
|
2057
|
+
param_dict["initial_setup"] = True
|
|
2058
|
+
add_param_request = AddParameterToNodeRequest.create(**param_dict)
|
|
2059
|
+
element_modification_commands.append(add_param_request)
|
|
2060
|
+
elif isinstance(node, ErrorProxyNode):
|
|
2061
|
+
# For ErrorProxyNode, replay all recorded initialization requests for this parameter
|
|
2062
|
+
recorded_requests = node.get_recorded_initialization_requests()
|
|
2063
|
+
matching_requests = [
|
|
2064
|
+
recorded_request
|
|
2065
|
+
for recorded_request in recorded_requests
|
|
2066
|
+
if (
|
|
2067
|
+
hasattr(recorded_request, "parameter_name")
|
|
2068
|
+
and getattr(recorded_request, "parameter_name", None) == parameter.name
|
|
2069
|
+
)
|
|
2070
|
+
]
|
|
2071
|
+
element_modification_commands.extend(matching_requests)
|
|
2072
|
+
elif reference_node is None:
|
|
2073
|
+
# Normal node with no reference - treat all parameters as needing serialization
|
|
1917
2074
|
param_dict = parameter.to_dict()
|
|
1918
2075
|
param_dict["initial_setup"] = True
|
|
1919
2076
|
add_param_request = AddParameterToNodeRequest.create(**param_dict)
|
|
1920
2077
|
element_modification_commands.append(add_param_request)
|
|
1921
2078
|
else:
|
|
1922
|
-
#
|
|
2079
|
+
# Normal node - compare against reference node
|
|
1923
2080
|
diff = NodeManager._manage_alter_details(parameter, reference_node)
|
|
1924
2081
|
relevant = False
|
|
1925
2082
|
for key in diff:
|
|
@@ -1934,6 +2091,10 @@ class NodeManager:
|
|
|
1934
2091
|
|
|
1935
2092
|
# Now assignment of values to all of the parameters.
|
|
1936
2093
|
set_value_commands = []
|
|
2094
|
+
|
|
2095
|
+
# ErrorProxyNode uses normal parameter serialization now since we create real parameters
|
|
2096
|
+
# Only AlterParameterDetailsRequest commands are recorded and replayed
|
|
2097
|
+
# Normal node - use current parameter values
|
|
1937
2098
|
for parameter in node.parameters:
|
|
1938
2099
|
# SetParameterValueRequest event
|
|
1939
2100
|
set_param_value_requests = NodeManager._handle_parameter_value_saving(
|
|
@@ -2298,6 +2459,7 @@ class NodeManager:
|
|
|
2298
2459
|
value: Any,
|
|
2299
2460
|
serialized_parameter_value_tracker: SerializedParameterValueTracker,
|
|
2300
2461
|
unique_parameter_uuid_to_values: dict,
|
|
2462
|
+
parameter: Parameter,
|
|
2301
2463
|
parameter_name: str,
|
|
2302
2464
|
node_name: str,
|
|
2303
2465
|
*,
|
|
@@ -2321,8 +2483,10 @@ class NodeManager:
|
|
|
2321
2483
|
case SerializedParameterValueTracker.TrackerState.NOT_IN_TRACKER:
|
|
2322
2484
|
# This value is new for us.
|
|
2323
2485
|
|
|
2324
|
-
#
|
|
2325
|
-
|
|
2486
|
+
# Check if parameter is marked as non-serializable (e.g., ImageDrivers, PromptDrivers, file handles)
|
|
2487
|
+
if not parameter.serializable:
|
|
2488
|
+
serialized_parameter_value_tracker.add_as_not_serializable(value_id)
|
|
2489
|
+
return None
|
|
2326
2490
|
|
|
2327
2491
|
# Check if we can serialize it.
|
|
2328
2492
|
try:
|
|
@@ -2403,12 +2567,13 @@ class NodeManager:
|
|
|
2403
2567
|
value=internal_value,
|
|
2404
2568
|
serialized_parameter_value_tracker=serialized_parameter_value_tracker,
|
|
2405
2569
|
unique_parameter_uuid_to_values=unique_parameter_uuid_to_values,
|
|
2570
|
+
parameter=parameter,
|
|
2406
2571
|
is_output=False,
|
|
2407
2572
|
parameter_name=parameter.name,
|
|
2408
2573
|
node_name=node.name,
|
|
2409
2574
|
)
|
|
2410
2575
|
if internal_command is None:
|
|
2411
|
-
details = f"Attempted to serialize set value for parameter '{parameter.name}' on node '{node.name}'. The set value will not be restored in anything that attempts to deserialize or save this node. The value for this parameter was not serialized because it did not match Griptape Nodes' criteria for serializability. To remedy, either update the value's type to support serializability or mark the parameter as not serializable."
|
|
2576
|
+
details = f"Attempted to serialize set value for parameter '{parameter.name}' on node '{node.name}'. The set value will not be restored in anything that attempts to deserialize or save this node. The value for this parameter was not serialized because it did not match Griptape Nodes' criteria for serializability. To remedy, either update the value's type to support serializability or mark the parameter as not serializable by setting serializable=False when creating the parameter."
|
|
2412
2577
|
logger.warning(details)
|
|
2413
2578
|
else:
|
|
2414
2579
|
commands.append(internal_command)
|
|
@@ -2417,12 +2582,13 @@ class NodeManager:
|
|
|
2417
2582
|
value=output_value,
|
|
2418
2583
|
serialized_parameter_value_tracker=serialized_parameter_value_tracker,
|
|
2419
2584
|
unique_parameter_uuid_to_values=unique_parameter_uuid_to_values,
|
|
2585
|
+
parameter=parameter,
|
|
2420
2586
|
is_output=True,
|
|
2421
2587
|
parameter_name=parameter.name,
|
|
2422
2588
|
node_name=node.name,
|
|
2423
2589
|
)
|
|
2424
2590
|
if output_command is None:
|
|
2425
|
-
details = f"Attempted to serialize output value for parameter '{parameter.name}' on node '{node.name}'. The output value will not be restored in anything that attempts to deserialize or save this node. The value for this parameter was not serialized because it did not match Griptape Nodes' criteria for serializability. To remedy, either update the value's type to support serializability or mark the parameter as not serializable."
|
|
2591
|
+
details = f"Attempted to serialize output value for parameter '{parameter.name}' on node '{node.name}'. The output value will not be restored in anything that attempts to deserialize or save this node. The value for this parameter was not serialized because it did not match Griptape Nodes' criteria for serializability. To remedy, either update the value's type to support serializability or mark the parameter as not serializable by setting serializable=False when creating the parameter."
|
|
2426
2592
|
logger.warning(details)
|
|
2427
2593
|
else:
|
|
2428
2594
|
commands.append(output_command)
|
|
@@ -2533,3 +2699,66 @@ class NodeManager:
|
|
|
2533
2699
|
return SetLockNodeStateResultFailure(result_details=details)
|
|
2534
2700
|
node.lock = request.lock
|
|
2535
2701
|
return SetLockNodeStateResultSuccess(node_name=node_name, locked=node.lock)
|
|
2702
|
+
|
|
2703
|
+
def on_send_node_message_request(self, request: SendNodeMessageRequest) -> ResultPayload:
|
|
2704
|
+
"""Handle a SendNodeMessageRequest by calling the node's message callback.
|
|
2705
|
+
|
|
2706
|
+
Args:
|
|
2707
|
+
request: The SendNodeMessageRequest containing message details
|
|
2708
|
+
|
|
2709
|
+
Returns:
|
|
2710
|
+
ResultPayload: Success or failure result with callback response
|
|
2711
|
+
"""
|
|
2712
|
+
node_name = request.node_name
|
|
2713
|
+
node = None
|
|
2714
|
+
|
|
2715
|
+
if node_name is None:
|
|
2716
|
+
# Get from the current context
|
|
2717
|
+
if not GriptapeNodes.ContextManager().has_current_node():
|
|
2718
|
+
details = "Attempted to send message to Node from Current Context. Failed because the Current Context is empty."
|
|
2719
|
+
logger.error(details)
|
|
2720
|
+
return SendNodeMessageResultFailure(result_details=details)
|
|
2721
|
+
|
|
2722
|
+
node = GriptapeNodes.ContextManager().get_current_node()
|
|
2723
|
+
node_name = node.name
|
|
2724
|
+
|
|
2725
|
+
if node is None:
|
|
2726
|
+
# Find the node by name
|
|
2727
|
+
obj_mgr = GriptapeNodes.ObjectManager()
|
|
2728
|
+
node = obj_mgr.attempt_get_object_by_name_as_type(node_name, BaseNode)
|
|
2729
|
+
if node is None:
|
|
2730
|
+
details = f"Attempted to send message to Node '{node_name}', but no such Node was found."
|
|
2731
|
+
logger.error(details)
|
|
2732
|
+
return SendNodeMessageResultFailure(result_details=details)
|
|
2733
|
+
|
|
2734
|
+
# Validate optional_element_name if specified
|
|
2735
|
+
if request.optional_element_name is not None:
|
|
2736
|
+
element = node.root_ui_element.find_element_by_name(request.optional_element_name)
|
|
2737
|
+
if element is None:
|
|
2738
|
+
details = f"Attempted to send message to Node '{node_name}' with element '{request.optional_element_name}', but no such element was found."
|
|
2739
|
+
logger.error(details)
|
|
2740
|
+
return SendNodeMessageResultFailure(result_details=details, altered_workflow_state=False)
|
|
2741
|
+
|
|
2742
|
+
# Call the node's message callback
|
|
2743
|
+
callback_result = node.on_node_message_received(
|
|
2744
|
+
optional_element_name=request.optional_element_name,
|
|
2745
|
+
message_type=request.message_type,
|
|
2746
|
+
message=request.message,
|
|
2747
|
+
)
|
|
2748
|
+
|
|
2749
|
+
if not callback_result.success:
|
|
2750
|
+
details = f"Failed to handle message for Node '{node_name}': {callback_result.details}"
|
|
2751
|
+
logger.warning(details)
|
|
2752
|
+
return SendNodeMessageResultFailure(
|
|
2753
|
+
result_details=callback_result.details,
|
|
2754
|
+
response=callback_result.response,
|
|
2755
|
+
altered_workflow_state=callback_result.altered_workflow_state,
|
|
2756
|
+
)
|
|
2757
|
+
|
|
2758
|
+
details = f"Successfully sent message to Node '{node_name}': {callback_result.details}"
|
|
2759
|
+
logger.debug(details)
|
|
2760
|
+
return SendNodeMessageResultSuccess(
|
|
2761
|
+
result_details=callback_result.details,
|
|
2762
|
+
response=callback_result.response,
|
|
2763
|
+
altered_workflow_state=callback_result.altered_workflow_state,
|
|
2764
|
+
)
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
griptape_nodes/__init__.py,sha256=yk7I75VnngqYyOdaU57hpusAyL8tHYi_DkTtubd44ZI,37367
|
|
2
|
+
griptape_nodes/app/.python-version,sha256=e1X45ntWI8S-8_ppEojalDfXnTq6FW3kjUgdsyrH0W0,5
|
|
3
|
+
griptape_nodes/app/__init__.py,sha256=DB-DTsgcNnbmEClXEouwzGhrmo3gHBCWXB9BkPGpdQI,90
|
|
4
|
+
griptape_nodes/app/api.py,sha256=RqNq8GikeEsDF9rt55vv1ZGYMgw5NO4bhMdLKXEId08,6925
|
|
5
|
+
griptape_nodes/app/app.py,sha256=TUlMsOG6h8KIsZp2wBAVYpwQT996hmi2q_Qubouuqt4,17984
|
|
6
|
+
griptape_nodes/app/watch.py,sha256=QTNTx4EbVEQCdidyUNdms74w7fjrjBKAadu1LUDp6WI,2064
|
|
7
|
+
griptape_nodes/bootstrap/__init__.py,sha256=ENv3SIzQ9TtlRrg1y4e4CnoBpJaFpFSkNpTFBV8X5Ls,25
|
|
8
|
+
griptape_nodes/bootstrap/workflow_executors/__init__.py,sha256=pyjN81-eLtjyECFYLXOtMCixiiI9qBi5yald86iM7Ek,34
|
|
9
|
+
griptape_nodes/bootstrap/workflow_executors/local_workflow_executor.py,sha256=8JEoaSNo4HPRjMYCvMDIGvgxfrS__0hrMBVCYutF9Xg,9274
|
|
10
|
+
griptape_nodes/bootstrap/workflow_executors/subprocess_workflow_executor.py,sha256=thC-W6O0WdHw8O5qAfoQS-0iXWCBrh20JibejHvGyQw,3347
|
|
11
|
+
griptape_nodes/bootstrap/workflow_executors/workflow_executor.py,sha256=lFAA-5bWyr2Kf1MyS50vX1SeG7l2zmbSrb5_kyyIIro,417
|
|
12
|
+
griptape_nodes/drivers/__init__.py,sha256=tHmiFQn6uJyFVhC2PrqHgRUH3d3yDsqMQpWqRasmaqA,42
|
|
13
|
+
griptape_nodes/drivers/storage/__init__.py,sha256=_7p8vJt3YnnF6sD3Uxxw38c-gazuMIHSS-m3G6sa2Qk,208
|
|
14
|
+
griptape_nodes/drivers/storage/base_storage_driver.py,sha256=so2Syl3QSN3iPvllEST6yuYOLaGg5h5Nwo3m8I51N-Y,3734
|
|
15
|
+
griptape_nodes/drivers/storage/griptape_cloud_storage_driver.py,sha256=DTi1S--uxG6xi1U_EMQyu42vEc07ZIy-egLFu0tJ8-c,7847
|
|
16
|
+
griptape_nodes/drivers/storage/local_storage_driver.py,sha256=PpEvtB_TWg5c0E5fr-PD_VW1fYBTNsm4BF1IDWUVPUY,3488
|
|
17
|
+
griptape_nodes/drivers/storage/storage_backend.py,sha256=3QBIwrgPc1krBIiPYLoK2swhIPDiKJnnucOEdyx7y3c,184
|
|
18
|
+
griptape_nodes/exe_types/__init__.py,sha256=wGGwKGX9-TSarUFbXpDvdU_J7eXIbWTBl_NCLOZa-G8,32
|
|
19
|
+
griptape_nodes/exe_types/connections.py,sha256=_-VNzf6Kay62QzJlSX-LlHTUhz-CKF-UDsbZLJ0l6Wk,12435
|
|
20
|
+
griptape_nodes/exe_types/core_types.py,sha256=bNdC9UX4nX6yOqb9wQyOcG4DX0WaV65Jd6Yw7e5rnpQ,71471
|
|
21
|
+
griptape_nodes/exe_types/flow.py,sha256=pCeTrx8yrUgLw1U9yQxC7arzJjyP2vag-pG0QTKut-M,5716
|
|
22
|
+
griptape_nodes/exe_types/node_types.py,sha256=tNhh-lWyM_duSFAHhn-C-nbMU96TBnKklxcyVSBqd_w,59950
|
|
23
|
+
griptape_nodes/exe_types/type_validator.py,sha256=RTz1vX09jzQpHhozITMJ0siOZUXvsERDhrApjdaM1WM,1120
|
|
24
|
+
griptape_nodes/machines/__init__.py,sha256=v0jkwr-CFOLmfEYUQvX8BKQLOdvhSsA6toXkdHcPGUE,30
|
|
25
|
+
griptape_nodes/machines/control_flow.py,sha256=rH6dRVXrCqXDDPoYLU31QuZh8kuIcRE7smli3pF0UdU,9843
|
|
26
|
+
griptape_nodes/machines/fsm.py,sha256=g6fFyeoNbIcR_h63Mt0L2scjOuWJhKyZQsnxcM8pYPU,2248
|
|
27
|
+
griptape_nodes/machines/node_resolution.py,sha256=709cRhvc6Su3Isa2qDnIbX876aXjNumzP2Fg6v2zpwQ,22145
|
|
28
|
+
griptape_nodes/mcp_server/__init__.py,sha256=GSpJWqE4lICaryhsQR1okeMH2x6j1bBL0HVxtr52WLg,42
|
|
29
|
+
griptape_nodes/mcp_server/server.py,sha256=xT9a0gZ3663Ro9pRc4F5aa7ze3upbSU5qLPOep_Ragw,5058
|
|
30
|
+
griptape_nodes/mcp_server/ws_request_manager.py,sha256=KFAqwgXD1Fo1KLzE9fcx3sAU4BYFRNqD7_cyN98bR7E,10951
|
|
31
|
+
griptape_nodes/node_library/__init__.py,sha256=U3FcSdmq6UW7qt6E3Up3NWKvUEn5_5lqL-u5qbzfxMQ,28
|
|
32
|
+
griptape_nodes/node_library/advanced_node_library.py,sha256=B1ZaxuFIzQ6tx_3MLIxlsHuahthEC1Hw_t6K_ByIdzs,2104
|
|
33
|
+
griptape_nodes/node_library/library_registry.py,sha256=fE1NF-9SeRPK_pWPQgfeDBsMzvxiAlShPBvi71DCG9Q,12099
|
|
34
|
+
griptape_nodes/node_library/workflow_registry.py,sha256=XYUggUMV_04dSYeYIBmTJ6RHdaie57hg5GYwKbquktg,5489
|
|
35
|
+
griptape_nodes/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
|
+
griptape_nodes/retained_mode/__init__.py,sha256=X12DKL6KhLsiRTPIlrPj2h76_sJ0q0eH4r0kMQkodm0,29
|
|
37
|
+
griptape_nodes/retained_mode/events/__init__.py,sha256=7B1C-c0jVvnShtHJ2lfX6BZPE0U1DgQwg1e4DorhKG0,22
|
|
38
|
+
griptape_nodes/retained_mode/events/agent_events.py,sha256=xyCtR-Hf1vv6Ft-z0At0ytIMYBRckYympxdByVZXrCE,4880
|
|
39
|
+
griptape_nodes/retained_mode/events/app_events.py,sha256=_1Hq2ynjeyry8WlJ8psvfYSAGHJtRmUowqypksF8Nfs,8416
|
|
40
|
+
griptape_nodes/retained_mode/events/arbitrary_python_events.py,sha256=uhep1c1xjUc-YQO5nIStAE48PS6rFZLTDQIr_Qb3we8,1460
|
|
41
|
+
griptape_nodes/retained_mode/events/base_events.py,sha256=RXENzYddHeo3eXDMo8hBygWPYN_uqAiZXmlS0ZUZsUs,23076
|
|
42
|
+
griptape_nodes/retained_mode/events/config_events.py,sha256=9WhFx6mD7QF_h1ldFAPRE_iLtrQBAFEvA6_MzhGOomk,6129
|
|
43
|
+
griptape_nodes/retained_mode/events/connection_events.py,sha256=QjHAp0SeCbRSG-dF_nU_CPaOcSKItq2DWJ_FHWgF1b4,4744
|
|
44
|
+
griptape_nodes/retained_mode/events/context_events.py,sha256=-FIwjI0hJodDhfM4BF-3GTRycu80v1TlSSOX34oA9nA,2122
|
|
45
|
+
griptape_nodes/retained_mode/events/execution_events.py,sha256=z1RakAGJQrNUmU6SU6evXSldPdlSlw0gBm7_S15JaEo,9946
|
|
46
|
+
griptape_nodes/retained_mode/events/flow_events.py,sha256=CE7aFHvByY6ii0hI-_Q9ukEJDbHk65LUeRBhrjGkxbQ,14139
|
|
47
|
+
griptape_nodes/retained_mode/events/generate_request_payload_schemas.py,sha256=PQ0QRZAUBljSIGjB8QhYUeRmSrfmLsJ6XVcygJKi13I,1102
|
|
48
|
+
griptape_nodes/retained_mode/events/library_events.py,sha256=9KVMHA5VazY3fXEIm31Zmy-rJ43AxNgna4SzVPmy8Pg,17629
|
|
49
|
+
griptape_nodes/retained_mode/events/logger_events.py,sha256=jYlxzPomgCsJuPtJ0znWBhD8QJfC8qC4xfChDiuVuyg,705
|
|
50
|
+
griptape_nodes/retained_mode/events/node_events.py,sha256=z9Ke9skPMCcp3Mqqq18GzLSP8RcsfLh_L2_Z3ftJKpc,28950
|
|
51
|
+
griptape_nodes/retained_mode/events/object_events.py,sha256=cJaqEU73Lzf1RRxJrFqEpl8eTr-gDhKpXKywJ-vVCJQ,2631
|
|
52
|
+
griptape_nodes/retained_mode/events/os_events.py,sha256=X0mmyk_r5t6upaQ8eWClD7J25AiX2ggsAuxMZSW9Vx0,8085
|
|
53
|
+
griptape_nodes/retained_mode/events/parameter_events.py,sha256=Fgfdgo70w73-8e4iw-j8zjP0MgKNDmojDjqQLLhbnoY,18549
|
|
54
|
+
griptape_nodes/retained_mode/events/payload_registry.py,sha256=q-wxUqp63vhNj-Pl1JGJHnBkhUefcCArPoMN3KBREEI,1691
|
|
55
|
+
griptape_nodes/retained_mode/events/secrets_events.py,sha256=fCw3OMFfxB8FTZs4ybojm1nqNvhcjtoNylQhX75-jkM,4156
|
|
56
|
+
griptape_nodes/retained_mode/events/static_file_events.py,sha256=c8kKkrxAPZxrE9fsldpWtweK1C4T-1-dHWw_76SRehM,3764
|
|
57
|
+
griptape_nodes/retained_mode/events/sync_events.py,sha256=AoxBZLPPdzx4S5CiOJVRDebHnQb349Dq5jVO8Fh_sn8,2016
|
|
58
|
+
griptape_nodes/retained_mode/events/validation_events.py,sha256=H2yWoHp2t7QwGV_fDQXRy7JojYnK4k6SOAlEvRYST_Q,3062
|
|
59
|
+
griptape_nodes/retained_mode/events/workflow_events.py,sha256=n_GOxfpCITT46uUJusU3cpsklK--8oDOEPL4aq6AQdU,18661
|
|
60
|
+
griptape_nodes/retained_mode/griptape_nodes.py,sha256=KAHju-jgUHQGtb5I3T5_IgdTezooz0rTa57iQeif7KY,24988
|
|
61
|
+
griptape_nodes/retained_mode/managers/__init__.py,sha256=OTXysKusqYCQeAYwnVj4PbE3MxvAUTq9xOZT6vUE3JA,24
|
|
62
|
+
griptape_nodes/retained_mode/managers/agent_manager.py,sha256=ZL01xBfx0Bg84QH7OX_Zel1VOGL6t86nxdaUG3HFUYs,11265
|
|
63
|
+
griptape_nodes/retained_mode/managers/arbitrary_code_exec_manager.py,sha256=9c3-taR1mKTNbUHxT_Znw__cYZ4DTnDs5JB8Vb9Mm6s,1807
|
|
64
|
+
griptape_nodes/retained_mode/managers/config_manager.py,sha256=11shHccjKfS3WvCYH4F2s2HIKnbPMsZ6iWBVgZkxPDA,25676
|
|
65
|
+
griptape_nodes/retained_mode/managers/context_manager.py,sha256=DiGNh09TZ7rsLEcXqqB9Yrh2ietBy59LPF7GM0OBQS8,22930
|
|
66
|
+
griptape_nodes/retained_mode/managers/engine_identity_manager.py,sha256=GBBz7HJBJVNyXLGRdAvqDgihMRB_YjWqdEwLMCnadUg,4409
|
|
67
|
+
griptape_nodes/retained_mode/managers/event_manager.py,sha256=rGoeGO0ATZd9w8Gm1RDHoODDYyJ-XqxiGJidYijH_QY,7201
|
|
68
|
+
griptape_nodes/retained_mode/managers/flow_manager.py,sha256=3xE61Pa6dUdboPTvhW-OSYOXbyKQdBIzQkwqXp3Rv5U,111589
|
|
69
|
+
griptape_nodes/retained_mode/managers/library_lifecycle/__init__.py,sha256=Iq79VxTdETiExBfFWXceJggDZqS6X3OkzXE9XwFclVw,1340
|
|
70
|
+
griptape_nodes/retained_mode/managers/library_lifecycle/data_models.py,sha256=fvAP0VaYGPHYl_Kg3RL4gdJlpqya8UTvpP-C49r950k,6723
|
|
71
|
+
griptape_nodes/retained_mode/managers/library_lifecycle/library_directory.py,sha256=xE6I3jGWxSSkUtuZebwk0AvukIP2JzLBN4tNqq_MEm0,14758
|
|
72
|
+
griptape_nodes/retained_mode/managers/library_lifecycle/library_fsm.py,sha256=DWTSIDbhgFDQIGxrLaDO3y8GIt77-3KD0wWwx_R30N8,18549
|
|
73
|
+
griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/__init__.py,sha256=X0SnqNuEtBVPvccfrUr_wBQQ9i5xJzcaWJLwFJTRRco,814
|
|
74
|
+
griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/base.py,sha256=jeO8k1B6OV50jkN8lXvu_JkhqBGlhC0unULeNQx8w3o,2609
|
|
75
|
+
griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/github.py,sha256=KctvCUy6ysM4zIp0XXkDOIlMJryapJAoXWA2ZXPxM4I,4302
|
|
76
|
+
griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/local_file.py,sha256=mVE-MG2qc0pN_ZzdqH7lkzMopVJRjn-F3LVdvfceRaw,15292
|
|
77
|
+
griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/package.py,sha256=hbHg-P4ALGgAqlkbaV1hM1v3Fwl5uJKUi_Z94hS3Bu8,3746
|
|
78
|
+
griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/sandbox.py,sha256=32sj26dns8uvQIZUxHNmCDsKyXUZDP_PNKifXPUWeHg,6111
|
|
79
|
+
griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance.py,sha256=cCGr-MQ1RlVBiUTZepYEKdVhPgC4ebcYrmpv8rI3VeM,894
|
|
80
|
+
griptape_nodes/retained_mode/managers/library_lifecycle/library_status.py,sha256=K3UEBzAdCY9wphyBbLxDYP0Q43aYvhLZ_Pz7_SzcPec,443
|
|
81
|
+
griptape_nodes/retained_mode/managers/library_manager.py,sha256=yJzyQAAPa8-UCk4xBtloaUeH9RQX7F-QsXOMCFIpTxE,98816
|
|
82
|
+
griptape_nodes/retained_mode/managers/node_manager.py,sha256=gNM_IO57mpWS74g_fiRo9EfLQ4a0UAW6_LXGDzixtkM,147631
|
|
83
|
+
griptape_nodes/retained_mode/managers/object_manager.py,sha256=tIPeAiF94ptIpXxM29qFgQTaXazRgX7faTJLV87yWZE,12403
|
|
84
|
+
griptape_nodes/retained_mode/managers/operation_manager.py,sha256=lTkMZlaacTgtV5oV-YF6HG8xsx9V_LwX1eg074WTs2k,20137
|
|
85
|
+
griptape_nodes/retained_mode/managers/os_manager.py,sha256=bPJYCkJASisbWuA9qDKCXTquGEaVOMdgBTWOO10WmbA,34347
|
|
86
|
+
griptape_nodes/retained_mode/managers/secrets_manager.py,sha256=6MTvnXQUjYXuCzXIlhozKYoF1jTk6BrDiML-vepqafY,6384
|
|
87
|
+
griptape_nodes/retained_mode/managers/session_manager.py,sha256=fLjtBvgGY3daq1vbpJPXq069n35Z-Zr5dF3B0XyD2JY,11817
|
|
88
|
+
griptape_nodes/retained_mode/managers/settings.py,sha256=wAPQFlUHmw5nQKxT-9Bw_yxduaxc7XHtdehdHDhqUZc,4665
|
|
89
|
+
griptape_nodes/retained_mode/managers/static_files_manager.py,sha256=cEtzWoTsl1sJyYyVWrd2O7kPSpQ1rjRYx7P_Lm5wtF8,7339
|
|
90
|
+
griptape_nodes/retained_mode/managers/sync_manager.py,sha256=oVtFLQa-S4iiGwuuy8YJ0lZvbkF106VE3jW2qjCQoQM,20671
|
|
91
|
+
griptape_nodes/retained_mode/managers/version_compatibility_manager.py,sha256=85gpl9WCgHbWNifxoiAidHmsXyqpUCTjuEW-FziFYME,8375
|
|
92
|
+
griptape_nodes/retained_mode/managers/workflow_manager.py,sha256=XhsIAA2gBrO2ZI5jXijbmP05dFvyBDaG9DTPwY6qfZ4,177538
|
|
93
|
+
griptape_nodes/retained_mode/retained_mode.py,sha256=NmpAQ3NksDdAZ9SMGRfbSDKBr5cDRjSu06SJNGH2Vvw,56903
|
|
94
|
+
griptape_nodes/retained_mode/utils/__init__.py,sha256=W5dvv8YwvVVq_8eVTgMd3Z_VB_Dtq1sIIVq8745QH_I,52
|
|
95
|
+
griptape_nodes/retained_mode/utils/engine_identity.py,sha256=PZmdlYM69-B-6Z1F4iJfZyVm2twJY5cSGoiUJCMj0xU,7846
|
|
96
|
+
griptape_nodes/retained_mode/utils/name_generator.py,sha256=IZLahtfP3XC79XApLdGoZ0IKKUkgiITpd16RK7NbyEs,2524
|
|
97
|
+
griptape_nodes/traits/__init__.py,sha256=bTLXTiZTJz2z15RRLoPI4nvLnNW9FiLcKL_2pT4E10g,32
|
|
98
|
+
griptape_nodes/traits/add_param_button.py,sha256=Xtc39SfvYY6JDjhxu2wmdeaHW2X4LkpNAQufSTCP3hY,655
|
|
99
|
+
griptape_nodes/traits/button.py,sha256=rpQQ77ASKH3YJabc5WWw9DpEHQiMg1jx0i0sdkwH-SA,611
|
|
100
|
+
griptape_nodes/traits/clamp.py,sha256=BZVHiWfBNePWaPMaLyOgtcWzkM7Ls4hcPlm_afmGiIs,1030
|
|
101
|
+
griptape_nodes/traits/compare.py,sha256=X-BXGemRDxQV4EX8X24LdtcwMWwfQ1jGqDvH2bSiSuc,521
|
|
102
|
+
griptape_nodes/traits/compare_images.py,sha256=KW0WlwsJP6nBoC1irdeRnUWUnZIJvlROlDhyWhX8iEs,1594
|
|
103
|
+
griptape_nodes/traits/file_system_picker.py,sha256=p-RaH4xwb2Fo0wuFsYbsiL66W23KdESX0Qq6EAtDFj8,5806
|
|
104
|
+
griptape_nodes/traits/minmax.py,sha256=eVySrz02WPvpwbSrqW7FRTmetNBOBKyf8YrXrzyOGnk,1312
|
|
105
|
+
griptape_nodes/traits/options.py,sha256=Kj7isw0XkhI1jmCCYuXP63Td8K8rg21nGC77ultNXnI,1096
|
|
106
|
+
griptape_nodes/traits/slider.py,sha256=bLe46gtCmjhMCHaGzUstIWMJv2Zl2Yee7fkT6g4Q6Rk,1236
|
|
107
|
+
griptape_nodes/traits/trait_registry.py,sha256=pU26mW2ztfu1UARGYloflsTPqJ1X_-u013cMNoel9Hw,1171
|
|
108
|
+
griptape_nodes/traits/traits.json,sha256=xtY7lcMzeUPiyh494xj4LyRl44c0VBFL-LRAkywuxD4,60
|
|
109
|
+
griptape_nodes/updater/__init__.py,sha256=eWalSt_N5a0RPT2YkXeIee_YPiCL47OB0G9GB0gn3pY,2522
|
|
110
|
+
griptape_nodes/updater/__main__.py,sha256=lhMMctbBeni57ximitvkwqJ1TQzk79Jg9w0rkKjtp5Y,79
|
|
111
|
+
griptape_nodes/utils/__init__.py,sha256=5-NvqVvxiwuRx2UgyzenuLFXyodvfDqJ_dzcrgZpPOk,33
|
|
112
|
+
griptape_nodes/utils/dict_utils.py,sha256=kyli5MOfzSor0a8lmXfYBVS_NXGf6UK1SM6k_Qn5bs8,6889
|
|
113
|
+
griptape_nodes/utils/image_preview.py,sha256=NhYIqohRF9vbFpWIEvZHdPLLPK_JdUBvC4RvNAsSa1w,4480
|
|
114
|
+
griptape_nodes/utils/metaclasses.py,sha256=RSKyAvZppH_hbMugmUmIr8QqOg1sYY4uRNfQybD4O8Q,287
|
|
115
|
+
griptape_nodes/utils/uv_utils.py,sha256=ZK37LmacKfxMVKkcIOyJ35HOXgV6sFWE9CzgKPmaRU0,519
|
|
116
|
+
griptape_nodes/utils/version_utils.py,sha256=Y-HJfJW6Jxuz_jOnHxMiy-pmMauHRnY-7BO3alGmw-Q,4318
|
|
117
|
+
griptape_nodes/version_compatibility/__init__.py,sha256=JMz1sB7Zsj6pS1S5sdsPR0kn89s1A0sB0kFIvygJYfo,74
|
|
118
|
+
griptape_nodes/version_compatibility/versions/__init__.py,sha256=PWSxM28LPUdBdRPA98j4RUWvuZ4NqfX1day2VU6SqPw,74
|
|
119
|
+
griptape_nodes/version_compatibility/versions/v0_39_0/__init__.py,sha256=21iKlFpsmBW4WsAexSD0WMAJnsYmMq2sIbDeYC831fc,62
|
|
120
|
+
griptape_nodes/version_compatibility/versions/v0_39_0/modified_parameters_set_removal.py,sha256=z4hXUeZNSlkJ7xwG6HRJISeWA7iAtZLKQhTiTvyhSwk,5262
|
|
121
|
+
griptape_nodes/version_compatibility/workflow_versions/__init__.py,sha256=z5XDgkizoNByCXpyo34hfsJKFsWlOHbD6hgzfYH9ubc,52
|
|
122
|
+
griptape_nodes/version_compatibility/workflow_versions/v0_7_0/__init__.py,sha256=IzPPmGK86h2swfGGTOHyVcBIlOng6SjgWQzlbf3ngmo,51
|
|
123
|
+
griptape_nodes/version_compatibility/workflow_versions/v0_7_0/local_executor_argument_addition.py,sha256=9PclAp_Mm5IPtd5yj5XSS5-x7QYmifvhTly20CgBZmo,2018
|
|
124
|
+
griptape_nodes-0.51.0.dist-info/WHEEL,sha256=4n27za1eEkOnA7dNjN6C5-O2rUiw6iapszm14Uj-Qmk,79
|
|
125
|
+
griptape_nodes-0.51.0.dist-info/entry_points.txt,sha256=qvevqd3BVbAV5TcantnAm0ouqaqYKhsRO3pkFymWLWM,82
|
|
126
|
+
griptape_nodes-0.51.0.dist-info/METADATA,sha256=T0xTRn5SMCOcFTVFS_d6sBC_XdxGNGiiA3YzQMFWl0Q,4980
|
|
127
|
+
griptape_nodes-0.51.0.dist-info/RECORD,,
|