griptape-nodes 0.63.9__py3-none-any.whl → 0.64.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 (27) hide show
  1. griptape_nodes/common/node_executor.py +95 -171
  2. griptape_nodes/exe_types/connections.py +51 -2
  3. griptape_nodes/exe_types/flow.py +3 -3
  4. griptape_nodes/exe_types/node_types.py +330 -202
  5. griptape_nodes/exe_types/param_components/artifact_url/__init__.py +1 -0
  6. griptape_nodes/exe_types/param_components/artifact_url/public_artifact_url_parameter.py +155 -0
  7. griptape_nodes/exe_types/param_components/progress_bar_component.py +1 -1
  8. griptape_nodes/exe_types/param_types/parameter_string.py +27 -0
  9. griptape_nodes/machines/control_flow.py +64 -203
  10. griptape_nodes/machines/dag_builder.py +85 -238
  11. griptape_nodes/machines/parallel_resolution.py +9 -236
  12. griptape_nodes/machines/sequential_resolution.py +133 -11
  13. griptape_nodes/retained_mode/events/agent_events.py +2 -0
  14. griptape_nodes/retained_mode/events/flow_events.py +5 -6
  15. griptape_nodes/retained_mode/events/node_events.py +151 -1
  16. griptape_nodes/retained_mode/events/workflow_events.py +10 -0
  17. griptape_nodes/retained_mode/managers/agent_manager.py +33 -1
  18. griptape_nodes/retained_mode/managers/flow_manager.py +213 -290
  19. griptape_nodes/retained_mode/managers/library_manager.py +24 -7
  20. griptape_nodes/retained_mode/managers/node_manager.py +391 -77
  21. griptape_nodes/retained_mode/managers/workflow_manager.py +45 -10
  22. griptape_nodes/servers/mcp.py +32 -0
  23. griptape_nodes/updater/__init__.py +1 -1
  24. {griptape_nodes-0.63.9.dist-info → griptape_nodes-0.64.0.dist-info}/METADATA +3 -1
  25. {griptape_nodes-0.63.9.dist-info → griptape_nodes-0.64.0.dist-info}/RECORD +27 -25
  26. {griptape_nodes-0.63.9.dist-info → griptape_nodes-0.64.0.dist-info}/WHEEL +0 -0
  27. {griptape_nodes-0.63.9.dist-info → griptape_nodes-0.64.0.dist-info}/entry_points.txt +0 -0
@@ -14,6 +14,7 @@ from pathlib import Path
14
14
  from typing import TYPE_CHECKING, Any, ClassVar, NamedTuple, TypeVar, cast
15
15
 
16
16
  import aiofiles
17
+ import portalocker
17
18
  import semver
18
19
  import tomlkit
19
20
  from rich.box import HEAVY_EDGE
@@ -1269,9 +1270,12 @@ class WorkflowManager:
1269
1270
  success: bool
1270
1271
  error_details: str
1271
1272
 
