griptape-nodes-engine 0.84.0__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 (352) hide show
  1. griptape_nodes_engine-0.84.0/PKG-INFO +112 -0
  2. griptape_nodes_engine-0.84.0/README.md +72 -0
  3. griptape_nodes_engine-0.84.0/pyproject.toml +169 -0
  4. griptape_nodes_engine-0.84.0/src/griptape_nodes/__init__.py +24 -0
  5. griptape_nodes_engine-0.84.0/src/griptape_nodes/__main__.py +6 -0
  6. griptape_nodes_engine-0.84.0/src/griptape_nodes/api_client/__init__.py +9 -0
  7. griptape_nodes_engine-0.84.0/src/griptape_nodes/api_client/client.py +362 -0
  8. griptape_nodes_engine-0.84.0/src/griptape_nodes/api_client/request_client.py +334 -0
  9. griptape_nodes_engine-0.84.0/src/griptape_nodes/app/.python-version +1 -0
  10. griptape_nodes_engine-0.84.0/src/griptape_nodes/app/__init__.py +5 -0
  11. griptape_nodes_engine-0.84.0/src/griptape_nodes/app/app.py +687 -0
  12. griptape_nodes_engine-0.84.0/src/griptape_nodes/app/engine_log.py +96 -0
  13. griptape_nodes_engine-0.84.0/src/griptape_nodes/app/watch.py +54 -0
  14. griptape_nodes_engine-0.84.0/src/griptape_nodes/bootstrap/__init__.py +1 -0
  15. griptape_nodes_engine-0.84.0/src/griptape_nodes/bootstrap/utils/__init__.py +1 -0
  16. griptape_nodes_engine-0.84.0/src/griptape_nodes/bootstrap/utils/python_subprocess_executor.py +177 -0
  17. griptape_nodes_engine-0.84.0/src/griptape_nodes/bootstrap/utils/subprocess_websocket_base.py +98 -0
  18. griptape_nodes_engine-0.84.0/src/griptape_nodes/bootstrap/utils/subprocess_websocket_listener.py +126 -0
  19. griptape_nodes_engine-0.84.0/src/griptape_nodes/bootstrap/utils/subprocess_websocket_sender.py +120 -0
  20. griptape_nodes_engine-0.84.0/src/griptape_nodes/bootstrap/workflow_executors/__init__.py +1 -0
  21. griptape_nodes_engine-0.84.0/src/griptape_nodes/bootstrap/workflow_executors/local_session_workflow_executor.py +232 -0
  22. griptape_nodes_engine-0.84.0/src/griptape_nodes/bootstrap/workflow_executors/local_workflow_executor.py +299 -0
  23. griptape_nodes_engine-0.84.0/src/griptape_nodes/bootstrap/workflow_executors/subprocess_workflow_executor.py +187 -0
  24. griptape_nodes_engine-0.84.0/src/griptape_nodes/bootstrap/workflow_executors/utils/__init__.py +1 -0
  25. griptape_nodes_engine-0.84.0/src/griptape_nodes/bootstrap/workflow_executors/utils/subprocess_script.py +62 -0
  26. griptape_nodes_engine-0.84.0/src/griptape_nodes/bootstrap/workflow_executors/workflow_executor.py +43 -0
  27. griptape_nodes_engine-0.84.0/src/griptape_nodes/bootstrap/workflow_publishers/__init__.py +1 -0
  28. griptape_nodes_engine-0.84.0/src/griptape_nodes/bootstrap/workflow_publishers/local_session_workflow_publisher.py +211 -0
  29. griptape_nodes_engine-0.84.0/src/griptape_nodes/bootstrap/workflow_publishers/local_workflow_publisher.py +41 -0
  30. griptape_nodes_engine-0.84.0/src/griptape_nodes/bootstrap/workflow_publishers/subprocess_workflow_publisher.py +108 -0
  31. griptape_nodes_engine-0.84.0/src/griptape_nodes/bootstrap/workflow_publishers/utils/__init__.py +1 -0
  32. griptape_nodes_engine-0.84.0/src/griptape_nodes/bootstrap/workflow_publishers/utils/subprocess_script.py +93 -0
  33. griptape_nodes_engine-0.84.0/src/griptape_nodes/cli/__init__.py +1 -0
  34. griptape_nodes_engine-0.84.0/src/griptape_nodes/cli/commands/__init__.py +1 -0
  35. griptape_nodes_engine-0.84.0/src/griptape_nodes/cli/commands/config.py +74 -0
  36. griptape_nodes_engine-0.84.0/src/griptape_nodes/cli/commands/doctor/__init__.py +43 -0
  37. griptape_nodes_engine-0.84.0/src/griptape_nodes/cli/commands/doctor/base.py +20 -0
  38. griptape_nodes_engine-0.84.0/src/griptape_nodes/cli/commands/doctor/websocket_connection.py +74 -0
  39. griptape_nodes_engine-0.84.0/src/griptape_nodes/cli/commands/engine.py +66 -0
  40. griptape_nodes_engine-0.84.0/src/griptape_nodes/cli/commands/init.py +695 -0
  41. griptape_nodes_engine-0.84.0/src/griptape_nodes/cli/commands/libraries.py +108 -0
  42. griptape_nodes_engine-0.84.0/src/griptape_nodes/cli/commands/models.py +549 -0
  43. griptape_nodes_engine-0.84.0/src/griptape_nodes/cli/commands/self.py +204 -0
  44. griptape_nodes_engine-0.84.0/src/griptape_nodes/cli/main.py +63 -0
  45. griptape_nodes_engine-0.84.0/src/griptape_nodes/cli/shared.py +74 -0
  46. griptape_nodes_engine-0.84.0/src/griptape_nodes/common/__init__.py +1 -0
  47. griptape_nodes_engine-0.84.0/src/griptape_nodes/common/directed_graph.py +71 -0
  48. griptape_nodes_engine-0.84.0/src/griptape_nodes/common/macro_parser/__init__.py +44 -0
  49. griptape_nodes_engine-0.84.0/src/griptape_nodes/common/macro_parser/core.py +251 -0
  50. griptape_nodes_engine-0.84.0/src/griptape_nodes/common/macro_parser/exceptions.py +126 -0
  51. griptape_nodes_engine-0.84.0/src/griptape_nodes/common/macro_parser/formats.py +179 -0
  52. griptape_nodes_engine-0.84.0/src/griptape_nodes/common/macro_parser/matching.py +137 -0
  53. griptape_nodes_engine-0.84.0/src/griptape_nodes/common/macro_parser/parsing.py +212 -0
  54. griptape_nodes_engine-0.84.0/src/griptape_nodes/common/macro_parser/resolution.py +186 -0
  55. griptape_nodes_engine-0.84.0/src/griptape_nodes/common/macro_parser/segments.py +45 -0
  56. griptape_nodes_engine-0.84.0/src/griptape_nodes/common/node_executor.py +3837 -0
  57. griptape_nodes_engine-0.84.0/src/griptape_nodes/common/project_templates/__init__.py +49 -0
  58. griptape_nodes_engine-0.84.0/src/griptape_nodes/common/project_templates/default_project_template.py +168 -0
  59. griptape_nodes_engine-0.84.0/src/griptape_nodes/common/project_templates/defaults/README.md +36 -0
  60. griptape_nodes_engine-0.84.0/src/griptape_nodes/common/project_templates/directory.py +67 -0
  61. griptape_nodes_engine-0.84.0/src/griptape_nodes/common/project_templates/loader.py +396 -0
  62. griptape_nodes_engine-0.84.0/src/griptape_nodes/common/project_templates/project.py +384 -0
  63. griptape_nodes_engine-0.84.0/src/griptape_nodes/common/project_templates/situation.py +143 -0
  64. griptape_nodes_engine-0.84.0/src/griptape_nodes/common/project_templates/validation.py +142 -0
  65. griptape_nodes_engine-0.84.0/src/griptape_nodes/drivers/__init__.py +1 -0
  66. griptape_nodes_engine-0.84.0/src/griptape_nodes/drivers/image_metadata/__init__.py +21 -0
  67. griptape_nodes_engine-0.84.0/src/griptape_nodes/drivers/image_metadata/base_image_metadata_driver.py +63 -0
  68. griptape_nodes_engine-0.84.0/src/griptape_nodes/drivers/image_metadata/exif_metadata_driver.py +218 -0
  69. griptape_nodes_engine-0.84.0/src/griptape_nodes/drivers/image_metadata/image_metadata_driver_registry.py +55 -0
  70. griptape_nodes_engine-0.84.0/src/griptape_nodes/drivers/image_metadata/png_metadata_driver.py +71 -0
  71. griptape_nodes_engine-0.84.0/src/griptape_nodes/drivers/storage/__init__.py +8 -0
  72. griptape_nodes_engine-0.84.0/src/griptape_nodes/drivers/storage/base_storage_driver.py +205 -0
  73. griptape_nodes_engine-0.84.0/src/griptape_nodes/drivers/storage/griptape_cloud_storage_driver.py +627 -0
  74. griptape_nodes_engine-0.84.0/src/griptape_nodes/drivers/storage/local_storage_driver.py +225 -0
  75. griptape_nodes_engine-0.84.0/src/griptape_nodes/drivers/storage/storage_backend.py +10 -0
  76. griptape_nodes_engine-0.84.0/src/griptape_nodes/drivers/thread_storage/__init__.py +15 -0
  77. griptape_nodes_engine-0.84.0/src/griptape_nodes/drivers/thread_storage/base_thread_storage_driver.py +106 -0
  78. griptape_nodes_engine-0.84.0/src/griptape_nodes/drivers/thread_storage/griptape_cloud_thread_storage_driver.py +213 -0
  79. griptape_nodes_engine-0.84.0/src/griptape_nodes/drivers/thread_storage/local_thread_storage_driver.py +138 -0
  80. griptape_nodes_engine-0.84.0/src/griptape_nodes/drivers/thread_storage/thread_storage_backend.py +10 -0
  81. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/__init__.py +1 -0
  82. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/base_iterative_nodes.py +1128 -0
  83. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/connections.py +455 -0
  84. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/core_types.py +3102 -0
  85. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/flow.py +145 -0
  86. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/node_groups/__init__.py +17 -0
  87. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/node_groups/base_iterative_node_group.py +252 -0
  88. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/node_groups/base_node_group.py +118 -0
  89. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/node_groups/base_while_node_group.py +176 -0
  90. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/node_groups/subflow_node_group.py +1043 -0
  91. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/node_types.py +2095 -0
  92. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_components/README.md +414 -0
  93. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_components/__init__.py +1 -0
  94. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_components/api_key_provider_parameter.py +200 -0
  95. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_components/artifact_url/__init__.py +1 -0
  96. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_components/artifact_url/public_artifact_url_parameter.py +141 -0
  97. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_components/execution_status_component.py +161 -0
  98. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_components/huggingface/__init__.py +1 -0
  99. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_components/huggingface/huggingface_model_parameter.py +170 -0
  100. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_components/huggingface/huggingface_repo_file_parameter.py +112 -0
  101. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_components/huggingface/huggingface_repo_parameter.py +102 -0
  102. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_components/huggingface/huggingface_repo_variant_parameter.py +152 -0
  103. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_components/huggingface/huggingface_utils.py +136 -0
  104. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_components/log_parameter.py +140 -0
  105. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_components/progress_bar_component.py +57 -0
  106. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_components/project_file_parameter.py +235 -0
  107. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_components/seed_parameter.py +58 -0
  108. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_components/subflow_execution_component.py +310 -0
  109. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_types/__init__.py +1 -0
  110. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_types/parameter_audio.py +267 -0
  111. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_types/parameter_bool.py +230 -0
  112. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_types/parameter_button.py +458 -0
  113. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_types/parameter_dict.py +157 -0
  114. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_types/parameter_float.py +188 -0
  115. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_types/parameter_image.py +268 -0
  116. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_types/parameter_int.py +192 -0
  117. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_types/parameter_json.py +274 -0
  118. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_types/parameter_number.py +393 -0
  119. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_types/parameter_range.py +399 -0
  120. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_types/parameter_string.py +276 -0
  121. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_types/parameter_three_d.py +237 -0
  122. griptape_nodes_engine-0.84.0/src/griptape_nodes/exe_types/param_types/parameter_video.py +267 -0
  123. griptape_nodes_engine-0.84.0/src/griptape_nodes/files/__init__.py +19 -0
  124. griptape_nodes_engine-0.84.0/src/griptape_nodes/files/base_file_driver.py +89 -0
  125. griptape_nodes_engine-0.84.0/src/griptape_nodes/files/derivation.py +163 -0
  126. griptape_nodes_engine-0.84.0/src/griptape_nodes/files/drivers/__init__.py +20 -0
  127. griptape_nodes_engine-0.84.0/src/griptape_nodes/files/drivers/base64_file_driver.py +118 -0
  128. griptape_nodes_engine-0.84.0/src/griptape_nodes/files/drivers/data_uri_file_driver.py +89 -0
  129. griptape_nodes_engine-0.84.0/src/griptape_nodes/files/drivers/griptape_cloud_file_driver.py +193 -0
  130. griptape_nodes_engine-0.84.0/src/griptape_nodes/files/drivers/http_file_driver.py +87 -0
  131. griptape_nodes_engine-0.84.0/src/griptape_nodes/files/drivers/local_file_driver.py +158 -0
  132. griptape_nodes_engine-0.84.0/src/griptape_nodes/files/drivers/static_server_file_driver.py +138 -0
  133. griptape_nodes_engine-0.84.0/src/griptape_nodes/files/file.py +828 -0
  134. griptape_nodes_engine-0.84.0/src/griptape_nodes/files/file_driver.py +20 -0
  135. griptape_nodes_engine-0.84.0/src/griptape_nodes/files/file_driver_registry.py +66 -0
  136. griptape_nodes_engine-0.84.0/src/griptape_nodes/files/path_utils.py +639 -0
  137. griptape_nodes_engine-0.84.0/src/griptape_nodes/files/project_file.py +171 -0
  138. griptape_nodes_engine-0.84.0/src/griptape_nodes/machines/__init__.py +1 -0
  139. griptape_nodes_engine-0.84.0/src/griptape_nodes/machines/control_flow.py +349 -0
  140. griptape_nodes_engine-0.84.0/src/griptape_nodes/machines/dag_builder.py +450 -0
  141. griptape_nodes_engine-0.84.0/src/griptape_nodes/machines/fsm.py +88 -0
  142. griptape_nodes_engine-0.84.0/src/griptape_nodes/machines/heuristics/__init__.py +13 -0
  143. griptape_nodes_engine-0.84.0/src/griptape_nodes/machines/heuristics/base_heuristic.py +48 -0
  144. griptape_nodes_engine-0.84.0/src/griptape_nodes/machines/heuristics/distance_to_node.py +92 -0
  145. griptape_nodes_engine-0.84.0/src/griptape_nodes/machines/heuristics/has_connection_from_previous.py +61 -0
  146. griptape_nodes_engine-0.84.0/src/griptape_nodes/machines/heuristics/top_left_to_bottom_right.py +78 -0
  147. griptape_nodes_engine-0.84.0/src/griptape_nodes/machines/node_priority_queue.py +161 -0
  148. griptape_nodes_engine-0.84.0/src/griptape_nodes/machines/parallel_resolution.py +771 -0
  149. griptape_nodes_engine-0.84.0/src/griptape_nodes/mcp_server/__init__.py +1 -0
  150. griptape_nodes_engine-0.84.0/src/griptape_nodes/node_library/__init__.py +1 -0
  151. griptape_nodes_engine-0.84.0/src/griptape_nodes/node_library/advanced_node_library.py +51 -0
  152. griptape_nodes_engine-0.84.0/src/griptape_nodes/node_library/library_registry.py +518 -0
  153. griptape_nodes_engine-0.84.0/src/griptape_nodes/node_library/workflow_registry.py +365 -0
  154. griptape_nodes_engine-0.84.0/src/griptape_nodes/py.typed +0 -0
  155. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/__init__.py +1 -0
  156. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/__init__.py +1 -0
  157. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/agent_events.py +392 -0
  158. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/app_events.py +459 -0
  159. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/arbitrary_python_events.py +53 -0
  160. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/artifact_events.py +379 -0
  161. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/base_events.py +503 -0
  162. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/config_events.py +226 -0
  163. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/connection_events.py +147 -0
  164. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/context_events.py +91 -0
  165. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/event_converter.py +180 -0
  166. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/execution_events.py +513 -0
  167. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/flow_events.py +582 -0
  168. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/generate_request_payload_schemas.py +30 -0
  169. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/library_events.py +1123 -0
  170. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/logger_events.py +26 -0
  171. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/mcp_events.py +368 -0
  172. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/model_events.py +296 -0
  173. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/node_events.py +1106 -0
  174. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/object_events.py +83 -0
  175. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/os_events.py +736 -0
  176. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/parameter_events.py +798 -0
  177. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/payload_registry.py +60 -0
  178. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/project_events.py +627 -0
  179. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/resource_events.py +291 -0
  180. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/secrets_events.py +137 -0
  181. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/static_file_events.py +194 -0
  182. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/sync_events.py +60 -0
  183. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/validation_events.py +88 -0
  184. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/variable_events.py +364 -0
  185. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/worker_events.py +134 -0
  186. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/events/workflow_events.py +1123 -0
  187. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/file_metadata/__init__.py +1 -0
  188. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/file_metadata/sidecar_metadata.py +141 -0
  189. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/file_metadata/workflow_metadata.py +231 -0
  190. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/griptape_nodes.py +516 -0
  191. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/__init__.py +1 -0
  192. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/agent_manager.py +621 -0
  193. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/arbitrary_code_exec_manager.py +71 -0
  194. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/artifact_manager.py +1477 -0
  195. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/artifact_providers/__init__.py +29 -0
  196. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/artifact_providers/artifact_schema_models.py +80 -0
  197. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/artifact_providers/base_artifact_preview_generator.py +134 -0
  198. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/artifact_providers/base_artifact_provider.py +245 -0
  199. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/artifact_providers/base_generator_parameters.py +96 -0
  200. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/artifact_providers/image/__init__.py +9 -0
  201. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/artifact_providers/image/image_artifact_provider.py +179 -0
  202. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/artifact_providers/image/preview_generators/__init__.py +13 -0
  203. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/artifact_providers/image/preview_generators/pil_rounded_preview_generator.py +236 -0
  204. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/artifact_providers/image/preview_generators/pil_thumbnail_generator.py +155 -0
  205. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/artifact_providers/provider_registry.py +189 -0
  206. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/artifact_providers/utils.py +5 -0
  207. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/artifact_providers/video/__init__.py +9 -0
  208. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/artifact_providers/video/preview_generators/__init__.py +9 -0
  209. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/artifact_providers/video/preview_generators/ffmpeg_preview_generator.py +181 -0
  210. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/artifact_providers/video/video_artifact_provider.py +181 -0
  211. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/config_manager.py +857 -0
  212. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/context_manager.py +672 -0
  213. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/engine_identity_manager.py +297 -0
  214. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/event_manager.py +697 -0
  215. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/__init__.py +1 -0
  216. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/__init__.py +65 -0
  217. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/advanced_library_load_failure_problem.py +33 -0
  218. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/after_library_callback_problem.py +32 -0
  219. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/before_library_callback_problem.py +32 -0
  220. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/create_config_category_problem.py +32 -0
  221. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/dependency_installation_failed_problem.py +32 -0
  222. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/deprecated_node_warning_problem.py +83 -0
  223. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/duplicate_library_problem.py +28 -0
  224. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/duplicate_node_registration_problem.py +44 -0
  225. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/duplicate_widget_registration_problem.py +44 -0
  226. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/engine_version_error_problem.py +28 -0
  227. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/incompatible_requirements_problem.py +34 -0
  228. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/insufficient_disk_space_problem.py +33 -0
  229. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/invalid_version_string_problem.py +32 -0
  230. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/library_engine_version_too_new_problem.py +45 -0
  231. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/library_json_decode_problem.py +28 -0
  232. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/library_load_exception_problem.py +32 -0
  233. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/library_not_found_problem.py +30 -0
  234. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/library_problem.py +20 -0
  235. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/library_schema_exception_problem.py +32 -0
  236. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/library_schema_validation_problem.py +38 -0
  237. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/modified_parameters_set_deprecation_warning_problem.py +44 -0
  238. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/modified_parameters_set_removed_problem.py +44 -0
  239. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/node_class_not_base_node_problem.py +40 -0
  240. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/node_class_not_found_problem.py +38 -0
  241. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/node_module_import_problem.py +53 -0
  242. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/old_xdg_location_warning_problem.py +43 -0
  243. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/sandbox_directory_missing_problem.py +28 -0
  244. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/ui_options_field_modified_incompatible_problem.py +44 -0
  245. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/ui_options_field_modified_warning_problem.py +35 -0
  246. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/update_config_category_problem.py +32 -0
  247. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/venv_creation_failed_problem.py +32 -0
  248. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/__init__.py +75 -0
  249. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/deprecated_node_in_workflow_problem.py +83 -0
  250. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/invalid_dependency_version_string_problem.py +38 -0
  251. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/invalid_library_version_string_problem.py +38 -0
  252. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/invalid_metadata_schema_problem.py +31 -0
  253. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/invalid_metadata_section_count_problem.py +31 -0
  254. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/invalid_toml_format_problem.py +30 -0
  255. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/library_not_registered_problem.py +35 -0
  256. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/library_version_below_required_problem.py +41 -0
  257. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/library_version_large_difference_problem.py +41 -0
  258. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/library_version_major_mismatch_problem.py +41 -0
  259. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/library_version_minor_difference_problem.py +41 -0
  260. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/missing_creation_date_problem.py +30 -0
  261. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/missing_last_modified_date_problem.py +30 -0
  262. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/missing_toml_section_problem.py +30 -0
  263. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/node_type_not_found_problem.py +51 -0
  264. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/workflow_not_found_problem.py +27 -0
  265. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/workflow_problem.py +20 -0
  266. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/workflow_schema_version_problem.py +39 -0
  267. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/flow_manager.py +4594 -0
  268. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/library_manager.py +4851 -0
  269. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/mcp_manager.py +374 -0
  270. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/model_manager.py +1201 -0
  271. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/node_manager.py +4796 -0
  272. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/object_manager.py +267 -0
  273. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/operation_manager.py +478 -0
  274. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/os_manager.py +3414 -0
  275. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/project_manager.py +1685 -0
  276. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/resource_components/__init__.py +1 -0
  277. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/resource_components/capability_field.py +41 -0
  278. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/resource_components/comparator.py +18 -0
  279. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/resource_components/resource_instance.py +236 -0
  280. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/resource_components/resource_type.py +79 -0
  281. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/resource_manager.py +306 -0
  282. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/resource_types/__init__.py +1 -0
  283. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/resource_types/compute_resource.py +82 -0
  284. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/resource_types/cpu_resource.py +108 -0
  285. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/resource_types/os_resource.py +104 -0
  286. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/secrets_manager.py +180 -0
  287. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/session_manager.py +366 -0
  288. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/settings.py +314 -0
  289. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/static_files_manager.py +568 -0
  290. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/sync_manager.py +510 -0
  291. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/user_manager.py +120 -0
  292. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/variable_manager.py +529 -0
  293. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/version_compatibility_manager.py +397 -0
  294. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/worker_manager.py +515 -0
  295. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/managers/workflow_manager.py +5807 -0
  296. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/publishing/__init__.py +5 -0
  297. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/publishing/download_models_script.py +66 -0
  298. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/publishing/workflow_packager.py +661 -0
  299. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/retained_mode.py +1902 -0
  300. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/utils/__init__.py +1 -0
  301. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/utils/name_generator.py +162 -0
  302. griptape_nodes_engine-0.84.0/src/griptape_nodes/retained_mode/variable_types.py +18 -0
  303. griptape_nodes_engine-0.84.0/src/griptape_nodes/servers/__init__.py +21 -0
  304. griptape_nodes_engine-0.84.0/src/griptape_nodes/servers/mcp.py +253 -0
  305. griptape_nodes_engine-0.84.0/src/griptape_nodes/servers/static.py +328 -0
  306. griptape_nodes_engine-0.84.0/src/griptape_nodes/traits/__init__.py +1 -0
  307. griptape_nodes_engine-0.84.0/src/griptape_nodes/traits/add_param_button.py +21 -0
  308. griptape_nodes_engine-0.84.0/src/griptape_nodes/traits/button.py +410 -0
  309. griptape_nodes_engine-0.84.0/src/griptape_nodes/traits/clamp.py +79 -0
  310. griptape_nodes_engine-0.84.0/src/griptape_nodes/traits/color_picker.py +66 -0
  311. griptape_nodes_engine-0.84.0/src/griptape_nodes/traits/compare.py +20 -0
  312. griptape_nodes_engine-0.84.0/src/griptape_nodes/traits/compare_images.py +41 -0
  313. griptape_nodes_engine-0.84.0/src/griptape_nodes/traits/file_system_picker.py +145 -0
  314. griptape_nodes_engine-0.84.0/src/griptape_nodes/traits/minmax.py +43 -0
  315. griptape_nodes_engine-0.84.0/src/griptape_nodes/traits/multi_options.py +216 -0
  316. griptape_nodes_engine-0.84.0/src/griptape_nodes/traits/numbers_selector.py +77 -0
  317. griptape_nodes_engine-0.84.0/src/griptape_nodes/traits/options.py +133 -0
  318. griptape_nodes_engine-0.84.0/src/griptape_nodes/traits/slider.py +37 -0
  319. griptape_nodes_engine-0.84.0/src/griptape_nodes/traits/trait_registry.py +35 -0
  320. griptape_nodes_engine-0.84.0/src/griptape_nodes/traits/traits.json +8 -0
  321. griptape_nodes_engine-0.84.0/src/griptape_nodes/traits/widget.py +30 -0
  322. griptape_nodes_engine-0.84.0/src/griptape_nodes/utils/__init__.py +13 -0
  323. griptape_nodes_engine-0.84.0/src/griptape_nodes/utils/artifact_normalization.py +245 -0
  324. griptape_nodes_engine-0.84.0/src/griptape_nodes/utils/ast_utils.py +29 -0
  325. griptape_nodes_engine-0.84.0/src/griptape_nodes/utils/async_utils.py +156 -0
  326. griptape_nodes_engine-0.84.0/src/griptape_nodes/utils/dict_utils.py +265 -0
  327. griptape_nodes_engine-0.84.0/src/griptape_nodes/utils/file_utils.py +159 -0
  328. griptape_nodes_engine-0.84.0/src/griptape_nodes/utils/git_utils.py +1264 -0
  329. griptape_nodes_engine-0.84.0/src/griptape_nodes/utils/http_file_patch.py +613 -0
  330. griptape_nodes_engine-0.84.0/src/griptape_nodes/utils/http_utils.py +90 -0
  331. griptape_nodes_engine-0.84.0/src/griptape_nodes/utils/huggingface_utils.py +136 -0
  332. griptape_nodes_engine-0.84.0/src/griptape_nodes/utils/image_preview.py +160 -0
  333. griptape_nodes_engine-0.84.0/src/griptape_nodes/utils/library_utils.py +124 -0
  334. griptape_nodes_engine-0.84.0/src/griptape_nodes/utils/metaclasses.py +10 -0
  335. griptape_nodes_engine-0.84.0/src/griptape_nodes/utils/string_utils.py +35 -0
  336. griptape_nodes_engine-0.84.0/src/griptape_nodes/utils/url_utils.py +113 -0
  337. griptape_nodes_engine-0.84.0/src/griptape_nodes/utils/uv_utils.py +18 -0
  338. griptape_nodes_engine-0.84.0/src/griptape_nodes/utils/version_utils.py +88 -0
  339. griptape_nodes_engine-0.84.0/src/griptape_nodes/version_compatibility/__init__.py +1 -0
  340. griptape_nodes_engine-0.84.0/src/griptape_nodes/version_compatibility/versions/__init__.py +1 -0
  341. griptape_nodes_engine-0.84.0/src/griptape_nodes/version_compatibility/versions/general/__init__.py +1 -0
  342. griptape_nodes_engine-0.84.0/src/griptape_nodes/version_compatibility/versions/general/incompatible_engine_version_check.py +62 -0
  343. griptape_nodes_engine-0.84.0/src/griptape_nodes/version_compatibility/versions/v0_39_0/__init__.py +1 -0
  344. griptape_nodes_engine-0.84.0/src/griptape_nodes/version_compatibility/versions/v0_39_0/modified_parameters_set_removal.py +86 -0
  345. griptape_nodes_engine-0.84.0/src/griptape_nodes/version_compatibility/versions/v0_63_8/__init__.py +1 -0
  346. griptape_nodes_engine-0.84.0/src/griptape_nodes/version_compatibility/versions/v0_63_8/deprecated_nodegroup_parameters.py +105 -0
  347. griptape_nodes_engine-0.84.0/src/griptape_nodes/version_compatibility/versions/v0_65_4/__init__.py +5 -0
  348. griptape_nodes_engine-0.84.0/src/griptape_nodes/version_compatibility/versions/v0_65_4/run_in_parallel_to_run_in_order.py +85 -0
  349. griptape_nodes_engine-0.84.0/src/griptape_nodes/version_compatibility/versions/v0_65_5/__init__.py +5 -0
  350. griptape_nodes_engine-0.84.0/src/griptape_nodes/version_compatibility/versions/v0_65_5/flux_2_removed_parameters.py +90 -0
  351. griptape_nodes_engine-0.84.0/src/griptape_nodes/version_compatibility/versions/v0_7_0/__init__.py +1 -0
  352. griptape_nodes_engine-0.84.0/src/griptape_nodes/version_compatibility/versions/v0_7_0/local_executor_argument_addition.py +52 -0
