griptape_nodes 0.78.0__tar.gz → 0.78.2__tar.gz

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 (339) hide show
  1. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/PKG-INFO +2 -1
  2. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/pyproject.toml +2 -1
  3. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/drivers/storage/griptape_cloud_storage_driver.py +27 -44
  4. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_components/project_file_parameter.py +5 -1
  5. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/static_files_manager.py +2 -2
  6. griptape_nodes-0.78.2/src/griptape_nodes/utils/http_utils.py +90 -0
  7. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/README.md +0 -0
  8. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/__init__.py +0 -0
  9. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/__main__.py +0 -0
  10. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/api_client/__init__.py +0 -0
  11. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/api_client/client.py +0 -0
  12. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/api_client/request_client.py +0 -0
  13. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/app/.python-version +0 -0
  14. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/app/__init__.py +0 -0
  15. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/app/app.py +0 -0
  16. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/app/watch.py +0 -0
  17. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/bootstrap/__init__.py +0 -0
  18. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/bootstrap/utils/__init__.py +0 -0
  19. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/bootstrap/utils/python_subprocess_executor.py +0 -0
  20. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/bootstrap/utils/subprocess_websocket_base.py +0 -0
  21. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/bootstrap/utils/subprocess_websocket_listener.py +0 -0
  22. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/bootstrap/utils/subprocess_websocket_sender.py +0 -0
  23. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/bootstrap/workflow_executors/__init__.py +0 -0
  24. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/bootstrap/workflow_executors/local_session_workflow_executor.py +0 -0
  25. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/bootstrap/workflow_executors/local_workflow_executor.py +0 -0
  26. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/bootstrap/workflow_executors/subprocess_workflow_executor.py +0 -0
  27. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/bootstrap/workflow_executors/utils/__init__.py +0 -0
  28. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/bootstrap/workflow_executors/utils/subprocess_script.py +0 -0
  29. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/bootstrap/workflow_executors/workflow_executor.py +0 -0
  30. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/bootstrap/workflow_publishers/__init__.py +0 -0
  31. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/bootstrap/workflow_publishers/local_session_workflow_publisher.py +0 -0
  32. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/bootstrap/workflow_publishers/local_workflow_publisher.py +0 -0
  33. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/bootstrap/workflow_publishers/subprocess_workflow_publisher.py +0 -0
  34. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/bootstrap/workflow_publishers/utils/__init__.py +0 -0
  35. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/bootstrap/workflow_publishers/utils/subprocess_script.py +0 -0
  36. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/cli/__init__.py +0 -0
  37. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/cli/commands/__init__.py +0 -0
  38. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/cli/commands/config.py +0 -0
  39. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/cli/commands/doctor/__init__.py +0 -0
  40. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/cli/commands/doctor/base.py +0 -0
  41. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/cli/commands/doctor/websocket_connection.py +0 -0
  42. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/cli/commands/engine.py +0 -0
  43. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/cli/commands/init.py +0 -0
  44. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/cli/commands/libraries.py +0 -0
  45. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/cli/commands/models.py +0 -0
  46. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/cli/commands/self.py +0 -0
  47. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/cli/main.py +0 -0
  48. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/cli/shared.py +0 -0
  49. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/common/__init__.py +0 -0
  50. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/common/directed_graph.py +0 -0
  51. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/common/macro_parser/__init__.py +0 -0
  52. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/common/macro_parser/core.py +0 -0
  53. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/common/macro_parser/exceptions.py +0 -0
  54. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/common/macro_parser/formats.py +0 -0
  55. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/common/macro_parser/matching.py +0 -0
  56. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/common/macro_parser/parsing.py +0 -0
  57. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/common/macro_parser/resolution.py +0 -0
  58. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/common/macro_parser/segments.py +0 -0
  59. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/common/node_executor.py +0 -0
  60. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/common/project_templates/__init__.py +0 -0
  61. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/common/project_templates/default_project_template.py +0 -0
  62. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/common/project_templates/defaults/README.md +0 -0
  63. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/common/project_templates/directory.py +0 -0
  64. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/common/project_templates/loader.py +0 -0
  65. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/common/project_templates/project.py +0 -0
  66. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/common/project_templates/situation.py +0 -0
  67. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/common/project_templates/validation.py +0 -0
  68. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/drivers/__init__.py +0 -0
  69. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/drivers/image_metadata/__init__.py +0 -0
  70. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/drivers/image_metadata/base_image_metadata_driver.py +0 -0
  71. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/drivers/image_metadata/exif_metadata_driver.py +0 -0
  72. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/drivers/image_metadata/image_metadata_driver_registry.py +0 -0
  73. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/drivers/image_metadata/png_metadata_driver.py +0 -0
  74. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/drivers/storage/__init__.py +0 -0
  75. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/drivers/storage/base_storage_driver.py +0 -0
  76. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/drivers/storage/local_storage_driver.py +0 -0
  77. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/drivers/storage/storage_backend.py +0 -0
  78. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/drivers/thread_storage/__init__.py +0 -0
  79. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/drivers/thread_storage/base_thread_storage_driver.py +0 -0
  80. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/drivers/thread_storage/griptape_cloud_thread_storage_driver.py +0 -0
  81. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/drivers/thread_storage/local_thread_storage_driver.py +0 -0
  82. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/drivers/thread_storage/thread_storage_backend.py +0 -0
  83. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/__init__.py +0 -0
  84. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/base_iterative_nodes.py +0 -0
  85. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/connections.py +0 -0
  86. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/core_types.py +0 -0
  87. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/flow.py +0 -0
  88. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/node_groups/__init__.py +0 -0
  89. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/node_groups/base_iterative_node_group.py +0 -0
  90. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/node_groups/base_node_group.py +0 -0
  91. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/node_groups/subflow_node_group.py +0 -0
  92. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/node_types.py +0 -0
  93. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_components/README.md +0 -0
  94. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_components/__init__.py +0 -0
  95. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_components/api_key_provider_parameter.py +0 -0
  96. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_components/artifact_url/__init__.py +0 -0
  97. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_components/artifact_url/public_artifact_url_parameter.py +0 -0
  98. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_components/execution_status_component.py +0 -0
  99. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_components/huggingface/__init__.py +0 -0
  100. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_components/huggingface/huggingface_model_parameter.py +0 -0
  101. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_components/huggingface/huggingface_repo_file_parameter.py +0 -0
  102. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_components/huggingface/huggingface_repo_parameter.py +0 -0
  103. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_components/huggingface/huggingface_repo_variant_parameter.py +0 -0
  104. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_components/huggingface/huggingface_utils.py +0 -0
  105. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_components/log_parameter.py +0 -0
  106. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_components/progress_bar_component.py +0 -0
  107. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_components/seed_parameter.py +0 -0
  108. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_components/subflow_execution_component.py +0 -0
  109. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_types/__init__.py +0 -0
  110. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_types/parameter_audio.py +0 -0
  111. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_types/parameter_bool.py +0 -0
  112. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_types/parameter_button.py +0 -0
  113. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_types/parameter_dict.py +0 -0
  114. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_types/parameter_float.py +0 -0
  115. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_types/parameter_image.py +0 -0
  116. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_types/parameter_int.py +0 -0
  117. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_types/parameter_json.py +0 -0
  118. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_types/parameter_number.py +0 -0
  119. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_types/parameter_range.py +0 -0
  120. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_types/parameter_string.py +0 -0
  121. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_types/parameter_three_d.py +0 -0
  122. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/param_types/parameter_video.py +0 -0
  123. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/exe_types/type_validator.py +0 -0
  124. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/files/__init__.py +0 -0
  125. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/files/base_file_driver.py +0 -0
  126. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/files/drivers/__init__.py +0 -0
  127. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/files/drivers/base64_file_driver.py +0 -0
  128. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/files/drivers/data_uri_file_driver.py +0 -0
  129. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/files/drivers/griptape_cloud_file_driver.py +0 -0
  130. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/files/drivers/http_file_driver.py +0 -0
  131. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/files/drivers/local_file_driver.py +0 -0
  132. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/files/drivers/static_server_file_driver.py +0 -0
  133. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/files/file.py +0 -0
  134. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/files/file_driver.py +0 -0
  135. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/files/file_driver_registry.py +0 -0
  136. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/files/path_utils.py +0 -0
  137. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/files/project_file.py +0 -0
  138. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/machines/__init__.py +0 -0
  139. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/machines/control_flow.py +0 -0
  140. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/machines/dag_builder.py +0 -0
  141. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/machines/fsm.py +0 -0
  142. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/machines/heuristics/__init__.py +0 -0
  143. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/machines/heuristics/base_heuristic.py +0 -0
  144. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/machines/heuristics/distance_to_node.py +0 -0
  145. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/machines/heuristics/has_connection_from_previous.py +0 -0
  146. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/machines/heuristics/top_left_to_bottom_right.py +0 -0
  147. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/machines/node_priority_queue.py +0 -0
  148. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/machines/parallel_resolution.py +0 -0
  149. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/mcp_server/__init__.py +0 -0
  150. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/node_library/__init__.py +0 -0
  151. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/node_library/advanced_node_library.py +0 -0
  152. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/node_library/library_registry.py +0 -0
  153. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/node_library/workflow_registry.py +0 -0
  154. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/py.typed +0 -0
  155. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/__init__.py +0 -0
  156. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/__init__.py +0 -0
  157. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/agent_events.py +0 -0
  158. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/app_events.py +0 -0
  159. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/arbitrary_python_events.py +0 -0
  160. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/artifact_events.py +0 -0
  161. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/base_events.py +0 -0
  162. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/config_events.py +0 -0
  163. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/connection_events.py +0 -0
  164. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/context_events.py +0 -0
  165. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/execution_events.py +0 -0
  166. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/flow_events.py +0 -0
  167. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/generate_request_payload_schemas.py +0 -0
  168. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/library_events.py +0 -0
  169. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/logger_events.py +0 -0
  170. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/mcp_events.py +0 -0
  171. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/model_events.py +0 -0
  172. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/node_events.py +0 -0
  173. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/object_events.py +0 -0
  174. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/os_events.py +0 -0
  175. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/parameter_events.py +0 -0
  176. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/payload_registry.py +0 -0
  177. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/project_events.py +0 -0
  178. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/resource_events.py +0 -0
  179. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/secrets_events.py +0 -0
  180. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/static_file_events.py +0 -0
  181. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/sync_events.py +0 -0
  182. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/validation_events.py +0 -0
  183. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/variable_events.py +0 -0
  184. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/events/workflow_events.py +0 -0
  185. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/file_metadata/__init__.py +0 -0
  186. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/file_metadata/sidecar_metadata.py +0 -0
  187. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/file_metadata/workflow_metadata.py +0 -0
  188. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/griptape_nodes.py +0 -0
  189. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/__init__.py +0 -0
  190. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/agent_manager.py +0 -0
  191. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/arbitrary_code_exec_manager.py +0 -0
  192. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/artifact_manager.py +0 -0
  193. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/artifact_providers/__init__.py +0 -0
  194. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/artifact_providers/artifact_schema_models.py +0 -0
  195. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/artifact_providers/base_artifact_preview_generator.py +0 -0
  196. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/artifact_providers/base_artifact_provider.py +0 -0
  197. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/artifact_providers/base_generator_parameters.py +0 -0
  198. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/artifact_providers/image/__init__.py +0 -0
  199. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/artifact_providers/image/image_artifact_provider.py +0 -0
  200. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/artifact_providers/image/preview_generators/__init__.py +0 -0
  201. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/artifact_providers/image/preview_generators/pil_rounded_preview_generator.py +0 -0
  202. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/artifact_providers/image/preview_generators/pil_thumbnail_generator.py +0 -0
  203. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/artifact_providers/provider_registry.py +0 -0
  204. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/artifact_providers/utils.py +0 -0
  205. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/config_manager.py +0 -0
  206. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/context_manager.py +0 -0
  207. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/engine_identity_manager.py +0 -0
  208. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/event_manager.py +0 -0
  209. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/__init__.py +0 -0
  210. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/__init__.py +0 -0
  211. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/advanced_library_load_failure_problem.py +0 -0
  212. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/after_library_callback_problem.py +0 -0
  213. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/before_library_callback_problem.py +0 -0
  214. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/create_config_category_problem.py +0 -0
  215. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/dependency_installation_failed_problem.py +0 -0
  216. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/deprecated_node_warning_problem.py +0 -0
  217. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/duplicate_library_problem.py +0 -0
  218. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/duplicate_node_registration_problem.py +0 -0
  219. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/duplicate_widget_registration_problem.py +0 -0
  220. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/engine_version_error_problem.py +0 -0
  221. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/incompatible_requirements_problem.py +0 -0
  222. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/insufficient_disk_space_problem.py +0 -0
  223. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/invalid_version_string_problem.py +0 -0
  224. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/library_engine_version_too_new_problem.py +0 -0
  225. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/library_json_decode_problem.py +0 -0
  226. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/library_load_exception_problem.py +0 -0
  227. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/library_not_found_problem.py +0 -0
  228. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/library_problem.py +0 -0
  229. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/library_schema_exception_problem.py +0 -0
  230. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/library_schema_validation_problem.py +0 -0
  231. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/modified_parameters_set_deprecation_warning_problem.py +0 -0
  232. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/modified_parameters_set_removed_problem.py +0 -0
  233. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/node_class_not_base_node_problem.py +0 -0
  234. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/node_class_not_found_problem.py +0 -0
  235. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/node_module_import_problem.py +0 -0
  236. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/old_xdg_location_warning_problem.py +0 -0
  237. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/sandbox_directory_missing_problem.py +0 -0
  238. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/ui_options_field_modified_incompatible_problem.py +0 -0
  239. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/ui_options_field_modified_warning_problem.py +0 -0
  240. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/update_config_category_problem.py +0 -0
  241. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/venv_creation_failed_problem.py +0 -0
  242. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/__init__.py +0 -0
  243. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/deprecated_node_in_workflow_problem.py +0 -0
  244. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/invalid_dependency_version_string_problem.py +0 -0
  245. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/invalid_library_version_string_problem.py +0 -0
  246. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/invalid_metadata_schema_problem.py +0 -0
  247. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/invalid_metadata_section_count_problem.py +0 -0
  248. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/invalid_toml_format_problem.py +0 -0
  249. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/library_not_registered_problem.py +0 -0
  250. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/library_version_below_required_problem.py +0 -0
  251. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/library_version_large_difference_problem.py +0 -0
  252. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/library_version_major_mismatch_problem.py +0 -0
  253. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/library_version_minor_difference_problem.py +0 -0
  254. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/missing_creation_date_problem.py +0 -0
  255. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/missing_last_modified_date_problem.py +0 -0
  256. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/missing_toml_section_problem.py +0 -0
  257. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/node_type_not_found_problem.py +0 -0
  258. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/workflow_not_found_problem.py +0 -0
  259. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/workflow_problem.py +0 -0
  260. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/workflow_schema_version_problem.py +0 -0
  261. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/flow_manager.py +0 -0
  262. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/library_manager.py +0 -0
  263. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/mcp_manager.py +0 -0
  264. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/model_manager.py +0 -0
  265. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/node_manager.py +0 -0
  266. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/object_manager.py +0 -0
  267. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/operation_manager.py +0 -0
  268. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/os_manager.py +0 -0
  269. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/project_manager.py +0 -0
  270. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/resource_components/__init__.py +0 -0
  271. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/resource_components/capability_field.py +0 -0
  272. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/resource_components/comparator.py +0 -0
  273. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/resource_components/resource_instance.py +0 -0
  274. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/resource_components/resource_type.py +0 -0
  275. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/resource_manager.py +0 -0
  276. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/resource_types/__init__.py +0 -0
  277. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/resource_types/compute_resource.py +0 -0
  278. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/resource_types/cpu_resource.py +0 -0
  279. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/resource_types/os_resource.py +0 -0
  280. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/secrets_manager.py +0 -0
  281. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/session_manager.py +0 -0
  282. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/settings.py +0 -0
  283. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/sync_manager.py +0 -0
  284. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/user_manager.py +0 -0
  285. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/variable_manager.py +0 -0
  286. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/version_compatibility_manager.py +0 -0
  287. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/managers/workflow_manager.py +0 -0
  288. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/retained_mode.py +0 -0
  289. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/utils/__init__.py +0 -0
  290. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/utils/name_generator.py +0 -0
  291. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/retained_mode/variable_types.py +0 -0
  292. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/servers/__init__.py +0 -0
  293. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/servers/mcp.py +0 -0
  294. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/servers/static.py +0 -0
  295. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/traits/__init__.py +0 -0
  296. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/traits/add_param_button.py +0 -0
  297. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/traits/button.py +0 -0
  298. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/traits/clamp.py +0 -0
  299. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/traits/color_picker.py +0 -0
  300. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/traits/compare.py +0 -0
  301. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/traits/compare_images.py +0 -0
  302. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/traits/file_system_picker.py +0 -0
  303. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/traits/minmax.py +0 -0
  304. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/traits/multi_options.py +0 -0
  305. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/traits/numbers_selector.py +0 -0
  306. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/traits/options.py +0 -0
  307. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/traits/slider.py +0 -0
  308. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/traits/trait_registry.py +0 -0
  309. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/traits/traits.json +0 -0
  310. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/traits/widget.py +0 -0
  311. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/utils/__init__.py +0 -0
  312. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/utils/artifact_normalization.py +0 -0
  313. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/utils/async_utils.py +0 -0
  314. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/utils/dict_utils.py +0 -0
  315. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/utils/file_utils.py +0 -0
  316. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/utils/git_utils.py +0 -0
  317. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/utils/http_file_patch.py +0 -0
  318. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/utils/huggingface_utils.py +0 -0
  319. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/utils/image_preview.py +0 -0
  320. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/utils/library_utils.py +0 -0
  321. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/utils/metaclasses.py +0 -0
  322. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/utils/string_utils.py +0 -0
  323. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/utils/url_utils.py +0 -0
  324. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/utils/uv_utils.py +0 -0
  325. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/utils/version_utils.py +0 -0
  326. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/version_compatibility/__init__.py +0 -0
  327. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/version_compatibility/versions/__init__.py +0 -0
  328. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/version_compatibility/versions/general/__init__.py +0 -0
  329. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/version_compatibility/versions/general/incompatible_engine_version_check.py +0 -0
  330. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/version_compatibility/versions/v0_39_0/__init__.py +0 -0
  331. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/version_compatibility/versions/v0_39_0/modified_parameters_set_removal.py +0 -0
  332. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/version_compatibility/versions/v0_63_8/__init__.py +0 -0
  333. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/version_compatibility/versions/v0_63_8/deprecated_nodegroup_parameters.py +0 -0
  334. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/version_compatibility/versions/v0_65_4/__init__.py +0 -0
  335. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/version_compatibility/versions/v0_65_4/run_in_parallel_to_run_in_order.py +0 -0
  336. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/version_compatibility/versions/v0_65_5/__init__.py +0 -0
  337. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/version_compatibility/versions/v0_65_5/flux_2_removed_parameters.py +0 -0
  338. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/version_compatibility/versions/v0_7_0/__init__.py +0 -0
  339. {griptape_nodes-0.78.0 → griptape_nodes-0.78.2}/src/griptape_nodes/version_compatibility/versions/v0_7_0/local_executor_argument_addition.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: griptape-nodes
