griptape-nodes 0.43.0__py3-none-any.whl → 0.44.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- griptape_nodes/__init__.py +41 -51
- griptape_nodes/app/.python-version +0 -0
- griptape_nodes/app/__init__.py +0 -0
- griptape_nodes/app/api.py +35 -6
- griptape_nodes/app/app.py +0 -0
- griptape_nodes/app/watch.py +0 -0
- griptape_nodes/bootstrap/__init__.py +0 -0
- griptape_nodes/bootstrap/workflow_executors/__init__.py +0 -0
- griptape_nodes/bootstrap/workflow_executors/local_workflow_executor.py +7 -1
- griptape_nodes/bootstrap/workflow_executors/subprocess_workflow_executor.py +90 -0
- griptape_nodes/bootstrap/workflow_executors/workflow_executor.py +7 -1
- griptape_nodes/drivers/__init__.py +0 -0
- griptape_nodes/drivers/storage/__init__.py +0 -0
- griptape_nodes/drivers/storage/base_storage_driver.py +53 -0
- griptape_nodes/drivers/storage/griptape_cloud_storage_driver.py +49 -2
- griptape_nodes/drivers/storage/local_storage_driver.py +37 -0
- griptape_nodes/drivers/storage/storage_backend.py +0 -0
- griptape_nodes/exe_types/__init__.py +0 -0
- griptape_nodes/exe_types/connections.py +0 -0
- griptape_nodes/exe_types/core_types.py +113 -8
- griptape_nodes/exe_types/flow.py +0 -0
- griptape_nodes/exe_types/node_types.py +1 -0
- griptape_nodes/exe_types/type_validator.py +0 -0
- griptape_nodes/machines/__init__.py +0 -0
- griptape_nodes/machines/control_flow.py +5 -4
- griptape_nodes/machines/fsm.py +0 -0
- griptape_nodes/machines/node_resolution.py +110 -74
- griptape_nodes/mcp_server/__init__.py +0 -0
- griptape_nodes/mcp_server/server.py +16 -8
- griptape_nodes/mcp_server/ws_request_manager.py +0 -0
- griptape_nodes/node_library/__init__.py +0 -0
- griptape_nodes/node_library/advanced_node_library.py +0 -0
- griptape_nodes/node_library/library_registry.py +0 -0
- griptape_nodes/node_library/workflow_registry.py +0 -0
- griptape_nodes/py.typed +0 -0
- griptape_nodes/retained_mode/__init__.py +0 -0
- griptape_nodes/retained_mode/events/__init__.py +0 -0
- griptape_nodes/retained_mode/events/agent_events.py +0 -0
- griptape_nodes/retained_mode/events/app_events.py +0 -6
- griptape_nodes/retained_mode/events/arbitrary_python_events.py +0 -0
- griptape_nodes/retained_mode/events/base_events.py +6 -7
- griptape_nodes/retained_mode/events/config_events.py +0 -0
- griptape_nodes/retained_mode/events/connection_events.py +0 -0
- griptape_nodes/retained_mode/events/context_events.py +0 -0
- griptape_nodes/retained_mode/events/execution_events.py +0 -0
- griptape_nodes/retained_mode/events/flow_events.py +2 -1
- griptape_nodes/retained_mode/events/generate_request_payload_schemas.py +0 -0
- griptape_nodes/retained_mode/events/library_events.py +0 -0
- griptape_nodes/retained_mode/events/logger_events.py +0 -0
- griptape_nodes/retained_mode/events/node_events.py +36 -0
- griptape_nodes/retained_mode/events/object_events.py +0 -0
- griptape_nodes/retained_mode/events/os_events.py +98 -6
- griptape_nodes/retained_mode/events/parameter_events.py +0 -0
- griptape_nodes/retained_mode/events/payload_registry.py +0 -0
- griptape_nodes/retained_mode/events/secrets_events.py +0 -0
- griptape_nodes/retained_mode/events/static_file_events.py +0 -0
- griptape_nodes/retained_mode/events/validation_events.py +0 -0
- griptape_nodes/retained_mode/events/workflow_events.py +0 -0
- griptape_nodes/retained_mode/griptape_nodes.py +1 -4
- griptape_nodes/retained_mode/managers/__init__.py +0 -0
- griptape_nodes/retained_mode/managers/agent_manager.py +0 -0
- griptape_nodes/retained_mode/managers/arbitrary_code_exec_manager.py +0 -0
- griptape_nodes/retained_mode/managers/config_manager.py +1 -1
- griptape_nodes/retained_mode/managers/context_manager.py +0 -0
- griptape_nodes/retained_mode/managers/engine_identity_manager.py +0 -0
- griptape_nodes/retained_mode/managers/event_manager.py +0 -0
- griptape_nodes/retained_mode/managers/flow_manager.py +6 -0
- griptape_nodes/retained_mode/managers/library_lifecycle/__init__.py +0 -0
- griptape_nodes/retained_mode/managers/library_lifecycle/data_models.py +0 -0
- griptape_nodes/retained_mode/managers/library_lifecycle/library_directory.py +0 -0
- griptape_nodes/retained_mode/managers/library_lifecycle/library_fsm.py +0 -0
- griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/__init__.py +0 -0
- griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/base.py +0 -0
- griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/github.py +0 -0
- griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/local_file.py +0 -0
- griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/package.py +0 -0
- griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/sandbox.py +0 -0
- griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance.py +0 -0
- griptape_nodes/retained_mode/managers/library_lifecycle/library_status.py +0 -0
- griptape_nodes/retained_mode/managers/library_manager.py +2 -8
- griptape_nodes/retained_mode/managers/node_manager.py +76 -5
- griptape_nodes/retained_mode/managers/object_manager.py +0 -0
- griptape_nodes/retained_mode/managers/operation_manager.py +0 -0
- griptape_nodes/retained_mode/managers/os_manager.py +133 -8
- griptape_nodes/retained_mode/managers/secrets_manager.py +0 -0
- griptape_nodes/retained_mode/managers/session_manager.py +0 -0
- griptape_nodes/retained_mode/managers/settings.py +0 -0
- griptape_nodes/retained_mode/managers/static_files_manager.py +0 -0
- griptape_nodes/retained_mode/managers/version_compatibility_manager.py +0 -0
- griptape_nodes/retained_mode/managers/workflow_manager.py +54 -5
- griptape_nodes/retained_mode/retained_mode.py +0 -0
- griptape_nodes/retained_mode/utils/__init__.py +0 -0
- griptape_nodes/retained_mode/utils/engine_identity.py +0 -0
- griptape_nodes/retained_mode/utils/name_generator.py +0 -0
- griptape_nodes/traits/__init__.py +0 -0
- griptape_nodes/traits/add_param_button.py +0 -0
- griptape_nodes/traits/button.py +0 -0
- griptape_nodes/traits/clamp.py +0 -0
- griptape_nodes/traits/compare.py +0 -0
- griptape_nodes/traits/compare_images.py +0 -0
- griptape_nodes/traits/file_system_picker.py +18 -0
- griptape_nodes/traits/minmax.py +0 -0
- griptape_nodes/traits/options.py +0 -0
- griptape_nodes/traits/slider.py +0 -0
- griptape_nodes/traits/trait_registry.py +0 -0
- griptape_nodes/traits/traits.json +0 -0
- griptape_nodes/updater/__init__.py +0 -0
- griptape_nodes/updater/__main__.py +0 -0
- griptape_nodes/utils/__init__.py +0 -0
- griptape_nodes/utils/dict_utils.py +0 -0
- griptape_nodes/utils/image_preview.py +0 -0
- griptape_nodes/utils/metaclasses.py +0 -0
- griptape_nodes/utils/version_utils.py +51 -0
- griptape_nodes/version_compatibility/__init__.py +0 -0
- griptape_nodes/version_compatibility/versions/__init__.py +0 -0
- griptape_nodes/version_compatibility/versions/v0_39_0/__init__.py +0 -0
- griptape_nodes/version_compatibility/versions/v0_39_0/modified_parameters_set_removal.py +0 -0
- {griptape_nodes-0.43.0.dist-info → griptape_nodes-0.44.0.dist-info}/METADATA +1 -1
- {griptape_nodes-0.43.0.dist-info → griptape_nodes-0.44.0.dist-info}/RECORD +31 -39
- {griptape_nodes-0.43.0.dist-info → griptape_nodes-0.44.0.dist-info}/WHEEL +1 -1
- griptape_nodes/bootstrap/bootstrap_script.py +0 -54
- griptape_nodes/bootstrap/post_build_install_script.sh +0 -3
- griptape_nodes/bootstrap/pre_build_install_script.sh +0 -4
- griptape_nodes/bootstrap/register_libraries_script.py +0 -32
- griptape_nodes/bootstrap/structure_config.yaml +0 -15
- griptape_nodes/bootstrap/workflow_runners/__init__.py +0 -1
- griptape_nodes/bootstrap/workflow_runners/bootstrap_workflow_runner.py +0 -28
- griptape_nodes/bootstrap/workflow_runners/local_workflow_runner.py +0 -237
- griptape_nodes/bootstrap/workflow_runners/subprocess_workflow_runner.py +0 -62
- griptape_nodes/bootstrap/workflow_runners/workflow_runner.py +0 -11
- {griptape_nodes-0.43.0.dist-info → griptape_nodes-0.44.0.dist-info}/entry_points.txt +0 -0
|
@@ -1,41 +1,32 @@
|
|
|
1
|
-
griptape_nodes/__init__.py,sha256=
|
|
1
|
+
griptape_nodes/__init__.py,sha256=5ac41cbebb5fba87db1b5ef09624c4c1f59c8bdfc1f965ef526145ed57a05aad,36785
|
|
2
2
|
griptape_nodes/app/.python-version,sha256=7b55f8e67b5623c4bef3fa691288da9437d79d3aba156de48d481db32ac7d16d,5
|
|
3
3
|
griptape_nodes/app/__init__.py,sha256=0c1f834ec81c3676e6102957128bb0cc686b9a8de01c10965c1f4190f1a97502,90
|
|
4
|
-
griptape_nodes/app/api.py,sha256=
|
|
4
|
+
griptape_nodes/app/api.py,sha256=bcd5dc34a1633bd5e2baf677b38a7751154c415b944f05d96b479964da31f23e,8233
|
|
5
5
|
griptape_nodes/app/app.py,sha256=3b09abab86b5b1712f12e7f2ef4142d641b70fbcc8a27be0bcc61b794456c96a,14950
|
|
6
6
|
griptape_nodes/app/watch.py,sha256=bbc0f85469be2d8dee9ba518df9b1cc2c312e7485a74bf1fcc7057f6503ea1d4,1974
|
|
7
7
|
griptape_nodes/bootstrap/__init__.py,sha256=10dbf7488cd0f53b6546b835cb87b80a7a01a49685a454a43694c5055f17e4bb,25
|
|
8
|
-
griptape_nodes/bootstrap/bootstrap_script.py,sha256=40b2eedf0bb55469a8514f122867b22c60ce8a32812c600962fd51948f6cb9bd,1312
|
|
9
|
-
griptape_nodes/bootstrap/post_build_install_script.sh,sha256=b7622d56f7bfd9593b8cc16c7c07d51c201ce6c1520d24249a3825af551267bb,48
|
|
10
|
-
griptape_nodes/bootstrap/pre_build_install_script.sh,sha256=33b7bd97dfd53177f65d72beda07549e21f8a9c4e3e950a910a715bd13b9df99,84
|
|
11
|
-
griptape_nodes/bootstrap/register_libraries_script.py,sha256=13a8fcbe13e16be84e54a64128018289b3a95b7808af111194bfbf58479673bf,1019
|
|
12
|
-
griptape_nodes/bootstrap/structure_config.yaml,sha256=24a15d67a951adfadb76e6d2bac76f7703a0df20c70de4f952f556857cd68f11,515
|
|
13
8
|
griptape_nodes/bootstrap/workflow_executors/__init__.py,sha256=a728cdf35f9e2ed8f21021582d73ad3028b18a223da818b9c9a95df3a88cec49,34
|
|
14
|
-
griptape_nodes/bootstrap/workflow_executors/local_workflow_executor.py,sha256=
|
|
15
|
-
griptape_nodes/bootstrap/workflow_executors/
|
|
16
|
-
griptape_nodes/bootstrap/
|
|
17
|
-
griptape_nodes/bootstrap/workflow_runners/bootstrap_workflow_runner.py,sha256=ddcb7996b5b4ee8c56ebebe26bfa05f7704329b89662345e6aeed3caa3e3ebeb,1247
|
|
18
|
-
griptape_nodes/bootstrap/workflow_runners/local_workflow_runner.py,sha256=6eb637a7d2e222967fd424ca2e67c47cb12aa8e654db9fbd1698a10e983abef4,9722
|
|
19
|
-
griptape_nodes/bootstrap/workflow_runners/subprocess_workflow_runner.py,sha256=6d1e44f13c39e48208309b0923f1568961b80f122633c6404e6103112ca607ae,2422
|
|
20
|
-
griptape_nodes/bootstrap/workflow_runners/workflow_runner.py,sha256=7e6b421fcfdcfd576e7470320890982fe2f94c57b1c005725488d05c2d0ec065,290
|
|
9
|
+
griptape_nodes/bootstrap/workflow_executors/local_workflow_executor.py,sha256=c3711f000d42b3ea63558b574d327073fe8645f460337bd45cf1190a6a4113ba,8816
|
|
10
|
+
griptape_nodes/bootstrap/workflow_executors/subprocess_workflow_executor.py,sha256=b610be5ba3b459d1f0f0ee6a01fa104bed225d6081ae1db42626de8c7bc6c90c,3347
|
|
11
|
+
griptape_nodes/bootstrap/workflow_executors/workflow_executor.py,sha256=945000fb96d6cabd8a7f53324b9d2f5f549e1bb976ce66d2adbe7f932c8822ba,417
|
|
21
12
|
griptape_nodes/drivers/__init__.py,sha256=b479a21509fab89c855610b63eba87811507ddddf20eca8c4295aa45ab266aa0,42
|
|
22
13
|
griptape_nodes/drivers/storage/__init__.py,sha256=ffba7cbc9b776279c5eac0f7531c70dfc73e81acee3081d24be9b71bab1ad909,208
|
|
23
|
-
griptape_nodes/drivers/storage/base_storage_driver.py,sha256=
|
|
24
|
-
griptape_nodes/drivers/storage/griptape_cloud_storage_driver.py,sha256=
|
|
25
|
-
griptape_nodes/drivers/storage/local_storage_driver.py,sha256=
|
|
14
|
+
griptape_nodes/drivers/storage/base_storage_driver.py,sha256=4a0f8cce3eeb4398c0da77def3cf14ee773af7f47ce59f73bc568d655c914b53,2467
|
|
15
|
+
griptape_nodes/drivers/storage/griptape_cloud_storage_driver.py,sha256=f7447cd3dbd300ec3aa58b8ff7195d52d059ade1323e22acae10dd03170c8a9f,7781
|
|
16
|
+
griptape_nodes/drivers/storage/local_storage_driver.py,sha256=3e912fb41fd35a0e5cd04e5fafe3c3fd55b57d805336c9b8045d480d65153d46,3488
|
|
26
17
|
griptape_nodes/drivers/storage/storage_backend.py,sha256=dd0048c2b80f73592b04888f60ba0adacc2120f0e22899e7b9c384772c7bcb77,184
|
|
27
18
|
griptape_nodes/exe_types/__init__.py,sha256=c061b02865fdf9349aad415b5e90ef754fc9ede5c86d64c197f3422ce65af86f,32
|
|
28
19
|
griptape_nodes/exe_types/connections.py,sha256=ffe54dcdfe8a6b2eb6433265497f8b9474d4873f82285f940ec6d92c9d25e969,12435
|
|
29
|
-
griptape_nodes/exe_types/core_types.py,sha256=
|
|
20
|
+
griptape_nodes/exe_types/core_types.py,sha256=0aeefb74e0549b0f39d3b55ccadd375a67ccb6861e4300ed41e41b2432032618,61398
|
|
30
21
|
griptape_nodes/exe_types/flow.py,sha256=a42793af1f32ad480bc3553dc90c42edaaf3263c8fdaf6a0fa91b44132aeb7e3,5716
|
|
31
|
-
griptape_nodes/exe_types/node_types.py,sha256=
|
|
22
|
+
griptape_nodes/exe_types/node_types.py,sha256=a0dc8f7da9f315ac07713ab28d4d84d14b67a0b82f005f6aefe07263f4649b2c,46461
|
|
32
23
|
griptape_nodes/exe_types/type_validator.py,sha256=453cf5bd7d3d8f34291e1a33213309d2c88e6545efb0444386b0298dd68cd563,1120
|
|
33
24
|
griptape_nodes/machines/__init__.py,sha256=bf48e4c2bf8214e2e67c461442f5fc04a40b39dbe14ac03ab685e474770f1941,30
|
|
34
|
-
griptape_nodes/machines/control_flow.py,sha256=
|
|
25
|
+
griptape_nodes/machines/control_flow.py,sha256=ac7e9d4555eb0aa5c30cfa182d4df542e661f24b8871113bb26962de917451d5,9843
|
|
35
26
|
griptape_nodes/machines/fsm.py,sha256=83a7c5c9ea0d6c8711fe1eb732dd0bdac7233ae58984ac9942c9f170cf2960f5,2248
|
|
36
|
-
griptape_nodes/machines/node_resolution.py,sha256=
|
|
27
|
+
griptape_nodes/machines/node_resolution.py,sha256=ddd63c80a6c0ead759a1874d1f0cc835982d80563aec31879471a2a7ad60e12b,22065
|
|
37
28
|
griptape_nodes/mcp_server/__init__.py,sha256=192a495aa13894809aaf286c411d6891e307db1ea3d5b04bd07571b6be7658b8,42
|
|
38
|
-
griptape_nodes/mcp_server/server.py,sha256=
|
|
29
|
+
griptape_nodes/mcp_server/server.py,sha256=c53f5ad20677ebadd1a3da5173817969aef37b7ba96d2539a8b3ce7a9fd16a0c,5058
|
|
39
30
|
griptape_nodes/mcp_server/ws_request_manager.py,sha256=44c8d6cdf55eee12682afce81657687c7652cad51b8ad00737266dc942781802,10935
|
|
40
31
|
griptape_nodes/node_library/__init__.py,sha256=53715c49d9aae945bbaade84dd4a773562af5049f9ff996a2febb9a9bcdfc4c4,28
|
|
41
32
|
griptape_nodes/node_library/advanced_node_library.py,sha256=07565ac6e148cd0eadc7fdcc2c8c65b07b9a86d8440b51f0fede8afc1c88773b,2104
|
|
@@ -45,35 +36,35 @@ griptape_nodes/py.typed,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca
|
|
|
45
36
|
griptape_nodes/retained_mode/__init__.py,sha256=5f5d8328be8a84bb224533c896b3e3da1efafec274ab4787e2bd24310928766d,29
|
|
46
37
|
griptape_nodes/retained_mode/events/__init__.py,sha256=ec1d42f9cd2356f9d286d1c9da57d7e8164f1345350e04308357b80e8ae1286d,22
|
|
47
38
|
griptape_nodes/retained_mode/events/agent_events.py,sha256=c720ad47e1dfd6fbfa16dfb3d00b74cad20c60145c918ca6a71741c95657ac21,4880
|
|
48
|
-
griptape_nodes/retained_mode/events/app_events.py,sha256=
|
|
39
|
+
griptape_nodes/retained_mode/events/app_events.py,sha256=1e3e4d246a8a9a97de592f20664140f017aad0c5f07bf7bf10bdaffe83385cfb,8358
|
|
49
40
|
griptape_nodes/retained_mode/events/arbitrary_python_events.py,sha256=ba17a9d5cd718d473e6103b99c84ad004e3c3d2eab1592d30d022bfd06f7c1ef,1460
|
|
50
|
-
griptape_nodes/retained_mode/events/base_events.py,sha256=
|
|
41
|
+
griptape_nodes/retained_mode/events/base_events.py,sha256=764e0d680015897872b73e85f9c4873e38439a8a90811b1b42e0397eb8c90aa1,19738
|
|
51
42
|
griptape_nodes/retained_mode/events/config_events.py,sha256=f56845c7a983ed017f87595d1403d113f88bb6b40100512f03afccce118ea269,6129
|
|
52
43
|
griptape_nodes/retained_mode/events/connection_events.py,sha256=4231c0a7449e09b4521be745fe753f08f68e712288b6ad83589fc51d6805d5be,4744
|
|
53
44
|
griptape_nodes/retained_mode/events/context_events.py,sha256=f852308c8d2126874385f338045fb719347272ef34bf54e5492397df8a00f670,2122
|
|
54
45
|
griptape_nodes/retained_mode/events/execution_events.py,sha256=cf545a90018942b354994e9253a7af5d295d3dd952970d20066eff4b5e49684a,9946
|
|
55
|
-
griptape_nodes/retained_mode/events/flow_events.py,sha256=
|
|
46
|
+
griptape_nodes/retained_mode/events/flow_events.py,sha256=084eda147bc1c98ea28b4848fbf43dba41090db1e4eb92d4791061ae31a4c5b4,14139
|
|
56
47
|
griptape_nodes/retained_mode/events/generate_request_payload_schemas.py,sha256=3d0d104590140658d22068c1f1085851e4664ab7e62ec27a5d57328092a2d772,1102
|
|
57
48
|
griptape_nodes/retained_mode/events/library_events.py,sha256=f4a54c1c0e556b36377d71089b7d599b2fab278dc0c4d8276b84b354f9b2f0f8,17629
|
|
58
49
|
griptape_nodes/retained_mode/events/logger_events.py,sha256=8d8971ccfa26802b09b8fb49d339d60610fc4097c2f2a0b8c5f0a10e2b95bb28,705
|
|
59
|
-
griptape_nodes/retained_mode/events/node_events.py,sha256=
|
|
50
|
+
griptape_nodes/retained_mode/events/node_events.py,sha256=69b90367737ff7fb79f7976a9ff5e438e6bc414cf0d797d9c6481ed2a5e81ac5,25587
|
|
60
51
|
griptape_nodes/retained_mode/events/object_events.py,sha256=7096aa114ef72f37f5451c49ac5a84a65f1e4ebfa00e12a95cacb027ebd50894,2631
|
|
61
|
-
griptape_nodes/retained_mode/events/os_events.py,sha256=
|
|
52
|
+
griptape_nodes/retained_mode/events/os_events.py,sha256=5f49a6ca4febe6deaea5a43c7960a50fb276e40897da082c02ec4c6525bd571d,8085
|
|
62
53
|
griptape_nodes/retained_mode/events/parameter_events.py,sha256=9f93c22ff4f9cf192d5f7852caaa43b1eced26b4fafd18d2f65bba0263410ead,18411
|
|
63
54
|
griptape_nodes/retained_mode/events/payload_registry.py,sha256=abec3152aa7adef84d8fe3e5d491891e706485479f70202b3e830ddca0511042,1691
|
|
64
55
|
griptape_nodes/retained_mode/events/secrets_events.py,sha256=52788b47e7c7ece3be71a48608f0c26587fc67476b04aaa845c8ef358ed8dc7b,4021
|
|
65
56
|
griptape_nodes/retained_mode/events/static_file_events.py,sha256=73c90a92bc403d9c6b13d7ec95da56b7078ad42e13fb5f9d1d6c3fefa4917a13,3764
|
|
66
57
|
griptape_nodes/retained_mode/events/validation_events.py,sha256=1f6c96a07a76b7b430195fdf0d05d1cbb2688d89cae24e92380944bd16124ff4,3062
|
|
67
58
|
griptape_nodes/retained_mode/events/workflow_events.py,sha256=e95f33b169dff0c6c16763a2dfacda33f6bb7593b9a0e96afe22313cbfa0f099,11138
|
|
68
|
-
griptape_nodes/retained_mode/griptape_nodes.py,sha256=
|
|
59
|
+
griptape_nodes/retained_mode/griptape_nodes.py,sha256=329eb23161f0758e29a714c6812ded0258aa7813271d135eb0a33cba82d94ceb,24245
|
|
69
60
|
griptape_nodes/retained_mode/managers/__init__.py,sha256=3935f2b0abaca980907806309d58f83db137331bc0513abdc4e653eaf504dc90,24
|
|
70
61
|
griptape_nodes/retained_mode/managers/agent_manager.py,sha256=766417a01aa7a807307aa3290f5af0f1ebc4facc713706c58d4759eadc292890,11038
|
|
71
62
|
griptape_nodes/retained_mode/managers/arbitrary_code_exec_manager.py,sha256=427a88dbf2240e973d487cdb6fe8f0b326249bdd56d15f642e5c404546db5542,1777
|
|
72
|
-
griptape_nodes/retained_mode/managers/config_manager.py,sha256=
|
|
63
|
+
griptape_nodes/retained_mode/managers/config_manager.py,sha256=1c9566a88bbda358fc946cb0374094c5343e110134bd82766000f44741471bb5,25402
|
|
73
64
|
griptape_nodes/retained_mode/managers/context_manager.py,sha256=0e218d874f5367baec2c4717aaa07d62b87689eb41cb9f4b3c5ec6334381412f,22930
|
|
74
65
|
griptape_nodes/retained_mode/managers/engine_identity_manager.py,sha256=181073ec72412553725cb191740bea0e08a131107f6235aa744c0b3029da7548,4409
|
|
75
66
|
griptape_nodes/retained_mode/managers/event_manager.py,sha256=ac6a1e18ed004d977dc3c1a6d510c7a0e0c363227e5eac6218989d6228c7fd06,7201
|
|
76
|
-
griptape_nodes/retained_mode/managers/flow_manager.py,sha256=
|
|
67
|
+
griptape_nodes/retained_mode/managers/flow_manager.py,sha256=e461615747894cdcabdcc137a67278b5f331d51c598bbfb0c23316b92ac84afd,106880
|
|
77
68
|
griptape_nodes/retained_mode/managers/library_lifecycle/__init__.py,sha256=22aefd5714dd113884c417c559771e26080366a4ba5f73a4cd713d5f015c955c,1340
|
|
78
69
|
griptape_nodes/retained_mode/managers/library_lifecycle/data_models.py,sha256=7ef00fd1569818f1d897f2a0dd12f881d265a6ac9af144efa4ff82e3dafde749,6723
|
|
79
70
|
griptape_nodes/retained_mode/managers/library_lifecycle/library_directory.py,sha256=c44e88de3196c524a452db9979bc24d00bee9083f62732c1378b4daaafcc126d,14758
|
|
@@ -86,17 +77,17 @@ griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/packa
|
|
|
86
77
|
griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/sandbox.py,sha256=df6b23dba767b3cbaf408654c47366083b0ac975190cffcf34a89f5cf5167878,6111
|
|
87
78
|
griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance.py,sha256=7021abf8c4354655418944d97a960429d5613e00b879b718ae6a6ff2b23755e3,894
|
|
88
79
|
griptape_nodes/retained_mode/managers/library_lifecycle/library_status.py,sha256=2b750407301d098f70a61c816cbc4360fd10e37698be12d9fcfcfbfd2cdc3de7,443
|
|
89
|
-
griptape_nodes/retained_mode/managers/library_manager.py,sha256=
|
|
90
|
-
griptape_nodes/retained_mode/managers/node_manager.py,sha256=
|
|
80
|
+
griptape_nodes/retained_mode/managers/library_manager.py,sha256=4b79e16b20ca04ec433903ffdc36e02fb000f2f244c6b527d8099679217d0655,98137
|
|
81
|
+
griptape_nodes/retained_mode/managers/node_manager.py,sha256=51d6e30a62b4476357e392884707e2fa35e8068bade4961765316e1d944613dc,132979
|
|
91
82
|
griptape_nodes/retained_mode/managers/object_manager.py,sha256=1c03325b63a7adb75898ecd14aa9af6e9c8a83a78edf050493afb608ff4441cc,12243
|
|
92
83
|
griptape_nodes/retained_mode/managers/operation_manager.py,sha256=ea71f1d5f003763ee7cade5d22b34db92911dfad97811d4031511223550217aa,19746
|
|
93
|
-
griptape_nodes/retained_mode/managers/os_manager.py,sha256=
|
|
84
|
+
griptape_nodes/retained_mode/managers/os_manager.py,sha256=d96eacd389f6235f94ad3277240204ddd116f488b833eaeae7aec7872a685002,33870
|
|
94
85
|
griptape_nodes/retained_mode/managers/secrets_manager.py,sha256=b86963e4c00be647d2870134c919f9cb0b8870d1943fda8eabd48bb77be44e32,6219
|
|
95
86
|
griptape_nodes/retained_mode/managers/session_manager.py,sha256=7cb8ed06f80663775aab5bdba493d7ab4ebd9f7e59f99af9745dc1d17c83d896,11817
|
|
96
87
|
griptape_nodes/retained_mode/managers/settings.py,sha256=a12f930e6cfc2162012be3ac8c86d384d7e29c03b36a825b0d4486953393fe7c,4439
|
|
97
88
|
griptape_nodes/retained_mode/managers/static_files_manager.py,sha256=45b40719e26045aeed08627089fd2119531b11590781a52de05078e0c711c560,7129
|
|
98
89
|
griptape_nodes/retained_mode/managers/version_compatibility_manager.py,sha256=4dec32a89fc377d306821a22b129ddbaa0fcc00388302a354d93ffdc0ca7cbad,4386
|
|
99
|
-
griptape_nodes/retained_mode/managers/workflow_manager.py,sha256=
|
|
90
|
+
griptape_nodes/retained_mode/managers/workflow_manager.py,sha256=f275d749ab06387a84b7a74577c1be3f9d35f86862c70a17c2ffd79a215d4510,140667
|
|
100
91
|
griptape_nodes/retained_mode/retained_mode.py,sha256=d9c8d20f517f001a6e2fc926fe71a9027da1e538a3795efbaabd5e3c7fc15998,56272
|
|
101
92
|
griptape_nodes/retained_mode/utils/__init__.py,sha256=5b976fbfc630bd556affc7954e031ddd9fd507f0edab5b08215abcef8e501ff2,52
|
|
102
93
|
griptape_nodes/retained_mode/utils/engine_identity.py,sha256=3d999d95833af7e07ee99d45e2225f672566dadc096397121a8894242323d315,7846
|
|
@@ -107,7 +98,7 @@ griptape_nodes/traits/button.py,sha256=ae9410efb012287dd825a6dce565b0f43a441d088
|
|
|
107
98
|
griptape_nodes/traits/clamp.py,sha256=0595478967c135e3d668f31a2f23a0b5c5b390cecbb3885c3e59bf69f986888b,1030
|
|
108
99
|
griptape_nodes/traits/compare.py,sha256=5fe05719e9910f1415e045fc5f6e0b76d730316c1f4358c6a83bc7d9b4a24ae7,521
|
|
109
100
|
griptape_nodes/traits/compare_images.py,sha256=296d16970b093fa9c1a02d62add7919d45949d9209be544e9438725a15fc884b,1594
|
|
110
|
-
griptape_nodes/traits/file_system_picker.py,sha256=
|
|
101
|
+
griptape_nodes/traits/file_system_picker.py,sha256=a7e45a1f8c706f6168d30b85b186ec88beba5b6dca744497d10aba100b43163f,5806
|
|
111
102
|
griptape_nodes/traits/minmax.py,sha256=795c92af3d3658fbe9c1b4aba96ec545399eb4d04e04ac9ff18ad7af3c8e1a79,1312
|
|
112
103
|
griptape_nodes/traits/options.py,sha256=2a3ee2b30d179212358e608262e5cfeb74ddf0af2b836d67182efbba5b4d5e72,1096
|
|
113
104
|
griptape_nodes/traits/slider.py,sha256=6cb7b8ea0b429a384c087686cd4b2d216309bf6665d9879eedf913ea0e10e919,1236
|
|
@@ -119,11 +110,12 @@ griptape_nodes/utils/__init__.py,sha256=e7e36fa95bf18b0b91c76520cb37a7b8b157ca87
|
|
|
119
110
|
griptape_nodes/utils/dict_utils.py,sha256=932962e4c39fcd2a2bd1af259977d80554bf35719fe942b548cea4fd09f96ecf,6889
|
|
120
111
|
griptape_nodes/utils/image_preview.py,sha256=361608aa885117dbdb16958812f64774f2cb3cafc975406f0b846f340b126b5c,4480
|
|
121
112
|
griptape_nodes/utils/metaclasses.py,sha256=4522b202f669a47fe16ccba0994988afc42a3a0d6c618e2e44d7d0c9b0f83bc4,287
|
|
113
|
+
griptape_nodes/utils/version_utils.py,sha256=f601cb158cd089036bec69ed7466d74e524e3dfdeaf1f6692024c7a38b001646,1649
|
|
122
114
|
griptape_nodes/version_compatibility/__init__.py,sha256=24ccf5b01ed9b23ea94b54b9b1db0f474927f3db35034b01d24148bf280961fa,74
|
|
123
115
|
griptape_nodes/version_compatibility/versions/__init__.py,sha256=3d64b1336f0b3d47417513c0f7c8f84545afb99e0da9f5f575acb6554e92a8fc,74
|
|
124
116
|
griptape_nodes/version_compatibility/versions/v0_39_0/__init__.py,sha256=db588a945a6c9815b85ac01ec520f458c0099ec62632adac21b0de602f37d5f7,62
|
|
125
117
|
griptape_nodes/version_compatibility/versions/v0_39_0/modified_parameters_set_removal.py,sha256=cf885751e64d4a5909ef1c06e8744921279603b880b592ca4214e24efca14b09,5262
|
|
126
|
-
griptape_nodes-0.
|
|
127
|
-
griptape_nodes-0.
|
|
128
|
-
griptape_nodes-0.
|
|
129
|
-
griptape_nodes-0.
|
|
118
|
+
griptape_nodes-0.44.0.dist-info/WHEEL,sha256=b6dc288e80aa2d1b1518ddb3502fd5b53e8fd6cb507ed2a4f932e9e6088b264a,78
|
|
119
|
+
griptape_nodes-0.44.0.dist-info/entry_points.txt,sha256=aaf7afa9ddc155b015e5371a9ed9c09b4a2ea9aa982a1b113b7a641729962d63,82
|
|
120
|
+
griptape_nodes-0.44.0.dist-info/METADATA,sha256=d37edb62a82a28101836046f3059951b4e72dc42bde8d19c8dd269dd2a2d2c9a,4947
|
|
121
|
+
griptape_nodes-0.44.0.dist-info/RECORD,,
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import argparse
|
|
2
|
-
import json
|
|
3
|
-
import logging
|
|
4
|
-
|
|
5
|
-
from dotenv import load_dotenv
|
|
6
|
-
|
|
7
|
-
from griptape_nodes.bootstrap.workflow_runners.bootstrap_workflow_runner import BootstrapWorkflowRunner
|
|
8
|
-
|
|
9
|
-
logging.basicConfig(
|
|
10
|
-
level=logging.INFO,
|
|
11
|
-
)
|
|
12
|
-
logger = logging.getLogger(__name__)
|
|
13
|
-
logger.setLevel(logging.INFO)
|
|
14
|
-
|
|
15
|
-
load_dotenv()
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if __name__ == "__main__":
|
|
19
|
-
parser = argparse.ArgumentParser()
|
|
20
|
-
parser.add_argument(
|
|
21
|
-
"-n",
|
|
22
|
-
"--workflow-name",
|
|
23
|
-
default=None,
|
|
24
|
-
help="Set the Flow Name to run",
|
|
25
|
-
)
|
|
26
|
-
parser.add_argument(
|
|
27
|
-
"-i",
|
|
28
|
-
"--input",
|
|
29
|
-
default=None,
|
|
30
|
-
help="The input to the flow",
|
|
31
|
-
)
|
|
32
|
-
parser.add_argument(
|
|
33
|
-
"-s",
|
|
34
|
-
"--storage-backend",
|
|
35
|
-
default="local",
|
|
36
|
-
help="The storage backend to use",
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
args = parser.parse_args()
|
|
40
|
-
workflow_name = args.workflow_name
|
|
41
|
-
flow_input = args.input
|
|
42
|
-
storage_backend = args.storage_backend
|
|
43
|
-
|
|
44
|
-
try:
|
|
45
|
-
flow_input = json.loads(flow_input) if flow_input else {}
|
|
46
|
-
except Exception as e:
|
|
47
|
-
msg = f"Error decoding JSON input: {e}"
|
|
48
|
-
logger.info(msg)
|
|
49
|
-
raise
|
|
50
|
-
|
|
51
|
-
workflow_runner = BootstrapWorkflowRunner()
|
|
52
|
-
workflow_runner.run(
|
|
53
|
-
workflow_path="workflow.py", workflow_name=workflow_name, flow_input=flow_input, storage_backend=storage_backend
|
|
54
|
-
)
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
|
|
3
|
-
from griptape_nodes.retained_mode.events.library_events import RegisterLibraryFromFileRequest
|
|
4
|
-
from griptape_nodes.retained_mode.griptape_nodes import GriptapeNodes
|
|
5
|
-
|
|
6
|
-
logging.basicConfig(
|
|
7
|
-
level=logging.INFO,
|
|
8
|
-
)
|
|
9
|
-
logger = logging.getLogger(__name__)
|
|
10
|
-
|
|
11
|
-
PATHS = ["REPLACE_LIBRARY_PATHS"]
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
def register_libraries(library_paths: list[str]) -> None:
|
|
15
|
-
"""Register libraries from the specified paths.
|
|
16
|
-
|
|
17
|
-
Args:
|
|
18
|
-
library_paths (list[str]): A list of paths to the libraries to register.
|
|
19
|
-
"""
|
|
20
|
-
for library_path in library_paths:
|
|
21
|
-
msg = f"Registering library from {library_path}"
|
|
22
|
-
logger.info(msg)
|
|
23
|
-
register_library_request = RegisterLibraryFromFileRequest(file_path=library_path)
|
|
24
|
-
register_library_result = GriptapeNodes.handle_request(register_library_request)
|
|
25
|
-
|
|
26
|
-
if register_library_result.failed():
|
|
27
|
-
msg = f"Failed to register library from {library_path}"
|
|
28
|
-
raise ValueError(msg)
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if __name__ == "__main__":
|
|
32
|
-
register_libraries(PATHS)
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
version: 1.0
|
|
2
|
-
runtime: python3
|
|
3
|
-
runtime_version: 3.12
|
|
4
|
-
build:
|
|
5
|
-
pre_build_install_script: pre_build_install_script.sh
|
|
6
|
-
post_build_install_script: post_build_install_script.sh
|
|
7
|
-
requirements_file: requirements.txt
|
|
8
|
-
cache_build_dependencies: # Configures caching (for faster deployments!)
|
|
9
|
-
enabled: true # Toggles caching
|
|
10
|
-
watched_files: # List of files that will trigger a full rebuild of the Structure
|
|
11
|
-
- requirements.txt
|
|
12
|
-
- structure_config.yaml
|
|
13
|
-
run:
|
|
14
|
-
main_file: structure.py
|
|
15
|
-
run_as_module: true
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"""Workflow runners package."""
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import json
|
|
2
|
-
import os
|
|
3
|
-
|
|
4
|
-
from griptape.artifacts import TextArtifact
|
|
5
|
-
from griptape.drivers.event_listener.griptape_cloud_event_listener_driver import GriptapeCloudEventListenerDriver
|
|
6
|
-
from griptape.events import FinishStructureRunEvent
|
|
7
|
-
from register_libraries_script import PATHS # type: ignore[import] - This import is used in the runtime environment
|
|
8
|
-
|
|
9
|
-
from griptape_nodes.bootstrap.workflow_runners.local_workflow_runner import LocalWorkflowRunner
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class BootstrapWorkflowRunner(LocalWorkflowRunner):
|
|
13
|
-
def __init__(self) -> None:
|
|
14
|
-
super().__init__(libraries=PATHS)
|
|
15
|
-
|
|
16
|
-
def _submit_output(self, output: dict) -> None:
|
|
17
|
-
if "GT_CLOUD_STRUCTURE_RUN_ID" in os.environ:
|
|
18
|
-
kwargs: dict = {
|
|
19
|
-
"batched": False,
|
|
20
|
-
}
|
|
21
|
-
if "GT_CLOUD_BASE_URL" in os.environ:
|
|
22
|
-
base_url = os.environ["GT_CLOUD_BASE_URL"]
|
|
23
|
-
if "http://localhost" in base_url or "http://127.0.0.1" in base_url:
|
|
24
|
-
kwargs["headers"] = {}
|
|
25
|
-
gtc_event_listener = GriptapeCloudEventListenerDriver(**kwargs)
|
|
26
|
-
gtc_event_listener.try_publish_event_payload(
|
|
27
|
-
FinishStructureRunEvent(output_task_output=TextArtifact(json.dumps(output))).to_dict()
|
|
28
|
-
)
|
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
import importlib.util
|
|
2
|
-
import logging
|
|
3
|
-
import sys
|
|
4
|
-
from pathlib import Path
|
|
5
|
-
from queue import Queue
|
|
6
|
-
from typing import Any
|
|
7
|
-
|
|
8
|
-
from griptape.events import BaseEvent, EventBus, EventListener
|
|
9
|
-
|
|
10
|
-
from griptape_nodes.bootstrap.register_libraries_script import register_libraries
|
|
11
|
-
from griptape_nodes.bootstrap.workflow_runners.workflow_runner import WorkflowRunner
|
|
12
|
-
from griptape_nodes.exe_types.node_types import EndNode, StartNode
|
|
13
|
-
from griptape_nodes.retained_mode.events.base_events import (
|
|
14
|
-
AppEvent,
|
|
15
|
-
EventRequest,
|
|
16
|
-
ExecutionGriptapeNodeEvent,
|
|
17
|
-
GriptapeNodeEvent,
|
|
18
|
-
ProgressEvent,
|
|
19
|
-
)
|
|
20
|
-
from griptape_nodes.retained_mode.events.execution_events import SingleExecutionStepRequest, StartFlowRequest
|
|
21
|
-
from griptape_nodes.retained_mode.events.parameter_events import SetParameterValueRequest
|
|
22
|
-
from griptape_nodes.retained_mode.griptape_nodes import GriptapeNodes
|
|
23
|
-
|
|
24
|
-
logger = logging.getLogger(__name__)
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
class LocalWorkflowRunner(WorkflowRunner):
|
|
28
|
-
def __init__(self, libraries: list[Path]) -> None:
|
|
29
|
-
self.registered_libraries = False
|
|
30
|
-
self.libraries = libraries
|
|
31
|
-
self.queue = Queue()
|
|
32
|
-
|
|
33
|
-
def _load_user_workflow(self, path_to_workflow: str) -> None:
|
|
34
|
-
# Ensure file_path is a Path object
|
|
35
|
-
file_path = Path(path_to_workflow)
|
|
36
|
-
|
|
37
|
-
# Generate a unique module name
|
|
38
|
-
module_name = f"gtn_dynamic_module_{file_path.name.replace('.', '_')}_{hash(str(file_path))}"
|
|
39
|
-
|
|
40
|
-
# Load the module specification
|
|
41
|
-
spec = importlib.util.spec_from_file_location(module_name, file_path)
|
|
42
|
-
if spec is None or spec.loader is None:
|
|
43
|
-
msg = f"Could not load module specification from {file_path}"
|
|
44
|
-
raise ImportError(msg)
|
|
45
|
-
|
|
46
|
-
# Create the module
|
|
47
|
-
module = importlib.util.module_from_spec(spec)
|
|
48
|
-
|
|
49
|
-
# Add to sys.modules to handle recursive imports
|
|
50
|
-
sys.modules[module_name] = module
|
|
51
|
-
|
|
52
|
-
# Execute the module
|
|
53
|
-
spec.loader.exec_module(module)
|
|
54
|
-
|
|
55
|
-
def _load_flow_for_workflow(self) -> str:
|
|
56
|
-
context_manager = GriptapeNodes.ContextManager()
|
|
57
|
-
return context_manager.get_current_flow().name
|
|
58
|
-
|
|
59
|
-
def _set_storage_backend(self, storage_backend: str) -> None:
|
|
60
|
-
from griptape_nodes.retained_mode.managers.config_manager import ConfigManager
|
|
61
|
-
|
|
62
|
-
config_manager = ConfigManager()
|
|
63
|
-
config_manager.set_config_value(
|
|
64
|
-
key="storage_backend",
|
|
65
|
-
value=storage_backend,
|
|
66
|
-
)
|
|
67
|
-
|
|
68
|
-
def _register_libraries(self) -> None:
|
|
69
|
-
if not self.registered_libraries:
|
|
70
|
-
register_libraries([str(p) for p in self.libraries])
|
|
71
|
-
self.registered_libraries = True
|
|
72
|
-
|
|
73
|
-
def _set_workflow_context(self, workflow_name: str) -> None:
|
|
74
|
-
context_manager = GriptapeNodes.ContextManager()
|
|
75
|
-
context_manager.push_workflow(workflow_name=workflow_name)
|
|
76
|
-
|
|
77
|
-
def _handle_event(self, event: BaseEvent) -> None:
|
|
78
|
-
try:
|
|
79
|
-
if isinstance(event, GriptapeNodeEvent):
|
|
80
|
-
self.__handle_node_event(event)
|
|
81
|
-
elif isinstance(event, ExecutionGriptapeNodeEvent):
|
|
82
|
-
self.__handle_execution_node_event(event)
|
|
83
|
-
elif isinstance(event, ProgressEvent):
|
|
84
|
-
self.__handle_progress_event(event)
|
|
85
|
-
elif isinstance(event, AppEvent):
|
|
86
|
-
self.__handle_app_event(event)
|
|
87
|
-
else:
|
|
88
|
-
msg = f"Unknown event type: {type(event)}"
|
|
89
|
-
logger.info(msg)
|
|
90
|
-
self.queue.put(event)
|
|
91
|
-
except Exception as e:
|
|
92
|
-
logger.info(e)
|
|
93
|
-
|
|
94
|
-
def __handle_node_event(self, event: GriptapeNodeEvent) -> None:
|
|
95
|
-
result_event = event.wrapped_event
|
|
96
|
-
event_json = result_event.json()
|
|
97
|
-
event_log = f"GriptapeNodeEvent: {event_json}"
|
|
98
|
-
logger.info(event_log)
|
|
99
|
-
|
|
100
|
-
def __handle_execution_node_event(self, event: ExecutionGriptapeNodeEvent) -> None:
|
|
101
|
-
result_event = event.wrapped_event
|
|
102
|
-
if type(result_event.payload).__name__ == "NodeStartProcessEvent":
|
|
103
|
-
event_log = f"NodeStartProcessEvent: {result_event.payload}"
|
|
104
|
-
logger.info(event_log)
|
|
105
|
-
|
|
106
|
-
elif type(result_event.payload).__name__ == "ResumeNodeProcessingEvent":
|
|
107
|
-
event_log = f"ResumeNodeProcessingEvent: {result_event.payload}"
|
|
108
|
-
logger.info(event_log)
|
|
109
|
-
|
|
110
|
-
# Here we need to handle the resume event since this is the callback mechanism
|
|
111
|
-
# for the flow to be resumed for any Node that yields a generator in its process method.
|
|
112
|
-
node_name = result_event.payload.node_name
|
|
113
|
-
flow_name = GriptapeNodes.NodeManager().get_node_parent_flow_by_name(node_name)
|
|
114
|
-
event_request = EventRequest(request=SingleExecutionStepRequest(flow_name=flow_name))
|
|
115
|
-
GriptapeNodes.handle_request(event_request.request)
|
|
116
|
-
|
|
117
|
-
elif type(result_event.payload).__name__ == "NodeFinishProcessEvent":
|
|
118
|
-
event_log = f"NodeFinishProcessEvent: {result_event.payload}"
|
|
119
|
-
logger.info(event_log)
|
|
120
|
-
|
|
121
|
-
else:
|
|
122
|
-
event_log = f"ExecutionGriptapeNodeEvent: {result_event.payload}"
|
|
123
|
-
logger.info(event_log)
|
|
124
|
-
|
|
125
|
-
self.queue.put(event)
|
|
126
|
-
|
|
127
|
-
def __handle_progress_event(self, gt_event: ProgressEvent) -> None:
|
|
128
|
-
event_log = f"ProgressEvent: {gt_event}"
|
|
129
|
-
logger.info(event_log)
|
|
130
|
-
|
|
131
|
-
def __handle_app_event(self, event: AppEvent) -> None:
|
|
132
|
-
event_log = f"AppEvent: {event.payload}"
|
|
133
|
-
logger.info(event_log)
|
|
134
|
-
|
|
135
|
-
def _submit_output(self, output: dict) -> None:
|
|
136
|
-
self.output = output
|
|
137
|
-
|
|
138
|
-
def _set_input_for_flow(self, flow_name: str, flow_input: dict[str, dict]) -> None:
|
|
139
|
-
control_flow = GriptapeNodes.FlowManager().get_flow_by_name(flow_name)
|
|
140
|
-
nodes = control_flow.nodes
|
|
141
|
-
for node_name, node in nodes.items():
|
|
142
|
-
if isinstance(node, StartNode):
|
|
143
|
-
param_map: dict | None = flow_input.get(node_name)
|
|
144
|
-
if param_map is not None:
|
|
145
|
-
for parameter_name, parameter_value in param_map.items():
|
|
146
|
-
set_parameter_value_request = SetParameterValueRequest(
|
|
147
|
-
parameter_name=parameter_name,
|
|
148
|
-
value=parameter_value,
|
|
149
|
-
node_name=node_name,
|
|
150
|
-
)
|
|
151
|
-
set_parameter_value_result = GriptapeNodes.handle_request(set_parameter_value_request)
|
|
152
|
-
|
|
153
|
-
if set_parameter_value_result.failed():
|
|
154
|
-
msg = f"Failed to set parameter {parameter_name} for node {node_name}."
|
|
155
|
-
raise ValueError(msg)
|
|
156
|
-
|
|
157
|
-
def _get_output_for_flow(self, flow_name: str) -> dict:
|
|
158
|
-
control_flow = GriptapeNodes.FlowManager().get_flow_by_name(flow_name)
|
|
159
|
-
nodes = control_flow.nodes
|
|
160
|
-
output = {}
|
|
161
|
-
for node_name, node in nodes.items():
|
|
162
|
-
if isinstance(node, EndNode):
|
|
163
|
-
output[node_name] = node.parameter_values
|
|
164
|
-
|
|
165
|
-
return output
|
|
166
|
-
|
|
167
|
-
def run(self, workflow_path: str, workflow_name: str, flow_input: Any, storage_backend: str = "local") -> None:
|
|
168
|
-
"""Executes a published workflow.
|
|
169
|
-
|
|
170
|
-
Executes a workflow by setting up event listeners, registering libraries,
|
|
171
|
-
loading the user-defined workflow, and running the specified workflow.
|
|
172
|
-
|
|
173
|
-
Parameters:
|
|
174
|
-
workflow_name: The name of the workflow to execute.
|
|
175
|
-
flow_input: Input data for the flow, typically a dictionary.
|
|
176
|
-
|
|
177
|
-
Returns:
|
|
178
|
-
None
|
|
179
|
-
"""
|
|
180
|
-
EventBus.add_event_listener(
|
|
181
|
-
event_listener=EventListener(
|
|
182
|
-
on_event=self._handle_event,
|
|
183
|
-
)
|
|
184
|
-
)
|
|
185
|
-
|
|
186
|
-
# Set the storage backend
|
|
187
|
-
self._set_storage_backend(storage_backend=storage_backend)
|
|
188
|
-
|
|
189
|
-
# Register all of our relevant libraries
|
|
190
|
-
self._register_libraries()
|
|
191
|
-
|
|
192
|
-
# Required to set the workflow_context before loading the workflow
|
|
193
|
-
# or nothing works. The name can be anything, but how about the workflow_name.
|
|
194
|
-
self._set_workflow_context(workflow_name=workflow_name)
|
|
195
|
-
self._load_user_workflow(workflow_path)
|
|
196
|
-
flow_name = self._load_flow_for_workflow()
|
|
197
|
-
# Now let's set the input to the flow
|
|
198
|
-
self._set_input_for_flow(flow_name=flow_name, flow_input=flow_input)
|
|
199
|
-
|
|
200
|
-
# Now send the run command to actually execute it
|
|
201
|
-
start_flow_request = StartFlowRequest(flow_name=flow_name)
|
|
202
|
-
start_flow_result = GriptapeNodes.handle_request(start_flow_request)
|
|
203
|
-
|
|
204
|
-
if start_flow_result.failed():
|
|
205
|
-
msg = f"Failed to start flow {workflow_name}"
|
|
206
|
-
raise ValueError(msg)
|
|
207
|
-
|
|
208
|
-
logger.info("Workflow started!")
|
|
209
|
-
|
|
210
|
-
# Wait for the control flow to finish
|
|
211
|
-
is_flow_finished = False
|
|
212
|
-
error: Exception | None = None
|
|
213
|
-
while not is_flow_finished:
|
|
214
|
-
try:
|
|
215
|
-
event = self.queue.get(block=True)
|
|
216
|
-
|
|
217
|
-
if isinstance(event, ExecutionGriptapeNodeEvent):
|
|
218
|
-
result_event = event.wrapped_event
|
|
219
|
-
|
|
220
|
-
if type(result_event.payload).__name__ == "ControlFlowResolvedEvent":
|
|
221
|
-
self._submit_output(self._get_output_for_flow(flow_name=flow_name))
|
|
222
|
-
is_flow_finished = True
|
|
223
|
-
logger.info("Workflow finished!")
|
|
224
|
-
elif type(result_event.payload).__name__ == "ControlFlowCancelledEvent":
|
|
225
|
-
msg = "Control flow cancelled"
|
|
226
|
-
is_flow_finished = True
|
|
227
|
-
logger.error(msg)
|
|
228
|
-
error = ValueError(msg)
|
|
229
|
-
|
|
230
|
-
self.queue.task_done()
|
|
231
|
-
|
|
232
|
-
except Exception as e:
|
|
233
|
-
msg = f"Error handling queue event: {e}"
|
|
234
|
-
logger.info(msg)
|
|
235
|
-
|
|
236
|
-
if error is not None:
|
|
237
|
-
raise error
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
import threading
|
|
3
|
-
from multiprocessing import Process, Queue
|
|
4
|
-
from multiprocessing import Queue as ProcessQueue
|
|
5
|
-
from pathlib import Path
|
|
6
|
-
from typing import Any
|
|
7
|
-
|
|
8
|
-
from griptape_nodes.app.api import start_api
|
|
9
|
-
from griptape_nodes.app.app import _build_static_dir
|
|
10
|
-
from griptape_nodes.bootstrap.workflow_runners.local_workflow_runner import LocalWorkflowRunner
|
|
11
|
-
from griptape_nodes.bootstrap.workflow_runners.workflow_runner import WorkflowRunner
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class SubprocessWorkflowRunner(WorkflowRunner):
|
|
15
|
-
def __init__(self, libraries: list[Path]) -> None:
|
|
16
|
-
self.libraries = libraries
|
|
17
|
-
|
|
18
|
-
@staticmethod
|
|
19
|
-
def _subprocess_entry(
|
|
20
|
-
exception_queue: Queue,
|
|
21
|
-
libraries: list[Path],
|
|
22
|
-
workflow_path: str,
|
|
23
|
-
workflow_name: str,
|
|
24
|
-
flow_input: Any,
|
|
25
|
-
) -> None:
|
|
26
|
-
# Reset logging to avoid duplicate logs in tests - this does not remove logs
|
|
27
|
-
# because griptape nodes is doing some configuration of its own that seems
|
|
28
|
-
# difficult to control.
|
|
29
|
-
logger = logging.getLogger()
|
|
30
|
-
for handler in logger.handlers[:]:
|
|
31
|
-
logger.removeHandler(handler)
|
|
32
|
-
logger.setLevel(logging.NOTSET)
|
|
33
|
-
|
|
34
|
-
try:
|
|
35
|
-
static_dir = _build_static_dir()
|
|
36
|
-
event_queue = ProcessQueue()
|
|
37
|
-
threading.Thread(target=start_api, args=(static_dir, event_queue), daemon=True).start()
|
|
38
|
-
workflow_runner = LocalWorkflowRunner(libraries)
|
|
39
|
-
workflow_runner.run(workflow_path, workflow_name, flow_input, "local")
|
|
40
|
-
except Exception as e:
|
|
41
|
-
exception_queue.put(e)
|
|
42
|
-
raise
|
|
43
|
-
|
|
44
|
-
def run(self, workflow_path: str, workflow_name: str, flow_input: Any, storage_backend: str = "local") -> None: # noqa: ARG002
|
|
45
|
-
exception_queue = Queue()
|
|
46
|
-
process = Process(
|
|
47
|
-
target=self._subprocess_entry,
|
|
48
|
-
args=(exception_queue, self.libraries, workflow_path, workflow_name, flow_input),
|
|
49
|
-
)
|
|
50
|
-
process.start()
|
|
51
|
-
process.join()
|
|
52
|
-
|
|
53
|
-
if not exception_queue.empty():
|
|
54
|
-
exception = exception_queue.get_nowait()
|
|
55
|
-
if isinstance(exception, Exception):
|
|
56
|
-
raise exception
|
|
57
|
-
msg = f"Expected an Exception but got: {type(exception)}"
|
|
58
|
-
raise RuntimeError(msg)
|
|
59
|
-
|
|
60
|
-
if process.exitcode != 0:
|
|
61
|
-
msg = f"Process exited with code {process.exitcode} but no exception was raised."
|
|
62
|
-
raise RuntimeError(msg)
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
from abc import ABC, abstractmethod
|
|
3
|
-
from typing import Any
|
|
4
|
-
|
|
5
|
-
logger = logging.getLogger(__name__)
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class WorkflowRunner(ABC):
|
|
9
|
-
@abstractmethod
|
|
10
|
-
def run(self, workflow_path: str, workflow_name: str, flow_input: Any, storage_backend: str = "local") -> None:
|
|
11
|
-
pass
|
|
File without changes
|