griptape-nodes 0.58.1__py3-none-any.whl → 0.59.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.
Files changed (30) hide show
  1. griptape_nodes/bootstrap/utils/python_subprocess_executor.py +2 -2
  2. griptape_nodes/bootstrap/workflow_executors/local_session_workflow_executor.py +0 -5
  3. griptape_nodes/bootstrap/workflow_executors/local_workflow_executor.py +9 -5
  4. griptape_nodes/bootstrap/workflow_executors/subprocess_workflow_executor.py +0 -1
  5. griptape_nodes/bootstrap/workflow_executors/workflow_executor.py +1 -3
  6. griptape_nodes/bootstrap/workflow_publishers/local_workflow_publisher.py +1 -1
  7. griptape_nodes/cli/commands/init.py +53 -7
  8. griptape_nodes/cli/shared.py +1 -0
  9. griptape_nodes/common/node_executor.py +216 -40
  10. griptape_nodes/exe_types/core_types.py +46 -0
  11. griptape_nodes/exe_types/node_types.py +272 -0
  12. griptape_nodes/machines/control_flow.py +222 -16
  13. griptape_nodes/machines/dag_builder.py +212 -1
  14. griptape_nodes/machines/parallel_resolution.py +237 -4
  15. griptape_nodes/node_library/workflow_registry.py +1 -1
  16. griptape_nodes/retained_mode/events/execution_events.py +5 -4
  17. griptape_nodes/retained_mode/events/flow_events.py +17 -67
  18. griptape_nodes/retained_mode/events/parameter_events.py +122 -1
  19. griptape_nodes/retained_mode/managers/event_manager.py +17 -13
  20. griptape_nodes/retained_mode/managers/flow_manager.py +316 -573
  21. griptape_nodes/retained_mode/managers/library_manager.py +32 -20
  22. griptape_nodes/retained_mode/managers/model_manager.py +19 -8
  23. griptape_nodes/retained_mode/managers/node_manager.py +463 -3
  24. griptape_nodes/retained_mode/managers/object_manager.py +2 -2
  25. griptape_nodes/retained_mode/managers/workflow_manager.py +37 -46
  26. griptape_nodes/retained_mode/retained_mode.py +297 -3
  27. {griptape_nodes-0.58.1.dist-info → griptape_nodes-0.59.0.dist-info}/METADATA +3 -2
  28. {griptape_nodes-0.58.1.dist-info → griptape_nodes-0.59.0.dist-info}/RECORD +30 -30
  29. {griptape_nodes-0.58.1.dist-info → griptape_nodes-0.59.0.dist-info}/WHEEL +1 -1
  30. {griptape_nodes-0.58.1.dist-info → griptape_nodes-0.59.0.dist-info}/entry_points.txt +0 -0
@@ -2,7 +2,7 @@ import inspect
2
2
  import logging
3
3
  from collections.abc import Callable
4
4
  from functools import wraps
5
- from typing import Any
5
+ from typing import Any, Literal
6
6
 
7
7
  from griptape_nodes.retained_mode.events.arbitrary_python_events import RunArbitraryPythonStringRequest
