griptape-nodes 0.35.0__tar.gz → 0.36.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.
- griptape_nodes-0.36.0/.env.example +2 -0
- griptape_nodes-0.36.0/.github/workflows/claude.yml +37 -0
- griptape_nodes-0.36.0/.github/workflows/workflow-tests.yml +52 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/CONTRIBUTING.md +5 -2
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/Makefile +5 -1
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/PKG-INFO +1 -1
- {griptape_nodes-0.35.0/docs/reference → griptape_nodes-0.36.0/docs}/command_line_interface.md +2 -2
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/00_tour/FTUE_00_tour.md +1 -1
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/FTUE.md +1 -1
- {griptape_nodes-0.35.0/docs/reference → griptape_nodes-0.36.0/docs}/glossary.md +3 -3
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/index.md +1 -1
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/installation.md +1 -1
- griptape_nodes-0.36.0/docs/nodes/config/groq_prompt_driver.md +58 -0
- {griptape_nodes-0.35.0/docs/reference → griptape_nodes-0.36.0/docs}/retained_mode.md +2 -2
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/entrypoint.sh +1 -1
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/common/parameters/huggingface_model_parameter.py +34 -3
- griptape_nodes-0.36.0/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/common/parameters/huggingface_repo_file_parameter.py +24 -0
- griptape_nodes-0.36.0/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/common/parameters/huggingface_repo_parameter.py +20 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/common/parameters/log_parameter.py +3 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/common/utils/torch_utils.py +1 -1
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/controlnet/union_flux_control_net_pipeline.py +4 -1
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/controlnet/union_pro_flux_control_net_pipeline.py +4 -1
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/controlnet/union_pro_two_flux_control_net_pipeline.py +4 -1
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/flux_fill_pipeline.py +4 -1
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/flux_loras_parameter.py +1 -1
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/flux_pipeline.py +4 -1
- griptape_nodes-0.36.0/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/peft/__init__.py +1 -0
- griptape_nodes-0.36.0/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/peft/train_flux_lora.py +154 -0
- griptape_nodes-0.36.0/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/peft/train_flux_lora_parameters.py +276 -0
- griptape_nodes-0.36.0/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/peft/training/__init__.py +1 -0
- griptape_nodes-0.36.0/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/peft/training/accelerate_main.py +1172 -0
- griptape_nodes-0.36.0/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/peft/training/accelerate_parse_args.py +484 -0
- griptape_nodes-0.36.0/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/peft/training/utils/__init__.py +1 -0
- griptape_nodes-0.36.0/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/peft/training/utils/accelerate_utils.py +84 -0
- griptape_nodes-0.36.0/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/peft/training/utils/dreambooth_dataset.py +313 -0
- griptape_nodes-0.36.0/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/peft/training/utils/encode_prompt.py +184 -0
- griptape_nodes-0.36.0/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/peft/training/utils/logging.py +27 -0
- griptape_nodes-0.36.0/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/peft/training/utils/memory.py +84 -0
- griptape_nodes-0.36.0/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/peft/training/utils/optimizer.py +104 -0
- griptape_nodes-0.36.0/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/peft/training/utils/stdout_tracker.py +28 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/tiling_flux_img_2_img_pipeline.py +4 -1
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/griptape_nodes_library.json +16 -1
- griptape_nodes-0.36.0/libraries/griptape_nodes_library/griptape_nodes_library/config/prompt/groq_prompt.py +137 -0
- griptape_nodes-0.36.0/libraries/griptape_nodes_library/griptape_nodes_library/image/paint_mask.py +261 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/text/load_text.py +1 -1
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library.json +9 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/workflows/templates/compare_prompts.py +1 -1
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/workflows/templates/coordinating_agents.py +1 -1
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/workflows/templates/photography_team.py +1 -1
- griptape_nodes-0.36.0/mkdocs.yml +153 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/pyproject.toml +1 -1
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/__init__.py +259 -92
- griptape_nodes-0.36.0/src/griptape_nodes/app/__init__.py +10 -0
- griptape_nodes-0.36.0/src/griptape_nodes/app/app_websocket.py +481 -0
- griptape_nodes-0.36.0/src/griptape_nodes/bootstrap/bootstrap_script.py +54 -0
- griptape_nodes-0.36.0/src/griptape_nodes/bootstrap/workflow_runners/__init__.py +1 -0
- griptape_nodes-0.36.0/src/griptape_nodes/bootstrap/workflow_runners/bootstrap_workflow_runner.py +28 -0
- griptape_nodes-0.36.0/src/griptape_nodes/bootstrap/workflow_runners/local_workflow_runner.py +237 -0
- griptape_nodes-0.36.0/src/griptape_nodes/bootstrap/workflow_runners/subprocess_workflow_runner.py +58 -0
- griptape_nodes-0.36.0/src/griptape_nodes/bootstrap/workflow_runners/workflow_runner.py +11 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/exe_types/core_types.py +50 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/machines/node_resolution.py +3 -3
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/node_library/library_registry.py +18 -7
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/events/node_events.py +2 -2
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/events/parameter_events.py +4 -49
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/managers/flow_manager.py +5 -5
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/managers/node_manager.py +192 -21
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/managers/object_manager.py +2 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/managers/workflow_manager.py +14 -4
- griptape_nodes-0.36.0/tests/workflows/__init__.py +0 -0
- griptape_nodes-0.36.0/tests/workflows/test_workflows.py +48 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/uv.lock +1 -1
- griptape_nodes-0.35.0/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/common/parameters/huggingface_repo_file_parameter.py +0 -44
- griptape_nodes-0.35.0/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/common/parameters/huggingface_repo_parameter.py +0 -38
- griptape_nodes-0.35.0/libraries/griptape_nodes_library/griptape_nodes_library/image/paint_mask.py +0 -229
- griptape_nodes-0.35.0/mkdocs.yml +0 -154
- griptape_nodes-0.35.0/src/griptape_nodes/app/__init__.py +0 -5
- griptape_nodes-0.35.0/src/griptape_nodes/bootstrap/bootstrap_script.py +0 -273
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/.github/DISCUSSION_TEMPLATE/ideas.yml +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/.github/actions/init-environment/action.yml +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/.github/release.yml +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/.github/workflows/code-checks.yml +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/.github/workflows/latest-release.yml +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/.github/workflows/publish.yml +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/.github/workflows/pull-request-links.yml +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/.github/workflows/stable-release.yml +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/.github/workflows/unit-tests.yml +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/.gitignore +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/.python-version +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/.readthedocs.yml +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/.vscode/launch.json +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/Dockerfile +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/LICENSE +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/README.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/assets/css/extra.css +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/assets/img/getting_started/getting_started-blank_editor.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/assets/img/getting_started/getting_started-installation_page.webp +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/assets/img/getting_started/getting_started-installation_page_key_hint.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/assets/img/getting_started/getting_started-installation_page_key_hint.webp +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/assets/img/getting_started/getting_started-login.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/assets/img/getting_started/getting_started-nodes_landing_page.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/assets/img/griptape_nodes_header_logo.svg +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/assets/img/video-thumbnail.jpg +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/configuration.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/faq.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/00_tour/assets/connected.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/00_tour/assets/create_from_scratch.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/00_tour/assets/create_node_dblClick.gif +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/00_tour/assets/create_node_dragDrop.gif +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/00_tour/assets/create_node_spacebar.gif +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/00_tour/assets/create_nodes_panel.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/00_tour/assets/eg_prompt.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/00_tour/assets/landing_page.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/00_tour/assets/launch_link.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/00_tour/assets/nodes_in_workspace.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/00_tour/assets/run_node.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/00_tour/assets/workspace_interface.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/01_prompt_an_image/FTUE_01_prompt_an_image.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/01_prompt_an_image/assets/generate_image_node.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/01_prompt_an_image/assets/nav_bar.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/01_prompt_an_image/assets/node_running.gif +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/01_prompt_an_image/assets/potato_aerobics.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/01_prompt_an_image/assets/potato_painting.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/01_prompt_an_image/assets/prompt_image_example.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/01_prompt_an_image/assets/run_options.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/01_prompt_an_image/assets/text_prompt_field.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/01_prompt_an_image/assets/ways_to_run.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/02_coordinating_agents/FTUE_02_coordinating_agents.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/02_coordinating_agents/assets/build_your_own.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/02_coordinating_agents/assets/connect_your_own.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/02_coordinating_agents/assets/coordinating_agents_example.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/02_coordinating_agents/assets/exec_chain.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/02_coordinating_agents/assets/final_result.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/02_coordinating_agents/assets/mandarin.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/02_coordinating_agents/assets/mandarin_display.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/02_coordinating_agents/assets/mandarin_merge.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/02_coordinating_agents/assets/mandarin_to_english.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/02_coordinating_agents/assets/node_running.gif +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/02_coordinating_agents/assets/sibling_target.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/02_coordinating_agents/assets/summary_pre.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/02_coordinating_agents/assets/workflow_overview.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/02_coordinating_agents/assets/workflow_result.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/03_compare_prompts/FTUE_03_compare_prompts.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/03_compare_prompts/assets/agent_node_output.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/03_compare_prompts/assets/basic_image_node.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/03_compare_prompts/assets/bespoke_prompt_image.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/03_compare_prompts/assets/compare_prompts_example.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/03_compare_prompts/assets/compare_prompts_workflow.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/03_compare_prompts/assets/detailed_instructions.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/03_compare_prompts/assets/enhanced_prompt_image.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/03_compare_prompts/assets/trace_basic.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/03_compare_prompts/assets/trace_bespoke.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/03_compare_prompts/assets/trace_enhanced.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/04_photography_team/FTUE_04_photography_team.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/04_photography_team/assets/agent_tool_conversion.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/04_photography_team/assets/cinematographer_ruleset.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/04_photography_team/assets/orchestrator_setup.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/04_photography_team/assets/photography_team_example.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/04_photography_team/assets/rule_ruleset_agent_tool_chain.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/04_photography_team/assets/ruleset_direct_connect.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/04_photography_team/assets/ruleset_list.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/04_photography_team/assets/tool_list.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/04_photography_team/assets/tools_concept.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/04_photography_team/assets/workflow_overview.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/04_photography_team/assets/workflow_result.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/assets/FTUE_01_prompt_an_image.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/assets/FTUE_02_coordinating_agents.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/assets/FTUE_03_compare_prompts.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/ftue/assets/FTUE_04_photography_team.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/installs/assets/huggingface_00_MainPage.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/installs/assets/huggingface_01_signup.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/installs/assets/huggingface_02_Settings.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/installs/assets/huggingface_03_AccessTokens.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/installs/assets/huggingface_04_TokenRead.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/installs/assets/huggingface_05_SaveToken.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/installs/assets/huggingface_06_gated_model.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/installs/assets/huggingface_07_GN_Settings.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/installs/assets/huggingface_08_GN_HFToken.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/installs/hugging_face.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/keys/assets/grok_00_main_page.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/keys/assets/grok_01_console_login.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/keys/assets/grok_02_signup.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/keys/assets/grok_03_billing.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/keys/assets/grok_04_key_links.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/keys/assets/grok_05_create_api_key_button.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/keys/assets/grok_06_create_api_key_page.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/keys/assets/grok_07_gtn_settings.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/keys/assets/gtn_settings_menu.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/keys/assets/openai_00_main_page.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/keys/assets/openai_01_login_api_platform.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/keys/assets/openai_02_dashboard.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/keys/assets/openai_03_api_keys.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/keys/assets/openai_04_create_new_secret_key_button.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/keys/assets/openai_05_create_new_secret_key_modal.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/keys/assets/openai_06_gtn_settings.png +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/keys/grok.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/keys/openai.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/making_custom_nodes.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/how_to/making_custom_scripts.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/advanced_media_library/flux_pipeline.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/advanced_media_library/pillow_resize.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/advanced_media_library/tiling_flux_img_2_img_pipeline.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/advanced_media_library/tiling_spandrel_pipeline.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/agents/create_agent.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/audio/load_audio.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/audio/microphone.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/audio/transcribe_audio.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/config/anthropic_prompt_driver.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/config/cohere_prompt_driver.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/config/griptape_cloud_image_driver.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/config/griptape_cloud_prompt_driver.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/config/grok_image_driver.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/config/grok_prompt_driver.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/config/openai_image_driver.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/config/openai_prompt_driver.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/dict/create_dict.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/dict/display_dict.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/dict/key_value_pair.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/dict/merge_key_value_pair.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/execution/end_flow.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/execution/reroute.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/execution/start_flow.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/image/create_image.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/image/describe_image.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/image/load_image.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/number/create_float.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/number/create_int.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/number/display_float.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/number/display_int.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/overview.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/rules/create_ruleset.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/rules/ruleset_list.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/text/create_multiline_text.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/text/display_text.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/text/load_text.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/text/merge_texts.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/text/random_text.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/text/save_text.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/text/search_replace_text.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/three_d/load_gltf.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/tools/calculator_tool.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/tools/date_time_tool.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/tools/rag_tool.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/tools/tool_list.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/tools/web_scraper_tool.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/utils/note.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/video/display_video.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/video/load_video.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/docs/nodes/video/save_video.md +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/install.ps1 +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/install.sh +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/controlnet_aux_nodes_library/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/controlnet_aux_nodes_library/anyline_detector.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/common/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/common/misc/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/common/misc/tiling_image_processor.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/common/parameters/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/common/parameters/file_path_parameter.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/common/parameters/seed_parameter.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/common/utils/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/common/utils/huggingface_utils.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/common/utils/logging_utils.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/common/utils/math_utils.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/common/utils/option_utils.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/common/utils/ui_option_utils.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/controlnet/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/controlnet/flux_control_net_parameters.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/controlnet/union_one_flux_control_net_model.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/controlnet/union_two_flux_control_net_parameters.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/diptych_flux_fill_pipeline.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/diptych_flux_fill_pipeline_parameters.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/flux_fill_pipeline_parameters.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/flux_pipeline_memory_footprint.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/flux_pipeline_parameters.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/lora/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/lora/flux_lora_from_file.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/lora/flux_lora_parameters.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/lora/huggingface_flux_lora.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/lora/lumatales_flux_lora.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/lora/micro_landscape_on_phone_flux_lora.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/lora/miniature_world_flux_lora.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/diffusers_nodes_library/pipelines/flux/lora/river_z_normal_diptych_flux_fill_lora.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/opencv_nodes_library/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/opencv_nodes_library/canny_convert_image.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/pillow_nodes_library/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/pillow_nodes_library/gaussian_blur_image.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/pillow_nodes_library/grayscale_convert_image.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/pillow_nodes_library/rescale_image.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/pillow_nodes_library/utils.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/spandrel_nodes_library/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/spandrel_nodes_library/tiling_span.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/spandrel_nodes_library/utils.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/transformers_nodes_library/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_advanced_media_library/transformers_nodes_library/depth_anything_for_depth_estimation.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/.python-version +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/agents/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/agents/agent.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/agents/griptape_nodes_agent.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/agents/library_style.json +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/audio/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/audio/audio_url_artifact.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/audio/library_style.json +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/audio/load_audio.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/audio/microphone.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/audio/transcribe_audio.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/config/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/config/base_driver.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/config/image/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/config/image/base_image_driver.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/config/image/griptape_cloud_image_driver.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/config/image/grok_image_driver.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/config/image/library_style.json +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/config/image/openai_image_driver.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/config/library_style.json +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/config/prompt/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/config/prompt/amazon_bedrock_prompt.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/config/prompt/anthropic_prompt.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/config/prompt/base_prompt.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/config/prompt/cohere_prompt.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/config/prompt/griptape_cloud_prompt.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/config/prompt/grok_prompt.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/config/prompt/library_style.json +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/config/prompt/ollama_prompt_driver.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/config/prompt/openai_prompt.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/config/web_search/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/config/web_search/web_search_drivers.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/convert/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/convert/agent_to_tool.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/convert/library_style.json +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/convert/to_bool.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/convert/to_dict.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/convert/to_float.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/convert/to_int.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/convert/to_text.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/dict/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/dict/create_dict.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/dict/display_dict.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/dict/key_value_pair.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/dict/library_style.json +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/dict/load_dict.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/dict/merge_dict.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/dict/merge_key_value_pair.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/dict/save_dict.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/execution/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/execution/compare_numbers.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/execution/compare_strings.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/execution/if_else.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/execution/library_style.json +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/execution/reroute.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/execution/select_output.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/image/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/image/compare_images.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/image/create_image.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/image/describe_image.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/image/display_image.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/image/library_style.json +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/image/load_image.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/image/save_image.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/image/webcam.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/misc/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/misc/api_key_check.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/note.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/number/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/number/create_float.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/number/create_int.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/number/display_float.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/number/display_int.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/number/library_style.json +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/rules/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/rules/create_ruleset.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/rules/library_style.json +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/rules/ruleset_list.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/text/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/text/create_multiline_text.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/text/display_text.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/text/library_style.json +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/text/list_texts.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/text/merge_texts.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/text/random_text.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/text/save_text.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/text/search_replace_text.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/three_d/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/three_d/gltf_artifact.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/three_d/library_style.json +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/three_d/load_gltf.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/tools/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/tools/audio_transcription_tool.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/tools/base_tool.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/tools/calculator_tool.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/tools/date_time_tool.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/tools/extraction_tool.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/tools/file_manager_tool.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/tools/library_style.json +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/tools/prompt_summary_tool.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/tools/rag_tool.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/tools/tool_list.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/tools/vector_store_tool.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/tools/web_scraper_tool.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/tools/web_search_tool.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/utils/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/utils/anthropic_utils.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/utils/audio_utils.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/utils/error_utils.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/utils/gltf_utils.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/utils/image_utils.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/utils/library_style.json +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/utils/utilities.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/utils/video_utils.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/video/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/video/display_video.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/video/load_video.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/video/save_video.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/video/video_url_artifact.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/workflows/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/workflows/end_flow.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/workflows/library_style.json +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/workflows/published_workflow.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/griptape_nodes_library/workflows/start_flow.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/tests/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/tests/integration/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/tests/unit/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/tests/unit/drivers/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/tests/unit/drivers/test_griptape_cloud_image_generation_driver.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/workflows/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/workflows/templates/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/workflows/templates/prompt_an_image.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/workflows/templates/thumbnail_compare_prompts.webp +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/workflows/templates/thumbnail_coordinating_agents.webp +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/workflows/templates/thumbnail_photography_team.webp +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/libraries/griptape_nodes_library/workflows/templates/thumbnail_prompt_an_image.webp +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/app/.python-version +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/app/app.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/app/nodes_api_socket_manager.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/app/watch.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/bootstrap/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/bootstrap/post_build_install_script.sh +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/bootstrap/pre_build_install_script.sh +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/bootstrap/register_libraries_script.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/bootstrap/structure_config.yaml +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/drivers/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/drivers/storage/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/drivers/storage/base_storage_driver.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/drivers/storage/griptape_cloud_storage_driver.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/drivers/storage/local_storage_driver.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/exe_types/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/exe_types/connections.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/exe_types/flow.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/exe_types/node_types.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/exe_types/type_validator.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/machines/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/machines/control_flow.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/machines/fsm.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/node_library/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/node_library/workflow_registry.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/py.typed +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/events/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/events/app_events.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/events/arbitrary_python_events.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/events/base_events.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/events/config_events.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/events/connection_events.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/events/context_events.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/events/execution_events.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/events/flow_events.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/events/generate_request_payload_schemas.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/events/library_events.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/events/logger_events.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/events/object_events.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/events/os_events.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/events/payload_registry.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/events/secrets_events.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/events/static_file_events.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/events/validation_events.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/events/workflow_events.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/griptape_nodes.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/managers/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/managers/arbitrary_code_exec_manager.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/managers/config_manager.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/managers/context_manager.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/managers/event_manager.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/managers/library_manager.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/managers/operation_manager.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/managers/os_manager.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/managers/secrets_manager.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/managers/settings.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/managers/static_files_manager.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/retained_mode/retained_mode.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/traits/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/traits/add_param_button.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/traits/button.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/traits/clamp.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/traits/compare.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/traits/compare_images.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/traits/minmax.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/traits/options.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/traits/slider.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/traits/trait_registry.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/traits/traits.json +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/updater/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/updater/__main__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/utils/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/utils/dict_utils.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/src/griptape_nodes/utils/metaclasses.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/tests/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/tests/integration/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/tests/integration/conftest.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/tests/integration/retained_mode/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/tests/integration/retained_mode/events/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/tests/integration/retained_mode/events/test_config_events.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/tests/integration/retained_mode/events/test_node_events.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/tests/integration/retained_mode/events/test_secret_events.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/tests/unit/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/tests/unit/exe_types/__init__.py +0 -0
- {griptape_nodes-0.35.0 → griptape_nodes-0.36.0}/tests/unit/exe_types/test_core_types.py +0 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
name: Claude Code
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
issue_comment:
|
|
5
|
+
types: [created]
|
|
6
|
+
pull_request_review_comment:
|
|
7
|
+
types: [created]
|
|
8
|
+
issues:
|
|
9
|
+
types: [opened, assigned]
|
|
10
|
+
pull_request_review:
|
|
11
|
+
types: [submitted]
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
claude:
|
|
15
|
+
if: |
|
|
16
|
+
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
|
|
17
|
+
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
|
|
18
|
+
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
|
|
19
|
+
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
permissions:
|
|
22
|
+
contents: read
|
|
23
|
+
pull-requests: read
|
|
24
|
+
issues: read
|
|
25
|
+
id-token: write
|
|
26
|
+
steps:
|
|
27
|
+
- name: Checkout repository
|
|
28
|
+
uses: actions/checkout@v4
|
|
29
|
+
with:
|
|
30
|
+
fetch-depth: 1
|
|
31
|
+
|
|
32
|
+
- name: Run Claude Code
|
|
33
|
+
id: claude
|
|
34
|
+
uses: anthropics/claude-code-action@beta
|
|
35
|
+
with:
|
|
36
|
+
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
37
|
+
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
name: Workflow Tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ "main" ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ "main" ]
|
|
8
|
+
merge_group:
|
|
9
|
+
types: [checks_requested]
|
|
10
|
+
|
|
11
|
+
concurrency:
|
|
12
|
+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
13
|
+
cancel-in-progress: true
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
test-ubuntu:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
env:
|
|
19
|
+
GT_CLOUD_API_KEY: ${{ secrets.GT_CLOUD_API_KEY }}
|
|
20
|
+
strategy:
|
|
21
|
+
fail-fast: false
|
|
22
|
+
matrix:
|
|
23
|
+
python-version: ["3.12"]
|
|
24
|
+
steps:
|
|
25
|
+
- name: Checkout actions
|
|
26
|
+
uses: actions/checkout@v4
|
|
27
|
+
- name: Init environment
|
|
28
|
+
uses: ./.github/actions/init-environment
|
|
29
|
+
- name: Run workflow tests
|
|
30
|
+
run: make test/workflows
|
|
31
|
+
test-windows:
|
|
32
|
+
runs-on: windows-latest
|
|
33
|
+
env:
|
|
34
|
+
GT_CLOUD_API_KEY: ${{ secrets.GT_CLOUD_API_KEY }}
|
|
35
|
+
strategy:
|
|
36
|
+
fail-fast: false
|
|
37
|
+
matrix:
|
|
38
|
+
python-version: ["3.12"]
|
|
39
|
+
defaults:
|
|
40
|
+
run:
|
|
41
|
+
shell: bash
|
|
42
|
+
steps:
|
|
43
|
+
- name: Checkout actions
|
|
44
|
+
uses: actions/checkout@v4
|
|
45
|
+
- name: Init environment
|
|
46
|
+
uses: ./.github/actions/init-environment
|
|
47
|
+
- name: Run workflow tests
|
|
48
|
+
# TODO: make test/unit fails with the following error:
|
|
49
|
+
# process_begin: CreateProcess(NULL, uv run pytest -n auto tests/unit, ...) failed.
|
|
50
|
+
# make (e=2): The system cannot find the file specified.
|
|
51
|
+
# make: *** [Makefile:24: test/unit] Error 2
|
|
52
|
+
run: uv run pytest -s tests/workflows
|
|
@@ -65,10 +65,10 @@ When developing, you typically want to run the engine using your local source co
|
|
|
65
65
|
uv run gtn init
|
|
66
66
|
```
|
|
67
67
|
|
|
68
|
-
- **Run Tests:**
|
|
68
|
+
- **Run Unit Tests:**
|
|
69
69
|
|
|
70
70
|
```shell
|
|
71
|
-
uv run pytest
|
|
71
|
+
uv run pytest test/unit
|
|
72
72
|
```
|
|
73
73
|
|
|
74
74
|
Or use the Makefile shortcut:
|
|
@@ -77,6 +77,9 @@ When developing, you typically want to run the engine using your local source co
|
|
|
77
77
|
make test/unit
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
+
> Other test targets (e.g. `test/integration` and `test/workflow`) require
|
|
81
|
+
> a `.env` in the repo root with all keys found in `.env.example` to run.
|
|
82
|
+
|
|
80
83
|
- **Check Code (Linting & Formatting):**
|
|
81
84
|
|
|
82
85
|
```shell
|
|
@@ -100,7 +100,7 @@ check/spell:
|
|
|
100
100
|
@uv run typos
|
|
101
101
|
|
|
102
102
|
.PHONY: test ## Run all tests.
|
|
103
|
-
test: test/unit test/integration
|
|
103
|
+
test: test/unit test/integration test/workflows
|
|
104
104
|
|
|
105
105
|
.PHONY: test/unit
|
|
106
106
|
test/unit: ## Run unit tests.
|
|
@@ -112,6 +112,10 @@ test/integration: ## Run integration tests.
|
|
|
112
112
|
@uv run pytest -n auto tests/integration
|
|
113
113
|
@uv run pytest -n auto libraries/griptape_nodes_library/tests/integration
|
|
114
114
|
|
|
115
|
+
.PHONY: test/workflows
|
|
116
|
+
test/workflows: ## Run workflow tests.
|
|
117
|
+
@uv run pytest -s tests/workflows
|
|
118
|
+
|
|
115
119
|
.PHONY: docs
|
|
116
120
|
docs: ## Build documentation.
|
|
117
121
|
@uv run python -m mkdocs build --clean --strict
|
{griptape_nodes-0.35.0/docs/reference → griptape_nodes-0.36.0/docs}/command_line_interface.md
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Griptape Nodes Command Line
|
|
1
|
+
# Griptape Nodes Command Line Interface (CLI)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
If you're new to command-line interfaces (CLIs), a CLI is a text-based way to interact with software by typing commands instead of clicking buttons in a UI. Griptape Nodes provides a CLI with the the `griptape-nodes` (or `gtn`) command. This enables you to interact with Griptape Nodes in the terminal (and via PowerShell).
|
|
4
4
|
|
|
5
5
|
`griptape-nodes` (or its shorthand alias `gtn`) is a command-line tool specifically designed to launch, update, and manage the Griptape Nodes Engine installation on your computer. This tool handles tasks like initializing your workspace, updating the software, managing configuration settings, and starting the engine that powers the web-based Griptape Nodes editor. The actual creation and editing of workflows happens in the web interface that opens when you run the engine.
|
|
6
6
|
|
|
@@ -75,7 +75,7 @@ The most important area to focus on initially is the left panel, the node librar
|
|
|
75
75
|
|
|
76
76
|
## Adding Nodes to the Workspace
|
|
77
77
|
|
|
78
|
-
There are three interactive methods to creating nodes (and even more in [Retained Mode](../../
|
|
78
|
+
There are three interactive methods to creating nodes (and even more in [Retained Mode](../../retained_mode.md))
|
|
79
79
|
|
|
80
80
|
<div style="display: flex; justify-content: space-between; gap: 20px; margin-bottom: 30px;">
|
|
81
81
|
<div style="flex: 1;">
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# Griptape Nodes Glossary for Artists
|
|
1
|
+
# Griptape Nodes Glossary for Artists & Creators
|
|
2
2
|
|
|
3
3
|
## What is Griptape Nodes?
|
|
4
4
|
|
|
5
|
-
Griptape Nodes is a
|
|
5
|
+
Griptape Nodes is a toolkit that enables artists and creators to build AI-powered projects without the need for deep technical expertise. You can think of Griptape Nodes as a set of building blocks that you can connect together to create art, generate images, process text, or even build other workflow-centric applications.
|
|
6
6
|
|
|
7
|
-
###
|
|
7
|
+
### Core Griptape Nodes Concepts
|
|
8
8
|
|
|
9
9
|
- **Workflow**: A document containing nodes, connections, and values. While technically a Workflow is also a Script, avoid calling them Scripts, so that the term Script can communicate a clearly different thing than the term Workflow. This is also what we call the saved file.
|
|
10
10
|
|
|
@@ -12,5 +12,5 @@ With Griptape Nodes, you can connect visual building blocks that represent powe
|
|
|
12
12
|
|
|
13
13
|
Whether you're a creative who wants to explore new AI-powered possibilities, a knowledge worker looking to automate tedious tasks, or a curious mind wanting to experiment with cutting-edge technology, Griptape Nodes opens doors you might have thought were locked to all but professional programmers.
|
|
14
14
|
|
|
15
|
-
And for those who want to go deeper? A little Python knowledge goes a long way here. Our [simple scripting interface](
|
|
15
|
+
And for those who want to go deeper? A little Python knowledge goes a long way here. Our [simple scripting interface](retained_mode.md) lets you customize and extend what's possible, turning your big ideas into working solutions without requiring an engineering degree.
|
|
16
16
|
Griptape Nodes is where your imagination meets AI capability. Let's build something amazing together.
|
|
@@ -69,7 +69,7 @@ After typing and running `griptape-nodes` or `gtn` in the terminal *for the firs
|
|
|
69
69
|
|
|
70
70
|
## 3. Configuration
|
|
71
71
|
|
|
72
|
-
**First**, you'll be prompted to set your *workspace directory*. Your workspace directory is where the Griptape Nodes engine will save [project files](./
|
|
72
|
+
**First**, you'll be prompted to set your *workspace directory*. Your workspace directory is where the Griptape Nodes engine will save [project files](./glossary.md#project-files), and [generated assets](./glossary.md#generated-assets). It will also contain a [.env](./glossary.md#.env) for your Griptape Nodes [secret keys](./glossary.md#secret-keys).
|
|
73
73
|
|
|
74
74
|
```
|
|
75
75
|
╭───────────────────────────────────────────────────────────────────╮
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Groq Prompt Driver
|
|
2
|
+
|
|
3
|
+
The Groq Prompt Driver node allows you to configure and utilize Groq's language models within the Griptape Nodes framework. This node provides access to Groq's high-performance inference engine and various language models.
|
|
4
|
+
|
|
5
|
+
## Configuration
|
|
6
|
+
|
|
7
|
+
### API Key
|
|
8
|
+
|
|
9
|
+
To use the Groq Prompt Driver, you need to provide a Groq API key. You can obtain an API key from the [Groq Console](https://console.groq.com/keys).
|
|
10
|
+
|
|
11
|
+
### Available Models
|
|
12
|
+
|
|
13
|
+
The Groq Prompt Driver supports the following models:
|
|
14
|
+
|
|
15
|
+
#### Production Models
|
|
16
|
+
|
|
17
|
+
- [gemma2-9b-it](https://huggingface.co/google/gemma-2-9b-it) - Google's Gemma 2 9B model
|
|
18
|
+
- [meta-llama/llama-guard-4-12b](https://console.groq.com/docs/model/llama-guard-4-12b) - Meta's Llama Guard model for content moderation
|
|
19
|
+
- [llama-3.3-70b-versatile](https://console.groq.com/docs/model/llama-3.3-70b-versatile) - Meta's versatile 70B parameter model
|
|
20
|
+
- [llama-3.1-8b-instant](https://console.groq.com/docs/model/llama-3.1-8b-instant) - Meta's fast 8B parameter model
|
|
21
|
+
- [llama3-70b-8192](https://console.groq.com/docs/model/llama3-70b-8192) - Meta's 70B parameter model with 8K context
|
|
22
|
+
- [llama3-8b-8192](https://console.groq.com/docs/model/llama3-8b-8192) - Meta's 8B parameter model with 8K context
|
|
23
|
+
- [meta-llama/llama-4-scout-17b-16e-instruct](https://console.groq.com/docs/model/llama-4-scout-17b-16e-instruct) - Meta's vision model with 16K context, compatible with the Image Description node
|
|
24
|
+
- [meta-llama/llama-4-maverick-17b-128e-instruct](https://console.groq.com/docs/model/llama-4-maverick-17b-128e-instruct) - Meta's vision model with 128K context, compatible with the Image Description node
|
|
25
|
+
|
|
26
|
+
#### Preview Models
|
|
27
|
+
|
|
28
|
+
- [allam-2-7b](https://ai.azure.com/explore/models/ALLaM-2-7b-instruct/version/2/registry/azureml) - Saudi Data and AI Authority's 7B parameter model
|
|
29
|
+
- [deepseek-r1-distill-llama-70b](https://console.groq.com/docs/model/deepseek-r1-distill-llama-70b) - DeepSeek's distilled 70B parameter model
|
|
30
|
+
|
|
31
|
+
### Parameters
|
|
32
|
+
|
|
33
|
+
The Groq Prompt Driver supports the following configuration parameters:
|
|
34
|
+
|
|
35
|
+
| Parameter | Type | Default | Description |
|
|
36
|
+
| ------------ | ------- | ------------ | ---------------------------------------------------- |
|
|
37
|
+
| model | string | gemma2-9b-it | The Groq model to use for text generation |
|
|
38
|
+
| temperature | float | 0.7 | Controls randomness in the output (0.0 to 1.0) |
|
|
39
|
+
| top_p | float | 0.9 | Controls diversity via nucleus sampling (0.0 to 1.0) |
|
|
40
|
+
| max_tokens | integer | 2048 | Maximum number of tokens to generate |
|
|
41
|
+
| stream | boolean | false | Whether to stream the response |
|
|
42
|
+
| max_attempts | integer | 3 | Maximum number of retry attempts for failed requests |
|
|
43
|
+
|
|
44
|
+
## Usage
|
|
45
|
+
|
|
46
|
+
1. Add the Groq Prompt Driver node to your workflow
|
|
47
|
+
1. Make sure to get an API key here: [Groq API Keys](https://console.groq.com/keys)
|
|
48
|
+
1. Configure your `GROQ_API_KEY` in the Griptape Configuration settings
|
|
49
|
+
1. Select your desired model from the available options
|
|
50
|
+
1. Adjust the generation parameters as needed
|
|
51
|
+
1. Connect the node to other nodes in your workflow
|
|
52
|
+
|
|
53
|
+
## Notes
|
|
54
|
+
|
|
55
|
+
- The Groq Prompt Driver uses the OpenAI-compatible API endpoint at `https://api.groq.com/openai/v1`
|
|
56
|
+
- Preview models are intended for evaluation purposes and may be discontinued at short notice
|
|
57
|
+
- Production models are recommended for production environments
|
|
58
|
+
- The node automatically handles API key validation before workflow execution
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Griptape Nodes Scripting
|
|
1
|
+
# Griptape Nodes Retained Mode Scripting
|
|
2
2
|
|
|
3
|
-
"Retained Mode"
|
|
3
|
+
"Retained Mode" provides a Python scripting interface for interacting with Griptape Nodes. This allows users to create, modify, and manage nodes, parameters, connections, and flows through a simplified Python API.
|
|
4
4
|
|
|
5
5
|
> **Note:** The actual import command for RetainedMode is:
|
|
6
6
|
>
|
|
@@ -2,7 +2,7 @@ import logging
|
|
|
2
2
|
from abc import ABC, abstractmethod
|
|
3
3
|
|
|
4
4
|
from diffusers_nodes_library.common.utils.option_utils import update_option_choices
|
|
5
|
-
from griptape_nodes.exe_types.core_types import Parameter
|
|
5
|
+
from griptape_nodes.exe_types.core_types import Parameter, ParameterMessage
|
|
6
6
|
from griptape_nodes.exe_types.node_types import BaseNode
|
|
7
7
|
from griptape_nodes.traits.options import Options
|
|
8
8
|
|
|
@@ -40,6 +40,18 @@ class HuggingFaceModelParameter(ABC):
|
|
|
40
40
|
def add_input_parameters(self) -> None:
|
|
41
41
|
self._repo_revisions = self.fetch_repo_revisions()
|
|
42
42
|
choices = self.get_choices()
|
|
43
|
+
|
|
44
|
+
if not choices:
|
|
45
|
+
self._node.add_node_element(
|
|
46
|
+
ParameterMessage(
|
|
47
|
+
name="huggingface_repo_parameter_message",
|
|
48
|
+
title="Huggingface Model Download Required",
|
|
49
|
+
variant="warning",
|
|
50
|
+
value=self.get_help_message(),
|
|
51
|
+
)
|
|
52
|
+
)
|
|
53
|
+
return
|
|
54
|
+
|
|
43
55
|
self._node.add_parameter(
|
|
44
56
|
Parameter(
|
|
45
57
|
name=self._parameter_name,
|
|
@@ -73,12 +85,31 @@ class HuggingFaceModelParameter(ABC):
|
|
|
73
85
|
def get_repo_revision(self) -> tuple[str, str]:
|
|
74
86
|
value = self._node.get_parameter_value(self._parameter_name)
|
|
75
87
|
if value is None:
|
|
76
|
-
|
|
88
|
+
msg = "Model download required!"
|
|
89
|
+
raise RuntimeError(msg)
|
|
77
90
|
base_repo_id, base_revision = self._key_to_repo_revision(value)
|
|
78
91
|
return base_repo_id, base_revision
|
|
79
92
|
|
|
93
|
+
def get_help_message(self) -> str:
|
|
94
|
+
download_commands = "\n".join([f" - `{cmd}`" for cmd in self.get_download_commands()])
|
|
95
|
+
return (
|
|
96
|
+
"📥 How to download the models:\n"
|
|
97
|
+
"1. Setup huggingface-cli as per our docs: https://docs.griptapenodes.com/en/stable/how_to/installs/hugging_face/ \n"
|
|
98
|
+
"2. Download at least one model:\n"
|
|
99
|
+
f"{download_commands}\n"
|
|
100
|
+
"3. Save, close, then open the again workflow. (❌ Do not just reload the page)\n"
|
|
101
|
+
"\n"
|
|
102
|
+
"✅ If successful, you should see a dropdown with the available models.\n"
|
|
103
|
+
"❌ If not successful because download fails then check huggingface-cli docs.\n"
|
|
104
|
+
"❌ If not successful for some other reason then reach out to us on Discord or GitHub.\n"
|
|
105
|
+
"\n"
|
|
106
|
+
"Note: Currently this is the only supported method for downloading models. \n"
|
|
107
|
+
"Hopefully this gets more intuitive (and customizable) soon!\n"
|
|
108
|
+
"- from ✊📼🍜 with ❤️\n"
|
|
109
|
+
)
|
|
110
|
+
|
|
80
111
|
@abstractmethod
|
|
81
112
|
def fetch_repo_revisions(self) -> list[tuple[str, str]]: ...
|
|
82
113
|
|
|
83
114
|
@abstractmethod
|
|
84
|
-
def
|
|
115
|
+
def get_download_commands(self) -> list[str]: ...
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
|
|
3
|
+
from diffusers_nodes_library.common.parameters.huggingface_model_parameter import HuggingFaceModelParameter
|
|
4
|
+
from diffusers_nodes_library.common.utils.huggingface_utils import list_repo_revisions_with_file_in_cache
|
|
5
|
+
from griptape_nodes.exe_types.node_types import BaseNode # type: ignore[reportMissingImports]
|
|
6
|
+
|
|
7
|
+
logger = logging.getLogger("diffusers_nodes_library")
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class HuggingFaceRepoFileParameter(HuggingFaceModelParameter):
|
|
11
|
+
def __init__(self, node: BaseNode, repo_files: list[tuple[str, str]], parameter_name: str = "model"):
|
|
12
|
+
super().__init__(node, parameter_name)
|
|
13
|
+
self._repo_files = repo_files
|
|
14
|
+
self.refresh_parameters()
|
|
15
|
+
|
|
16
|
+
def fetch_repo_revisions(self) -> list[tuple[str, str]]:
|
|
17
|
+
return [
|
|
18
|
+
repo_revision
|
|
19
|
+
for (repo, file) in self._repo_files
|
|
20
|
+
for repo_revision in list_repo_revisions_with_file_in_cache(repo, file)
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
def get_download_commands(self) -> list[str]:
|
|
24
|
+
return [f'huggingface-cli download "{repo}" "{file}"' for (repo, file) in self._repo_files]
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
|
|
3
|
+
from diffusers_nodes_library.common.parameters.huggingface_model_parameter import HuggingFaceModelParameter
|
|
4
|
+
from diffusers_nodes_library.common.utils.huggingface_utils import list_repo_revisions_in_cache
|
|
5
|
+
from griptape_nodes.exe_types.node_types import BaseNode # type: ignore[reportMissingImports]
|
|
6
|
+
|
|
7
|
+
logger = logging.getLogger("diffusers_nodes_library")
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class HuggingFaceRepoParameter(HuggingFaceModelParameter):
|
|
11
|
+
def __init__(self, node: BaseNode, repo_ids: list[str], parameter_name: str = "model"):
|
|
12
|
+
super().__init__(node, parameter_name)
|
|
13
|
+
self._repo_ids = repo_ids
|
|
14
|
+
self.refresh_parameters()
|
|
15
|
+
|
|
16
|
+
def fetch_repo_revisions(self) -> list[tuple[str, str]]:
|
|
17
|
+
return [repo_revision for repo in self._repo_ids for repo_revision in list_repo_revisions_in_cache(repo)]
|
|
18
|
+
|
|
19
|
+
def get_download_commands(self) -> list[str]:
|
|
20
|
+
return [f'huggingface-cli download "{repo}"' for repo in self._repo_ids]
|
|
@@ -22,7 +22,7 @@ def to_human_readable_size(size_in_bytes: float) -> str:
|
|
|
22
22
|
|
|
23
23
|
def human_readable_memory_footprint(model: torch.nn.Module) -> str:
|
|
24
24
|
"""Return a human-readable memory footprint."""
|
|
25
|
-
return to_human_readable_size(model.get_memory_footprint())
|
|
25
|
+
return to_human_readable_size(model.get_memory_footprint()) # type: ignore[reportAttributeAccessIssue]
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
def print_pipeline_memory_footprint(pipe: diffusers.DiffusionPipeline, component_names: list[str]) -> None:
|
|
@@ -84,7 +84,10 @@ class UnionFluxControlNetPipeline(ControlNode):
|
|
|
84
84
|
with self.log_params.append_profile_to_logs("Loading model"), self.log_params.append_logs_to_logs(logger):
|
|
85
85
|
optimize_flux_pipeline_memory_footprint(pipe)
|
|
86
86
|
|
|
87
|
-
with
|
|
87
|
+
with (
|
|
88
|
+
self.log_params.append_profile_to_logs("Configuring flux loras"),
|
|
89
|
+
self.log_params.append_logs_to_logs(logger),
|
|
90
|
+
):
|
|
88
91
|
self.flux_lora_params.configure_loras(pipe)
|
|
89
92
|
|
|
90
93
|
num_inference_steps = self.flux_params.get_num_inference_steps()
|
|
@@ -80,7 +80,10 @@ class UnionProFluxControlNetPipeline(ControlNode):
|
|
|
80
80
|
with self.log_params.append_profile_to_logs("Loading model"), self.log_params.append_logs_to_logs(logger):
|
|
81
81
|
optimize_flux_pipeline_memory_footprint(pipe)
|
|
82
82
|
|
|
83
|
-
with
|
|
83
|
+
with (
|
|
84
|
+
self.log_params.append_profile_to_logs("Configuring flux loras"),
|
|
85
|
+
self.log_params.append_logs_to_logs(logger),
|
|
86
|
+
):
|
|
84
87
|
self.flux_lora_params.configure_loras(pipe)
|
|
85
88
|
|
|
86
89
|
num_inference_steps = self.flux_params.get_num_inference_steps()
|
|
@@ -80,7 +80,10 @@ class UnionProTwoFluxControlNetPipeline(ControlNode):
|
|
|
80
80
|
with self.log_params.append_profile_to_logs("Loading model"), self.log_params.append_logs_to_logs(logger):
|
|
81
81
|
optimize_flux_pipeline_memory_footprint(pipe)
|
|
82
82
|
|
|
83
|
-
with
|
|
83
|
+
with (
|
|
84
|
+
self.log_params.append_profile_to_logs("Configuring flux loras"),
|
|
85
|
+
self.log_params.append_logs_to_logs(logger),
|
|
86
|
+
):
|
|
84
87
|
self.flux_lora_params.configure_loras(pipe)
|
|
85
88
|
|
|
86
89
|
num_inference_steps = self.flux_params.get_num_inference_steps()
|
|
@@ -74,7 +74,10 @@ class FluxFillPipeline(ControlNode):
|
|
|
74
74
|
with self.log_params.append_profile_to_logs("Loading model"), self.log_params.append_logs_to_logs(logger):
|
|
75
75
|
optimize_flux_pipeline_memory_footprint(pipe)
|
|
76
76
|
|
|
77
|
-
with
|
|
77
|
+
with (
|
|
78
|
+
self.log_params.append_profile_to_logs("Configuring flux loras"),
|
|
79
|
+
self.log_params.append_logs_to_logs(logger),
|
|
80
|
+
):
|
|
78
81
|
self.loras_params.configure_loras(pipe)
|
|
79
82
|
|
|
80
83
|
num_inference_steps = self.pipe_params.get_num_inference_steps()
|
|
@@ -62,7 +62,7 @@ class FluxLorasParameter:
|
|
|
62
62
|
lora_path = item["path"]
|
|
63
63
|
msg = f"Loading lora weights: {lora_path}"
|
|
64
64
|
logger.info(msg)
|
|
65
|
-
state_dict = safetensors.torch.load_file(lora_path)
|
|
65
|
+
state_dict = safetensors.torch.load_file(lora_path) # type: ignore[reportAttributeAccessIssue]
|
|
66
66
|
pipe.load_lora_weights(state_dict, adapter_name=item["name"])
|
|
67
67
|
|
|
68
68
|
if loras_to_load and get_best_device(quiet=True) == torch.device("cuda"):
|
|
@@ -63,7 +63,10 @@ class FluxPipeline(ControlNode):
|
|
|
63
63
|
with self.log_params.append_profile_to_logs("Loading model"), self.log_params.append_logs_to_logs(logger):
|
|
64
64
|
optimize_flux_pipeline_memory_footprint(pipe)
|
|
65
65
|
|
|
66
|
-
with
|
|
66
|
+
with (
|
|
67
|
+
self.log_params.append_profile_to_logs("Configuring flux loras"),
|
|
68
|
+
self.log_params.append_logs_to_logs(logger),
|
|
69
|
+
):
|
|
67
70
|
self.loras_params.configure_loras(pipe)
|
|
68
71
|
|
|
69
72
|
num_inference_steps = self.pipe_params.get_num_inference_steps()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""diffusers_nodes_library/pipelines/flux/peft."""
|