griptape-nodes 0.71.0__py3-none-any.whl → 0.72.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. griptape_nodes/app/app.py +4 -0
  2. griptape_nodes/bootstrap/workflow_executors/local_workflow_executor.py +10 -1
  3. griptape_nodes/bootstrap/workflow_executors/utils/subprocess_script.py +4 -0
  4. griptape_nodes/bootstrap/workflow_publishers/utils/subprocess_script.py +4 -0
  5. griptape_nodes/common/node_executor.py +1 -1
  6. griptape_nodes/drivers/image_metadata/__init__.py +21 -0
  7. griptape_nodes/drivers/image_metadata/base_image_metadata_driver.py +63 -0
  8. griptape_nodes/drivers/image_metadata/exif_metadata_driver.py +218 -0
  9. griptape_nodes/drivers/image_metadata/image_metadata_driver_registry.py +55 -0
  10. griptape_nodes/drivers/image_metadata/png_metadata_driver.py +71 -0
  11. griptape_nodes/drivers/storage/base_storage_driver.py +32 -0
  12. griptape_nodes/drivers/storage/griptape_cloud_storage_driver.py +384 -10
  13. griptape_nodes/drivers/storage/local_storage_driver.py +65 -4
  14. griptape_nodes/drivers/thread_storage/local_thread_storage_driver.py +1 -0
  15. griptape_nodes/exe_types/node_groups/base_node_group.py +3 -0
  16. griptape_nodes/exe_types/node_types.py +13 -0
  17. griptape_nodes/exe_types/param_components/log_parameter.py +3 -2
  18. griptape_nodes/exe_types/param_types/parameter_float.py +4 -4
  19. griptape_nodes/exe_types/param_types/parameter_int.py +4 -4
  20. griptape_nodes/exe_types/param_types/parameter_number.py +34 -30
  21. griptape_nodes/node_library/workflow_registry.py +5 -8
  22. griptape_nodes/retained_mode/events/app_events.py +1 -0
  23. griptape_nodes/retained_mode/events/base_events.py +42 -26
  24. griptape_nodes/retained_mode/events/flow_events.py +67 -0
  25. griptape_nodes/retained_mode/events/library_events.py +1 -1
  26. griptape_nodes/retained_mode/events/node_events.py +1 -0
  27. griptape_nodes/retained_mode/events/os_events.py +22 -0
  28. griptape_nodes/retained_mode/events/static_file_events.py +28 -4
  29. griptape_nodes/retained_mode/managers/flow_manager.py +134 -0
  30. griptape_nodes/retained_mode/managers/image_metadata_injector.py +339 -0
  31. griptape_nodes/retained_mode/managers/library_manager.py +71 -41
  32. griptape_nodes/retained_mode/managers/model_manager.py +1 -0
  33. griptape_nodes/retained_mode/managers/node_manager.py +8 -5
  34. griptape_nodes/retained_mode/managers/os_manager.py +269 -32
  35. griptape_nodes/retained_mode/managers/project_manager.py +3 -7
  36. griptape_nodes/retained_mode/managers/session_manager.py +1 -0
  37. griptape_nodes/retained_mode/managers/settings.py +5 -0
  38. griptape_nodes/retained_mode/managers/static_files_manager.py +83 -17
  39. griptape_nodes/retained_mode/managers/workflow_manager.py +71 -41
  40. griptape_nodes/servers/static.py +34 -0
  41. griptape_nodes/traits/clamp.py +52 -9
  42. griptape_nodes/utils/__init__.py +9 -1
  43. griptape_nodes/utils/file_utils.py +13 -13
  44. griptape_nodes/utils/http_file_patch.py +613 -0
  45. griptape_nodes/utils/path_utils.py +58 -0
  46. griptape_nodes/utils/url_utils.py +106 -0
  47. {griptape_nodes-0.71.0.dist-info → griptape_nodes-0.72.1.dist-info}/METADATA +2 -1
  48. {griptape_nodes-0.71.0.dist-info → griptape_nodes-0.72.1.dist-info}/RECORD +50 -41
  49. {griptape_nodes-0.71.0.dist-info → griptape_nodes-0.72.1.dist-info}/WHEEL +1 -1
  50. {griptape_nodes-0.71.0.dist-info → griptape_nodes-0.72.1.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,58 @@
1
+ """Path utility functions."""
2
+
3
+ from pathlib import Path
4
+
5
+
6
+ def resolve_workspace_path(path: Path, base_directory: Path) -> Path:
7
+ """Resolve a path, treating relative paths as relative to a base directory.
8
+
9
+ If the path is relative, it's resolved relative to the base directory.
10
+ If the path is absolute, it's resolved as-is.
11
+
12
+ This utility works with any base directory - workspace_directory, project_base_dir,
13
+ or any other base path.
14
+
15
+ Args:
16
+ path: The path to resolve (can be relative or absolute)
17
+ base_directory: The base directory to use for relative paths
18
+
19
+ Returns:
20
+ The resolved absolute path
21
+
22
+ Example:
23
+ >>> base = Path("/workspace")
24
+ >>> resolve_workspace_path(Path("file.txt"), base)
25
+ Path("/workspace/file.txt")
26
+ >>> resolve_workspace_path(Path("/tmp/file.txt"), base)
27
+ Path("/tmp/file.txt")
28
+ """
29
+ if not path.is_absolute():
30
+ return (base_directory / path).resolve()
31
+ return path.resolve()
32
+
33
+
34
+ def get_workspace_relative_path(path: Path, base_directory: Path) -> Path:
35
+ """Convert a path to be relative to a base directory.
36
+
37
+ Takes an absolute or relative path and returns it as a path relative to
38
+ the base directory.
39
+
40
+ This utility works with any base directory - workspace_directory, project_base_dir,
41
+ or any other base path.
42
+
43
+ Args:
44
+ path: The path to convert (can be relative or absolute)
45
+ base_directory: The base directory to make the path relative to
46
+
47
+ Returns:
48
+ Path relative to base_directory
49
+
50
+ Example:
51
+ >>> base = Path("/workspace")
52
+ >>> get_workspace_relative_path(Path("/workspace/subdir/file.txt"), base)
53
+ Path("subdir/file.txt")
54
+ >>> get_workspace_relative_path(Path("file.txt"), base)
55
+ Path("file.txt")
56
+ """
57
+ absolute_path = resolve_workspace_path(path, base_directory)
58
+ return absolute_path.relative_to(base_directory.resolve())
@@ -0,0 +1,106 @@
1
+ import logging
2
+ import mimetypes
3
+ from pathlib import Path
4
+ from urllib.parse import urlparse
5
+ from urllib.request import url2pathname
6
+
7
+ logger = logging.getLogger("griptape_nodes")
8
+
9
+ # Default timeout for HTTP requests
10
+ DEFAULT_HTTP_TIMEOUT = 30.0
11
+
12
+
13
+ def get_content_type_from_extension(file_path: str | Path) -> str | None:
14
+ """Get content type from file extension.
15
+
16
+ Args:
17
+ file_path: Path or URL with file extension
18
+
19
+ Returns:
20
+ MIME type string or None if unknown
21
+ """
22
+ if isinstance(file_path, str):
23
+ file_path = Path(file_path)
24
+
25
+ # Use mimetypes to guess from extension
26
+ mime_type, _ = mimetypes.guess_type(str(file_path))
27
+ return mime_type
28
+
29
+
30
+ def uri_to_path(uri: str) -> Path:
31
+ """Convert a file URI to a file system path."""
32
+ # TODO: replace with Path.from_uri() when we upgrade to python >=3.13
33
+ # https://docs.python.org/3/library/pathlib.html#pathlib.Path.from_uri
34
+ parsed = urlparse(uri)
35
+ return Path(url2pathname(parsed.path))
36
+
37
+
38
+ def is_url_or_path(value: str) -> bool:
39
+ """Check if a value is a URL or file path.
40
+
41
+ This utility determines if a string represents a fetchable resource
42
+ (URL or file path) without validating reachability or existence.
43
+
44
+ Returns True for:
45
+ - HTTP/HTTPS URLs: http://example.com/file.txt
46
+ - file:// URLs: file:///path/to/file
47
+ - File system paths (absolute or relative)
48
+
49
+ Returns False for:
50
+ - data: URIs (inline data, not fetchable)
51
+ - Other URI schemes (ftp://, mailto:, etc.)
52
+ - Empty strings or whitespace
53
+ - Plain text without path indicators
54
+
55
+ Note:
56
+ This function does NOT check if URLs are reachable or if
57
+ file paths exist. It only validates the format.
58
+
59
+ Args:
60
+ value: String to check
61
+
62
+ Returns:
63
+ True if value looks like a URL or path, False otherwise
64
+
65
+ Examples:
66
+ >>> is_url_or_path("https://example.com/image.png")
67
+ True
68
+ >>> is_url_or_path("file:///path/to/file.txt")
69
+ True
70
+ >>> is_url_or_path("/absolute/path/file.txt")
71
+ True
72
+ >>> is_url_or_path("./relative/path.txt")
73
+ True
74
+ >>> is_url_or_path("data:image/png;base64,...")
75
+ False
76
+ >>> is_url_or_path("ftp://ftp.example.com")
77
+ False
78
+ >>> is_url_or_path("")
79
+ False
80
+ """
81
+ # Guard: empty or whitespace-only strings
82
+ if not value or not value.strip():
83
+ return False
84
+
85
+ # Fast path: Check for known URL schemes
86
+ if value.startswith(("http://", "https://", "file://")):
87
+ return True
88
+
89
+ # Exclude other URI schemes (data:, ftp:, mailto:, javascript:, etc.)
90
+ # Check for :// (full URI schemes) and single : schemes
91
+ if "://" in value or (
92
+ ":" in value
93
+ and value[1:3] != ":\\" # Allow Windows drive letters (C:\)
94
+ and value[0] != "/" # Allow Unix paths with : in filename
95
+ ):
96
+ return False
97
+
98
+ # Check if it's a valid file path by attempting to create a Path object
99
+ # Path() handles cross-platform paths (Unix, Windows, UNC)
100
+ try:
101
+ Path(value)
102
+ except (ValueError, OSError):
103
+ # Invalid path (e.g., contains illegal characters on Windows)
104
+ return False
105
+ else:
106
+ return True
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: griptape-nodes
3
- Version: 0.71.0
3
+ Version: 0.72.1
4
4
  Summary: Add your description here
5
5
  Requires-Dist: griptape>=1.9.0
6
6
  Requires-Dist: pydantic>=2.10.6
@@ -29,6 +29,7 @@ Requires-Dist: ruamel-yaml>=0.18.15
29
29
  Requires-Dist: asyncio-thread-runner>=1.0
30
30
  Requires-Dist: portalocker>=2.10.0
31
31
  Requires-Dist: pygit2>=1.19.0
32
+ Requires-Dist: send2trash>=2.1.0
32
33
  Requires-Dist: austin-dist>=3.7.0 ; extra == 'profiling'
33
34
  Requires-Python: >=3.12.0, <3.13
34
35
  Provides-Extra: profiling
@@ -5,7 +5,7 @@ griptape_nodes/api_client/client.py,sha256=df6fus5zNFOSFQJft2nmoo-hsFPoNfCihZRwW
5
5
  griptape_nodes/api_client/request_client.py,sha256=Z5lJVoG2a9hudTAQTnniaCHbBko0X1FyoakiQMimq7g,9713
6
6
  griptape_nodes/app/.python-version,sha256=e1X45ntWI8S-8_ppEojalDfXnTq6FW3kjUgdsyrH0W0,5
7
7
  griptape_nodes/app/__init__.py,sha256=DB-DTsgcNnbmEClXEouwzGhrmo3gHBCWXB9BkPGpdQI,90
8
- griptape_nodes/app/app.py,sha256=bbaRe1khQNRZ1fziDdeokkR-M3K7tvKDpCl4eVm-R4g,18014
8
+ griptape_nodes/app/app.py,sha256=nhNMrebziKOHDnUxKNoTHRQxqKJ-0liveZO-9k_TdD4,18149
9
9
  griptape_nodes/app/watch.py,sha256=hKVP_SuV9C17bH1h9o4uIVTKH-IL_-0iyHaNYmILTWU,1594
10
10
  griptape_nodes/bootstrap/__init__.py,sha256=ENv3SIzQ9TtlRrg1y4e4CnoBpJaFpFSkNpTFBV8X5Ls,25
11
11
  griptape_nodes/bootstrap/utils/__init__.py,sha256=tlNEApJLZazcBNhxkTdup4URwznnz4nZxjSaRfFrTBM,31
@@ -15,17 +15,17 @@ griptape_nodes/bootstrap/utils/subprocess_websocket_listener.py,sha256=6bBKO-DaB
15
15
  griptape_nodes/bootstrap/utils/subprocess_websocket_sender.py,sha256=DDtCr8UgkSD8h7zhduWEXuEpjusKcDyksoznaK99EAg,4678
16
16
  griptape_nodes/bootstrap/workflow_executors/__init__.py,sha256=pyjN81-eLtjyECFYLXOtMCixiiI9qBi5yald86iM7Ek,34
17
17
  griptape_nodes/bootstrap/workflow_executors/local_session_workflow_executor.py,sha256=yS3b3wrqZbxRuNRDFynFsMI7cThhaNa0UERGarG_1Xw,9923
18
- griptape_nodes/bootstrap/workflow_executors/local_workflow_executor.py,sha256=jp81z4QFSuQsXigKN0h2Ywo0Tr_whbxFG-TJ7MCrS2Q,10263
18
+ griptape_nodes/bootstrap/workflow_executors/local_workflow_executor.py,sha256=tYaAzOrydmEnsW8F0fTbEhD8ULrbCt4jqHUjYGbeehs,10648
19
19
  griptape_nodes/bootstrap/workflow_executors/subprocess_workflow_executor.py,sha256=zBtTN8_BF9oq6NoujpBTsY48zX5ttVSOg8nw-LgF4so,8467
20
20
  griptape_nodes/bootstrap/workflow_executors/utils/__init__.py,sha256=IEz4GHM4-w_u6VpLemrj-V38v8aZJinr5Wya9ucEad0,40
21
- griptape_nodes/bootstrap/workflow_executors/utils/subprocess_script.py,sha256=LCW6P3s3DTG_cUvG41l4GxRyj43c1p9yYlcJMACeW3s,1659
21
+ griptape_nodes/bootstrap/workflow_executors/utils/subprocess_script.py,sha256=thj-seoUIKKCJTlaXQ4x7U4WMcI7kmHQ3Ah3jkc7Jrw,1808
22
22
  griptape_nodes/bootstrap/workflow_executors/workflow_executor.py,sha256=c9FQXcvskas9N3G5OnTQO2SxJZJVoxbn7lug1GIRUBw,1074
23
23
  griptape_nodes/bootstrap/workflow_publishers/__init__.py,sha256=7ncdCGtEArgTBgSFDNCSBoIIAJpzlph1wTd2wipwvvM,35
24
24
  griptape_nodes/bootstrap/workflow_publishers/local_session_workflow_publisher.py,sha256=v7ZwNv7C1RZEavv5y1RvdNyepAfoSYS6PuHFib0iTec,8355
25
25
  griptape_nodes/bootstrap/workflow_publishers/local_workflow_publisher.py,sha256=ZLe0Bf-LVdeLgTkfzndawUaB-1P8AdZrM732ZMxcNaw,1721
26
26
  griptape_nodes/bootstrap/workflow_publishers/subprocess_workflow_publisher.py,sha256=V3RnyIbT63NmwyMIhpgshBd5X_aaBbeKK1tEIna1hcY,3953
27
27
  griptape_nodes/bootstrap/workflow_publishers/utils/__init__.py,sha256=Kj-IIxgg01ihyUmLWgZu4ZJ6M7V1fK4Efw9quCcu-ZM,41
28
- griptape_nodes/bootstrap/workflow_publishers/utils/subprocess_script.py,sha256=bj4hnuLPDV084_X2nMxqcjMGeWI-RA3ikm7QF7aZPfI,2763
28
+ griptape_nodes/bootstrap/workflow_publishers/utils/subprocess_script.py,sha256=C8YRVi7auUyNgkXq_baG2ZTGgNKCsykJcjwufWWpXFQ,2912
29
29
  griptape_nodes/cli/__init__.py,sha256=HuXHtxqDMtpYRokxiFYuNB7R5EgkOshPil273kTmgNg,33
30
30
  griptape_nodes/cli/commands/__init__.py,sha256=8EbS15rm9xrbcPocuQO2RmOwSD1BBwa8iDgPSdsvzuU,35
31
31
  griptape_nodes/cli/commands/config.py,sha256=zh5rs2vCY_x9dEUK2jtQQJGcjlJzhpJJ-EgHHvkrvdg,2302
@@ -46,7 +46,7 @@ griptape_nodes/common/macro_parser/matching.py,sha256=hnlPIihz8W1TGnfq4anbBGciwg
46
46
  griptape_nodes/common/macro_parser/parsing.py,sha256=_37L3lCQFeetamWIiHT0C7eW1E3Wyx5V8y8OWzIUw_g,7428
47
47
  griptape_nodes/common/macro_parser/resolution.py,sha256=30_bAIRMKWw-kM3E1ne-my16xT1Wd734JMmZSOZtNPA,6937
48
48
  griptape_nodes/common/macro_parser/segments.py,sha256=r-WbZas1nSc-PlEdAZ7DycNoD6IUf3R_nhGo3T9vIa8,1010
49
- griptape_nodes/common/node_executor.py,sha256=h8f-NabGopj_FHQTDFUTfxEESMNr5K1qUOmOs59y7OE,149641
49
+ griptape_nodes/common/node_executor.py,sha256=J8o761b6cngVKILo7OTeqRP8xhp8e8dop4glFs5VeP8,149648
50
50
  griptape_nodes/common/project_templates/__init__.py,sha256=5DP6Sa6ClsdDcjD30pkK0iTTysTgGdRKEkeY7ztHZyc,1541
51
51
  griptape_nodes/common/project_templates/default_project_template.py,sha256=PJFPfziH0EOGVxU5L0wZnc21bVVweW4S7wcnGPF45Co,3120
52
52
  griptape_nodes/common/project_templates/defaults/README.md,sha256=1ou6_OFi7-t86nj-7tulW1vxNMtsvkJmNxr6SseG8hA,1080
@@ -56,15 +56,20 @@ griptape_nodes/common/project_templates/project.py,sha256=X5llrgpBS47bsE6De_uW1G
56
56
  griptape_nodes/common/project_templates/situation.py,sha256=MlpBYrtPvkzIa_j_1NFeDb_V6wXdmixMH3U4eKDBMzw,5567
57
57
  griptape_nodes/common/project_templates/validation.py,sha256=LPm0gri05ZIbSfCqOM4duuaXPIeAk3YWMstM5w5O8ho,4399
58
58
  griptape_nodes/drivers/__init__.py,sha256=tHmiFQn6uJyFVhC2PrqHgRUH3d3yDsqMQpWqRasmaqA,42
59
+ griptape_nodes/drivers/image_metadata/__init__.py,sha256=_mHj6GmgJEEDcmsT0xeDQ60u6Io8aVlKEMd5osJk4Dw,873
60
+ griptape_nodes/drivers/image_metadata/base_image_metadata_driver.py,sha256=31ybzfTBoz_kKIA2skQxZN3KQshSz-bQX7CM1ygTd5w,2092
61
+ griptape_nodes/drivers/image_metadata/exif_metadata_driver.py,sha256=vYy6iwKLnlB72pORHHUMe3N6smpg1FHuIsEmQ_wOpvI,7902
62
+ griptape_nodes/drivers/image_metadata/image_metadata_driver_registry.py,sha256=tgEjaPh7MZQ7A83zHS1A36J07vHput6SSfnqWZqgDHo,1792
63
+ griptape_nodes/drivers/image_metadata/png_metadata_driver.py,sha256=MrhX0A90xarqhN6MlkTAqqHd_IPTT23_MCN-xtxr3yA,2540
59
64
  griptape_nodes/drivers/storage/__init__.py,sha256=_7p8vJt3YnnF6sD3Uxxw38c-gazuMIHSS-m3G6sa2Qk,208
60
- griptape_nodes/drivers/storage/base_storage_driver.py,sha256=rMOe9sdUR3QwTgbLd--nSqaXjIs5lm-fXAJvLaNhiRc,4466
61
- griptape_nodes/drivers/storage/griptape_cloud_storage_driver.py,sha256=GG1pAZT65EvrSAl38trGJqZMzTfh85Iad6Usvxa2F_4,7435
62
- griptape_nodes/drivers/storage/local_storage_driver.py,sha256=lTjtm22iQgm6Df_QK-qwZlDTdmcSXbrM7Yi7gr2q8WA,5601
65
+ griptape_nodes/drivers/storage/base_storage_driver.py,sha256=nu_wwwzXSD0NWNesOYhc5xsgmyWItegj5E_dbZUWzt0,5402
66
+ griptape_nodes/drivers/storage/griptape_cloud_storage_driver.py,sha256=_g-3b23MSypXdKSBrNUPXldjGXzFR5QPMYaz5SawNHE,21835
67
+ griptape_nodes/drivers/storage/local_storage_driver.py,sha256=dul7f3yjPRgXcF5UaJHYKpV3P-tF2w2lY0m-xZoKxGg,8042
63
68
  griptape_nodes/drivers/storage/storage_backend.py,sha256=3QBIwrgPc1krBIiPYLoK2swhIPDiKJnnucOEdyx7y3c,184
64
69
  griptape_nodes/drivers/thread_storage/__init__.py,sha256=JkCafJ978K63ad8PWtTIC7af70nxMjbp13ZJz2_55Bs,604
65
70
  griptape_nodes/drivers/thread_storage/base_thread_storage_driver.py,sha256=yckq3ckw5ZQgBz-wwUVdYzTht9r0dBB1DdJNgrt63ZM,2944
66
71
  griptape_nodes/drivers/thread_storage/griptape_cloud_thread_storage_driver.py,sha256=90n6bpHS1GK-9_P2YKFFtnwzoemtVX-Bh4cR3ycmGoQ,7701
67
- griptape_nodes/drivers/thread_storage/local_thread_storage_driver.py,sha256=I1p2XudP89sUMsRa0DBxGXzsOFEpURLbtF01C_Wpkts,5406
72
+ griptape_nodes/drivers/thread_storage/local_thread_storage_driver.py,sha256=vKiRPNhkihdYCCnZaVSl0Hu3zRAx4YvtKdwHeGqileE,5511
68
73
  griptape_nodes/drivers/thread_storage/thread_storage_backend.py,sha256=QXLvFOZrFx7aPBmwVGaN-IHxwRAf_sXN7YWKY6tcwgE,204
69
74
  griptape_nodes/exe_types/__init__.py,sha256=wGGwKGX9-TSarUFbXpDvdU_J7eXIbWTBl_NCLOZa-G8,32
70
75
  griptape_nodes/exe_types/base_iterative_nodes.py,sha256=hwEA0QWh4H2M6g8iuVahI_TUK8nm-A9r3UJS7EtEa28,43794
@@ -73,9 +78,9 @@ griptape_nodes/exe_types/core_types.py,sha256=XrMT0Rf0bPZBcx06f1GUTi5G_IwLgdyzGj
73
78
  griptape_nodes/exe_types/flow.py,sha256=2iAh3vN5wnMVxTc5jcPBg9TSiASq1DGIm5jgpO9Bdq4,5732
74
79
  griptape_nodes/exe_types/node_groups/__init__.py,sha256=u91XCSR4OAAr6x5kYq8i14mtHEWGQF_fSDUsWHmiOdY,346
75
80
  griptape_nodes/exe_types/node_groups/base_iterative_node_group.py,sha256=sPPy3Psl-Ku_R46upWm_8hIGFLNPeLpUBN_Sm4RzXzg,9655
76
- griptape_nodes/exe_types/node_groups/base_node_group.py,sha256=loDdJKllRPpWSSk-jJpqbBto80yn5oZGc6Jl-VXa_8A,3955
81
+ griptape_nodes/exe_types/node_groups/base_node_group.py,sha256=V1q7khSQF0pOqKvUyVUyiJssp9S4BHDInrqCo7OoyWQ,4082
77
82
  griptape_nodes/exe_types/node_groups/subflow_node_group.py,sha256=rTW0Uili0E_a5ho8p9bloNDLUjCUuxwgEgJGXfZ4KUY,49273
78
- griptape_nodes/exe_types/node_types.py,sha256=Hrzun9DN4FA-Yk-YQXBFyGrH1-kzszd9eVq4y6rmV5Y,84226
83
+ griptape_nodes/exe_types/node_types.py,sha256=E-9IDWEjWLwK5ujJRK-6jXZq5yikK7_ZVn81R9kXeUQ,84737
79
84
  griptape_nodes/exe_types/param_components/README.md,sha256=mcNFxJIan9CGTnecsrJ8mkHC55dlA3fb7k4HFznou-k,14850
80
85
  griptape_nodes/exe_types/param_components/__init__.py,sha256=ocm75WnsgiD6ozKVGFhoH9cQe_FEzeF2osxrRujOes0,60
81
86
  griptape_nodes/exe_types/param_components/api_key_provider_parameter.py,sha256=MHn5zYb2vEf4bGBfbnTjCfVYEbpZtXThb8JJAAMpuR8,7766
@@ -88,7 +93,7 @@ griptape_nodes/exe_types/param_components/huggingface/huggingface_repo_file_para
88
93
  griptape_nodes/exe_types/param_components/huggingface/huggingface_repo_parameter.py,sha256=zcBRQP0eZJloSdPQwJFw89B6QDHECnrosRZUy8mE2fM,1401
89
94
  griptape_nodes/exe_types/param_components/huggingface/huggingface_repo_variant_parameter.py,sha256=FaaDZ4dvZJCnpqSOKfJ5nR1klgl07JZto2A7gxhUi3o,5290
90
95
  griptape_nodes/exe_types/param_components/huggingface/huggingface_utils.py,sha256=cE0Ht81kDcZjlN_2VoRirCA4zMlrG9GFlcptn-gC2tU,4696
91
- griptape_nodes/exe_types/param_components/log_parameter.py,sha256=aLXwmoD4b5CS-Jlv2W-xnDNr4ufajuoEOFhVUAwVPdc,4261
96
+ griptape_nodes/exe_types/param_components/log_parameter.py,sha256=QSiBdkTtAj_HDWJwUZJh1uEEWmQ_TxGeMHN4uumjrcM,4263
92
97
  griptape_nodes/exe_types/param_components/progress_bar_component.py,sha256=GrAFTOrLNAx6q9zfOqiioPTG_NLHKhTe9NiZOo6zGSc,1949
93
98
  griptape_nodes/exe_types/param_components/seed_parameter.py,sha256=I48cVAojrD5oX4CT7v0x9LX6MrKVklywkp8IjE5pGIo,2321
94
99
  griptape_nodes/exe_types/param_components/subflow_execution_component.py,sha256=NnIIk_0aKMrpa-ricD9_bwMJmghlpwBLO95iACuJNS4,13177
@@ -97,11 +102,11 @@ griptape_nodes/exe_types/param_types/parameter_audio.py,sha256=JmctLDsuo8lEOBlDj
97
102
  griptape_nodes/exe_types/param_types/parameter_bool.py,sha256=VS76CODOy7_1MJI9spxmi9VwL3fwCxRKaj_8zpqB7dw,8215
98
103
  griptape_nodes/exe_types/param_types/parameter_button.py,sha256=lrFnw4dBRKTSsaMxSVMOwtAV8a-Tcex2Tf58u25qCy8,17292
99
104
  griptape_nodes/exe_types/param_types/parameter_dict.py,sha256=vbgasnkx9U9-h43geRhLjQ60ekhFlLBvuCVT9wHgWdY,6016
100
- griptape_nodes/exe_types/param_types/parameter_float.py,sha256=9msvMnmzYGNpqFpGyTT4tswiAlHomo9Y5EiYsydT7IM,6793
105
+ griptape_nodes/exe_types/param_types/parameter_float.py,sha256=yZbcvIB_jyOtdi11_OCB2DAyU9KSCPRgwwosqaaibC8,6871
101
106
  griptape_nodes/exe_types/param_types/parameter_image.py,sha256=yV6WAx_2hR4LWZtiqR9Z_xe9jFNdnwg16vZsx-SPGKI,10162
102
- griptape_nodes/exe_types/param_types/parameter_int.py,sha256=06h1QpWaWLeP2tlRRW5IOGO-t_ZlxsWqnezlgoyBKaE,6942
107
+ griptape_nodes/exe_types/param_types/parameter_int.py,sha256=iYzyMiL1XnR-nAWRF5ZTuvTf_y7cGjwzVk9nhnKy2wI,7020
103
108
  griptape_nodes/exe_types/param_types/parameter_json.py,sha256=M5A0_XhTKZ8qVBd1db55UA23H3nmaqryaITeN2-GwB0,9961
104
- griptape_nodes/exe_types/param_types/parameter_number.py,sha256=acmFnpeYI0Gi2yVYmn9ftkruBxR_TpjDrpYi3Kj0vc8,15372
109
+ griptape_nodes/exe_types/param_types/parameter_number.py,sha256=KyNFR9zo6uKgbagugWzp7FXV0DkIVnXpENCSqiVIASI,15966
105
110
  griptape_nodes/exe_types/param_types/parameter_range.py,sha256=fkCBN0X09fAfTG9AhKQ3Nxkit_8NrFi4IGQPpmOQR8k,14689
106
111
  griptape_nodes/exe_types/param_types/parameter_string.py,sha256=-Q_9FwPtCXzpbv1C5FixLEET0c9WLJ228168IaSlZEU,9583
107
112
  griptape_nodes/exe_types/param_types/parameter_three_d.py,sha256=xv-uUj9vZPjKNcotJCXm3GYhsIbQLEN7GkTn9G_2jsA,9155
@@ -117,33 +122,33 @@ griptape_nodes/mcp_server/__init__.py,sha256=GSpJWqE4lICaryhsQR1okeMH2x6j1bBL0HV
117
122
  griptape_nodes/node_library/__init__.py,sha256=U3FcSdmq6UW7qt6E3Up3NWKvUEn5_5lqL-u5qbzfxMQ,28
118
123
  griptape_nodes/node_library/advanced_node_library.py,sha256=B1ZaxuFIzQ6tx_3MLIxlsHuahthEC1Hw_t6K_ByIdzs,2104
119
124
  griptape_nodes/node_library/library_registry.py,sha256=siLAkVN3f56C2Ks7RwXnKGgKIYT_j8nZOOFUd3s6Zyo,15941
120
- griptape_nodes/node_library/workflow_registry.py,sha256=vRnZ6RSFRAf_XOOTrirLhrcmq8BK434XUdynNQ1gGMU,10523
125
+ griptape_nodes/node_library/workflow_registry.py,sha256=PqFlgMOQIcZOXrRA9ysgU9cmYM9QIT9tKKMhqmP5mSc,10448
121
126
  griptape_nodes/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
122
127
  griptape_nodes/retained_mode/__init__.py,sha256=X12DKL6KhLsiRTPIlrPj2h76_sJ0q0eH4r0kMQkodm0,29
123
128
  griptape_nodes/retained_mode/events/__init__.py,sha256=7B1C-c0jVvnShtHJ2lfX6BZPE0U1DgQwg1e4DorhKG0,22
124
129
  griptape_nodes/retained_mode/events/agent_events.py,sha256=WGxjoiStQW7uwhpPmXqLrj06pGAeGm2zAsCSLqHDS3U,10747
125
- griptape_nodes/retained_mode/events/app_events.py,sha256=C_HsAi8h1Ip0UbtbJAT6RkzrL__5psC1q6CO-ZKyuBs,10262
130
+ griptape_nodes/retained_mode/events/app_events.py,sha256=i3m3Vqn1s_fGsjfJSLxewESx7JHB-8Wu76mVeClWQYM,10301
126
131
  griptape_nodes/retained_mode/events/arbitrary_python_events.py,sha256=uhep1c1xjUc-YQO5nIStAE48PS6rFZLTDQIr_Qb3we8,1460
127
- griptape_nodes/retained_mode/events/base_events.py,sha256=PkE1o-K4EomLM96G5H3a_P3q7Fd4jhzIwbN3MNYtb50,22859
132
+ griptape_nodes/retained_mode/events/base_events.py,sha256=YvsMfSE6BhPO0qgelg1N_JMXRYDansRCpiyCqnlhF18,23212
128
133
  griptape_nodes/retained_mode/events/config_events.py,sha256=Y03YMLoJTXy0Sz6tq-6lOIs37CmXn1Br3GYAinl02nY,7070
129
134
  griptape_nodes/retained_mode/events/connection_events.py,sha256=YnrYPIUE-BdHMBbahhiRhcIBzJ4zLttw4uRWtYJrEXg,4956
130
135
  griptape_nodes/retained_mode/events/context_events.py,sha256=-FIwjI0hJodDhfM4BF-3GTRycu80v1TlSSOX34oA9nA,2122
131
136
  griptape_nodes/retained_mode/events/execution_events.py,sha256=AQHD04wxQXJDHGnw_ij4QvdUoiMckpMTZqZJX3ehGgA,13512
132
- griptape_nodes/retained_mode/events/flow_events.py,sha256=UcRHfaubb1GpDFSPg-5HRWrPnA7ifH1zBMYtWnYNy_E,19434
137
+ griptape_nodes/retained_mode/events/flow_events.py,sha256=2MryrRedbcNEeNgX6W1uyNHooHrEMRw4hU2qQQO7W-Y,21951
133
138
  griptape_nodes/retained_mode/events/generate_request_payload_schemas.py,sha256=PQ0QRZAUBljSIGjB8QhYUeRmSrfmLsJ6XVcygJKi13I,1102
134
- griptape_nodes/retained_mode/events/library_events.py,sha256=4NUc3uoLgofo1X9nrCVl2zPX3hsnk06Oo4Op0AQKA5o,36229
139
+ griptape_nodes/retained_mode/events/library_events.py,sha256=3N-tNK9EUV7q33Ga3Dt4WJ5q0VUn5aKYb7op7W7Nlmc,36231
135
140
  griptape_nodes/retained_mode/events/logger_events.py,sha256=jYlxzPomgCsJuPtJ0znWBhD8QJfC8qC4xfChDiuVuyg,705
136
141
  griptape_nodes/retained_mode/events/mcp_events.py,sha256=fs83jAQamhwNC9Zt8UNkBKd6iTids8531V_RMnGj__o,11008
137
142
  griptape_nodes/retained_mode/events/model_events.py,sha256=jXm-v-_Uxysn4MJ7a80_uIphrxTHgua3BGgHGyy3T_Y,9232
138
- griptape_nodes/retained_mode/events/node_events.py,sha256=9yTdTrFNd5JATvHk5x3ucznMou3ZzYxgpCgNjAF-GuU,38760
143
+ griptape_nodes/retained_mode/events/node_events.py,sha256=uAOBhTIMG6JxykX1hWwwhSSGkGKm58r5vrAMA5Iaqlw,38809
139
144
  griptape_nodes/retained_mode/events/object_events.py,sha256=cJaqEU73Lzf1RRxJrFqEpl8eTr-gDhKpXKywJ-vVCJQ,2631
140
- griptape_nodes/retained_mode/events/os_events.py,sha256=fVraPXCz48kDpCTttJFtsyfTfkaLSfTX57hexYSD7I8,23429
145
+ griptape_nodes/retained_mode/events/os_events.py,sha256=gIsXuozwdAp9MmhfK0saxeTwy3r-IpE3_iSRn7BWb7Y,24429
141
146
  griptape_nodes/retained_mode/events/parameter_events.py,sha256=TazVXxvfv64n3XJzToOQKiWQ1UIzrUAB4ri_QIvZ2ng,26968
142
147
  griptape_nodes/retained_mode/events/payload_registry.py,sha256=q-wxUqp63vhNj-Pl1JGJHnBkhUefcCArPoMN3KBREEI,1691
143
148
  griptape_nodes/retained_mode/events/project_events.py,sha256=C_jHk_7dRJLtbRgCi8IGe-mH46tueuTxLxGL7xxZVBI,17096
144
149
  griptape_nodes/retained_mode/events/resource_events.py,sha256=K47UK92wvaRtHu3ByfhkQEMyorrV0ArGewrFSJuVMiI,9015
145
150
  griptape_nodes/retained_mode/events/secrets_events.py,sha256=fCw3OMFfxB8FTZs4ybojm1nqNvhcjtoNylQhX75-jkM,4156
146
- griptape_nodes/retained_mode/events/static_file_events.py,sha256=c8kKkrxAPZxrE9fsldpWtweK1C4T-1-dHWw_76SRehM,3764
151
+ griptape_nodes/retained_mode/events/static_file_events.py,sha256=jFSuOb0vIWygR9u_dlS4se4OjPh13giN5NNYgIJSHoQ,4923
147
152
  griptape_nodes/retained_mode/events/sync_events.py,sha256=AoxBZLPPdzx4S5CiOJVRDebHnQb349Dq5jVO8Fh_sn8,2016
148
153
  griptape_nodes/retained_mode/events/validation_events.py,sha256=H2yWoHp2t7QwGV_fDQXRy7JojYnK4k6SOAlEvRYST_Q,3062
149
154
  griptape_nodes/retained_mode/events/variable_events.py,sha256=fnl_sY8GWI_R4UJQTEJSlmsyCD9TiEW0U2UD2seBabs,10587
@@ -206,15 +211,16 @@ griptape_nodes/retained_mode/managers/fitness_problems/workflows/node_type_not_f
206
211
  griptape_nodes/retained_mode/managers/fitness_problems/workflows/workflow_not_found_problem.py,sha256=kPhaIeDxp0duxJBJLKFiYp269kEDsCx3uVLnkKbF2gk,895
207
212
  griptape_nodes/retained_mode/managers/fitness_problems/workflows/workflow_problem.py,sha256=NLAoF_x7g5tL70qZtPVFI8xeM1jPZNsm7FKt9nkuGBc,542
208
213
  griptape_nodes/retained_mode/managers/fitness_problems/workflows/workflow_schema_version_problem.py,sha256=rUnbBBnGwgq5WTVPt2G4pGP3gVPoX5xvCdTkRPBmP04,1328
209
- griptape_nodes/retained_mode/managers/flow_manager.py,sha256=BKWLpc-udlZ4n1rlKINHFS-Jj6wBqoCSdD7x0FyNr5o,220266
210
- griptape_nodes/retained_mode/managers/library_manager.py,sha256=paogGavZj2MDOYvfUklhjORQg16YdpVGBxBncVSxtR0,192265
214
+ griptape_nodes/retained_mode/managers/flow_manager.py,sha256=Z49xHwQpIjy71gFKeIUsAFVbQ20e67ImZaVWpnn-KqM,226375
215
+ griptape_nodes/retained_mode/managers/image_metadata_injector.py,sha256=92P07-oV4rh8DQwPI1Y0__agEFHr5L601FtUwYPsAW8,11944
216
+ griptape_nodes/retained_mode/managers/library_manager.py,sha256=KaizlUUdiOCrv7agP9rrChG0_5QFM5zJjLafFYrJG0A,193585
211
217
  griptape_nodes/retained_mode/managers/mcp_manager.py,sha256=AEHG1SqFc3g5hOImOHaH7ZjOkmgNAavmQgG9osXVGkE,16018
212
- griptape_nodes/retained_mode/managers/model_manager.py,sha256=3lj2X8vIvDSERPtR2VEXNFEWy_D8H6muxRvD-PEx8U8,44845
213
- griptape_nodes/retained_mode/managers/node_manager.py,sha256=BG0-z2-pDjzgS5VC3u3p7-jGUJ5nGSGSShbSv9WseoA,229244
218
+ griptape_nodes/retained_mode/managers/model_manager.py,sha256=399Sx26x82bA5o7Aya1tmPBzcV_li2HFidBCP1rw1OY,44950
219
+ griptape_nodes/retained_mode/managers/node_manager.py,sha256=M4I4ADkd40TfVSfYfK3w-we1w8j-Q-bLZRQWOdTlMoQ,229566
214
220
  griptape_nodes/retained_mode/managers/object_manager.py,sha256=ZpovmhnBKG_JCn4Pde9idlx2eBZjKvR7k9DHUYqD-r4,12882
215
221
  griptape_nodes/retained_mode/managers/operation_manager.py,sha256=4Vn_79vHrawy3wJVUx52tfblO4mURww58nb5RtCTpKU,20190
216
- griptape_nodes/retained_mode/managers/os_manager.py,sha256=0PdV11cjlGfOeqGx0XQl43L-yasdDd4z4sOPvdHhLM4,142434
217
- griptape_nodes/retained_mode/managers/project_manager.py,sha256=-K-anrxEVKInFMPLY-cV3ipqEh8hMELGHKbecJJJVa8,49035
222
+ griptape_nodes/retained_mode/managers/os_manager.py,sha256=Utwz9hPMcAKcK7QGZGUtCSHs7z9uwbIPlAmOgfA6qlU,153843
223
+ griptape_nodes/retained_mode/managers/project_manager.py,sha256=qnjw6HafDQy6HK5jOcDGv1lchcNUKH3WOJrmmfkZEiM,48942
218
224
  griptape_nodes/retained_mode/managers/resource_components/__init__.py,sha256=2FHpZFw2N1-oHfMCfrnB_XpF8_-2aSNtAZWh5zQTGL0,35
219
225
  griptape_nodes/retained_mode/managers/resource_components/capability_field.py,sha256=jZ5ONfdYVd5_MKlSKvUch1X2n1oHzMSeZW8UZ1a_RsU,1504
220
226
  griptape_nodes/retained_mode/managers/resource_components/comparator.py,sha256=02SiAiOatEnCgZOoMvpDhLsMpiOeNdtg9_HbrW4gS2k,609
@@ -226,25 +232,25 @@ griptape_nodes/retained_mode/managers/resource_types/compute_resource.py,sha256=
226
232
  griptape_nodes/retained_mode/managers/resource_types/cpu_resource.py,sha256=YHjU6_Pm41wGvdMlRzNkQS9yJY8wD2NN2-WwOFpVpUo,3830
227
233
  griptape_nodes/retained_mode/managers/resource_types/os_resource.py,sha256=HHJ-kgZB2BsnvU0rp-CQlM1xTJm3OZ3Dh-NpB01gGG8,3439
228
234
  griptape_nodes/retained_mode/managers/secrets_manager.py,sha256=knoHlbR-VrkeNULYjq72cHnhbCeupkKjtUT0EfBH8LQ,7743
229
- griptape_nodes/retained_mode/managers/session_manager.py,sha256=u3OEir9rjwG7GFM4MA5crKwcwq6F-lCUKlFzxlFU4co,14085
230
- griptape_nodes/retained_mode/managers/settings.py,sha256=UxYA5GzHqBPFMNwKqq2Np4nT8ZciBahpDIFrhQKNMm0,12168
231
- griptape_nodes/retained_mode/managers/static_files_manager.py,sha256=rWeI5mO8CCdEHx1odo4z4pxfTy33ggzCcUwkRj67aNM,12408
235
+ griptape_nodes/retained_mode/managers/session_manager.py,sha256=85PLy0j6psQ35eqFeQ7gXJ0l1ktWFNXogO0sH7ZDgo0,14198
236
+ griptape_nodes/retained_mode/managers/settings.py,sha256=AdJBgqOvlenNlj8bVmgd6B0pQC3YYobrWlGiaoTKwQM,12374
237
+ griptape_nodes/retained_mode/managers/static_files_manager.py,sha256=RYz4c5Amg6p-P93yMDC6v39XwUwjlJfHjueQugKX1mk,15879
232
238
  griptape_nodes/retained_mode/managers/sync_manager.py,sha256=dF6nAAy1DLDQydefx7v3EtPCBiCrk4vURMum57WfmK8,21448
233
239
  griptape_nodes/retained_mode/managers/user_manager.py,sha256=JAOOKDhUfIbj0CJ5EHRBcplmxheQTzeogbvGO23VqXQ,4508
234
240
  griptape_nodes/retained_mode/managers/variable_manager.py,sha256=TnuqHSRK9Yiu_EtKxQksF9SyyQb72lbFQuTQZdpBxeE,24116
235
241
  griptape_nodes/retained_mode/managers/version_compatibility_manager.py,sha256=kaCtmNMqJW-mvLCFHf77wbBZbc3CgW2h8fYYkLkNrPs,17041
236
- griptape_nodes/retained_mode/managers/workflow_manager.py,sha256=n6jmr966Y_0MPd9aaOssX2CYgojf_mNRxC07990Anec,217769
242
+ griptape_nodes/retained_mode/managers/workflow_manager.py,sha256=YTPNELNLlS4_WckrcTpvqX3I5CuVGjFZS2qjpDHSiXo,219659
237
243
  griptape_nodes/retained_mode/retained_mode.py,sha256=fJNAVyheqjXFOh8--VAmJBLWlNgMyRWNghG_0u8B-1w,72415
238
244
  griptape_nodes/retained_mode/utils/__init__.py,sha256=W5dvv8YwvVVq_8eVTgMd3Z_VB_Dtq1sIIVq8745QH_I,52
239
245
  griptape_nodes/retained_mode/utils/name_generator.py,sha256=IZLahtfP3XC79XApLdGoZ0IKKUkgiITpd16RK7NbyEs,2524
240
246
  griptape_nodes/retained_mode/variable_types.py,sha256=GVrSWMB3gEDAufSPOBXbNfIRhA9M43MoxpqLyuIg_HE,435
241
247
  griptape_nodes/servers/__init__.py,sha256=JCmorB8tQUu_kQ8hSRhgw4VsOqsC0iZjZ-mCXYy9ZOQ,60
242
248
  griptape_nodes/servers/mcp.py,sha256=eUjuwdG0yAk-xKcpXQ52bYfBTBzQD0PvMLZXhJ4LnZA,6883
243
- griptape_nodes/servers/static.py,sha256=R0nnMUCRDE0BxygZ-kdxhROAXgJPsIJBAEp7H_sJtvg,7548
249
+ griptape_nodes/servers/static.py,sha256=iTSue5LaqM4yheca0sYK5Ht2rAE_0g_PeGEI8ffvD-M,8933
244
250
  griptape_nodes/traits/__init__.py,sha256=bTLXTiZTJz2z15RRLoPI4nvLnNW9FiLcKL_2pT4E10g,32
245
251
  griptape_nodes/traits/add_param_button.py,sha256=27RZDVLMD0HmRF6hjfz7iV7LBau92vMc_d2eD2Ey8fA,649
246
252
  griptape_nodes/traits/button.py,sha256=Nweq5oGdPpSTfyX3Dr2mjgBYwLUrokxtergnOCTiPpU,15962
247
- griptape_nodes/traits/clamp.py,sha256=BZVHiWfBNePWaPMaLyOgtcWzkM7Ls4hcPlm_afmGiIs,1030
253
+ griptape_nodes/traits/clamp.py,sha256=hBteNZ4CF4k-5zkWDJnnkWQxOnB0G9_BEa9YwWEgdII,2780
248
254
  griptape_nodes/traits/color_picker.py,sha256=ySKaoZw319yfuTSEtkVT2vSR6Goy9pBm4rusjx95F0c,3024
249
255
  griptape_nodes/traits/compare.py,sha256=X-BXGemRDxQV4EX8X24LdtcwMWwfQ1jGqDvH2bSiSuc,521
250
256
  griptape_nodes/traits/compare_images.py,sha256=KW0WlwsJP6nBoC1irdeRnUWUnZIJvlROlDhyWhX8iEs,1594
@@ -258,16 +264,19 @@ griptape_nodes/traits/trait_registry.py,sha256=pU26mW2ztfu1UARGYloflsTPqJ1X_-u01
258
264
  griptape_nodes/traits/traits.json,sha256=JwFsOaFfLeR1ohcyh6XApc5N2-mWMPGSaYbpA-mD7mk,133
259
265
  griptape_nodes/updater/__init__.py,sha256=ZTVr-zI4Jf-cFAXU3nX9L7oTCFFWsjlrkHQiZidDhB0,2570
260
266
  griptape_nodes/updater/__main__.py,sha256=lhMMctbBeni57ximitvkwqJ1TQzk79Jg9w0rkKjtp5Y,79
261
- griptape_nodes/utils/__init__.py,sha256=kzDZW_VPyxWJFonM3kYTl7A91_JmtHPK0Io4KPLTYT4,122
267
+ griptape_nodes/utils/__init__.py,sha256=4nVPlEvXMtvjTEq5zbzcwNcL45j5NuVJK0S0kX6XHig,446
262
268
  griptape_nodes/utils/artifact_normalization.py,sha256=BofLyLnOaNCofAkeXSOhwV6BfBOjHH3C1cKglXOwAew,9157
263
269
  griptape_nodes/utils/async_utils.py,sha256=4IrW8Ub8iJ2QB9yguZtfN1EB9B5nXHS7jbDaLOHWso0,4844
264
270
  griptape_nodes/utils/dict_utils.py,sha256=1VP2EoyOP0nswoAgjPehpA0izpkygWRX7L--ArN6LV8,7314
265
- griptape_nodes/utils/file_utils.py,sha256=D7VBkYl2MI0GUHdvI3IDB-fRN2XTp4xDpANnUcnEVvY,5524
271
+ griptape_nodes/utils/file_utils.py,sha256=P-L3ihmlvJ6Rj8fV2qqIDUzov7XvWr8WrOdRcJBungY,5542
266
272
  griptape_nodes/utils/git_utils.py,sha256=Gz55JqSFPuxbTzvnXHKHsbMy3PvkNDAYyMQ7szekcL0,45674
273
+ griptape_nodes/utils/http_file_patch.py,sha256=2-U3wU1Z5yGqkcmnNNIPHS-1RQ-XnvtUoh40O7W3zbQ,24895
267
274
  griptape_nodes/utils/huggingface_utils.py,sha256=txR5XS_01W3TvsH4SQ3AJrFy8oS8Ah9M-ePRSs3jHYA,4737
268
275
  griptape_nodes/utils/image_preview.py,sha256=0lNBWAm4-bNAqpiD5AWeeIE3-5sdc26SX_sIcFuhU5w,6106
269
276
  griptape_nodes/utils/library_utils.py,sha256=UwTdOJcPwJljWYD-DbctjExicaw-6isXZ-Js02jrGCw,4224
270
277
  griptape_nodes/utils/metaclasses.py,sha256=RSKyAvZppH_hbMugmUmIr8QqOg1sYY4uRNfQybD4O8Q,287
278
+ griptape_nodes/utils/path_utils.py,sha256=p9uqCNjk0nz9KLLHdZm_Thj7Tx5kCc9IRVaQ8SKbjyE,1944
279
+ griptape_nodes/utils/url_utils.py,sha256=jot9Kz4TZRR0UHg-ncNaoSBKmeFyCBkbxf-m-VW25yk,3237
271
280
  griptape_nodes/utils/uv_utils.py,sha256=ZK37LmacKfxMVKkcIOyJ35HOXgV6sFWE9CzgKPmaRU0,519
272
281
  griptape_nodes/utils/version_utils.py,sha256=Y-HJfJW6Jxuz_jOnHxMiy-pmMauHRnY-7BO3alGmw-Q,4318
273
282
  griptape_nodes/version_compatibility/__init__.py,sha256=JMz1sB7Zsj6pS1S5sdsPR0kn89s1A0sB0kFIvygJYfo,74
@@ -282,7 +291,7 @@ griptape_nodes/version_compatibility/versions/v0_65_5/__init__.py,sha256=4UyspOV
282
291
  griptape_nodes/version_compatibility/versions/v0_65_5/flux_2_removed_parameters.py,sha256=jOlmY5kKHXh8HPzAUtvwMJqzD4bP7pkE--yHUb7jTRA,3305
283
292
  griptape_nodes/version_compatibility/versions/v0_7_0/__init__.py,sha256=IzPPmGK86h2swfGGTOHyVcBIlOng6SjgWQzlbf3ngmo,51
284
293
  griptape_nodes/version_compatibility/versions/v0_7_0/local_executor_argument_addition.py,sha256=Thx8acnbw5OychhwEEj9aFxvbPe7Wgn4V9ZmZ7KRZqc,2082
285
- griptape_nodes-0.71.0.dist-info/WHEEL,sha256=XV0cjMrO7zXhVAIyyc8aFf1VjZ33Fen4IiJk5zFlC3g,80
286
- griptape_nodes-0.71.0.dist-info/entry_points.txt,sha256=qvevqd3BVbAV5TcantnAm0ouqaqYKhsRO3pkFymWLWM,82
287
- griptape_nodes-0.71.0.dist-info/METADATA,sha256=UIMyQPSauCEqiFVzr6fRyRF1XMIYVCqDgY-Iv4L76GE,5373
288
- griptape_nodes-0.71.0.dist-info/RECORD,,
294
+ griptape_nodes-0.72.1.dist-info/WHEEL,sha256=5DEXXimM34_d4Gx1AuF9ysMr1_maoEtGKjaILM3s4w4,80
295
+ griptape_nodes-0.72.1.dist-info/entry_points.txt,sha256=qvevqd3BVbAV5TcantnAm0ouqaqYKhsRO3pkFymWLWM,82
296
+ griptape_nodes-0.72.1.dist-info/METADATA,sha256=rNz74dZCLdRZbWbJgIYOiEqD7IMgcaDB1gReDrBh2jo,5406
297
+ griptape_nodes-0.72.1.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: uv 0.9.26
2
+ Generator: uv 0.9.29
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any