griptape-nodes 0.64.0__tar.gz → 0.64.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/PKG-INFO +1 -1
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/pyproject.toml +1 -1
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/node_manager.py +9 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/version_compatibility_manager.py +113 -69
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/updater/__init__.py +2 -1
- griptape_nodes-0.64.2/src/griptape_nodes/version_compatibility/versions/v0_63_8/__init__.py +1 -0
- griptape_nodes-0.64.2/src/griptape_nodes/version_compatibility/versions/v0_63_8/deprecated_nodegroup_parameters.py +105 -0
- griptape_nodes-0.64.0/src/griptape_nodes/version_compatibility/workflow_versions/__init__.py +0 -1
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/README.md +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/__main__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/api_client/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/api_client/client.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/api_client/request_client.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/app/.python-version +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/app/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/app/app.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/app/watch.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/bootstrap/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/bootstrap/utils/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/bootstrap/utils/python_subprocess_executor.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/bootstrap/workflow_executors/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/bootstrap/workflow_executors/local_session_workflow_executor.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/bootstrap/workflow_executors/local_workflow_executor.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/bootstrap/workflow_executors/subprocess_workflow_executor.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/bootstrap/workflow_executors/utils/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/bootstrap/workflow_executors/utils/subprocess_script.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/bootstrap/workflow_executors/workflow_executor.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/bootstrap/workflow_publishers/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/bootstrap/workflow_publishers/local_workflow_publisher.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/bootstrap/workflow_publishers/subprocess_workflow_publisher.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/bootstrap/workflow_publishers/utils/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/bootstrap/workflow_publishers/utils/subprocess_script.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/cli/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/cli/commands/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/cli/commands/config.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/cli/commands/engine.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/cli/commands/init.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/cli/commands/libraries.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/cli/commands/models.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/cli/commands/self.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/cli/main.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/cli/shared.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/directed_graph.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/macro_parser/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/macro_parser/core.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/macro_parser/exceptions.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/macro_parser/formats.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/macro_parser/matching.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/macro_parser/parsing.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/macro_parser/resolution.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/macro_parser/segments.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/node_executor.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/project_templates/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/project_templates/default_project_template.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/project_templates/defaults/README.md +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/project_templates/directory.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/project_templates/loader.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/project_templates/project.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/project_templates/situation.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/project_templates/validation.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/drivers/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/drivers/storage/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/drivers/storage/base_storage_driver.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/drivers/storage/griptape_cloud_storage_driver.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/drivers/storage/local_storage_driver.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/drivers/storage/storage_backend.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/drivers/thread_storage/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/drivers/thread_storage/base_thread_storage_driver.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/drivers/thread_storage/griptape_cloud_thread_storage_driver.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/drivers/thread_storage/local_thread_storage_driver.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/drivers/thread_storage/thread_storage_backend.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/connections.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/core_types.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/flow.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/node_types.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/param_components/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/param_components/artifact_url/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/param_components/artifact_url/public_artifact_url_parameter.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/param_components/execution_status_component.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/param_components/huggingface/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/param_components/huggingface/huggingface_model_parameter.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/param_components/huggingface/huggingface_repo_file_parameter.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/param_components/huggingface/huggingface_repo_parameter.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/param_components/huggingface/huggingface_utils.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/param_components/log_parameter.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/param_components/progress_bar_component.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/param_components/seed_parameter.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/param_types/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/param_types/parameter_audio.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/param_types/parameter_bool.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/param_types/parameter_float.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/param_types/parameter_image.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/param_types/parameter_int.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/param_types/parameter_number.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/param_types/parameter_string.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/param_types/parameter_three_d.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/param_types/parameter_video.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/type_validator.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/machines/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/machines/control_flow.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/machines/dag_builder.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/machines/fsm.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/machines/parallel_resolution.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/machines/sequential_resolution.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/mcp_server/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/node_library/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/node_library/advanced_node_library.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/node_library/library_registry.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/node_library/workflow_registry.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/py.typed +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/agent_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/app_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/arbitrary_python_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/base_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/config_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/connection_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/context_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/execution_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/flow_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/generate_request_payload_schemas.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/library_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/logger_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/mcp_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/model_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/node_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/object_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/os_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/parameter_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/payload_registry.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/project_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/resource_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/secrets_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/static_file_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/sync_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/validation_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/variable_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/events/workflow_events.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/griptape_nodes.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/agent_manager.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/arbitrary_code_exec_manager.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/config_manager.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/context_manager.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/engine_identity_manager.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/event_manager.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/advanced_library_load_failure_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/after_library_callback_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/before_library_callback_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/create_config_category_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/dependency_installation_failed_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/deprecated_node_warning_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/duplicate_library_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/duplicate_node_registration_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/engine_version_error_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/insufficient_disk_space_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/invalid_version_string_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/library_json_decode_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/library_load_exception_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/library_not_found_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/library_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/library_schema_exception_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/library_schema_validation_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/modified_parameters_set_deprecation_warning_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/modified_parameters_set_removed_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/node_class_not_base_node_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/node_class_not_found_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/node_module_import_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/sandbox_directory_missing_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/ui_options_field_modified_incompatible_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/ui_options_field_modified_warning_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/update_config_category_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/libraries/venv_creation_failed_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/deprecated_node_in_workflow_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/invalid_dependency_version_string_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/invalid_library_version_string_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/invalid_metadata_schema_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/invalid_metadata_section_count_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/invalid_toml_format_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/library_not_registered_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/library_version_below_required_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/library_version_large_difference_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/library_version_major_mismatch_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/library_version_minor_difference_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/missing_creation_date_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/missing_last_modified_date_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/missing_toml_section_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/node_type_not_found_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/workflow_not_found_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/workflow_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/fitness_problems/workflows/workflow_schema_version_problem.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/flow_manager.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/library_lifecycle/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/library_lifecycle/data_models.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/library_lifecycle/library_directory.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/library_lifecycle/library_fsm.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/base.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/github.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/local_file.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/package.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/sandbox.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/library_lifecycle/library_status.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/library_manager.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/mcp_manager.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/model_manager.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/object_manager.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/operation_manager.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/os_manager.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/project_manager.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/resource_components/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/resource_components/capability_field.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/resource_components/comparator.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/resource_components/resource_instance.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/resource_components/resource_type.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/resource_manager.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/resource_types/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/resource_types/cpu_resource.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/resource_types/os_resource.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/secrets_manager.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/session_manager.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/settings.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/static_files_manager.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/sync_manager.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/user_manager.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/variable_manager.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/managers/workflow_manager.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/retained_mode.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/utils/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/utils/name_generator.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/retained_mode/variable_types.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/servers/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/servers/mcp.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/servers/static.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/traits/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/traits/add_param_button.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/traits/button.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/traits/clamp.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/traits/color_picker.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/traits/compare.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/traits/compare_images.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/traits/file_system_picker.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/traits/minmax.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/traits/multi_options.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/traits/numbers_selector.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/traits/options.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/traits/slider.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/traits/trait_registry.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/traits/traits.json +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/updater/__main__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/utils/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/utils/async_utils.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/utils/dict_utils.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/utils/huggingface_utils.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/utils/image_preview.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/utils/metaclasses.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/utils/uv_utils.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/utils/version_utils.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/version_compatibility/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/version_compatibility/versions/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/version_compatibility/versions/v0_39_0/__init__.py +0 -0
- {griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/version_compatibility/versions/v0_39_0/modified_parameters_set_removal.py +0 -0
- {griptape_nodes-0.64.0/src/griptape_nodes/version_compatibility/workflow_versions → griptape_nodes-0.64.2/src/griptape_nodes/version_compatibility/versions}/v0_7_0/__init__.py +0 -0
- {griptape_nodes-0.64.0/src/griptape_nodes/version_compatibility/workflow_versions → griptape_nodes-0.64.2/src/griptape_nodes/version_compatibility/versions}/v0_7_0/local_executor_argument_addition.py +0 -0
|
@@ -1912,6 +1912,14 @@ class NodeManager:
|
|
|
1912
1912
|
details = f"Attempted to set parameter '{param_name}' value on node '{node_name}'. Failed because the Node was locked."
|
|
1913
1913
|
return SetParameterValueResultFailure(result_details=details)
|
|
1914
1914
|
|
|
1915
|
+
# Let versioning system potentially squelch removed parameters.
|
|
1916
|
+
# This check must run BEFORE we validate parameter existence, since removed parameters won't exist.
|
|
1917
|
+
version_compat_result = GriptapeNodes.VersionCompatibilityManager().check_set_parameter_version_compatibility(
|
|
1918
|
+
node, param_name, request.value
|
|
1919
|
+
)
|
|
1920
|
+
if version_compat_result is not None:
|
|
1921
|
+
return version_compat_result
|
|
1922
|
+
|
|
1915
1923
|
# Handle ErrorProxyNode parameter value requests
|
|
1916
1924
|
if isinstance(node, ErrorProxyNode):
|
|
1917
1925
|
if request.initial_setup:
|
|
@@ -1929,6 +1937,7 @@ class NodeManager:
|
|
|
1929
1937
|
|
|
1930
1938
|
# Does the Parameter actually exist on the Node?
|
|
1931
1939
|
parameter = node.get_parameter_by_name(param_name)
|
|
1940
|
+
|
|
1932
1941
|
if parameter is None:
|
|
1933
1942
|
details = f"Attempted to set parameter value for '{node_name}.{param_name}'. Failed because no parameter with that name could be found."
|
|
1934
1943
|
|
|
@@ -4,7 +4,7 @@ import importlib
|
|
|
4
4
|
import logging
|
|
5
5
|
from abc import ABC, abstractmethod
|
|
6
6
|
from pathlib import Path
|
|
7
|
-
from typing import TYPE_CHECKING, NamedTuple
|
|
7
|
+
from typing import TYPE_CHECKING, Any, NamedTuple
|
|
8
8
|
|
|
9
9
|
import semver
|
|
10
10
|
|
|
@@ -35,8 +35,13 @@ from griptape_nodes.retained_mode.managers.fitness_problems.workflows.node_type_
|
|
|
35
35
|
from griptape_nodes.retained_mode.managers.library_lifecycle.library_status import LibraryStatus
|
|
36
36
|
|
|
37
37
|
if TYPE_CHECKING:
|
|
38
|
+
from griptape_nodes.exe_types.node_types import BaseNode
|
|
38
39
|
from griptape_nodes.node_library.library_registry import LibrarySchema
|
|
39
40
|
from griptape_nodes.node_library.workflow_registry import WorkflowMetadata
|
|
41
|
+
from griptape_nodes.retained_mode.events.parameter_events import (
|
|
42
|
+
SetParameterValueResultFailure,
|
|
43
|
+
SetParameterValueResultSuccess,
|
|
44
|
+
)
|
|
40
45
|
from griptape_nodes.retained_mode.managers.event_manager import EventManager
|
|
41
46
|
from griptape_nodes.retained_mode.managers.fitness_problems.libraries.library_problem import LibraryProblem
|
|
42
47
|
from griptape_nodes.retained_mode.managers.fitness_problems.workflows.workflow_problem import WorkflowProblem
|
|
@@ -83,6 +88,38 @@ class WorkflowVersionCompatibilityCheck(ABC):
|
|
|
83
88
|
"""Perform the workflow compatibility check."""
|
|
84
89
|
|
|
85
90
|
|
|
91
|
+
class SetParameterVersionCompatibilityCheck(ABC):
|
|
92
|
+
"""Abstract base class for runtime parameter set version compatibility checks."""
|
|
93
|
+
|
|
94
|
+
@abstractmethod
|
|
95
|
+
def applies_to_set_parameter(self, node: BaseNode, parameter_name: str, value: Any) -> bool:
|
|
96
|
+
"""Return True if this check applies to the given parameter set operation.
|
|
97
|
+
|
|
98
|
+
Args:
|
|
99
|
+
node: The node instance
|
|
100
|
+
parameter_name: Name of the parameter being set
|
|
101
|
+
value: The value being set
|
|
102
|
+
|
|
103
|
+
Returns:
|
|
104
|
+
True if this check should be performed for this parameter
|
|
105
|
+
"""
|
|
106
|
+
|
|
107
|
+
@abstractmethod
|
|
108
|
+
def set_parameter_value(
|
|
109
|
+
self, node: BaseNode, parameter_name: str, value: Any
|
|
110
|
+
) -> SetParameterValueResultSuccess | SetParameterValueResultFailure:
|
|
111
|
+
"""Handle setting the parameter value with version compatibility logic.
|
|
112
|
+
|
|
113
|
+
Args:
|
|
114
|
+
node: The node instance
|
|
115
|
+
parameter_name: Name of the parameter being set
|
|
116
|
+
value: The value being set
|
|
117
|
+
|
|
118
|
+
Returns:
|
|
119
|
+
SetParameterValueResultSuccess or SetParameterValueResultFailure
|
|
120
|
+
"""
|
|
121
|
+
|
|
122
|
+
|
|
86
123
|
class VersionCompatibilityManager:
|
|
87
124
|
"""Manages version compatibility checks for libraries and other components."""
|
|
88
125
|
|
|
@@ -90,89 +127,74 @@ class VersionCompatibilityManager:
|
|
|
90
127
|
self._event_manager = event_manager
|
|
91
128
|
self._compatibility_checks: list[LibraryVersionCompatibilityCheck] = []
|
|
92
129
|
self._workflow_compatibility_checks: list[WorkflowVersionCompatibilityCheck] = []
|
|
130
|
+
self._set_parameter_compatibility_checks: list[SetParameterVersionCompatibilityCheck] = []
|
|
93
131
|
self._discover_version_checks()
|
|
94
132
|
|
|
95
133
|
def _discover_version_checks(self) -> None:
|
|
96
|
-
"""Automatically discover and register
|
|
97
|
-
|
|
98
|
-
|
|
134
|
+
"""Automatically discover and register all version compatibility checks from the versions/ directory."""
|
|
135
|
+
try:
|
|
136
|
+
import griptape_nodes.version_compatibility.versions as versions_module
|
|
99
137
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
import griptape_nodes.version_compatibility.versions as versions_module
|
|
138
|
+
if versions_module.__file__ is None:
|
|
139
|
+
logger.debug("No version compatibility checks directory found, skipping discovery")
|
|
140
|
+
return
|
|
104
141
|
|
|
105
|
-
|
|
142
|
+
versions_path = Path(versions_module.__file__).parent
|
|
106
143
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
144
|
+
# Iterate through version directories (e.g., v0_39_0, v0_63_8)
|
|
145
|
+
for version_dir in versions_path.iterdir():
|
|
146
|
+
if not version_dir.is_dir() or version_dir.name.startswith("__"):
|
|
147
|
+
continue
|
|
111
148
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
149
|
+
# Iterate through Python files in the version directory
|
|
150
|
+
for check_file in version_dir.glob("*.py"):
|
|
151
|
+
if check_file.name.startswith("__"):
|
|
152
|
+
continue
|
|
153
|
+
|
|
154
|
+
# Import the module once
|
|
155
|
+
file_module_path = (
|
|
156
|
+
f"griptape_nodes.version_compatibility.versions.{version_dir.name}.{check_file.stem}"
|
|
157
|
+
)
|
|
158
|
+
try:
|
|
159
|
+
check_module = importlib.import_module(file_module_path)
|
|
160
|
+
except ImportError as e:
|
|
161
|
+
logger.debug("Failed to import check module %s: %s", file_module_path, e)
|
|
162
|
+
continue
|
|
116
163
|
|
|
117
|
-
|
|
164
|
+
# Scan and register all check types in this module
|
|
165
|
+
self._register_checks_from_module(check_module)
|
|
118
166
|
|
|
119
|
-
# Iterate through version directories
|
|
120
|
-
for version_dir in workflow_versions_path.iterdir():
|
|
121
|
-
if version_dir.is_dir() and not version_dir.name.startswith("__"):
|
|
122
|
-
self._discover_workflow_checks_in_version_dir(version_dir)
|
|
123
167
|
except ImportError:
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
"""Discover compatibility checks in a specific version directory."""
|
|
129
|
-
# Iterate through Python files in the version directory
|
|
130
|
-
for check_file in version_dir.glob("*.py"):
|
|
131
|
-
if check_file.name.startswith("__"):
|
|
132
|
-
continue
|
|
168
|
+
logger.debug("No version compatibility checks directory found, skipping discovery")
|
|
169
|
+
|
|
170
|
+
def _register_checks_from_module(self, check_module: Any) -> None:
|
|
171
|
+
"""Register all version compatibility checks found in a module.
|
|
133
172
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
attr = getattr(module, attr_name)
|
|
141
|
-
if (
|
|
142
|
-
isinstance(attr, type)
|
|
143
|
-
and issubclass(attr, LibraryVersionCompatibilityCheck)
|
|
144
|
-
and attr is not LibraryVersionCompatibilityCheck
|
|
145
|
-
):
|
|
146
|
-
check_instance = attr()
|
|
147
|
-
self._compatibility_checks.append(check_instance)
|
|
148
|
-
logger.debug("Registered library version compatibility check: %s", attr_name)
|
|
149
|
-
|
|
150
|
-
def _discover_workflow_checks_in_version_dir(self, version_dir: Path) -> None:
|
|
151
|
-
"""Discover workflow compatibility checks in a specific version directory."""
|
|
152
|
-
# Iterate through Python files in the version directory
|
|
153
|
-
for check_file in version_dir.glob("*.py"):
|
|
154
|
-
if check_file.name.startswith("__"):
|
|
173
|
+
Args:
|
|
174
|
+
check_module: The imported module to scan for check classes
|
|
175
|
+
"""
|
|
176
|
+
for attr_name in dir(check_module):
|
|
177
|
+
attr = getattr(check_module, attr_name)
|
|
178
|
+
if not isinstance(attr, type):
|
|
155
179
|
continue
|
|
156
180
|
|
|
157
|
-
#
|
|
158
|
-
|
|
159
|
-
try:
|
|
160
|
-
module = importlib.import_module(module_path)
|
|
161
|
-
except ImportError as e:
|
|
162
|
-
logger.debug("Failed to import workflow compatibility check module %s: %s", module_path, e)
|
|
181
|
+
# Skip abstract base classes
|
|
182
|
+
if ABC in getattr(attr, "__bases__", ()):
|
|
163
183
|
continue
|
|
164
184
|
|
|
165
|
-
#
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
)
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
185
|
+
# Register based on which base class it inherits from
|
|
186
|
+
if issubclass(attr, LibraryVersionCompatibilityCheck):
|
|
187
|
+
check_instance = attr()
|
|
188
|
+
self._compatibility_checks.append(check_instance)
|
|
189
|
+
logger.debug("Registered library version compatibility check: %s", attr_name)
|
|
190
|
+
elif issubclass(attr, WorkflowVersionCompatibilityCheck):
|
|
191
|
+
check_instance = attr()
|
|
192
|
+
self._workflow_compatibility_checks.append(check_instance)
|
|
193
|
+
logger.debug("Registered workflow version compatibility check: %s", attr_name)
|
|
194
|
+
elif issubclass(attr, SetParameterVersionCompatibilityCheck):
|
|
195
|
+
check_instance = attr()
|
|
196
|
+
self._set_parameter_compatibility_checks.append(check_instance)
|
|
197
|
+
logger.debug("Registered set parameter version compatibility check: %s", attr_name)
|
|
176
198
|
|
|
177
199
|
def _check_library_for_deprecated_nodes(
|
|
178
200
|
self, library_data: LibrarySchema
|
|
@@ -333,6 +355,28 @@ class VersionCompatibilityManager:
|
|
|
333
355
|
|
|
334
356
|
return issues
|
|
335
357
|
|
|
358
|
+
def check_set_parameter_version_compatibility(
|
|
359
|
+
self, node: BaseNode, parameter_name: str, value: Any
|
|
360
|
+
) -> SetParameterValueResultSuccess | SetParameterValueResultFailure | None:
|
|
361
|
+
"""Check if a parameter set operation requires version compatibility handling.
|
|
362
|
+
|
|
363
|
+
Args:
|
|
364
|
+
node: The node instance
|
|
365
|
+
parameter_name: Name of the parameter being set
|
|
366
|
+
value: The value being set
|
|
367
|
+
|
|
368
|
+
Returns:
|
|
369
|
+
SetParameterValueResultSuccess, SetParameterValueResultFailure, or None if no check applies
|
|
370
|
+
"""
|
|
371
|
+
# Iterate through registered checks and find the first one that applies
|
|
372
|
+
for check_instance in self._set_parameter_compatibility_checks:
|
|
373
|
+
if check_instance.applies_to_set_parameter(node, parameter_name, value):
|
|
374
|
+
# First matching check handles the parameter
|
|
375
|
+
return check_instance.set_parameter_value(node, parameter_name, value)
|
|
376
|
+
|
|
377
|
+
# No checks applied
|
|
378
|
+
return None
|
|
379
|
+
|
|
336
380
|
def _get_current_engine_version(self) -> semver.VersionInfo:
|
|
337
381
|
"""Get the current engine version."""
|
|
338
382
|
result = GriptapeNodes.handle_request(GetEngineVersionRequest())
|
|
@@ -7,6 +7,7 @@ Usage:
|
|
|
7
7
|
from __future__ import annotations
|
|
8
8
|
|
|
9
9
|
import subprocess
|
|
10
|
+
import sys
|
|
10
11
|
|
|
11
12
|
from rich.console import Console
|
|
12
13
|
|
|
@@ -60,7 +61,7 @@ def _sync_libraries() -> None:
|
|
|
60
61
|
console.print("[bold green]Syncing libraries...[/bold green]")
|
|
61
62
|
try:
|
|
62
63
|
subprocess.run(
|
|
63
|
-
[
|
|
64
|
+
[sys.executable, "--no-update", "libraries", "sync"],
|
|
64
65
|
text=True,
|
|
65
66
|
capture_output=True,
|
|
66
67
|
check=True,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Version 0.63.8 parameter compatibility checks."""
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"""Check for deprecated job_group and execution_environment parameters."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
from typing import TYPE_CHECKING, Any, ClassVar
|
|
7
|
+
|
|
8
|
+
import semver
|
|
9
|
+
|
|
10
|
+
from griptape_nodes.exe_types.node_types import NodeGroupNode
|
|
11
|
+
from griptape_nodes.retained_mode.events.app_events import (
|
|
12
|
+
GetEngineVersionRequest,
|
|
13
|
+
GetEngineVersionResultSuccess,
|
|
14
|
+
)
|
|
15
|
+
from griptape_nodes.retained_mode.events.parameter_events import SetParameterValueResultSuccess
|
|
16
|
+
from griptape_nodes.retained_mode.griptape_nodes import GriptapeNodes
|
|
17
|
+
from griptape_nodes.retained_mode.managers.version_compatibility_manager import (
|
|
18
|
+
SetParameterVersionCompatibilityCheck,
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
if TYPE_CHECKING:
|
|
22
|
+
from griptape_nodes.exe_types.node_types import BaseNode
|
|
23
|
+
|
|
24
|
+
logger = logging.getLogger("griptape_nodes")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class DeprecatedNodeGroupParametersCheck(SetParameterVersionCompatibilityCheck):
|
|
28
|
+
"""Check for deprecated job_group and execution_environment parameters.
|
|
29
|
+
|
|
30
|
+
These parameters were removed in engine version 0.63.8 for all nodes except NodeGroup.
|
|
31
|
+
This check intercepts attempts to set these parameters and logs a warning prompting
|
|
32
|
+
users to resave their workflows.
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
DEPRECATED_PARAMETERS: ClassVar[set[str]] = {"job_group", "execution_environment"}
|
|
36
|
+
REMOVAL_VERSION: ClassVar[semver.VersionInfo] = semver.VersionInfo(0, 63, 8)
|
|
37
|
+
|
|
38
|
+
def __init__(self) -> None:
|
|
39
|
+
"""Initialize the check with an empty set of warned workflows."""
|
|
40
|
+
super().__init__()
|
|
41
|
+
self._warned_workflows: set[str] = set()
|
|
42
|
+
|
|
43
|
+
def applies_to_set_parameter(self, node: BaseNode, parameter_name: str, _value: Any) -> bool:
|
|
44
|
+
"""Return True if this is a deprecated parameter on a non-NodeGroup node.
|
|
45
|
+
|
|
46
|
+
Args:
|
|
47
|
+
node: The node instance
|
|
48
|
+
parameter_name: Name of the parameter being set
|
|
49
|
+
_value: The value being set (unused)
|
|
50
|
+
|
|
51
|
+
Returns:
|
|
52
|
+
True if this check should handle this parameter
|
|
53
|
+
"""
|
|
54
|
+
# Check parameter name first (fastest check)
|
|
55
|
+
if parameter_name not in self.DEPRECATED_PARAMETERS:
|
|
56
|
+
return False
|
|
57
|
+
|
|
58
|
+
# Check if node is NOT a NodeGroup (we only block for non-NodeGroup nodes)
|
|
59
|
+
if isinstance(node, NodeGroupNode):
|
|
60
|
+
return False
|
|
61
|
+
|
|
62
|
+
# Check if current engine version is >= 0.63.8
|
|
63
|
+
engine_version_result = GriptapeNodes.handle_request(GetEngineVersionRequest())
|
|
64
|
+
if not isinstance(engine_version_result, GetEngineVersionResultSuccess):
|
|
65
|
+
return False
|
|
66
|
+
|
|
67
|
+
current_version = semver.VersionInfo(
|
|
68
|
+
engine_version_result.major, engine_version_result.minor, engine_version_result.patch
|
|
69
|
+
)
|
|
70
|
+
return current_version >= self.REMOVAL_VERSION
|
|
71
|
+
|
|
72
|
+
def set_parameter_value(self, _node: BaseNode, parameter_name: str, _value: Any) -> SetParameterValueResultSuccess:
|
|
73
|
+
"""Handle the deprecated parameter by logging a warning and returning success with empty value.
|
|
74
|
+
|
|
75
|
+
Args:
|
|
76
|
+
_node: The node instance (unused)
|
|
77
|
+
parameter_name: Name of the parameter being set
|
|
78
|
+
_value: The value being set (unused)
|
|
79
|
+
|
|
80
|
+
Returns:
|
|
81
|
+
SetParameterValueResultSuccess with empty list value
|
|
82
|
+
"""
|
|
83
|
+
# Get the current workflow name to track warnings per workflow
|
|
84
|
+
workflow_name = GriptapeNodes.ContextManager().get_current_workflow_name()
|
|
85
|
+
|
|
86
|
+
# Check if we've already warned for this workflow
|
|
87
|
+
if workflow_name not in self._warned_workflows:
|
|
88
|
+
# Mark this workflow as warned
|
|
89
|
+
self._warned_workflows.add(workflow_name)
|
|
90
|
+
|
|
91
|
+
# Log warning with all deprecated parameters
|
|
92
|
+
deprecated_params_list = ", ".join(f"'{param}'" for param in self.DEPRECATED_PARAMETERS)
|
|
93
|
+
logger.warning(
|
|
94
|
+
"This workflow uses deprecated parameters (%s) that were removed in engine version %s. "
|
|
95
|
+
"Please resave your workflow and this warning will go away.",
|
|
96
|
+
deprecated_params_list,
|
|
97
|
+
self.REMOVAL_VERSION,
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
# Return success with None as the value (parameter doesn't exist, so no meaningful value to return)
|
|
101
|
+
return SetParameterValueResultSuccess(
|
|
102
|
+
finalized_value=None,
|
|
103
|
+
data_type="any",
|
|
104
|
+
result_details=f"Parameter '{parameter_name}' was removed in v{self.REMOVAL_VERSION}. Please resave this workflow.",
|
|
105
|
+
)
|
griptape_nodes-0.64.0/src/griptape_nodes/version_compatibility/workflow_versions/__init__.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"""Workflow version compatibility checks module."""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/api_client/request_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/bootstrap/utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/cli/commands/libraries.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/macro_parser/__init__.py
RENAMED
|
File without changes
|
{griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/macro_parser/core.py
RENAMED
|
File without changes
|
{griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/macro_parser/exceptions.py
RENAMED
|
File without changes
|
{griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/macro_parser/formats.py
RENAMED
|
File without changes
|
{griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/macro_parser/matching.py
RENAMED
|
File without changes
|
{griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/macro_parser/parsing.py
RENAMED
|
File without changes
|
{griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/macro_parser/resolution.py
RENAMED
|
File without changes
|
{griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/common/macro_parser/segments.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/drivers/storage/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{griptape_nodes-0.64.0 → griptape_nodes-0.64.2}/src/griptape_nodes/exe_types/param_types/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|