@@ -0,0 +1,112 @@
1
+ Metadata-Version: 2.3
2
+ Name: griptape-nodes-engine
3
+ Version: 0.84.0
4
+ Summary: Add your description here
5
+ Requires-Dist: griptape>=1.10.0
6
+ Requires-Dist: pydantic>=2.10.6
7
+ Requires-Dist: python-dotenv>=1.0.1
8
+ Requires-Dist: xdg-base-dirs>=6.0.2
9
+ Requires-Dist: httpx>=0.28.0,<1.0.0
10
+ Requires-Dist: websockets>=15.0.1,<17.0.0
11
+ Requires-Dist: tomlkit>=0.13.2
12
+ Requires-Dist: uv>=0.6.16
13
+ Requires-Dist: fastapi>=0.115.12
14
+ Requires-Dist: uvicorn>=0.34.2
15
+ Requires-Dist: packaging>=25.0
16
+ Requires-Dist: python-multipart>=0.0.20
17
+ Requires-Dist: json-repair>=0.46.1
18
+ Requires-Dist: mcp[ws]>=1.10.1
19
+ Requires-Dist: binaryornot>=0.4.4
20
+ Requires-Dist: pillow>=11.3.0
21
+ Requires-Dist: static-ffmpeg>=3.0
22
+ Requires-Dist: watchfiles>=1.1.0
23
+ Requires-Dist: typer>=0.15.0
24
+ Requires-Dist: huggingface-hub>=1.9.0
25
+ Requires-Dist: rich>=14.1.0
26
+ Requires-Dist: semver>=3.0.4
27
+ Requires-Dist: anyio>=4.0
28
+ Requires-Dist: ruamel-yaml>=0.18.15
29
+ Requires-Dist: asyncio-thread-runner>=1.0
30
+ Requires-Dist: portalocker>=2.10.0
31
+ Requires-Dist: pygit2>=1.19.0
32
+ Requires-Dist: send2trash>=2.1.0
33
+ Requires-Dist: tenacity>=9.0.0
34
+ Requires-Dist: truststore>=0.10.1
35
+ Requires-Dist: cattrs>=26.1.0
36
+ Requires-Dist: austin-dist>=3.7.0 ; extra == 'profiling'
37
+ Requires-Python: >=3.12.0, <3.13
38
+ Provides-Extra: profiling
39
+ Description-Content-Type: text/markdown
40
+
41
+ <picture>
42
+ <source media="(prefers-color-scheme: dark)" srcset="docs/assets/img/griptape_nodes_from_foundry_white.svg">
43
+ <img alt="Griptape Nodes" src="docs/assets/img/griptape_nodes_from_foundry_black.svg" width="600">
44
+ </picture>
45
+
46
+ Griptape Nodes is a powerful, visual, node-based workflow builder designed for professional artists and creators. Build and execute complex AI workflows through the cloud-based [Griptape Nodes IDE](https://app.nodes.griptape.ai/) - an intuitive drag-and-drop interface.
47
+
48
+ This repository contains the Griptape Nodes Engine - the local component that runs securely on your machine, providing a performant foundation for workflow execution.
49
+
50
+ [![Griptape Nodes Trailer Preview](docs/assets/img/video-thumbnail.jpg)](https://vimeo.com/1064451891)
51
+ *(Clicking the image opens the video on Vimeo)*
52
+
53
+ **✨ Key Features:**
54
+
55
+ - **🎯 Visual Workflow Editor:** Design and connect nodes representing different AI tasks, tools, and logic through the cloud-based IDE
56
+ - **🏠 Local Engine:** Run workflows securely on your own machine or infrastructure
57
+ - **🐍 Portable Python Workflows:** Workflows are saved as self-executable Python files for portability, debugability, and learning
58
+ - **🌐 Multi-Device Access:** Client/server architecture lets you access your workflows from any device
59
+ - **🧩 Extensible:** Build your own custom nodes and libraries to extend functionality
60
+ - **⚡ Scriptable Interface:** Interact with and control flows programmatically
61
+
62
+ **🔗 Learn More:**
63
+
64
+ - **📚 Full Documentation:** [docs.griptapenodes.com](https://docs.griptapenodes.com)
65
+ - **⚙️ Installation:** [docs.griptapenodes.com/en/stable/installation/](https://docs.griptapenodes.com/en/latest/installation/)
66
+ - **🔧 Engine Configuration:** [docs.griptapenodes.com/en/stable/configuration/](https://docs.griptapenodes.com/en/latest/configuration/)
67
+ - **📋 Migration Guide:** [MIGRATION.md](MIGRATION.md) - Guide for migrating from deprecated nodes
68
+
69
+ **🧩 Extending Griptape Nodes:**
70
+
71
+ Want to create custom nodes for your specific workflow needs? Griptape Nodes is designed to be extensible through custom libraries:
72
+
73
+ - **📦 Custom Library Template:** Get started with the [Griptape Nodes Library Template](https://github.com/griptape-ai/griptape-nodes-library-template)
74
+ - **🛠️ Build Custom Nodes:** Create specialized nodes tailored to your artistic and creative workflows
75
+
76
+ ______________________________________________________________________
77
+
78
+ ## 🚀 Quick Installation
79
+
80
+ ### Option 1: Griptape Nodes Desktop (Recommended)
81
+
82
+ Download [Griptape Nodes Desktop](https://www.griptapenodes.com/griptape-nodes-desktop) — a bundled app that includes both the engine and the editor. No additional setup required.
83
+
84
+ ### Option 2: Manual Engine Install
85
+
86
+ For users who prefer to install the engine directly:
87
+
88
+ 1. **🔐 Login:** Visit [Griptape Nodes](https://app.nodes.griptape.ai/) and log in or sign up using your Griptape Cloud credentials.
89
+
90
+ 1. **💾 Install Engine:** Install the engine using [uv](https://docs.astral.sh/uv/):
91
+
92
+ ```bash
93
+ uv tool install griptape-nodes
94
+ ```
95
+
96
+ 1. **⚙️ Initial Configuration (Automatic on First Run):**
97
+
98
+ - The first time you run the engine command (`griptape-nodes` or `gtn`), it will guide you through the initial setup:
99
+ - **📁 Workspace Directory:** You'll be prompted to choose a directory where Griptape Nodes will store configurations, project files, secrets (`.env`), and generated assets. You can accept the default (`<current_directory>/GriptapeNodes`) or specify a custom path.
100
+ - **🔑 Griptape Cloud API Key:** Return to the [Griptape Nodes setup page](https://app.nodes.griptape.ai/) in your browser, click "Generate API Key", copy the key, and paste it when prompted in the terminal.
101
+
102
+ 1. **🚀 Start the Engine:** After configuration, start the engine by running:
103
+
104
+ ```bash
105
+ griptape-nodes
106
+ ```
107
+
108
+ *(or the shorter alias `gtn`)*
109
+
110
+ 1. **🔗 Connect Workflow Editor:** Refresh the Griptape Nodes Workflow Editor page in your browser. It should now connect to your running engine.
111
+
112
+ You're now ready to start building flows! 🎉 For more detailed setup options and troubleshooting, see the full [Documentation](https://docs.griptapenodes.com/).
@@ -0,0 +1,72 @@
1
+ <picture>
2
+ <source media="(prefers-color-scheme: dark)" srcset="docs/assets/img/griptape_nodes_from_foundry_white.svg">
3
+ <img alt="Griptape Nodes" src="docs/assets/img/griptape_nodes_from_foundry_black.svg" width="600">
4
+ </picture>
5
+
6
+ Griptape Nodes is a powerful, visual, node-based workflow builder designed for professional artists and creators. Build and execute complex AI workflows through the cloud-based [Griptape Nodes IDE](https://app.nodes.griptape.ai/) - an intuitive drag-and-drop interface.
7
+
8
+ This repository contains the Griptape Nodes Engine - the local component that runs securely on your machine, providing a performant foundation for workflow execution.
9
+
10
+ [![Griptape Nodes Trailer Preview](docs/assets/img/video-thumbnail.jpg)](https://vimeo.com/1064451891)
11
+ *(Clicking the image opens the video on Vimeo)*
12
+
13
+ **✨ Key Features:**
14
+
15
+ - **🎯 Visual Workflow Editor:** Design and connect nodes representing different AI tasks, tools, and logic through the cloud-based IDE
16
+ - **🏠 Local Engine:** Run workflows securely on your own machine or infrastructure
17
+ - **🐍 Portable Python Workflows:** Workflows are saved as self-executable Python files for portability, debugability, and learning
18
+ - **🌐 Multi-Device Access:** Client/server architecture lets you access your workflows from any device
19
+ - **🧩 Extensible:** Build your own custom nodes and libraries to extend functionality
20
+ - **⚡ Scriptable Interface:** Interact with and control flows programmatically
21
+
22
+ **🔗 Learn More:**
23
+
24
+ - **📚 Full Documentation:** [docs.griptapenodes.com](https://docs.griptapenodes.com)
25
+ - **⚙️ Installation:** [docs.griptapenodes.com/en/stable/installation/](https://docs.griptapenodes.com/en/latest/installation/)
26
+ - **🔧 Engine Configuration:** [docs.griptapenodes.com/en/stable/configuration/](https://docs.griptapenodes.com/en/latest/configuration/)
27
+ - **📋 Migration Guide:** [MIGRATION.md](MIGRATION.md) - Guide for migrating from deprecated nodes
28
+
29
+ **🧩 Extending Griptape Nodes:**
30
+
31
+ Want to create custom nodes for your specific workflow needs? Griptape Nodes is designed to be extensible through custom libraries:
32
+
33
+ - **📦 Custom Library Template:** Get started with the [Griptape Nodes Library Template](https://github.com/griptape-ai/griptape-nodes-library-template)
34
+ - **🛠️ Build Custom Nodes:** Create specialized nodes tailored to your artistic and creative workflows
35
+
36
+ ______________________________________________________________________
37
+
38
+ ## 🚀 Quick Installation
39
+
40
+ ### Option 1: Griptape Nodes Desktop (Recommended)
41
+
42
+ Download [Griptape Nodes Desktop](https://www.griptapenodes.com/griptape-nodes-desktop) — a bundled app that includes both the engine and the editor. No additional setup required.
43
+
44
+ ### Option 2: Manual Engine Install
45
+
46
+ For users who prefer to install the engine directly:
47
+
48
+ 1. **🔐 Login:** Visit [Griptape Nodes](https://app.nodes.griptape.ai/) and log in or sign up using your Griptape Cloud credentials.
49
+
50
+ 1. **💾 Install Engine:** Install the engine using [uv](https://docs.astral.sh/uv/):
51
+
52
+ ```bash
53
+ uv tool install griptape-nodes
54
+ ```
55
+
56
+ 1. **⚙️ Initial Configuration (Automatic on First Run):**
57
+
58
+ - The first time you run the engine command (`griptape-nodes` or `gtn`), it will guide you through the initial setup:
59
+ - **📁 Workspace Directory:** You'll be prompted to choose a directory where Griptape Nodes will store configurations, project files, secrets (`.env`), and generated assets. You can accept the default (`<current_directory>/GriptapeNodes`) or specify a custom path.
60
+ - **🔑 Griptape Cloud API Key:** Return to the [Griptape Nodes setup page](https://app.nodes.griptape.ai/) in your browser, click "Generate API Key", copy the key, and paste it when prompted in the terminal.
61
+
62
+ 1. **🚀 Start the Engine:** After configuration, start the engine by running:
63
+
64
+ ```bash
65
+ griptape-nodes
66
+ ```
67
+
68
+ *(or the shorter alias `gtn`)*
69
+
70
+ 1. **🔗 Connect Workflow Editor:** Refresh the Griptape Nodes Workflow Editor page in your browser. It should now connect to your running engine.
71
+
72
+ You're now ready to start building flows! 🎉 For more detailed setup options and troubleshooting, see the full [Documentation](https://docs.griptapenodes.com/).
@@ -0,0 +1,169 @@
1
+ [project]
2
+ name = "griptape-nodes-engine"
3
+ version = "0.84.0"
4
+ description = "Add your description here"
5
+ readme = "README.md"
6
+ requires-python = ">=3.12.0, <3.13"
7
+ dependencies = [
8
+ "griptape>=1.10.0",
9
+ "pydantic>=2.10.6",
10
+ "python-dotenv>=1.0.1",
11
+ "xdg-base-dirs>=6.0.2",
12
+ "httpx>=0.28.0,<1.0.0",
13
+ "websockets>=15.0.1,<17.0.0",
14
+ "tomlkit>=0.13.2",
15
+ # TODO: https://github.com/griptape-ai/griptape-nodes/issues/833
16
+ "uv>=0.6.16",
17
+ "fastapi>=0.115.12",
18
+ "uvicorn>=0.34.2",
19
+ "packaging>=25.0",
20
+ "python-multipart>=0.0.20",
21
+ "json-repair>=0.46.1",
22
+ "mcp[ws]>=1.10.1",
23
+ "binaryornot>=0.4.4",
24
+ "pillow>=11.3.0",
25
+ "static-ffmpeg>=3.0",
26
+ "watchfiles>=1.1.0",
27
+ "typer>=0.15.0",
28
+ "huggingface-hub>=1.9.0",
29
+ "rich>=14.1.0",
30
+ "semver>=3.0.4",
31
+ "anyio>=4.0",
32
+ "ruamel.yaml>=0.18.15",
33
+ "asyncio-thread-runner>=1.0",
34
+ "portalocker>=2.10.0",
35
+ "pygit2>=1.19.0",
36
+ "send2trash>=2.1.0",
37
+ "tenacity>=9.0.0",
38
+ "truststore>=0.10.1",
39
+ "cattrs>=26.1.0",
40
+ ]
41
+
42
+ [project.optional-dependencies]
43
+ profiling = ["austin-dist>=3.7.0"]
44
+
45
+ [dependency-groups]
46
+ dev = [
47
+ "griptape-cloud-client",
48
+ "mdformat>=0.7.22",
49
+ "mdformat-gfm>=0.4.1",
50
+ "mdformat-frontmatter>=2.0.8",
51
+ "mdformat-footnote>=0.1.1",
52
+ "mdformat-mkdocs>=4.1.2",
53
+ "pyright>=1.1.396",
54
+ "ruff>=0.11.0",
55
+ "typos>=1.30.2",
56
+ ]
57
+ docs = [
58
+ "mkdocs-material>=9.6.9",
59
+ "mkdocs>=1.5.2",
60
+ "mkdocstrings[python]>=0.29.1",
61
+ "mkdocs-mermaid2-plugin>=1.2.2",
62
+ "pymdown-extensions>=10.17",
63
+ ]
64
+ test = [
65
+ "pytest>=8.3.5",
66
+ "pytest-asyncio>=1.1.0",
67
+ "pytest-mock>=3.14.0",
68
+ "pytest-xdist>=3.6.1",
69
+ "pytest-cov>=6.0.0",
70
+ "coverage>=7.0.0",
71
+ ]
72
+
73
+ [project.scripts]
74
+ # TODO: remove these entries when the CLI moves to the griptape-nodes-app repo. https://github.com/griptape-ai/griptape-nodes-app/issues/7
75
+ griptape-nodes = "griptape_nodes:main"
76
+ gtn = "griptape_nodes:main"
77
+
78
+ [build-system]
79
+ requires = ["uv_build>=0.7.2,<0.12"]
80
+ build-backend = "uv_build"
81
+
82
+ [tool.uv.build-backend]
83
+ module-name = "griptape_nodes"
84
+
85
+ [tool.uv.sources]
86
+ griptape-cloud-client = { git = "https://github.com/griptape-ai/griptape-cloud-python-client", rev = "main" }
87
+
88
+ [tool.pytest.ini_options]
89
+ asyncio_mode = "strict"
90
+ pythonpath = ["libraries/griptape_nodes_library"]
91
+
92
+ [tool.ruff]
93
+ line-length = 120
94
+ extend-exclude = ["libraries/**/templates/*.py"]
95
+
96
+
97
+ [tool.ruff.lint]
98
+ select = ["ALL"]
99
+ ignore = [
100
+ "TD002", # Intentional
101
+ "FIX002", # Intentional
102
+ "D101", # Intentional
103
+ "D102", # Intentional
104
+ "D107", # Intentional
105
+ "ANN002", # Intentional
106
+ "ANN003", # Intentional
107
+ "ANN401", # Intentional
108
+ "COM812", # Intentional
109
+ "E501", # TODO: https://github.com/griptape-ai/griptape-nodes/issues/834
110
+ "D100", # TODO: https://github.com/griptape-ai/griptape-nodes/issues/835
111
+ "BLE001", # TODO: https://github.com/griptape-ai/griptape-nodes/issues/839
112
+ "SLF001", # TODO :https://github.com/griptape-ai/griptape-nodes/issues/838
113
+ "SIM108", # Intentional
114
+ "SIM110", # Intentional
115
+ "D105", # Intentional
116
+ "N802", # TODO: https://github.com/griptape-ai/griptape-nodes/issues/840
117
+ "TRY400", # Intentional
118
+ "FBT003", # Intentional
119
+ "RET504", # Intentional
120
+ "PLC0415", # Intentional
121
+ ]
122
+
123
+ [tool.ruff.lint.flake8-tidy-imports.banned-api]
124
+ "nodes.griptape_nodes_library".msg = "Import from griptape_nodes_library instead of nodes.griptape_nodes_library"
125
+ "libraries.griptape_nodes_library".msg = "Import from griptape_nodes_library instead of libraries.griptape_nodes_library"
126
+ "libraries.griptape_nodes_advanced_media_library".msg = "Import from griptape_nodes_advanced_media_library instead of libraries.griptape_nodes_advanced_media_library"
127
+ "libraries.griptape_cloud".msg = "Import from griptape_cloud instead of libraries.griptape_cloud"
128
+
129
+ [tool.ruff.lint.per-file-ignores]
130
+ "tests/*" = ["S101", "D104"]
131
+ "libraries/**/tests/**" = ["S101", "D104", "INP001"]
132
+ "src/griptape_nodes/retained_mode/events/*" = ["TC001"]
133
+
134
+ [tool.ruff.lint.flake8-type-checking]
135
+ runtime-evaluated-base-classes = ["pydantic.BaseModel"]
136
+
137
+ [tool.ruff.lint.flake8-annotations]
138
+ mypy-init-return = true
139
+
140
+ [tool.ruff.lint.pydocstyle]
141
+ convention = "google"
142
+
143
+ [tool.typos]
144
+ files.extend-exclude = ["libraries/**/templates/*"]
145
+ default.extend-ignore-re = [
146
+ # Ignore any line that ends with this comment:
147
+ "(?Rm)^.*(#|//)\\s*spellchecker:disable-line$",
148
+ # Or: ignore the *next* line after this comment:
149
+ "(?m)(#|//)\\s*spellchecker:ignore-next-line\\n.*",
150
+ ]
151
+
152
+ [tool.typos.default.extend-words]
153
+ # HALD CLUT is a Color Lookup Table technique named after its inventor
154
+ HALD = "HALD"
155
+
156
+ [tool.pyright]
157
+ venvPath = "."
158
+ venv = ".venv"
159
+ include = ["."]
160
+ exclude = [
161
+ "libraries/**/templates/*",
162
+ ".venv",
163
+ "GriptapeNodes",
164
+ "**/node_modules",
165
+ "**/__pycache__",
166
+ "**/.*",
167
+ ]
168
+ pythonVersion = "3.12"
169
+ reportIncompatibleMethodOverride = false
@@ -0,0 +1,24 @@
1
+ """Griptape Nodes package."""
2
+
3
+ import sys
4
+ from pathlib import Path
5
+
6
+ from rich.console import Console
7
+
8
+
9
+ def main() -> None:
10
+ """Main entry point for the Griptape Nodes CLI."""
11
+ # Hack to make paths "just work". # noqa: FIX004
12
+ # Without this, packages like `nodes` don't properly import.
13
+ # Long term solution could be to make `nodes` a proper src-layout package
14
+ # but current engine relies on importing files rather than packages.
15
+ sys.path.append(str(Path.cwd()))
16
+
17
+ console = Console()
18
+ with console.status("[bold green]Loading Griptape Nodes...", spinner="dots"):
19
+ from griptape_nodes.cli.main import app
20
+
21
+ app()
22
+
23
+
24
+ __all__ = ["main"]
@@ -0,0 +1,6 @@
1
+ """Main entry point for the Griptape Nodes CLI when run as a module."""
2
+
3
+ from griptape_nodes import main
4
+
5
+ if __name__ == "__main__":
6
+ main()
@@ -0,0 +1,9 @@
1
+ """API client for Nodes API communication."""
2
+
3
+ from griptape_nodes.api_client.client import Client
4
+ from griptape_nodes.api_client.request_client import RequestClient
5
+
6
+ __all__ = [
7
+ "Client",
8
+ "RequestClient",
9
+ ]