1272
- async def _write_workflow_file(self, file_path: Path, content: str, file_name: str) -> WriteWorkflowFileResult:
1273
+ def _write_workflow_file(self, file_path: Path, content: str, file_name: str) -> WriteWorkflowFileResult:
1273
1274
  """Write workflow content to file with proper validation and error handling.
1274
1275
 
1276
+ Uses portalocker for exclusive file locking to prevent concurrent writes.
1277
+ First write wins - if another process is writing, this call fails immediately.
1278
+
1275
1279
  Args:
1276
1280
  file_path: Path where to write the file
1277
1281
  content: Content to write
@@ -1295,13 +1299,34 @@ class WorkflowManager:
1295
1299
  details = f"Attempted to save workflow '{file_name}'. Failed when creating directory structure: {e}"
1296
1300
  return self.WriteWorkflowFileResult(success=False, error_details=details)
1297
1301
 
1298
- # Write the file content
1302
+ # Write the file content with exclusive lock (non-blocking)
1303
+ error_details = None
1299
1304
  try:
1300
- async with aiofiles.open(file_path, "w", encoding="utf-8") as file:
1301
- await file.write(content)
1305
+ with portalocker.Lock(
1306
+ file_path,
1307
+ mode="w",
1308
+ encoding="utf-8",
1309
+ timeout=0, # Non-blocking: fail immediately if locked
1310
+ flags=portalocker.LockFlags.EXCLUSIVE,
1311
+ ) as fh:
1312
+ fh.write(content)
1313
+ except portalocker.LockException:
1314
+ error_details = (
1315
+ f"Attempted to save workflow '{file_name}'. Another process is currently writing to this workflow file"
1316
+ )
1317
+ except PermissionError as e:
1318
+ error_details = f"Attempted to save workflow '{file_name}'. Permission denied: {e}"
1319
+ except IsADirectoryError:
1320
+ error_details = f"Attempted to save workflow '{file_name}'. Path is a directory, not a file"
1321
+ except UnicodeEncodeError as e:
1322
+ error_details = f"Attempted to save workflow '{file_name}'. Content encoding error: {e}"
1302
1323
  except OSError as e:
1303
- details = f"Attempted to save workflow '{file_name}'. Failed when writing file content: {e}"
1304
- return self.WriteWorkflowFileResult(success=False, error_details=details)
1324
+ error_details = f"Attempted to save workflow '{file_name}'. OS error: {e}"
1325
+ except Exception as e:
1326
+ error_details = f"Attempted to save workflow '{file_name}'. Unexpected error: {type(e).__name__}: {e}"
1327
+
1328
+ if error_details:
1329
+ return self.WriteWorkflowFileResult(success=False, error_details=error_details)
1305
1330
 
1306
1331
  return self.WriteWorkflowFileResult(success=True, error_details="")
1307
1332
 
@@ -1546,7 +1571,10 @@ class WorkflowManager:
1546
1571
  return SaveWorkflowFileFromSerializedFlowResultFailure(result_details=details)
1547
1572
 
1548
1573
  # Write the workflow file
1549
- write_result = await self._write_workflow_file(file_path, final_code_output, request.file_name)
1574
+ # TODO: https://github.com/griptape-ai/griptape-nodes/issues/3169
1575
+ # This is a synchronous call within an async context and may block the event loop.
1576
+ # Consider using asyncio.to_thread() to run in a thread pool for better async performance.
1577
+ write_result = self._write_workflow_file(file_path, final_code_output, request.file_name)
1550
1578
  if not write_result.success:
1551
1579
  return SaveWorkflowFileFromSerializedFlowResultFailure(result_details=write_result.error_details)
1552
1580
 
@@ -2901,6 +2929,7 @@ class WorkflowManager:
2901
2929
  import_recorder.add_from_import("griptape_nodes.node_library.library_registry", "NodeDeprecationMetadata")
2902
2930
  import_recorder.add_from_import("griptape_nodes.node_library.library_registry", "IconVariant")
2903
2931
  import_recorder.add_from_import("griptape_nodes.retained_mode.events.node_events", "CreateNodeRequest")
2932
+ import_recorder.add_from_import("griptape_nodes.retained_mode.events.node_events", "CreateNodeGroupRequest")
2904
2933
  import_recorder.add_from_import(
2905
2934
  "griptape_nodes.retained_mode.events.parameter_events", "AddParameterToNodeRequest"
2906
2935
  )
@@ -2925,7 +2954,8 @@ class WorkflowManager:
2925
2954
  create_node_request_args.append(
2926
2955
  ast.keyword(arg=field.name, value=ast.Constant(value=field_value, lineno=1, col_offset=0))
2927
2956
  )
2928
-
2957
+ # Get the actual request class name (CreateNodeRequest or CreateNodeGroupRequest)
2958
+ request_class_name = type(create_node_request).__name__
2929
2959
  # Handle the create node command and assign to node name
2930
2960
  create_node_call_ast = ast.Assign(
2931
2961
  targets=[ast.Name(id=node_variable_name, ctx=ast.Store(), lineno=1, col_offset=0)],
@@ -2940,7 +2970,7 @@ class WorkflowManager:
2940
2970
  ),
2941
2971
  args=[
2942
2972
  ast.Call(
2943
- func=ast.Name(id="CreateNodeRequest", ctx=ast.Load(), lineno=1, col_offset=0),
2973
+ func=ast.Name(id=request_class_name, ctx=ast.Load(), lineno=1, col_offset=0),
2944
2974
  args=[],
2945
2975
  keywords=create_node_request_args,
2946
2976
  lineno=1,
@@ -2951,7 +2981,7 @@ class WorkflowManager:
2951
2981
  lineno=1,
2952
2982
  col_offset=0,
2953
2983
  ),
2954
- attr="node_name",
2984
+ attr="node_name" if request_class_name == "CreateNodeRequest" else "node_group_name",
2955
2985
  ctx=ast.Load(),
2956
2986
  lineno=1,
2957
2987
  col_offset=0,
@@ -3004,6 +3034,11 @@ class WorkflowManager:
3004
3034
 
3005
3035
  # Generate handle_request calls for element_modification_commands
3006
3036
  for element_command in serialized_node_command.element_modification_commands:
3037
+ # Add import for this element command type
3038
+ element_command_class_name = element_command.__class__.__name__
3039
+ element_command_module = element_command.__class__.__module__
3040
+ import_recorder.add_from_import(element_command_module, element_command_class_name)
3041
+
3007
3042
  # Strip default values from element_command
3008
3043
  element_command_args = []
3009
3044
  if is_dataclass(element_command):
@@ -23,23 +23,49 @@ from griptape_nodes.retained_mode.events.connection_events import (
23
23
  DeleteConnectionRequest,
24
24
  ListConnectionsForNodeRequest,
25
25
  )
26
+ from griptape_nodes.retained_mode.events.execution_events import (
27
+ ResolveNodeRequest,
28
+ StartFlowFromNodeRequest,
29
+ StartFlowRequest,
30
+ )
26
31
  from griptape_nodes.retained_mode.events.flow_events import ListNodesInFlowRequest
32
+ from griptape_nodes.retained_mode.events.library_events import (
33
+ ListCategoriesInLibraryRequest,
34
+ ListNodeTypesInLibraryRequest,
35
+ ListRegisteredLibrariesRequest,
36
+ )
27
37
  from griptape_nodes.retained_mode.events.node_events import (
28
38
  CreateNodeRequest,
29
39
  DeleteNodeRequest,
30
40
  GetNodeMetadataRequest,
31
41
  GetNodeResolutionStateRequest,
32
42
  ListParametersOnNodeRequest,
43
+ ResetNodeToDefaultsRequest,
44
+ SetLockNodeStateRequest,
33
45
  SetNodeMetadataRequest,
34
46
  )
47
+ from griptape_nodes.retained_mode.events.object_events import RenameObjectRequest
35
48
  from griptape_nodes.retained_mode.events.parameter_events import (
49
+ GetConnectionsForParameterRequest,
50
+ GetParameterDetailsRequest,
36
51
  GetParameterValueRequest,
37
52
  SetParameterValueRequest,
38
53
  )
54
+ from griptape_nodes.retained_mode.events.workflow_events import RunWorkflowWithCurrentStateRequest
39
55
  from griptape_nodes.retained_mode.managers.config_manager import ConfigManager
40
56
  from griptape_nodes.retained_mode.managers.secrets_manager import SecretsManager
41
57
 
42
58
  SUPPORTED_REQUEST_EVENTS: dict[str, type[RequestPayload]] = {
59
+ # Workflows
60
+ "RunWorkflowWithCurrentStateRequest": RunWorkflowWithCurrentStateRequest,
61
+ # Libraries
62
+ "ListRegisteredLibrariesRequest": ListRegisteredLibrariesRequest,
63
+ "ListNodeTypesInLibraryRequest": ListNodeTypesInLibraryRequest,
64
+ "ListCategoriesInLibraryRequest": ListCategoriesInLibraryRequest,
65
+ # Execution
66
+ "ResolveNodeRequest": ResolveNodeRequest,
67
+ "StartFlowRequest": StartFlowRequest,
68
+ "StartFlowFromNodeRequest": StartFlowFromNodeRequest,
43
69
  # Nodes
44
70
  "CreateNodeRequest": CreateNodeRequest,
45
71
  "DeleteNodeRequest": DeleteNodeRequest,
@@ -47,6 +73,10 @@ SUPPORTED_REQUEST_EVENTS: dict[str, type[RequestPayload]] = {
47
73
  "GetNodeResolutionStateRequest": GetNodeResolutionStateRequest,
48
74
  "GetNodeMetadataRequest": GetNodeMetadataRequest,
49
75
  "SetNodeMetadataRequest": SetNodeMetadataRequest,
76
+ "ResetNodeToDefaultsRequest": ResetNodeToDefaultsRequest,
77
+ "SetLockNodeStateRequest": SetLockNodeStateRequest,
78
+ # Objects
79
+ "RenameObjectRequest": RenameObjectRequest,
50
80
  # Connections
51
81
  "CreateConnectionRequest": CreateConnectionRequest,
52
82
  "DeleteConnectionRequest": DeleteConnectionRequest,
@@ -55,6 +85,8 @@ SUPPORTED_REQUEST_EVENTS: dict[str, type[RequestPayload]] = {
55
85
  "ListParametersOnNodeRequest": ListParametersOnNodeRequest,
56
86
  "GetParameterValueRequest": GetParameterValueRequest,
57
87
  "SetParameterValueRequest": SetParameterValueRequest,
88
+ "GetParameterDetailsRequest": GetParameterDetailsRequest,
89
+ "GetConnectionsForParameterRequest": GetConnectionsForParameterRequest,
58
90
  }
59
91
 
60
92
  GTN_MCP_SERVER_HOST = os.getenv("GTN_MCP_SERVER_HOST", "localhost")
@@ -60,7 +60,7 @@ def _sync_libraries() -> None:
60
60
  console.print("[bold green]Syncing libraries...[/bold green]")
61
61
  try:
62
62
  subprocess.run(
63
- ["griptape-nodes", "libraries", "sync"], # noqa: S607
63
+ ["griptape-nodes", "--no-update", "libraries", "sync"], # noqa: S607
64
64
  text=True,
65
65
  capture_output=True,
66
66
  check=True,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: griptape-nodes
3
- Version: 0.63.9
3
+ Version: 0.64.0
4
4
  Summary: Add your description here
5
5
  Requires-Dist: griptape>=1.8.12
6
6
  Requires-Dist: pydantic>=2.10.6
@@ -27,6 +27,7 @@ Requires-Dist: aiofiles>=25.1.0
27
27
  Requires-Dist: aioshutil>=1.5
28
28
  Requires-Dist: ruamel-yaml>=0.18.15
29
29
  Requires-Dist: asyncio-thread-runner>=1.0
30
+ Requires-Dist: portalocker>=2.10.0
30
31
  Requires-Dist: austin-dist>=3.7.0 ; extra == 'profiling'
31
32
  Requires-Python: >=3.12.0, <3.13
32
33
  Provides-Extra: profiling
@@ -55,6 +56,7 @@ This repository contains the Griptape Nodes Engine - the local component that ru
55
56
  - **📚 Full Documentation:** [docs.griptapenodes.com](https://docs.griptapenodes.com)
56
57
  - **⚙️ Installation:** [docs.griptapenodes.com/en/stable/installation/](https://docs.griptapenodes.com/en/latest/installation/)
57
58
  - **🔧 Engine Configuration:** [docs.griptapenodes.com/en/stable/configuration/](https://docs.griptapenodes.com/en/latest/configuration/)
59
+ - **📋 Migration Guide:** [MIGRATION.md](MIGRATION.md) - Guide for migrating from deprecated nodes
58
60
 
59
61
  **🧩 Extending Griptape Nodes:**
60
62
 
@@ -42,7 +42,7 @@ griptape_nodes/common/macro_parser/matching.py,sha256=hnlPIihz8W1TGnfq4anbBGciwg
42
42
  griptape_nodes/common/macro_parser/parsing.py,sha256=_37L3lCQFeetamWIiHT0C7eW1E3Wyx5V8y8OWzIUw_g,7428
43
43
  griptape_nodes/common/macro_parser/resolution.py,sha256=30_bAIRMKWw-kM3E1ne-my16xT1Wd734JMmZSOZtNPA,6937
44
44
  griptape_nodes/common/macro_parser/segments.py,sha256=r-WbZas1nSc-PlEdAZ7DycNoD6IUf3R_nhGo3T9vIa8,1010
45
- griptape_nodes/common/node_executor.py,sha256=d96vYMMpdvGK-ol3priQjveYs7kTcz0A6WXhgnyQttE,29204
45
+ griptape_nodes/common/node_executor.py,sha256=c_7eUeOl4KmK3P41k5F1WMFWJ51wYyux6O_cyhuB9IU,24929
46
46
  griptape_nodes/common/project_templates/__init__.py,sha256=5DP6Sa6ClsdDcjD30pkK0iTTysTgGdRKEkeY7ztHZyc,1541
47
47
  griptape_nodes/common/project_templates/default_project_template.py,sha256=PJFPfziH0EOGVxU5L0wZnc21bVVweW4S7wcnGPF45Co,3120
48
48
  griptape_nodes/common/project_templates/defaults/README.md,sha256=1ou6_OFi7-t86nj-7tulW1vxNMtsvkJmNxr6SseG8hA,1080
@@ -63,11 +63,13 @@ griptape_nodes/drivers/thread_storage/griptape_cloud_thread_storage_driver.py,sh
63
63
  griptape_nodes/drivers/thread_storage/local_thread_storage_driver.py,sha256=I1p2XudP89sUMsRa0DBxGXzsOFEpURLbtF01C_Wpkts,5406
64
64
  griptape_nodes/drivers/thread_storage/thread_storage_backend.py,sha256=QXLvFOZrFx7aPBmwVGaN-IHxwRAf_sXN7YWKY6tcwgE,204
65
65
  griptape_nodes/exe_types/__init__.py,sha256=wGGwKGX9-TSarUFbXpDvdU_J7eXIbWTBl_NCLOZa-G8,32
66
- griptape_nodes/exe_types/connections.py,sha256=Cjt-RLjYhkTUHTrYlNIUZrYVzsyH7OXo6JO2O6exI8k,13853
66
+ griptape_nodes/exe_types/connections.py,sha256=9ng-9dN10a8XxB5I3lupeHQv8w5bXBNGxbCKYtq-lDM,15439
67
67
  griptape_nodes/exe_types/core_types.py,sha256=Vx3WT8nGP6Md_nMOROVuaKNutDgVtTHhxoHt-FH4z4E,92227
68
- griptape_nodes/exe_types/flow.py,sha256=pCeTrx8yrUgLw1U9yQxC7arzJjyP2vag-pG0QTKut-M,5716
69
- griptape_nodes/exe_types/node_types.py,sha256=dcheQyEcL3gpRP-OhPotC21rxK9GrzgE2Dgeo3AGfTA,94743
68
+ griptape_nodes/exe_types/flow.py,sha256=U1NPV-9AgYDXicKCwpiJDKEulyJDsyThaDqoAE3YRcU,5740
69
+ griptape_nodes/exe_types/node_types.py,sha256=FnbHI1iNktPBWCgaxqRPZBjemokWkLtdi7YNtDmis7E,99472
70
70
  griptape_nodes/exe_types/param_components/__init__.py,sha256=ocm75WnsgiD6ozKVGFhoH9cQe_FEzeF2osxrRujOes0,60
71
+ griptape_nodes/exe_types/param_components/artifact_url/__init__.py,sha256=LKAGdP8VBSOTx8iq8kEvxZVDgMIS5TXSLntZqBEJ7yk,40
72
+ griptape_nodes/exe_types/param_components/artifact_url/public_artifact_url_parameter.py,sha256=2A4Jn7Xgi6KPM087wnVhoH3k5GnqxLFt3MV56SwYIYI,6610
71
73
  griptape_nodes/exe_types/param_components/execution_status_component.py,sha256=eeUcUOOraGa6sDH_zg_QnGPoP0K-pm3fu90-KAtrmq8,5532
72
74
  griptape_nodes/exe_types/param_components/huggingface/__init__.py,sha256=YeVFck-9C341Bt7TiWEvPdD63o9qkaNu2KjmzT9CQOI,39
73
75
  griptape_nodes/exe_types/param_components/huggingface/huggingface_model_parameter.py,sha256=KXTAUyW0yxBN40BbIVg9dZfdUeNDGeX-jmFUoCJwapQ,6352
@@ -75,7 +77,7 @@ griptape_nodes/exe_types/param_components/huggingface/huggingface_repo_file_para
75
77
  griptape_nodes/exe_types/param_components/huggingface/huggingface_repo_parameter.py,sha256=zcBRQP0eZJloSdPQwJFw89B6QDHECnrosRZUy8mE2fM,1401
76
78
  griptape_nodes/exe_types/param_components/huggingface/huggingface_utils.py,sha256=cE0Ht81kDcZjlN_2VoRirCA4zMlrG9GFlcptn-gC2tU,4696
77
79
  griptape_nodes/exe_types/param_components/log_parameter.py,sha256=K6XRWVIpL9MtQ6IZG3hYYwIv3sNqFxONxbVnKcA_Oes,4160
78
- griptape_nodes/exe_types/param_components/progress_bar_component.py,sha256=xFVgOxQPL5Skc3EDtq9W_k3Bh1HA-y5uBNsAKVKbzjg,1948
80
+ griptape_nodes/exe_types/param_components/progress_bar_component.py,sha256=GrAFTOrLNAx6q9zfOqiioPTG_NLHKhTe9NiZOo6zGSc,1949
79
81
  griptape_nodes/exe_types/param_components/seed_parameter.py,sha256=nXyi9bPCK9LuRB6s4Q2ezwdboIaivEObglNrSFn0y-0,2045
80
82
  griptape_nodes/exe_types/param_types/__init__.py,sha256=xEEmKvIFF6M7zVjQZCupbbv6SZKt-itD-rPtfRhxJVg,53
81
83
  griptape_nodes/exe_types/param_types/parameter_audio.py,sha256=Uv7FI4_BFvtD0Pv6FMF6PCNijgo7Cc9jU75ceSpLebw,9413
@@ -84,16 +86,16 @@ griptape_nodes/exe_types/param_types/parameter_float.py,sha256=W_n4__XHOYppRD3-2
84
86
  griptape_nodes/exe_types/param_types/parameter_image.py,sha256=etYKDEgqPsTe9UUimqyRsiWDRXePT_iMXVc6-_VcLPU,9312
85
87
  griptape_nodes/exe_types/param_types/parameter_int.py,sha256=OmyuGeo6P4ZWxp1Ms9kQRhI2Ar-igDqUQPmH_0XtxUI,6821
86
88
  griptape_nodes/exe_types/param_types/parameter_number.py,sha256=tzACjVQos8nDCirQSxBPaDfDciigiA_OHgSKZW43gVA,15251
87
- griptape_nodes/exe_types/param_types/parameter_string.py,sha256=xdoVK_XslPrYOwiQ_IhSYiqAV0CPd8nBkHHw7ySYXmc,8533
89
+ griptape_nodes/exe_types/param_types/parameter_string.py,sha256=rcorJuT1QONU4c64--76oX9qVNqc7n3of6m257Xrk_0,9462
88
90
  griptape_nodes/exe_types/param_types/parameter_three_d.py,sha256=AJ8qID5HydYgx1Tj1HMgE7VBEHF4qvtibrQ8fWqVXKU,8272
89
91
  griptape_nodes/exe_types/param_types/parameter_video.py,sha256=iF74oKhDZ7VUZg8GO1y5dRAuQ8SQfbq0hMY2CkN6CoI,9333
90
92
  griptape_nodes/exe_types/type_validator.py,sha256=RTz1vX09jzQpHhozITMJ0siOZUXvsERDhrApjdaM1WM,1120
91
93
  griptape_nodes/machines/__init__.py,sha256=v0jkwr-CFOLmfEYUQvX8BKQLOdvhSsA6toXkdHcPGUE,30
92
- griptape_nodes/machines/control_flow.py,sha256=6C-M9yLcpQImNLUvO2l_lhyL7afesfrtnXNWe57NtdM,27098
93
- griptape_nodes/machines/dag_builder.py,sha256=jxEuj-I6XzefEbMjRcOHyyfrp8cYRyKUCtDOUWIEheg,18498
94
+ griptape_nodes/machines/control_flow.py,sha256=znYK-zBI9kaUgNdH89PideytBiIGBvr0T0q-2q5HZ14,20367
95
+ griptape_nodes/machines/dag_builder.py,sha256=J6Fq9gjksn-cVu-EztxmEMOjUko2Hbik7UqCDuBwegQ,12336
94
96
  griptape_nodes/machines/fsm.py,sha256=WNo2w5c9Gbgzo5odcvbRT02EhCMFf3n3WYbZ0GYk1WI,2553
95
- griptape_nodes/machines/parallel_resolution.py,sha256=VEGUx13gOzjlgvK7yPfPyVExkIH0uoEQbYnW2Lb-fx8,40176
96
- griptape_nodes/machines/sequential_resolution.py,sha256=x0qi21iCtb6rkc5keeuAk0_MlFFzD4QwuHsHM47YXHw,18827
97
+ griptape_nodes/machines/parallel_resolution.py,sha256=_ZDwhU0w2MMomktwCPv0_tpWkteYLN7GMnYhw4eparQ,29420
98
+ griptape_nodes/machines/sequential_resolution.py,sha256=ettUylLy-FTATXd50gkThOjorKKYuPq8tnKa_Mt310M,24702
97
99
  griptape_nodes/mcp_server/__init__.py,sha256=GSpJWqE4lICaryhsQR1okeMH2x6j1bBL0HVxtr52WLg,42
98
100
  griptape_nodes/node_library/__init__.py,sha256=U3FcSdmq6UW7qt6E3Up3NWKvUEn5_5lqL-u5qbzfxMQ,28
99
101
  griptape_nodes/node_library/advanced_node_library.py,sha256=B1ZaxuFIzQ6tx_3MLIxlsHuahthEC1Hw_t6K_ByIdzs,2104
@@ -102,7 +104,7 @@ griptape_nodes/node_library/workflow_registry.py,sha256=qpPNMvKqmFNtFC4dYtRaIyrW
102
104
  griptape_nodes/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
105
  griptape_nodes/retained_mode/__init__.py,sha256=X12DKL6KhLsiRTPIlrPj2h76_sJ0q0eH4r0kMQkodm0,29
104
106
  griptape_nodes/retained_mode/events/__init__.py,sha256=7B1C-c0jVvnShtHJ2lfX6BZPE0U1DgQwg1e4DorhKG0,22
105
- griptape_nodes/retained_mode/events/agent_events.py,sha256=pHqw9XsMqKg8SG6VCU_xuQLSn40nmyOPFTrEZAiB9uo,10590
107
+ griptape_nodes/retained_mode/events/agent_events.py,sha256=WGxjoiStQW7uwhpPmXqLrj06pGAeGm2zAsCSLqHDS3U,10747
106
108
  griptape_nodes/retained_mode/events/app_events.py,sha256=WFv6zb6K8H7KcJdvQD6fi164EN82dW7CeBTsb7Fkprs,10195
107
109
  griptape_nodes/retained_mode/events/arbitrary_python_events.py,sha256=uhep1c1xjUc-YQO5nIStAE48PS6rFZLTDQIr_Qb3we8,1460
108
110
  griptape_nodes/retained_mode/events/base_events.py,sha256=72JJe7dbJMo72NMAGw4KFjpalkJMd5S3i7qo2I4sdXI,22880
@@ -110,13 +112,13 @@ griptape_nodes/retained_mode/events/config_events.py,sha256=Y03YMLoJTXy0Sz6tq-6l
110
112
  griptape_nodes/retained_mode/events/connection_events.py,sha256=QjHAp0SeCbRSG-dF_nU_CPaOcSKItq2DWJ_FHWgF1b4,4744
111
113
  griptape_nodes/retained_mode/events/context_events.py,sha256=-FIwjI0hJodDhfM4BF-3GTRycu80v1TlSSOX34oA9nA,2122
112
114
  griptape_nodes/retained_mode/events/execution_events.py,sha256=WCNi8PjK7rR2PQiF-BFLCwgcry-4hP49ayyNoHzJlgg,12268
113
- griptape_nodes/retained_mode/events/flow_events.py,sha256=JLkiYp81agqc-8NpI9BylOaqqyyrSlXtD-NjlRcByRw,18756
115
+ griptape_nodes/retained_mode/events/flow_events.py,sha256=-QH31tp9DU34SzqXamVELM1csFUsujYCh0jiEEiKDig,18724
114
116
  griptape_nodes/retained_mode/events/generate_request_payload_schemas.py,sha256=PQ0QRZAUBljSIGjB8QhYUeRmSrfmLsJ6XVcygJKi13I,1102
115
117
  griptape_nodes/retained_mode/events/library_events.py,sha256=66RPGhJSe9kmZVcNkuwFqglV4OjJ2qL91oGiUUvT_LA,18801
116
118
  griptape_nodes/retained_mode/events/logger_events.py,sha256=jYlxzPomgCsJuPtJ0znWBhD8QJfC8qC4xfChDiuVuyg,705
117
119
  griptape_nodes/retained_mode/events/mcp_events.py,sha256=51OlMZVcabdcIxBb_ojvrHtq2jAzZA31pooPBKaApyg,10734
118
120
  griptape_nodes/retained_mode/events/model_events.py,sha256=jXm-v-_Uxysn4MJ7a80_uIphrxTHgua3BGgHGyy3T_Y,9232
119
- griptape_nodes/retained_mode/events/node_events.py,sha256=pIFR6Pqnazajaf0_vRPdKs3uzItXjq-4IuSW-Qkc4_c,33294
121
+ griptape_nodes/retained_mode/events/node_events.py,sha256=dzzAkOu0gNrdk19erTleBcgjoSZq71CGHNW4rUMRXG8,37939
120
122
  griptape_nodes/retained_mode/events/object_events.py,sha256=cJaqEU73Lzf1RRxJrFqEpl8eTr-gDhKpXKywJ-vVCJQ,2631
121
123
  griptape_nodes/retained_mode/events/os_events.py,sha256=LbfLZZjZJoOakMTxbsd_8kjlhY5KiPZMCuT9Wg99hsk,19153
122
124
  griptape_nodes/retained_mode/events/parameter_events.py,sha256=2s3U_cc45LjSmq2pZyTEnjD6yAlc207wAYY633z4zO4,23938
@@ -128,10 +130,10 @@ griptape_nodes/retained_mode/events/static_file_events.py,sha256=c8kKkrxAPZxrE9f
128
130
  griptape_nodes/retained_mode/events/sync_events.py,sha256=AoxBZLPPdzx4S5CiOJVRDebHnQb349Dq5jVO8Fh_sn8,2016
129
131
  griptape_nodes/retained_mode/events/validation_events.py,sha256=H2yWoHp2t7QwGV_fDQXRy7JojYnK4k6SOAlEvRYST_Q,3062
130
132
  griptape_nodes/retained_mode/events/variable_events.py,sha256=fnl_sY8GWI_R4UJQTEJSlmsyCD9TiEW0U2UD2seBabs,10587
131
- griptape_nodes/retained_mode/events/workflow_events.py,sha256=T1hgOlycIxIICWihVbd70qgEcVu4LO6YPIwTWQCizVw,23051
133
+ griptape_nodes/retained_mode/events/workflow_events.py,sha256=hQp7Yd3dvfryC_F6qXgE6ROiQncBYokB6aQy41m3p1c,23318
132
134
  griptape_nodes/retained_mode/griptape_nodes.py,sha256=14PtWI_8V59cR9kEVqzkhHMKp8omqXNBxfd39kwgqlI,19926
133
135
  griptape_nodes/retained_mode/managers/__init__.py,sha256=OTXysKusqYCQeAYwnVj4PbE3MxvAUTq9xOZT6vUE3JA,24
134
- griptape_nodes/retained_mode/managers/agent_manager.py,sha256=f-eT_bTW4Wwls-PssrLKElftwvCZ-ke3OpNf_Pv9hqQ,24267
136
+ griptape_nodes/retained_mode/managers/agent_manager.py,sha256=B7O9lczy83AJjRwdHUFgs6I0Pd3ANNbzPYhf70bsg7c,26311
135
137
  griptape_nodes/retained_mode/managers/arbitrary_code_exec_manager.py,sha256=LyWzHQKmyDh-2zh2PIahdYyAthf_rMYs4zvhtVo-LsU,3423
136
138
  griptape_nodes/retained_mode/managers/config_manager.py,sha256=WfzvFDPyboHgsCMpVGER6Ar1OHyPD_827LQx9xaUsMM,25573
137
139
  griptape_nodes/retained_mode/managers/context_manager.py,sha256=eb44_CAZhCg2iYIoodlAPpYc67tG3sHyq9dPNoiq_1s,23031
@@ -185,7 +187,7 @@ griptape_nodes/retained_mode/managers/fitness_problems/workflows/node_type_not_f
185
187
  griptape_nodes/retained_mode/managers/fitness_problems/workflows/workflow_not_found_problem.py,sha256=kPhaIeDxp0duxJBJLKFiYp269kEDsCx3uVLnkKbF2gk,895
186
188
  griptape_nodes/retained_mode/managers/fitness_problems/workflows/workflow_problem.py,sha256=NLAoF_x7g5tL70qZtPVFI8xeM1jPZNsm7FKt9nkuGBc,542
187
189
  griptape_nodes/retained_mode/managers/fitness_problems/workflows/workflow_schema_version_problem.py,sha256=rUnbBBnGwgq5WTVPt2G4pGP3gVPoX5xvCdTkRPBmP04,1328
188
- griptape_nodes/retained_mode/managers/flow_manager.py,sha256=zWRqekEmx0TaweyyZyKqNr09VlEtWuPtLf45P3B-q6A,191305
190
+ griptape_nodes/retained_mode/managers/flow_manager.py,sha256=kg1wET0CZK0TmnLE4mjH6BM6ecKcsyd6TRfE1rTv22k,185085
189
191
  griptape_nodes/retained_mode/managers/library_lifecycle/__init__.py,sha256=Iq79VxTdETiExBfFWXceJggDZqS6X3OkzXE9XwFclVw,1340
190
192
  griptape_nodes/retained_mode/managers/library_lifecycle/data_models.py,sha256=fvAP0VaYGPHYl_Kg3RL4gdJlpqya8UTvpP-C49r950k,6723
191
193
  griptape_nodes/retained_mode/managers/library_lifecycle/library_directory.py,sha256=Ywno93eVJH4sAtQ1dgHG2Pw9B3vw8fN8oAL0gn_l6OI,14836
@@ -198,10 +200,10 @@ griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/packa
198
200
  griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/sandbox.py,sha256=XgG7whE74zWDxX1pOvhASW0pwjOei1EDLvIH19xdzT0,6117
199
201
  griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance.py,sha256=cCGr-MQ1RlVBiUTZepYEKdVhPgC4ebcYrmpv8rI3VeM,894
200
202
  griptape_nodes/retained_mode/managers/library_lifecycle/library_status.py,sha256=K3UEBzAdCY9wphyBbLxDYP0Q43aYvhLZ_Pz7_SzcPec,443
201
- griptape_nodes/retained_mode/managers/library_manager.py,sha256=vH1U6hTS0aK_rK5C7mKkrvacx8pd8ohDkKQF0roWbl0,108244
203
+ griptape_nodes/retained_mode/managers/library_manager.py,sha256=K-ecoe0xbcjrBesX2qI-wSZUF47pR_Hwdk4n0Iiv5L8,108958
202
204
  griptape_nodes/retained_mode/managers/mcp_manager.py,sha256=Ezmn5_48r4JWYe-tFGqmw9dXLvvTiO1rw9b4MNCkw0U,15955
203
205
  griptape_nodes/retained_mode/managers/model_manager.py,sha256=XM4PaSCe2_e8ZzhpKBf6h0cTW3OqkC_unBvwBDdBNkU,44825
204
- griptape_nodes/retained_mode/managers/node_manager.py,sha256=7LQF3pWpTsGnQlgDu-CCeAmMk4E2VC-Ti-HiUELCkjE,196136
206
+ griptape_nodes/retained_mode/managers/node_manager.py,sha256=RznoWLqGyT849yIy3VcmsYWuOXbTtiKJv-u63sMCSQE,211619
205
207
  griptape_nodes/retained_mode/managers/object_manager.py,sha256=w6T5UPUJRcYF90F1MuWhZVDgRrMc1uQ-6wt84Oz8OQA,12827
206
208
  griptape_nodes/retained_mode/managers/operation_manager.py,sha256=lTkMZlaacTgtV5oV-YF6HG8xsx9V_LwX1eg074WTs2k,20137
207
209
  griptape_nodes/retained_mode/managers/os_manager.py,sha256=sYz4eLNJY_fSv5L7I4F6O5iKzv--qsEgosEmcrtnGwI,80040
@@ -223,13 +225,13 @@ griptape_nodes/retained_mode/managers/sync_manager.py,sha256=quKrg3pGEmPcoQDm5Iq
223
225
  griptape_nodes/retained_mode/managers/user_manager.py,sha256=JAOOKDhUfIbj0CJ5EHRBcplmxheQTzeogbvGO23VqXQ,4508
224
226
  griptape_nodes/retained_mode/managers/variable_manager.py,sha256=TnuqHSRK9Yiu_EtKxQksF9SyyQb72lbFQuTQZdpBxeE,24116
225
227
  griptape_nodes/retained_mode/managers/version_compatibility_manager.py,sha256=6z7B1ZHUhJDk4J2nRXoVZilOQAoeK39gjta87AKTzns,15644
226
- griptape_nodes/retained_mode/managers/workflow_manager.py,sha256=gx6NmiL3GutadI2dWfnnvQOAq53KXto60kDLExxO5Hw,200934
228
+ griptape_nodes/retained_mode/managers/workflow_manager.py,sha256=pRU6zA2aGY6WBcSMHHgbyzIggQhEZ-SDFUxEmCTcx3g,203055
227
229
  griptape_nodes/retained_mode/retained_mode.py,sha256=nBjLGz1y6ZEtAL5g81_gA93Y0r5va-Hdq4Rbqdk2XqM,71749
228
230
  griptape_nodes/retained_mode/utils/__init__.py,sha256=W5dvv8YwvVVq_8eVTgMd3Z_VB_Dtq1sIIVq8745QH_I,52
229
231
  griptape_nodes/retained_mode/utils/name_generator.py,sha256=IZLahtfP3XC79XApLdGoZ0IKKUkgiITpd16RK7NbyEs,2524
230
232
  griptape_nodes/retained_mode/variable_types.py,sha256=GVrSWMB3gEDAufSPOBXbNfIRhA9M43MoxpqLyuIg_HE,435
231
233
  griptape_nodes/servers/__init__.py,sha256=JCmorB8tQUu_kQ8hSRhgw4VsOqsC0iZjZ-mCXYy9ZOQ,60
232
- griptape_nodes/servers/mcp.py,sha256=pCtBFfPKZuhU2tWguorOnmV33fYmF7NN-c9gu4MQFEk,5453
234
+ griptape_nodes/servers/mcp.py,sha256=eUjuwdG0yAk-xKcpXQ52bYfBTBzQD0PvMLZXhJ4LnZA,6883
233
235
  griptape_nodes/servers/static.py,sha256=mRkzOVZQJillVsnNCz2Mbi1TgiiGI3OUaF-NiD1U53M,7499
234
236
  griptape_nodes/traits/__init__.py,sha256=bTLXTiZTJz2z15RRLoPI4nvLnNW9FiLcKL_2pT4E10g,32
235
237
  griptape_nodes/traits/add_param_button.py,sha256=27RZDVLMD0HmRF6hjfz7iV7LBau92vMc_d2eD2Ey8fA,649
@@ -246,7 +248,7 @@ griptape_nodes/traits/options.py,sha256=20pByxnOh_A0bzqWr2I21OCMOFowFLbHNXUn4SPv
246
248
  griptape_nodes/traits/slider.py,sha256=bLe46gtCmjhMCHaGzUstIWMJv2Zl2Yee7fkT6g4Q6Rk,1236
247
249
  griptape_nodes/traits/trait_registry.py,sha256=pU26mW2ztfu1UARGYloflsTPqJ1X_-u013cMNoel9Hw,1171
248
250
  griptape_nodes/traits/traits.json,sha256=JwFsOaFfLeR1ohcyh6XApc5N2-mWMPGSaYbpA-mD7mk,133
249
- griptape_nodes/updater/__init__.py,sha256=eWalSt_N5a0RPT2YkXeIee_YPiCL47OB0G9GB0gn3pY,2522
251
+ griptape_nodes/updater/__init__.py,sha256=n2jANSfywAECByWuQ5svcKTaTU7_SynBMIljI7qtBSs,2537
250
252
  griptape_nodes/updater/__main__.py,sha256=lhMMctbBeni57ximitvkwqJ1TQzk79Jg9w0rkKjtp5Y,79
251
253
  griptape_nodes/utils/__init__.py,sha256=kzDZW_VPyxWJFonM3kYTl7A91_JmtHPK0Io4KPLTYT4,122
252
254
  griptape_nodes/utils/async_utils.py,sha256=4IrW8Ub8iJ2QB9yguZtfN1EB9B5nXHS7jbDaLOHWso0,4844
@@ -263,7 +265,7 @@ griptape_nodes/version_compatibility/versions/v0_39_0/modified_parameters_set_re
263
265
  griptape_nodes/version_compatibility/workflow_versions/__init__.py,sha256=z5XDgkizoNByCXpyo34hfsJKFsWlOHbD6hgzfYH9ubc,52
264
266
  griptape_nodes/version_compatibility/workflow_versions/v0_7_0/__init__.py,sha256=IzPPmGK86h2swfGGTOHyVcBIlOng6SjgWQzlbf3ngmo,51
265
267
  griptape_nodes/version_compatibility/workflow_versions/v0_7_0/local_executor_argument_addition.py,sha256=Thx8acnbw5OychhwEEj9aFxvbPe7Wgn4V9ZmZ7KRZqc,2082
266
- griptape_nodes-0.63.9.dist-info/WHEEL,sha256=ZHijuPszqKbNczrBXkSuoxdxocbxgFghqnequ9ZQlVk,79
267
- griptape_nodes-0.63.9.dist-info/entry_points.txt,sha256=qvevqd3BVbAV5TcantnAm0ouqaqYKhsRO3pkFymWLWM,82
268
- griptape_nodes-0.63.9.dist-info/METADATA,sha256=UNQIx56D0JABo-ewSKzwS-7--vQjGt4MTr6B8c0jsmw,5208
269
- griptape_nodes-0.63.9.dist-info/RECORD,,
268
+ griptape_nodes-0.64.0.dist-info/WHEEL,sha256=ZHijuPszqKbNczrBXkSuoxdxocbxgFghqnequ9ZQlVk,79
269
+ griptape_nodes-0.64.0.dist-info/entry_points.txt,sha256=qvevqd3BVbAV5TcantnAm0ouqaqYKhsRO3pkFymWLWM,82
270
+ griptape_nodes-0.64.0.dist-info/METADATA,sha256=rmvEbCoUGALkfOgncCfLeP4LCXrAQG0eypBFlWUsow0,5344
271
+ griptape_nodes-0.64.0.dist-info/RECORD,,