3
- Version: 0.78.0
3
+ Version: 0.78.2
4
4
  Summary: Add your description here
5
5
  Requires-Dist: griptape>=1.9.4
6
6
  Requires-Dist: pydantic>=2.10.6
@@ -29,6 +29,7 @@ Requires-Dist: asyncio-thread-runner>=1.0
29
29
  Requires-Dist: portalocker>=2.10.0
30
30
  Requires-Dist: pygit2>=1.19.0
31
31
  Requires-Dist: send2trash>=2.1.0
32
+ Requires-Dist: tenacity>=9.0.0
32
33
  Requires-Dist: truststore>=0.10.1
33
34
  Requires-Dist: austin-dist>=3.7.0 ; extra == 'profiling'
34
35
  Requires-Python: >=3.12.0, <3.13
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "griptape-nodes"
3
- version = "0.78.0"
3
+ version = "0.78.2"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12.0, <3.13"
@@ -33,6 +33,7 @@ dependencies = [
33
33
  "portalocker>=2.10.0",
34
34
  "pygit2>=1.19.0",
35
35
  "send2trash>=2.1.0",
36
+ "tenacity>=9.0.0",
36
37
  "truststore>=0.10.1",
37
38
  ]
38
39
 
@@ -11,6 +11,7 @@ from griptape_nodes.drivers.storage.base_storage_driver import BaseStorageDriver
11
11
  from griptape_nodes.files.path_utils import get_workspace_relative_path