8
8
  from griptape_nodes.retained_mode.events.base_events import (
@@ -45,12 +45,19 @@ from griptape_nodes.retained_mode.events.library_events import (
45
45
  )
46
46
  from griptape_nodes.retained_mode.events.node_events import (
47
47
  CreateNodeRequest,
48
+ CreateNodeResultFailure,
48
49
  DeleteNodeRequest,
49
50
  GetNodeMetadataRequest,
51
+ GetNodeMetadataResultFailure,
52
+ GetNodeMetadataResultSuccess,
50
53
  GetNodeResolutionStateRequest,
51
54
  ListParametersOnNodeRequest,
52
55
  SetLockNodeStateRequest,
56
+ SetLockNodeStateResultFailure,
57
+ SetLockNodeStateResultSuccess,
53
58
  SetNodeMetadataRequest,
59
+ SetNodeMetadataResultFailure,
60
+ SetNodeMetadataResultSuccess,
54
61
  )
55
62
  from griptape_nodes.retained_mode.events.object_events import (
56
63
  RenameObjectRequest,
@@ -58,14 +65,22 @@ from griptape_nodes.retained_mode.events.object_events import (
58
65
  from griptape_nodes.retained_mode.events.parameter_events import (
59
66
  AddParameterToNodeRequest,
60
67
  AlterParameterDetailsRequest,
68
+ ConversionConfig,
69
+ GetConnectionsForParameterRequest,
61
70
  GetParameterDetailsRequest,
62
71
  GetParameterValueRequest,
63
72
  GetParameterValueResultFailure,
73
+ MigrateParameterRequest,
74
+ MigrateParameterResultFailure,
75
+ MigrateParameterResultSuccess,
64
76
  RemoveParameterFromNodeRequest,
65
77
  SetParameterValueRequest,
66
78
  )
67
79
  from griptape_nodes.retained_mode.griptape_nodes import GriptapeNodes
68
80
 
81
+ # Type alias for offset side values
82
+ OffsetSide = Literal["top_left", "top", "top_right", "right", "bottom_right", "bottom", "bottom_left", "left"]
83
+
69
84
  MIN_NODES = 2
70
85
 
71
86
  logger = logging.getLogger("griptpae_nodes_engine")
@@ -230,7 +245,7 @@ class RetainedMode:
230
245
  node_name: str | None = None,
231
246
  parent_flow_name: str | None = None,
232
247
  metadata: dict[Any, Any] | None = None,
233
- ) -> ResultPayload:
248
+ ) -> str | CreateNodeResultFailure:
234
249
  """Creates a node of the specified type and adds it to the current or a specified parent flow.
235
250
 
236
251
  Supports custom naming and metadata (e.g., UI position, display name, tags).
@@ -350,7 +365,9 @@ class RetainedMode:
350
365
  return result
351
366
 
352
367
  @classmethod
353
- def set_lock_node_state(cls, *, node_name: str | None = None, lock: bool = True) -> ResultPayload:
368
+ def set_lock_node_state(
369
+ cls, *, node_name: str | None = None, lock: bool = True
370
+ ) -> SetLockNodeStateResultSuccess | SetLockNodeStateResultFailure:
354
371
  """Sets the lock state of a node.
355
372
 
356
373
  Args:
@@ -391,6 +408,30 @@ class RetainedMode:
391
408
  result = GriptapeNodes().handle_request(request)
392
409
  return result
393
410
 
411
+ @classmethod
412
+ def get_connections_for_parameter(cls, parameter_name: str, node_name: str | None = None) -> ResultPayload:
413
+ """Gets all connections associated with a specific parameter on a node.
414
+
415
+ This includes both incoming and outgoing connections to/from the parameter.
416
+
417
+ Args:
418
+ parameter_name (str): Name of the parameter to get connections for.
419
+ node_name (str | None): Name of the node containing the parameter. If None, uses current context.
420
+
421
+ Returns:
422
+ ResultPayload: Contains connection details for the parameter.
423
+
424
+ Example:
425
+ # Get connections for a parameter on a specific node
426
+ result = cmd.get_connections_for_parameter("input_image", "my_node")
427
+
428
+ # Get connections for a parameter on the current node
429
+ result = cmd.get_connections_for_parameter("scale")
430
+ """
431
+ request = GetConnectionsForParameterRequest(parameter_name=parameter_name, node_name=node_name)
432
+ result = GriptapeNodes().handle_request(request)
433
+ return result
434
+
394
435
  @classmethod
395
436
  def list_params(cls, node: str) -> ResultPayload:
396
437
  """Lists all parameters associated with a node.
@@ -531,6 +572,259 @@ class RetainedMode:
531
572
  result = GriptapeNodes().handle_request(request)
532
573
  return result
533
574
 
575
+ @classmethod
576
+ def create_node_relative_to( # noqa: PLR0911, PLR0913
577
+ cls,
578
+ reference_node_name: str,
579
+ new_node_type: str,
580
+ new_node_name: str | None = None,
581
+ specific_library_name: str | None = None,
582
+ offset_side: OffsetSide = "right",
583
+ offset_x: int = 0,
584
+ offset_y: int = 0,
585
+ *,
586
+ swap: bool = False,
587
+ lock: bool = True,
588
+ match_size: bool = False,
589
+ ) -> (
590
+ str
591
+ | GetNodeMetadataResultFailure
592
+ | CreateNodeResultFailure
593
+ | SetNodeMetadataResultFailure
594
+ | SetLockNodeStateResultFailure
595
+ ):
596
+ """Create a new node positioned relative to an existing node.
597
+
598
+ Args:
599
+ reference_node_name: Name of the existing node to position relative to
600
+ new_node_type: Type of the new node to create
601
+ new_node_name: Name for the new node (optional, will be generated if not provided)
602
+ specific_library_name: Specific library to use for the new node
603
+ offset_side: Reference side/position from reference node (OffsetSide)
604
+ - "top_left", "top_right", "bottom_left", "bottom_right": corner positions
605
+ - "top", "bottom", "left", "right": midpoint positions
606
+ - Invalid values default to "right"
607
+ offset_x: Horizontal offset (behavior depends on swap):
608
+ - When swap=False: pixels (negative = left, positive = right)
609
+ - When swap=True: additional pixel spacing between nodes (negative = closer, positive = further)
610
+ offset_y: Vertical offset (behavior depends on swap):
611
+ - When swap=False: pixels (negative = up, positive = down)
612
+ - When swap=True: additional pixel spacing between nodes (negative = closer, positive = further)
613
+ swap: If True, create new node at reference position and move reference node relative to new node.
614
+ Also changes offset_x/offset_y to be additional pixel spacing between nodes instead of absolute position offsets.
615
+ lock: If True, lock the old node
616
+ match_size: If True, the new node will have the same width and height as the reference node,
617
+ ensuring consistent and predictable spacing calculations. Defaults to False.
618
+
619
+ Returns:
620
+ String node name if successful, ResultPayload if failed
621
+ """
622
+ # Get the reference node's metadata
623
+ get_metadata_result = GriptapeNodes().handle_request(GetNodeMetadataRequest(node_name=reference_node_name))
624
+ if not isinstance(get_metadata_result, GetNodeMetadataResultSuccess):
625
+ msg = f"{reference_node_name}: Failed to get reference node's metadata: {get_metadata_result}"
626
+ logger.warning(msg)
627
+ return get_metadata_result
628
+
629
+ reference_metadata = get_metadata_result.metadata
630
+ reference_position = reference_metadata.get("position", {"x": 0, "y": 0})
631
+ reference_size = reference_metadata.get("size", {"width": 200, "height": 100})
632
+
633
+ # Create the new node, optionally with matching size from reference node
634
+ metadata = None
635
+ if match_size:
636
+ metadata = {"size": reference_size}
637
+ create_result = cls.create_node(
638
+ node_type=new_node_type,
639
+ node_name=new_node_name,
640
+ specific_library_name=specific_library_name,
641
+ metadata=metadata,
642
+ )
643
+
644
+ # Check if creation succeeded, create_node returns the node name if successful
645
+ if isinstance(create_result, str):
646
+ new_node_name = create_result
647
+ else:
648
+ return create_result
649
+
650
+ # Calculate position based on offset_side and offsets
651
+ new_position = cls._calculate_relative_position(
652
+ reference_position, reference_size, offset_side, offset_x, offset_y, swap=swap
653
+ )
654
+
655
+ if swap:
656
+ # Swap mode: Create new node at reference position, move reference node relative to new node
657
+ new_position = reference_position
658
+ reference_new_position = cls._calculate_relative_position(
659
+ new_position, reference_size, offset_side, offset_x, offset_y, swap=swap
660
+ )
661
+
662
+ # Set the new node's position (at reference position)
663
+ set_metadata_result = GriptapeNodes().handle_request(
664
+ SetNodeMetadataRequest(node_name=new_node_name, metadata={"position": new_position})
665
+ )
666
+ if not isinstance(set_metadata_result, SetNodeMetadataResultSuccess):
667
+ msg = f"{reference_node_name} -> {new_node_name}: Failed to set new node's position: {set_metadata_result}"
668
+ logger.warning(msg)
669
+ return set_metadata_result
670
+
671
+ # Move the reference node to its new position
672
+ set_reference_metadata_result = GriptapeNodes().handle_request(
673
+ SetNodeMetadataRequest(node_name=reference_node_name, metadata={"position": reference_new_position})
674
+ )
675
+ if not isinstance(set_reference_metadata_result, SetNodeMetadataResultSuccess):
676
+ msg = f"{reference_node_name} -> {new_node_name}: Failed to set reference node's position: {set_reference_metadata_result}"
677
+ logger.warning(msg)
678
+ return set_reference_metadata_result
679
+
680
+ else:
681
+ # Normal mode: Create new node relative to reference node
682
+ new_position = cls._calculate_relative_position(
683
+ reference_position, reference_size, offset_side, offset_x, offset_y, swap=swap
684
+ )
685
+
686
+ # Set the new node's position
687
+ set_metadata_result = GriptapeNodes().handle_request(
688
+ SetNodeMetadataRequest(node_name=new_node_name, metadata={"position": new_position})
689
+ )
690
+ if not isinstance(set_metadata_result, SetNodeMetadataResultSuccess):
691
+ msg = f"{reference_node_name} -> {new_node_name}: Failed to set new node's position: {set_metadata_result}"
692
+ logger.warning(msg)
693
+ return set_metadata_result
694
+
695
+ if lock:
696
+ set_lock_node_state_result = cls.set_lock_node_state(node_name=reference_node_name, lock=True)
697
+ if not isinstance(set_lock_node_state_result, SetLockNodeStateResultSuccess):
698
+ msg = f"{reference_node_name}: Failed to lock reference node: {set_lock_node_state_result}"
699
+ logger.warning(msg)
700
+ return set_lock_node_state_result
701
+ return new_node_name
702
+
703
+ @classmethod
704
+ def _calculate_relative_position( # noqa: PLR0913
705
+ cls,
706
+ base_position: dict,
707
+ base_size: dict,
708
+ offset_side: OffsetSide,
709
+ offset_x: int,
710
+ offset_y: int,
711
+ *,
712
+ swap: bool,
713
+ ) -> dict:
714
+ """Calculate position based on offset_side and offsets."""
715
+ if swap:
716
+ # For swap mode, offset_x/offset_y are additional pixel spacing between nodes
717
+ # Formula: reference_position - reference_size + offset # noqa: ERA001
718
+ x_offset = base_position["x"] - base_size["width"] + offset_x
719
+ y_offset = base_position["y"] - base_size["height"] + offset_y
720
+ x_center = base_position["x"] - base_size["width"] // 2 + offset_x
721
+ y_center = base_position["y"] - base_size["height"] // 2 + offset_y
722
+ x_right = base_position["x"] + offset_x
723
+ y_bottom = base_position["y"] + offset_y
724
+ else:
725
+ # Absolute pixel offsets (normal mode)
726
+ effective_offset_x = offset_x
727
+ effective_offset_y = offset_y
728
+ # Calculate base offsets for each side (relative to reference node position)
729
+ x_offset = base_position["x"] + effective_offset_x
730
+ y_offset = base_position["y"] + effective_offset_y
731
+ x_center = base_position["x"] + base_size["width"] // 2 + effective_offset_x
732
+ y_center = base_position["y"] + base_size["height"] // 2 + effective_offset_y
733
+ x_right = base_position["x"] + base_size["width"] + effective_offset_x
734
+ y_bottom = base_position["y"] + base_size["height"] + effective_offset_y
735
+
736
+ # Position mapping
737
+ positions = {
738
+ "top_left": {"x": x_offset, "y": y_offset},
739
+ "top": {"x": x_center, "y": y_offset},
740
+ "top_right": {"x": x_right, "y": y_offset},
741
+ "right": {"x": x_right, "y": y_center},
742
+ "bottom_right": {"x": x_right, "y": y_bottom},
743
+ "bottom": {"x": x_center, "y": y_bottom},
744
+ "bottom_left": {"x": x_offset, "y": y_bottom},
745
+ "left": {"x": x_offset, "y": y_center},
746
+ }
747
+
748
+ return positions.get(offset_side, positions["right"]) # Default to right
749
+
750
+ @classmethod
751
+ def migrate_parameter( # noqa: PLR0913
752
+ cls,
753
+ source_node_name: str,
754
+ target_node_name: str,
755
+ source_parameter_name: str,
756
+ target_parameter_name: str,
757
+ input_conversion: ConversionConfig | None = None,
758
+ output_conversion: ConversionConfig | None = None,
759
+ value_transform: Callable | None = None,
760
+ *,
761
+ break_connections: bool = True,
762
+ ) -> MigrateParameterResultSuccess | MigrateParameterResultFailure:
763
+ """Migrate a parameter from one node to another with optional conversions.
764
+
765
+ This command handles:
766
+ - Direct parameter renaming and connection migration
767
+ - Value transformation when no incoming connections exist
768
+ - Creation of intermediate conversion nodes for complex type conversions on incoming or outgoing connections
769
+ - Multiple incoming and outgoing connections (including execution parameters)
770
+
771
+ Args:
772
+ source_node_name (str): Name of the source node.
773
+ target_node_name (str): Name of the target node.
774
+ source_parameter_name (str): Name of the parameter to migrate from.
775
+ target_parameter_name (str): Name of the parameter to migrate to.
776
+ input_conversion (ConversionConfig, optional): Configuration for converting incoming connections.
777
+ output_conversion (ConversionConfig, optional): Configuration for converting outgoing connections.
778
+ value_transform (Callable, optional): Function to transform values when no incoming connections exist.
779
+ break_connections (bool, optional): If True, break any existing connections for the original parameter
780
+ Returns:
781
+ ResultPayload: Contains the result of the migration operation.
782
+
783
+ Example:
784
+ # Simple parameter migration
785
+ result = cmd.migrate_parameter("old_node", "new_node", "input_image", "input_image")
786
+
787
+ # Parameter migration with conversion
788
+ result = cmd.migrate_parameter(
789
+ "old_node", "new_node", "scale", "percentage_scale",
790
+ input_conversion=ConversionConfig(
791
+ library="Griptape Nodes Library",
792
+ node_type="Math",
793
+ input_parameter="A",
794
+ output_parameter="result",
795
+ additional_parameters={
796
+ "operation": "multiply [A * B]",
797
+ "B": 100
798
+ },
799
+ offset_x=-300
800
+ ),
801
+ output_conversion=ConversionConfig(
802
+ library="Griptape Nodes Library",
803
+ node_type="Math",
804
+ input_parameter="A",
805
+ output_parameter="result",
806
+ additional_parameters={
807
+ "operation": "divide [A / B]",
808
+ "B": 100
809
+ },
810
+ offset_x=50
811
+ ),
812
+ value_transform=lambda x: x * 100
813
+ )
814
+ """
815
+ request = MigrateParameterRequest(
816
+ source_node_name=source_node_name,
817
+ target_node_name=target_node_name,
818
+ source_parameter_name=source_parameter_name,
819
+ target_parameter_name=target_parameter_name,
820
+ input_conversion=input_conversion,
821
+ output_conversion=output_conversion,
822
+ value_transform=value_transform,
823
+ break_connections=break_connections,
824
+ )
825
+ result = GriptapeNodes().handle_request(request)
826
+ return result
827
+
534
828
  @classmethod
535
829
  @command_arg_handler(node_param_split_func=node_param_split)
536
830
  def param_info(cls, *, node: str, param: str, **kwargs) -> Any: # noqa: ARG003
@@ -1,8 +1,8 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: griptape-nodes
3
- Version: 0.58.1
3
+ Version: 0.59.0
4
4
  Summary: Add your description here
5
- Requires-Dist: griptape>=1.8.5
5
+ Requires-Dist: griptape>=1.8.8
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
@@ -23,6 +23,7 @@ Requires-Dist: typer>=0.15.0
23
23
  Requires-Dist: huggingface-hub[xf-xet]>=0.28.0
24
24
  Requires-Dist: rich>=14.1.0
25
25
  Requires-Dist: semver>=3.0.4
26
+ Requires-Dist: aiofiles>=25.1.0
26
27
  Requires-Dist: austin-dist>=3.7.0 ; extra == 'profiling'
27
28
  Requires-Python: >=3.12.0, <3.13
28
29
  Provides-Extra: profiling
@@ -9,16 +9,16 @@ griptape_nodes/app/app.py,sha256=q1dRMnMxFcinyI36ehhU08buni1scBhU1zm2U6WUVDo,153
9
9
  griptape_nodes/app/watch.py,sha256=hKVP_SuV9C17bH1h9o4uIVTKH-IL_-0iyHaNYmILTWU,1594
10
10
  griptape_nodes/bootstrap/__init__.py,sha256=ENv3SIzQ9TtlRrg1y4e4CnoBpJaFpFSkNpTFBV8X5Ls,25
11
11
  griptape_nodes/bootstrap/utils/__init__.py,sha256=tlNEApJLZazcBNhxkTdup4URwznnz4nZxjSaRfFrTBM,31
12
- griptape_nodes/bootstrap/utils/python_subprocess_executor.py,sha256=8T_hqABisEBWemh4__XpnrR0Edbli4RQc_uF5jL0lMY,4294
12
+ griptape_nodes/bootstrap/utils/python_subprocess_executor.py,sha256=pe7oC2tUNYpZDE2Aa-Q2LaFwXWYt21tYF18qYYbDCP4,4326
13
13
  griptape_nodes/bootstrap/workflow_executors/__init__.py,sha256=pyjN81-eLtjyECFYLXOtMCixiiI9qBi5yald86iM7Ek,34
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
+ griptape_nodes/bootstrap/workflow_executors/local_session_workflow_executor.py,sha256=Zqb9yQe-3PxcaCEpLVcq6CQPn5iwjl5TJjQehm1fvZ0,16652
15
+ griptape_nodes/bootstrap/workflow_executors/local_workflow_executor.py,sha256=jp81z4QFSuQsXigKN0h2Ywo0Tr_whbxFG-TJ7MCrS2Q,10263
16
+ griptape_nodes/bootstrap/workflow_executors/subprocess_workflow_executor.py,sha256=owMjR_lNqLcLVKJXjNPyhmdSX6XtMTDfU_Eb9xmnEvA,12817
17
17
  griptape_nodes/bootstrap/workflow_executors/utils/__init__.py,sha256=IEz4GHM4-w_u6VpLemrj-V38v8aZJinr5Wya9ucEad0,40
18
18
  griptape_nodes/bootstrap/workflow_executors/utils/subprocess_script.py,sha256=LCW6P3s3DTG_cUvG41l4GxRyj43c1p9yYlcJMACeW3s,1659
19
- griptape_nodes/bootstrap/workflow_executors/workflow_executor.py,sha256=MBbUFdbvsYOJl_ebxxSCxq1R37StghQ1gAdMkIcGtbI,1145
19
+ griptape_nodes/bootstrap/workflow_executors/workflow_executor.py,sha256=c9FQXcvskas9N3G5OnTQO2SxJZJVoxbn7lug1GIRUBw,1074
20
20
  griptape_nodes/bootstrap/workflow_publishers/__init__.py,sha256=7ncdCGtEArgTBgSFDNCSBoIIAJpzlph1wTd2wipwvvM,35
21
- griptape_nodes/bootstrap/workflow_publishers/local_workflow_publisher.py,sha256=f2jQL1RO5HnC0_gZVlx4UOTo5X7pqUAkgmJj_tliAcg,1788
21
+ griptape_nodes/bootstrap/workflow_publishers/local_workflow_publisher.py,sha256=LeSn-NfSQKQP2x2jbOwtk22ppVhUD2S3Tee3aZkHC0A,1759
22
22
  griptape_nodes/bootstrap/workflow_publishers/subprocess_workflow_publisher.py,sha256=O9gK7BvBE-5pMSG70rXLjibbUKfJuce85hWcs6iYyXg,2879
23
23
  griptape_nodes/bootstrap/workflow_publishers/utils/__init__.py,sha256=Kj-IIxgg01ihyUmLWgZu4ZJ6M7V1fK4Efw9quCcu-ZM,41
24
24
  griptape_nodes/bootstrap/workflow_publishers/utils/subprocess_script.py,sha256=5NfuaGrL-97Wb6JORRhR-zU4ooj3FaxOjqJizGb96Y0,2060
@@ -26,15 +26,15 @@ griptape_nodes/cli/__init__.py,sha256=HuXHtxqDMtpYRokxiFYuNB7R5EgkOshPil273kTmgN
26
26
  griptape_nodes/cli/commands/__init__.py,sha256=8EbS15rm9xrbcPocuQO2RmOwSD1BBwa8iDgPSdsvzuU,35
27
27
  griptape_nodes/cli/commands/config.py,sha256=zh5rs2vCY_x9dEUK2jtQQJGcjlJzhpJJ-EgHHvkrvdg,2302
28
28
  griptape_nodes/cli/commands/engine.py,sha256=PWcjuhG_q6wnX1dZY1RJKvQQLO4CmMFBGyhOUKYOofE,2484
29
- griptape_nodes/cli/commands/init.py,sha256=dp7ovV2v8Q7dqeG3Q46w0TKQWKzTsAPzv0a2eeQ_gVM,25105
29
+ griptape_nodes/cli/commands/init.py,sha256=JCI5dxvmPfeOiby33LXiEuLVtMGZlmpTGfpuE-a3FUo,27643
30
30
  griptape_nodes/cli/commands/libraries.py,sha256=XMTFbC_Ie95qSfemHg-HgQwWeYgBhFjr5GCOD7Iifec,3662
31
31
  griptape_nodes/cli/commands/models.py,sha256=txbozCLF_Hvj4q9g0P8gAi0ZfIFcL95Ad9QS_PfHiHY,17612
32
32
  griptape_nodes/cli/commands/self.py,sha256=aafOn1ThMxoRu2OvwqxAu0BuM_3vfB7e8_dOWeUpNZI,4021
33
33
  griptape_nodes/cli/main.py,sha256=A9k-4vdxOrm3Z0NNtDWLmvSW5ecvtIXInLR0zn2AERA,1739
34
- griptape_nodes/cli/shared.py,sha256=JnUt-i7_hi81rqkT2fpVBJMTmODNiGFd7-Cv0Xt9QOU,2600
34
+ griptape_nodes/cli/shared.py,sha256=ciuqFxls18HXxNOaqK6QObmb3i7OLbw_DkUxX2g0rL0,2656
35
35
  griptape_nodes/common/__init__.py,sha256=HTbJfTpu6-nU91zFCZW2qUNeW6bitNWNDayWqH6fpbA,22
36
36
  griptape_nodes/common/directed_graph.py,sha256=hk3C_S4GiG4FZOmufjebb-6_2SwQrbyTidYTSbCDWMU,2361
37
- griptape_nodes/common/node_executor.py,sha256=bMM6hiaNfwN6wxkL43xqklSC9gzt2Ml3EINx2J6hw5s,20921
37
+ griptape_nodes/common/node_executor.py,sha256=fW79D_-J_kpV0eEd-ShjunpaO9-lFeY4CKn4-qSjaVo,29196
38
38
  griptape_nodes/drivers/__init__.py,sha256=tHmiFQn6uJyFVhC2PrqHgRUH3d3yDsqMQpWqRasmaqA,42
39
39
  griptape_nodes/drivers/storage/__init__.py,sha256=_7p8vJt3YnnF6sD3Uxxw38c-gazuMIHSS-m3G6sa2Qk,208
40
40
  griptape_nodes/drivers/storage/base_storage_driver.py,sha256=47PrMzxOuJhV2ee4CbPT7YOqR2MjlHr3VxhGON_ygio,3945
@@ -43,23 +43,23 @@ griptape_nodes/drivers/storage/local_storage_driver.py,sha256=6FqtT4I4lZTRSa_7gQ
43
43
  griptape_nodes/drivers/storage/storage_backend.py,sha256=3QBIwrgPc1krBIiPYLoK2swhIPDiKJnnucOEdyx7y3c,184
44
44
  griptape_nodes/exe_types/__init__.py,sha256=wGGwKGX9-TSarUFbXpDvdU_J7eXIbWTBl_NCLOZa-G8,32
45
45
  griptape_nodes/exe_types/connections.py,sha256=Cjt-RLjYhkTUHTrYlNIUZrYVzsyH7OXo6JO2O6exI8k,13853
46
- griptape_nodes/exe_types/core_types.py,sha256=9QNMFintNgP5iqmrEbbKUHS2QHjsEEP3GL_wbaVTkBg,81327
46
+ griptape_nodes/exe_types/core_types.py,sha256=bedZQcu0z4GvN9TazmXFAjdhM9GlS4HrTf1jog6ME04,83073
47
47
  griptape_nodes/exe_types/flow.py,sha256=pCeTrx8yrUgLw1U9yQxC7arzJjyP2vag-pG0QTKut-M,5716
48
- griptape_nodes/exe_types/node_types.py,sha256=JAf5m7XZTvwtZdldj7oljRD5JOOg6Akse6HML_qB1O8,81833
48
+ griptape_nodes/exe_types/node_types.py,sha256=B74U5Qi3LE7AcU3pUiX49hvCT5dXk77qZ-lp_wPSl5M,94466
49
49
  griptape_nodes/exe_types/param_components/__init__.py,sha256=ocm75WnsgiD6ozKVGFhoH9cQe_FEzeF2osxrRujOes0,60
50
50
  griptape_nodes/exe_types/param_components/execution_status_component.py,sha256=eeUcUOOraGa6sDH_zg_QnGPoP0K-pm3fu90-KAtrmq8,5532
51
51
  griptape_nodes/exe_types/type_validator.py,sha256=RTz1vX09jzQpHhozITMJ0siOZUXvsERDhrApjdaM1WM,1120
52
52
  griptape_nodes/machines/__init__.py,sha256=v0jkwr-CFOLmfEYUQvX8BKQLOdvhSsA6toXkdHcPGUE,30
53
- griptape_nodes/machines/control_flow.py,sha256=INMj9HU-WOgd-e9HD3-rkbGGCePw_ImviLfSn2MeiGo,17340
54
- griptape_nodes/machines/dag_builder.py,sha256=Fijbe46OsZQztcXGlvel2VUtn-CFbJm7Ui3_zCeKNXA,9932
53
+ griptape_nodes/machines/control_flow.py,sha256=6C-M9yLcpQImNLUvO2l_lhyL7afesfrtnXNWe57NtdM,27098
54
+ griptape_nodes/machines/dag_builder.py,sha256=jxEuj-I6XzefEbMjRcOHyyfrp8cYRyKUCtDOUWIEheg,18498
55
55
  griptape_nodes/machines/fsm.py,sha256=WNo2w5c9Gbgzo5odcvbRT02EhCMFf3n3WYbZ0GYk1WI,2553
56
- griptape_nodes/machines/parallel_resolution.py,sha256=l4ijlef_yi638YFudOCR6Hspvbzko_-P331k08j2Lx0,29487
56
+ griptape_nodes/machines/parallel_resolution.py,sha256=VEGUx13gOzjlgvK7yPfPyVExkIH0uoEQbYnW2Lb-fx8,40176
57
57
  griptape_nodes/machines/sequential_resolution.py,sha256=x0qi21iCtb6rkc5keeuAk0_MlFFzD4QwuHsHM47YXHw,18827
58
58
  griptape_nodes/mcp_server/__init__.py,sha256=GSpJWqE4lICaryhsQR1okeMH2x6j1bBL0HVxtr52WLg,42
59
59
  griptape_nodes/node_library/__init__.py,sha256=U3FcSdmq6UW7qt6E3Up3NWKvUEn5_5lqL-u5qbzfxMQ,28
60
60
  griptape_nodes/node_library/advanced_node_library.py,sha256=B1ZaxuFIzQ6tx_3MLIxlsHuahthEC1Hw_t6K_ByIdzs,2104
61
61
  griptape_nodes/node_library/library_registry.py,sha256=s77u0NbESOzaB29-PzQ1EKrR1WyQKOQTRGaKx3ORXoY,13888
62
- griptape_nodes/node_library/workflow_registry.py,sha256=q7CdlBVptccSu43AUd6eJvKvAvNiZt4wvtoMi2sqsBY,10522
62
+ griptape_nodes/node_library/workflow_registry.py,sha256=OmBv_1SImABVBZgtMaZq3ZJHaoRgwv3Na8if5uKmfHw,10523
63
63
  griptape_nodes/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
64
  griptape_nodes/retained_mode/__init__.py,sha256=X12DKL6KhLsiRTPIlrPj2h76_sJ0q0eH4r0kMQkodm0,29
65
65
  griptape_nodes/retained_mode/events/__init__.py,sha256=7B1C-c0jVvnShtHJ2lfX6BZPE0U1DgQwg1e4DorhKG0,22
@@ -70,8 +70,8 @@ griptape_nodes/retained_mode/events/base_events.py,sha256=UPEMkoU7lUtm8L_wdeTp8Y
70
70
  griptape_nodes/retained_mode/events/config_events.py,sha256=Y03YMLoJTXy0Sz6tq-6lOIs37CmXn1Br3GYAinl02nY,7070
71
71
  griptape_nodes/retained_mode/events/connection_events.py,sha256=QjHAp0SeCbRSG-dF_nU_CPaOcSKItq2DWJ_FHWgF1b4,4744
72
72
  griptape_nodes/retained_mode/events/context_events.py,sha256=-FIwjI0hJodDhfM4BF-3GTRycu80v1TlSSOX34oA9nA,2122
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
73
+ griptape_nodes/retained_mode/events/execution_events.py,sha256=jkRRiYz5qv5u1k8nOIJk6O8TsDylP8Jq6ql6qIJBy1k,10821
74
+ griptape_nodes/retained_mode/events/flow_events.py,sha256=JLkiYp81agqc-8NpI9BylOaqqyyrSlXtD-NjlRcByRw,18756
75
75
  griptape_nodes/retained_mode/events/generate_request_payload_schemas.py,sha256=PQ0QRZAUBljSIGjB8QhYUeRmSrfmLsJ6XVcygJKi13I,1102
76
76
  griptape_nodes/retained_mode/events/library_events.py,sha256=9KVMHA5VazY3fXEIm31Zmy-rJ43AxNgna4SzVPmy8Pg,17629
77
77
  griptape_nodes/retained_mode/events/logger_events.py,sha256=jYlxzPomgCsJuPtJ0znWBhD8QJfC8qC4xfChDiuVuyg,705
@@ -80,7 +80,7 @@ griptape_nodes/retained_mode/events/model_events.py,sha256=EbSjIpJrQi2RuRRFJsoio
80
80
  griptape_nodes/retained_mode/events/node_events.py,sha256=jTcO5-Mw52fAJUzVc6UaXwRKHfO2HO0hnNYcGg9phVo,30321
81
81
  griptape_nodes/retained_mode/events/object_events.py,sha256=cJaqEU73Lzf1RRxJrFqEpl8eTr-gDhKpXKywJ-vVCJQ,2631
82
82
  griptape_nodes/retained_mode/events/os_events.py,sha256=X0mmyk_r5t6upaQ8eWClD7J25AiX2ggsAuxMZSW9Vx0,8085
83
- griptape_nodes/retained_mode/events/parameter_events.py,sha256=32dDaVe9oV_fNRtz5xv4_9GP_yr_EXUMsRi2i1rTSNI,19276
83
+ griptape_nodes/retained_mode/events/parameter_events.py,sha256=TZdJLF3ZHVZapgoX0vH8tCB413eDblcsRG1tJXdtxuE,23798
84
84
  griptape_nodes/retained_mode/events/payload_registry.py,sha256=q-wxUqp63vhNj-Pl1JGJHnBkhUefcCArPoMN3KBREEI,1691
85
85
  griptape_nodes/retained_mode/events/resource_events.py,sha256=K47UK92wvaRtHu3ByfhkQEMyorrV0ArGewrFSJuVMiI,9015
86
86
  griptape_nodes/retained_mode/events/secrets_events.py,sha256=fCw3OMFfxB8FTZs4ybojm1nqNvhcjtoNylQhX75-jkM,4156
@@ -96,8 +96,8 @@ griptape_nodes/retained_mode/managers/arbitrary_code_exec_manager.py,sha256=3IRI
96
96
  griptape_nodes/retained_mode/managers/config_manager.py,sha256=WfzvFDPyboHgsCMpVGER6Ar1OHyPD_827LQx9xaUsMM,25573
97
97
  griptape_nodes/retained_mode/managers/context_manager.py,sha256=eb44_CAZhCg2iYIoodlAPpYc67tG3sHyq9dPNoiq_1s,23031
98
98
  griptape_nodes/retained_mode/managers/engine_identity_manager.py,sha256=-31364A03kU0YmAx3nM7nHdWfKnkej5Cawt_Plbwa68,10526
99
- griptape_nodes/retained_mode/managers/event_manager.py,sha256=n8qt5kefgEk-5uba9n96yHeUzB_3zJukqG_qo2pvhqo,12910
100
- griptape_nodes/retained_mode/managers/flow_manager.py,sha256=_ozGVx5binKfoMx_kuB3qLkDgOJVI_gDqYfpVeSaZ94,202232
99
+ griptape_nodes/retained_mode/managers/event_manager.py,sha256=SGqtVrLuAplVFb9rtPmPyz82YplKGEZ95p4Z9bJmpD0,13564
100
+ griptape_nodes/retained_mode/managers/flow_manager.py,sha256=CirF-L6xJZL-ab50lFza4HIPhUwdgzcoCsr5Dr856Pw,188566
101
101
  griptape_nodes/retained_mode/managers/library_lifecycle/__init__.py,sha256=Iq79VxTdETiExBfFWXceJggDZqS6X3OkzXE9XwFclVw,1340
102
102
  griptape_nodes/retained_mode/managers/library_lifecycle/data_models.py,sha256=fvAP0VaYGPHYl_Kg3RL4gdJlpqya8UTvpP-C49r950k,6723
103
103
  griptape_nodes/retained_mode/managers/library_lifecycle/library_directory.py,sha256=Ywno93eVJH4sAtQ1dgHG2Pw9B3vw8fN8oAL0gn_l6OI,14836
@@ -110,11 +110,11 @@ griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/packa
110
110
  griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/sandbox.py,sha256=XgG7whE74zWDxX1pOvhASW0pwjOei1EDLvIH19xdzT0,6117
111
111
  griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance.py,sha256=cCGr-MQ1RlVBiUTZepYEKdVhPgC4ebcYrmpv8rI3VeM,894
112
112
  griptape_nodes/retained_mode/managers/library_lifecycle/library_status.py,sha256=K3UEBzAdCY9wphyBbLxDYP0Q43aYvhLZ_Pz7_SzcPec,443
113
- griptape_nodes/retained_mode/managers/library_manager.py,sha256=UWumU3HSLdECEhfUscOIredXZVrYympOzh4_c3V0rTM,100104
113
+ griptape_nodes/retained_mode/managers/library_manager.py,sha256=SmAQWPBllzl4sb0YGs8wkIM6OpezKbDRKR8eAgiKyZo,100540
114
114
  griptape_nodes/retained_mode/managers/mcp_manager.py,sha256=BxNVDYUAn5-iylGzURqVZq1DRintrIK5T6q2X_rxm_U,15596
115
- griptape_nodes/retained_mode/managers/model_manager.py,sha256=tjrzCYaacFsmcTMplxt2IDis9hkrVa7wuu3NQq9Sba0,44519
116
- griptape_nodes/retained_mode/managers/node_manager.py,sha256=udPMF0OJWYQa0_D8CtDenFdIqpwWgk6Yqij8yQUoid4,159928
117
- griptape_nodes/retained_mode/managers/object_manager.py,sha256=NDbDSGI4PLU78xXBK0WGbk1Ejh5BN21I7dJOXbgl1bU,12814
115
+ griptape_nodes/retained_mode/managers/model_manager.py,sha256=Qc_FiqIJQ_ZuL5Yb7WiHCgUngKlbbJ_dUo7E5Ten5_g,45036
116
+ griptape_nodes/retained_mode/managers/node_manager.py,sha256=PO6m-ny3exswCqHx2LV4y56qpbBUnh6U01wT1AX24CQ,183596
117
+ griptape_nodes/retained_mode/managers/object_manager.py,sha256=w6T5UPUJRcYF90F1MuWhZVDgRrMc1uQ-6wt84Oz8OQA,12827
118
118
  griptape_nodes/retained_mode/managers/operation_manager.py,sha256=lTkMZlaacTgtV5oV-YF6HG8xsx9V_LwX1eg074WTs2k,20137
119
119
  griptape_nodes/retained_mode/managers/os_manager.py,sha256=uQ0jRGXOimdmcdnwZUMAJnEdqvE33p7w5bBXjPN20fw,40128
120
120
  griptape_nodes/retained_mode/managers/resource_components/__init__.py,sha256=2FHpZFw2N1-oHfMCfrnB_XpF8_-2aSNtAZWh5zQTGL0,35
@@ -133,8 +133,8 @@ griptape_nodes/retained_mode/managers/static_files_manager.py,sha256=dDeX1Z5cmvi
133
133
  griptape_nodes/retained_mode/managers/sync_manager.py,sha256=-m2krEh2YtGs8iAPc8bhFGX8JqjeM5kEV1rnCmcj_yk,21247
134
134
  griptape_nodes/retained_mode/managers/variable_manager.py,sha256=TnuqHSRK9Yiu_EtKxQksF9SyyQb72lbFQuTQZdpBxeE,24116
135
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
137
- griptape_nodes/retained_mode/retained_mode.py,sha256=wGMkZX7clW7o4bA-t5ovPDK5cQaPQo_4_Yrvy4KxwL4,57615
136
+ griptape_nodes/retained_mode/managers/workflow_manager.py,sha256=Up-riPtDl9dy_IQqgUNk4q6TvpaZnfSLB2kgWtO57fY,199969
137
+ griptape_nodes/retained_mode/retained_mode.py,sha256=nBjLGz1y6ZEtAL5g81_gA93Y0r5va-Hdq4Rbqdk2XqM,71749
138
138
  griptape_nodes/retained_mode/utils/__init__.py,sha256=W5dvv8YwvVVq_8eVTgMd3Z_VB_Dtq1sIIVq8745QH_I,52
139
139
  griptape_nodes/retained_mode/utils/name_generator.py,sha256=IZLahtfP3XC79XApLdGoZ0IKKUkgiITpd16RK7NbyEs,2524
140
140
  griptape_nodes/retained_mode/variable_types.py,sha256=GVrSWMB3gEDAufSPOBXbNfIRhA9M43MoxpqLyuIg_HE,435
@@ -172,7 +172,7 @@ griptape_nodes/version_compatibility/versions/v0_39_0/modified_parameters_set_re
172
172
  griptape_nodes/version_compatibility/workflow_versions/__init__.py,sha256=z5XDgkizoNByCXpyo34hfsJKFsWlOHbD6hgzfYH9ubc,52
173
173
  griptape_nodes/version_compatibility/workflow_versions/v0_7_0/__init__.py,sha256=IzPPmGK86h2swfGGTOHyVcBIlOng6SjgWQzlbf3ngmo,51
174
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.1.dist-info/WHEEL,sha256=I8-bO5cg2sb8TH6ZM6EgCP87Y1cV_f9UGgWnfAhVOZI,78
176
- griptape_nodes-0.58.1.dist-info/entry_points.txt,sha256=qvevqd3BVbAV5TcantnAm0ouqaqYKhsRO3pkFymWLWM,82
177
- griptape_nodes-0.58.1.dist-info/METADATA,sha256=2T7585VxO7qJ1ennzTToYfaI6uT7cd7IF_beo9BY6Fg,5076
178
- griptape_nodes-0.58.1.dist-info/RECORD,,
175
+ griptape_nodes-0.59.0.dist-info/WHEEL,sha256=ELhySV62sOro8I5wRaLaF3TWxhBpkcDkdZUdAYLy_Hk,78
176
+ griptape_nodes-0.59.0.dist-info/entry_points.txt,sha256=qvevqd3BVbAV5TcantnAm0ouqaqYKhsRO3pkFymWLWM,82
177
+ griptape_nodes-0.59.0.dist-info/METADATA,sha256=vK0cWy__9a9qVAUAj46qO3jQefzVqzYTCZ3A3goHg2I,5108
178
+ griptape_nodes-0.59.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: uv 0.9.0
2
+ Generator: uv 0.9.3
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any