griptape-nodes 0.64.11__py3-none-any.whl → 0.65.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- griptape_nodes/app/app.py +25 -5
- griptape_nodes/cli/commands/init.py +65 -54
- griptape_nodes/cli/commands/libraries.py +92 -85
- griptape_nodes/cli/commands/self.py +121 -0
- griptape_nodes/common/node_executor.py +2142 -101
- griptape_nodes/exe_types/base_iterative_nodes.py +1004 -0
- griptape_nodes/exe_types/connections.py +114 -19
- griptape_nodes/exe_types/core_types.py +225 -7
- griptape_nodes/exe_types/flow.py +3 -3
- griptape_nodes/exe_types/node_types.py +681 -225
- griptape_nodes/exe_types/param_components/README.md +414 -0
- griptape_nodes/exe_types/param_components/api_key_provider_parameter.py +200 -0
- griptape_nodes/exe_types/param_components/huggingface/huggingface_model_parameter.py +2 -0
- griptape_nodes/exe_types/param_components/huggingface/huggingface_repo_file_parameter.py +79 -5
- griptape_nodes/exe_types/param_types/parameter_button.py +443 -0
- griptape_nodes/machines/control_flow.py +77 -38
- griptape_nodes/machines/dag_builder.py +148 -70
- griptape_nodes/machines/parallel_resolution.py +61 -35
- griptape_nodes/machines/sequential_resolution.py +11 -113
- griptape_nodes/retained_mode/events/app_events.py +1 -0
- griptape_nodes/retained_mode/events/base_events.py +16 -13
- griptape_nodes/retained_mode/events/connection_events.py +3 -0
- griptape_nodes/retained_mode/events/execution_events.py +35 -0
- griptape_nodes/retained_mode/events/flow_events.py +15 -2
- griptape_nodes/retained_mode/events/library_events.py +347 -0
- griptape_nodes/retained_mode/events/node_events.py +48 -0
- griptape_nodes/retained_mode/events/os_events.py +86 -3
- griptape_nodes/retained_mode/events/project_events.py +15 -1
- griptape_nodes/retained_mode/events/workflow_events.py +48 -1
- griptape_nodes/retained_mode/griptape_nodes.py +6 -2
- griptape_nodes/retained_mode/managers/config_manager.py +10 -8
- griptape_nodes/retained_mode/managers/event_manager.py +168 -0
- griptape_nodes/retained_mode/managers/fitness_problems/libraries/__init__.py +2 -0
- griptape_nodes/retained_mode/managers/fitness_problems/libraries/old_xdg_location_warning_problem.py +43 -0
- griptape_nodes/retained_mode/managers/flow_manager.py +664 -123
- griptape_nodes/retained_mode/managers/library_manager.py +1134 -138
- griptape_nodes/retained_mode/managers/model_manager.py +2 -3
- griptape_nodes/retained_mode/managers/node_manager.py +148 -25
- griptape_nodes/retained_mode/managers/object_manager.py +3 -1
- griptape_nodes/retained_mode/managers/operation_manager.py +3 -1
- griptape_nodes/retained_mode/managers/os_manager.py +1158 -122
- griptape_nodes/retained_mode/managers/secrets_manager.py +2 -3
- griptape_nodes/retained_mode/managers/settings.py +21 -1
- griptape_nodes/retained_mode/managers/sync_manager.py +2 -3
- griptape_nodes/retained_mode/managers/workflow_manager.py +358 -104
- griptape_nodes/retained_mode/retained_mode.py +3 -3
- griptape_nodes/traits/button.py +44 -2
- griptape_nodes/traits/file_system_picker.py +2 -2
- griptape_nodes/utils/file_utils.py +101 -0
- griptape_nodes/utils/git_utils.py +1226 -0
- griptape_nodes/utils/library_utils.py +122 -0
- {griptape_nodes-0.64.11.dist-info → griptape_nodes-0.65.0.dist-info}/METADATA +2 -1
- {griptape_nodes-0.64.11.dist-info → griptape_nodes-0.65.0.dist-info}/RECORD +55 -47
- {griptape_nodes-0.64.11.dist-info → griptape_nodes-0.65.0.dist-info}/WHEEL +1 -1
- {griptape_nodes-0.64.11.dist-info → griptape_nodes-0.65.0.dist-info}/entry_points.txt +0 -0
|
@@ -23,6 +23,7 @@ from griptape_nodes.retained_mode.events.secrets_events import (
|
|
|
23
23
|
)
|
|
24
24
|
from griptape_nodes.retained_mode.managers.config_manager import ConfigManager
|
|
25
25
|
from griptape_nodes.retained_mode.managers.event_manager import EventManager
|
|
26
|
+
from griptape_nodes.retained_mode.managers.settings import SECRETS_TO_REGISTER_KEY
|
|
26
27
|
|
|
27
28
|
logger = logging.getLogger("griptape_nodes")
|
|
28
29
|
|
|
@@ -60,9 +61,7 @@ class SecretsManager:
|
|
|
60
61
|
"""
|
|
61
62
|
secret_names = set()
|
|
62
63
|
|
|
63
|
-
secrets_to_register = self.config_manager.get_config_value(
|
|
64
|
-
"app_events.on_app_initialization_complete.secrets_to_register", default=[]
|
|
65
|
-
)
|
|
64
|
+
secrets_to_register = self.config_manager.get_config_value(SECRETS_TO_REGISTER_KEY, default=[])
|
|
66
65
|
|
|
67
66
|
secret_names.update(secrets_to_register)
|
|
68
67
|
|
|
@@ -6,6 +6,14 @@ from typing import Any, Literal
|
|
|
6
6
|
from pydantic import BaseModel, ConfigDict, field_validator
|
|
7
7
|
from pydantic import Field as PydanticField
|
|
8
8
|
|
|
9
|
+
LIBRARIES_TO_REGISTER_KEY = "app_events.on_app_initialization_complete.libraries_to_register"
|
|
10
|
+
LIBRARIES_TO_DOWNLOAD_KEY = "app_events.on_app_initialization_complete.libraries_to_download"
|
|
11
|
+
WORKFLOWS_TO_REGISTER_KEY = "app_events.on_app_initialization_complete.workflows_to_register"
|
|
12
|
+
SECRETS_TO_REGISTER_KEY = "app_events.on_app_initialization_complete.secrets_to_register"
|
|
13
|
+
MODELS_TO_DOWNLOAD_KEY = "app_events.on_app_initialization_complete.models_to_download"
|
|
14
|
+
PROJECTS_TO_REGISTER_KEY = "app_events.on_app_initialization_complete.projects_to_register"
|
|
15
|
+
EVENTS_TO_ECHO_KEY = "app_events.events_to_echo_as_retained_mode"
|
|
16
|
+
|
|
9
17
|
|
|
10
18
|
class Category(BaseModel):
|
|
11
19
|
"""A category with name and optional description."""
|
|
@@ -95,7 +103,14 @@ class MCPServerConfig(BaseModel):
|
|
|
95
103
|
|
|
96
104
|
|
|
97
105
|
class AppInitializationComplete(BaseModel):
|
|
98
|
-
|
|
106
|
+
libraries_to_download: list[str] = Field(
|
|
107
|
+
default_factory=list,
|
|
108
|
+
description="Git URLs of libraries to automatically download when the engine starts. Downloaded into libraries_directory. Supports full URLs or GitHub shorthand (e.g., 'user/repo'). Optionally specify a branch, tag, or commit with @ref syntax (e.g., 'user/repo@stable' or 'https://github.com/user/repo@v1.0.0'). If no ref is specified, uses the repository's default branch.",
|
|
109
|
+
)
|
|
110
|
+
libraries_to_register: list[str] = Field(
|
|
111
|
+
default_factory=list,
|
|
112
|
+
description="Libraries to automatically load when the engine starts. Can contain paths to individual griptape_nodes_library.json files or directory paths (scanned recursively for library JSON files).",
|
|
113
|
+
)
|
|
99
114
|
workflows_to_register: list[str] = Field(default_factory=list)
|
|
100
115
|
secrets_to_register: list[str] = Field(
|
|
101
116
|
default_factory=lambda: ["HF_TOKEN", "GT_CLOUD_API_KEY"],
|
|
@@ -155,6 +170,11 @@ class Settings(BaseModel):
|
|
|
155
170
|
default="sandbox_library",
|
|
156
171
|
description="Path to the sandbox library directory (useful while developing nodes). If presented as just a directory (e.g., 'sandbox_library') it will be interpreted as being relative to the workspace directory.",
|
|
157
172
|
)
|
|
173
|
+
libraries_directory: str = Field(
|
|
174
|
+
category=FILE_SYSTEM,
|
|
175
|
+
default="libraries",
|
|
176
|
+
description="Path to directory for downloaded libraries. All griptape_nodes_library.json files found recursively will be auto-discovered on startup. Relative paths are interpreted relative to the workspace directory.",
|
|
177
|
+
)
|
|
158
178
|
app_events: AppEvents = Field(
|
|
159
179
|
category=APPLICATION_EVENTS,
|
|
160
180
|
default_factory=AppEvents,
|
|
@@ -25,6 +25,7 @@ from griptape_nodes.retained_mode.events.workflow_events import (
|
|
|
25
25
|
RegisterWorkflowsFromConfigResultSuccess,
|
|
26
26
|
)
|
|
27
27
|
from griptape_nodes.retained_mode.griptape_nodes import GriptapeNodes
|
|
28
|
+
from griptape_nodes.retained_mode.managers.settings import WORKFLOWS_TO_REGISTER_KEY
|
|
28
29
|
|
|
29
30
|
if TYPE_CHECKING:
|
|
30
31
|
from griptape_nodes.retained_mode.events.base_events import ResultPayload
|
|
@@ -490,9 +491,7 @@ class SyncManager:
|
|
|
490
491
|
if synced_workflows:
|
|
491
492
|
logger.info("Registering %d synced workflows from configuration", len(synced_workflows))
|
|
492
493
|
try:
|
|
493
|
-
register_request = RegisterWorkflowsFromConfigRequest(
|
|
494
|
-
config_section="app_events.on_app_initialization_complete.workflows_to_register"
|
|
495
|
-
)
|
|
494
|
+
register_request = RegisterWorkflowsFromConfigRequest(config_section=WORKFLOWS_TO_REGISTER_KEY)
|
|
496
495
|
register_result = GriptapeNodes.handle_request(register_request)
|
|
497
496
|
|
|
498
497
|
if isinstance(register_result, RegisterWorkflowsFromConfigResultSuccess):
|