12
12
  from griptape_nodes.retained_mode.events.os_events import ExistingFilePolicy
13
13
  from griptape_nodes.retained_mode.file_metadata.sidecar_metadata import SidecarContent
14
+ from griptape_nodes.utils.http_utils import request_with_retry, retry_on_transient_error
14
15
 
15
16
  logger = logging.getLogger("griptape_nodes")
16
17
 
@@ -43,6 +44,15 @@ class GriptapeCloudStorageDriver(BaseStorageDriver):
43
44
  self.request_timeout = kwargs.get("request_timeout")
44
45
  self.bucket_id = bucket_id
45
46
 
47
+ @retry_on_transient_error
48
+ def _request(self, method: str, url: str, **kwargs) -> httpx.Response:
49
+ """Make an HTTP request with automatic retries on transient errors."""
50
+ kwargs.setdefault("headers", self.headers)
51
+ kwargs.setdefault("timeout", self.request_timeout)
52
+ response = httpx.request(method, url, **kwargs)
53
+ response.raise_for_status()
54
+ return response
55
+
46
56
  def create_signed_upload_url(
47
57
  self,
48
58
  path: Path,
@@ -64,8 +74,7 @@ class GriptapeCloudStorageDriver(BaseStorageDriver):
64
74
 
65
75
  url = urljoin(self.base_url, f"/api/buckets/{self.bucket_id}/asset-urls/{normalized_path.as_posix()}")
66
76
  try:
67
- response = httpx.post(url, json={"operation": "PUT"}, headers=self.headers, timeout=self.request_timeout)
68
- response.raise_for_status()
77
+ response = self._request("POST", url, json={"operation": "PUT"})
69
78
  except httpx.HTTPStatusError as e:
70
79
  msg = f"Failed to create presigned upload URL for file {normalized_path}: {e}"
71
80
  logger.error(msg)
@@ -144,8 +153,7 @@ class GriptapeCloudStorageDriver(BaseStorageDriver):
144
153
  normalized_path = get_workspace_relative_path(parsed_path, self.workspace_directory)
145
154
  url = urljoin(self.base_url, f"/api/buckets/{self.bucket_id}/asset-urls/{normalized_path.as_posix()}")
146
155
  try:
147
- response = httpx.post(url, json={"method": "GET"}, headers=self.headers, timeout=self.request_timeout)
148
- response.raise_for_status()
156
+ response = self._request("POST", url, json={"method": "GET"})
149
157
  except httpx.HTTPStatusError as e:
150
158
  msg = f"Failed to create presigned download URL for file {normalized_path}: {e}"
151
159
  logger.error(msg)
@@ -193,14 +201,12 @@ class GriptapeCloudStorageDriver(BaseStorageDriver):
193
201
 
194
202
  # Upload the file using the signed URL
195
203
  try:
196
- response = httpx.request(
204
+ self._request(
197
205
  upload_response["method"],
198
206
  upload_response["url"],
199
207
  content=file_content,
200
208
  headers=upload_response["headers"],
201
- timeout=self.request_timeout,
202
209
  )
203
- response.raise_for_status()
204
210
  except httpx.HTTPStatusError as e:
205
211
  msg = f"Failed to upload file {normalized_path}: {e}"
206
212
  logger.error(msg)
@@ -212,13 +218,7 @@ class GriptapeCloudStorageDriver(BaseStorageDriver):
212
218
  def _create_asset(self, asset_name: str) -> str:
213
219
  url = urljoin(self.base_url, f"/api/buckets/{self.bucket_id}/assets")
214
220
  try:
215
- response = httpx.put(
216
- url=url,
217
- json={"name": asset_name},
218
- headers=self.headers,
219
- timeout=self.request_timeout,
220
- )
221
- response.raise_for_status()
221
+ response = self._request("PUT", url, json={"name": asset_name})
222
222
  except httpx.HTTPStatusError as e:
223
223
  msg = str(e)
224
224
  logger.error(msg)
@@ -247,8 +247,7 @@ class GriptapeCloudStorageDriver(BaseStorageDriver):
247
247
  payload = {"name": bucket_name}
248
248
 
249
249
  try:
250
- response = httpx.post(url, json=payload, headers=headers, timeout=timeout)
251
- response.raise_for_status()
250
+ response = request_with_retry("POST", url, json=payload, headers=headers, timeout=timeout)
252
251
  except httpx.HTTPStatusError as e:
253
252
  msg = f"Failed to create bucket '{bucket_name}': {e}"
254
253
  logger.error(msg)
@@ -271,13 +270,7 @@ class GriptapeCloudStorageDriver(BaseStorageDriver):
271
270
  """
272
271
  url = urljoin(self.base_url, f"/api/buckets/{self.bucket_id}/assets")
273
272
  try:
274
- response = httpx.get(
275
- url,
276
- headers=self.headers,
277
- params={"prefix": self.workspace_directory.name or ""},
278
- timeout=self.request_timeout,
279
- )
280
- response.raise_for_status()
273
+ response = self._request("GET", url, params={"prefix": self.workspace_directory.name or ""})
281
274
  except httpx.HTTPStatusError as e:
282
275
  msg = f"Failed to list files in bucket {self.bucket_id}: {e}"
283
276
  logger.error(msg)
@@ -328,8 +321,7 @@ class GriptapeCloudStorageDriver(BaseStorageDriver):
328
321
  url = urljoin(base_url, "/api/buckets")
329
322
 
330
323
  try:
331
- response = httpx.get(url, headers=headers, timeout=timeout)
332
- response.raise_for_status()
324
+ response = request_with_retry("GET", url, headers=headers, timeout=timeout)
333
325
  except httpx.HTTPStatusError as e:
334
326
  msg = f"Failed to list buckets: {e}"
335
327
  logger.error(msg)
@@ -347,8 +339,7 @@ class GriptapeCloudStorageDriver(BaseStorageDriver):
347
339
  url = urljoin(self.base_url, f"/api/buckets/{self.bucket_id}/assets/{normalized_path.as_posix()}")
348
340
 
349
341
  try:
350
- response = httpx.delete(url, headers=self.headers, timeout=self.request_timeout)
351
- response.raise_for_status()
342
+ self._request("DELETE", url)
352
343
  except httpx.HTTPStatusError as e:
353
344
  msg = f"Failed to delete file {normalized_path}: {e}"
354
345
  logger.error(msg)
@@ -439,8 +430,7 @@ class GriptapeCloudStorageDriver(BaseStorageDriver):
439
430
 
440
431
  # Make API request to get signed URL
441
432
  try:
442
- response = httpx.post(api_url, json={"method": "GET"}, headers=self.headers, timeout=self.request_timeout)
443
- response.raise_for_status()
433
+ response = self._request("POST", api_url, json={"method": "GET"})
444
434
 
445
435
  response_data = response.json()
446
436
  signed_url = response_data["url"]
@@ -625,20 +615,13 @@ class GriptapeCloudStorageDriver(BaseStorageDriver):
625
615
  # Make API request to get signed URL
626
616
  try:
627
617
  headers = {"Authorization": f"Bearer {api_key}"}
628
- response = httpx_request_func("POST", api_url, json={"method": "GET"}, headers=headers)
629
- response.raise_for_status()
630
-
631
- response_data = response.json()
632
- signed_url = response_data["url"]
633
-
634
- logger.info("Converted cloud asset URL to signed URL: %s", asset_url)
618
+ response = request_with_retry(
619
+ "POST", api_url, httpx_request_func=httpx_request_func, json={"method": "GET"}, headers=headers
620
+ )
635
621
  except Exception as e:
636
- if isinstance(e, httpx.HTTPStatusError):
637
- logger.warning(
638
- "Failed to create signed download URL for %s: HTTP %s", asset_url, e.response.status_code
639
- )
640
- else:
641
- logger.warning("Failed to create signed download URL for %s: %s", asset_url, e)
622
+ logger.warning("Failed to create signed download URL for %s: %s", asset_url, e)
642
623
  return None
643
- else:
644
- return signed_url
624
+
625
+ signed_url = response.json()["url"]
626
+ logger.info("Converted cloud asset URL to signed URL: %s", asset_url)
627
+ return signed_url
@@ -40,7 +40,7 @@ class ProjectFileParameter:
40
40
 
41
41
  DEFAULT_SITUATION = "save_node_output"
42
42
 
43
- def __init__(
43
+ def __init__( # noqa: PLR0913
44
44
  self,
45
45
  node: BaseNode,
46
46
  name: str,
@@ -48,6 +48,7 @@ class ProjectFileParameter:
48
48
  default_filename: str,
49
49
  situation: str = DEFAULT_SITUATION,
50
50
  allowed_modes: set[ParameterMode] | None = None,
51
+ ui_options: dict | None = None,
51
52
  ) -> None:
52
53
  """Initialize with situation context.
53
54
 
@@ -57,12 +58,14 @@ class ProjectFileParameter:
57
58
  default_filename: Default filename if parameter is empty
58
59
  situation: Situation name (default: "save_node_output")
59
60
  allowed_modes: Set of allowed parameter modes (default: INPUT, PROPERTY)
61
+ ui_options: Optional UI options to pass to the generated parameter
60
62
  """
61
63
  self._node = node
62
64
  self._name = name
63
65
  self._situation_name = situation
64
66
  self._default_filename = default_filename
65
67
  self._allowed_modes = allowed_modes or {ParameterMode.INPUT, ParameterMode.PROPERTY}
68
+ self._ui_options = ui_options
66
69
 
67
70
  def add_parameter(self) -> None:
68
71
  """Create and add the file path parameter to the node."""
@@ -96,6 +99,7 @@ class ProjectFileParameter:
96
99
  input_types=["str"],
97
100
  output_type="str",
98
101
  traits=traits,
102
+ ui_options=self._ui_options,
99
103
  )
100
104
  parameter.on_incoming_connection_removed.append(self._reset_to_default)
101
105
 
@@ -203,9 +203,9 @@ class StaticFilesManager:
203
203
  Returns:
204
204
  A result object indicating success or failure.
205
205
  """
206
- resolved = self._resolve_static_file_path(request.file_name)
206
+ resolved = self._resolve_static_file_path(request.file_name, COPY_EXTERNAL_FILE_SITUATION)
207
207
  if resolved is None:
208
- msg = f"Attempted to create download URL for '{request.file_name}'. Failed because the project template is missing the '{SAVE_STATIC_FILE_SITUATION}' situation."
208
+ msg = f"Attempted to create download URL for '{request.file_name}'. Failed because the project template is missing the '{COPY_EXTERNAL_FILE_SITUATION}' situation."
209
209
  return CreateStaticFileDownloadUrlResultFailure(error=msg, result_details=msg)
210
210
 
211
211
  try:
@@ -0,0 +1,90 @@
1
+ import logging
2
+ from collections.abc import Callable
3
+ from http import HTTPStatus
4
+ from typing import Any
5
+
6
+ import httpx
7
+ from tenacity import before_sleep_log, retry, retry_if_exception, stop_after_attempt, wait_exponential
8
+ from tenacity.wait import WaitBaseT
9
+
10
+ logger = logging.getLogger("griptape_nodes")
11
+
12
+ RETRY_MAX_ATTEMPTS = 3
13
+ RETRY_WAIT_MULTIPLIER = 1
14
+ RETRY_WAIT_MIN_SECONDS = 1
15
+ RETRY_WAIT_MAX_SECONDS = 10
16
+
17
+
18
+ def is_retryable_httpx_error(exc: BaseException) -> bool:
19
+ """Return True for transient httpx errors that warrant a retry.
20
+
21
+ Retries on:
22
+ - Connection errors (httpx.ConnectError)
23
+ - Timeouts (httpx.TimeoutException)
24
+ - Server errors (HTTP 5xx)
25
+
26
+ Does not retry on client errors (HTTP 4xx) or other exceptions.
27
+ """
28
+ if isinstance(exc, (httpx.ConnectError, httpx.TimeoutException)):
29
+ return True
30
+ if isinstance(exc, httpx.HTTPStatusError):
31
+ return exc.response.status_code >= HTTPStatus.INTERNAL_SERVER_ERROR
32
+ return False
33
+
34
+
35
+ retry_on_transient_error = retry(
36
+ retry=retry_if_exception(is_retryable_httpx_error),
37
+ wait=wait_exponential(multiplier=RETRY_WAIT_MULTIPLIER, min=RETRY_WAIT_MIN_SECONDS, max=RETRY_WAIT_MAX_SECONDS),
38
+ stop=stop_after_attempt(RETRY_MAX_ATTEMPTS),
39
+ before_sleep=before_sleep_log(logger, logging.WARNING),
40
+ reraise=True,
41
+ )
42
+
43
+
44
+ DEFAULT_RETRY_WAIT: WaitBaseT = wait_exponential(
45
+ multiplier=RETRY_WAIT_MULTIPLIER, min=RETRY_WAIT_MIN_SECONDS, max=RETRY_WAIT_MAX_SECONDS
46
+ )
47
+
48
+
49
+ def request_with_retry(
50
+ method: str,
51
+ url: str,
52
+ *,
53
+ max_attempts: int = RETRY_MAX_ATTEMPTS,
54
+ wait: WaitBaseT = DEFAULT_RETRY_WAIT,
55
+ httpx_request_func: Callable[..., httpx.Response] | None = None,
56
+ **kwargs: Any,
57
+ ) -> httpx.Response:
58
+ """Make an HTTP request with automatic retries on transient errors.
59
+
60
+ Convenience wrapper for standalone/static-method use where a decorated
61
+ closure would otherwise be needed.
62
+
63
+ Args:
64
+ method: HTTP method (GET, POST, PUT, DELETE, etc.).
65
+ url: The URL to request.
66
+ max_attempts: Maximum number of retry attempts.
67
+ wait: Tenacity wait strategy for backoff between retries.
68
+ httpx_request_func: Optional httpx request callable. Use this to pass
69
+ the original (unpatched) httpx.request when calling from within
70
+ monkey-patched code to avoid infinite recursion.
71
+ **kwargs: Passed through to the request function.
72
+
73
+ Returns:
74
+ The httpx.Response (already checked via raise_for_status).
75
+ """
76
+ func = httpx_request_func or httpx.request
77
+
78
+ @retry(
79
+ retry=retry_if_exception(is_retryable_httpx_error),
80
+ wait=wait,
81
+ stop=stop_after_attempt(max_attempts),
82
+ before_sleep=before_sleep_log(logger, logging.WARNING),
83
+ reraise=True,
84
+ )
85
+ def _do_request() -> httpx.Response:
86
+ response = func(method, url, **kwargs)
87
+ response.raise_for_status()
88
+ return response
89
+
90
+ return _do_request()