griptape-nodes 0.63.10__py3-none-any.whl → 0.64.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- griptape_nodes/common/node_executor.py +95 -171
- griptape_nodes/exe_types/connections.py +51 -2
- griptape_nodes/exe_types/flow.py +3 -3
- griptape_nodes/exe_types/node_types.py +330 -202
- griptape_nodes/exe_types/param_components/artifact_url/__init__.py +1 -0
- griptape_nodes/exe_types/param_components/artifact_url/public_artifact_url_parameter.py +155 -0
- griptape_nodes/exe_types/param_components/progress_bar_component.py +1 -1
- griptape_nodes/exe_types/param_types/parameter_string.py +27 -0
- griptape_nodes/machines/control_flow.py +64 -203
- griptape_nodes/machines/dag_builder.py +85 -238
- griptape_nodes/machines/parallel_resolution.py +9 -236
- griptape_nodes/machines/sequential_resolution.py +133 -11
- griptape_nodes/retained_mode/events/agent_events.py +2 -0
- griptape_nodes/retained_mode/events/flow_events.py +5 -6
- griptape_nodes/retained_mode/events/node_events.py +151 -1
- griptape_nodes/retained_mode/events/workflow_events.py +10 -0
- griptape_nodes/retained_mode/managers/agent_manager.py +33 -1
- griptape_nodes/retained_mode/managers/flow_manager.py +213 -290
- griptape_nodes/retained_mode/managers/library_manager.py +24 -7
- griptape_nodes/retained_mode/managers/node_manager.py +400 -77
- griptape_nodes/retained_mode/managers/version_compatibility_manager.py +113 -69
- griptape_nodes/retained_mode/managers/workflow_manager.py +45 -10
- griptape_nodes/servers/mcp.py +32 -0
- griptape_nodes/version_compatibility/versions/v0_63_8/__init__.py +1 -0
- griptape_nodes/version_compatibility/versions/v0_63_8/deprecated_nodegroup_parameters.py +105 -0
- {griptape_nodes-0.63.10.dist-info → griptape_nodes-0.64.1.dist-info}/METADATA +3 -1
- {griptape_nodes-0.63.10.dist-info → griptape_nodes-0.64.1.dist-info}/RECORD +31 -28
- griptape_nodes/version_compatibility/workflow_versions/__init__.py +0 -1
- /griptape_nodes/version_compatibility/{workflow_versions → versions}/v0_7_0/__init__.py +0 -0
- /griptape_nodes/version_compatibility/{workflow_versions → versions}/v0_7_0/local_executor_argument_addition.py +0 -0
- {griptape_nodes-0.63.10.dist-info → griptape_nodes-0.64.1.dist-info}/WHEEL +0 -0
- {griptape_nodes-0.63.10.dist-info → griptape_nodes-0.64.1.dist-info}/entry_points.txt +0 -0
|
@@ -13,7 +13,7 @@ from collections import defaultdict
|
|
|
13
13
|
from dataclasses import dataclass, field
|
|
14
14
|
from importlib.resources import files
|
|
15
15
|
from pathlib import Path
|
|
16
|
-
from typing import TYPE_CHECKING, cast
|
|
16
|
+
from typing import TYPE_CHECKING, Any, Generic, TypeVar, cast
|
|
17
17
|
|
|
18
18
|
from packaging.requirements import InvalidRequirement, Requirement
|
|
19
19
|
from pydantic import ValidationError
|
|
@@ -145,6 +145,8 @@ if TYPE_CHECKING:
|
|
|
145
145
|
logger = logging.getLogger("griptape_nodes")
|
|
146
146
|
console = Console()
|
|
147
147
|
|
|
148
|
+
TRegisteredEventData = TypeVar("TRegisteredEventData")
|
|
149
|
+
|
|
148
150
|
|
|
149
151
|
class LibraryManager:
|
|
150
152
|
SANDBOX_LIBRARY_NAME = "Sandbox Library"
|
|
@@ -167,11 +169,16 @@ class LibraryManager:
|
|
|
167
169
|
_library_file_path_to_info: dict[str, LibraryInfo]
|
|
168
170
|
|
|
169
171
|
@dataclass
|
|
170
|
-
class RegisteredEventHandler:
|
|
171
|
-
"""Information regarding an event handler from a registered library.
|
|
172
|
+
class RegisteredEventHandler(Generic[TRegisteredEventData]):
|
|
173
|
+
"""Information regarding an event handler from a registered library.
|
|
174
|
+
|
|
175
|
+
The generic type parameter TRegisteredEventData allows each event type
|
|
176
|
+
to specify its own structured additional data.
|
|
177
|
+
"""
|
|
172
178
|
|
|
173
179
|
handler: Callable[[RequestPayload], ResultPayload]
|
|
174
180
|
library_data: LibrarySchema
|
|
181
|
+
event_data: TRegisteredEventData | None = None
|
|
175
182
|
|
|
176
183
|
# Stable module namespace mappings for workflow serialization
|
|
177
184
|
# These mappings ensure that dynamically loaded modules can be reliably imported
|
|
@@ -197,7 +204,9 @@ class LibraryManager:
|
|
|
197
204
|
self._dynamic_to_stable_module_mapping = {}
|
|
198
205
|
self._stable_to_dynamic_module_mapping = {}
|
|
199
206
|
self._library_to_stable_modules = {}
|
|
200
|
-
self._library_event_handler_mappings: dict[
|
|
207
|
+
self._library_event_handler_mappings: dict[
|
|
208
|
+
type[Payload], dict[str, LibraryManager.RegisteredEventHandler[Any]]
|
|
209
|
+
] = {}
|
|
201
210
|
# LibraryDirectory owns the FSMs and manages library lifecycle
|
|
202
211
|
self._library_directory = LibraryDirectory()
|
|
203
212
|
self._libraries_loading_complete = asyncio.Event()
|
|
@@ -357,15 +366,23 @@ class LibraryManager:
|
|
|
357
366
|
request_type: type[RequestPayload],
|
|
358
367
|
handler: Callable[[RequestPayload], ResultPayload],
|
|
359
368
|
library_data: LibrarySchema,
|
|
369
|
+
event_data: object | None = None,
|
|
360
370
|
) -> None:
|
|
361
|
-
"""Register an event handler for a specific request type from a library.
|
|
371
|
+
"""Register an event handler for a specific request type from a library.
|
|
372
|
+
|
|
373
|
+
Args:
|
|
374
|
+
request_type: The type of request payload this handler processes
|
|
375
|
+
handler: The callable handler function
|
|
376
|
+
library_data: Schema data for the library registering this handler
|
|
377
|
+
event_data: Optional structured data specific to this event type
|
|
378
|
+
"""
|
|
362
379
|
if self._library_event_handler_mappings.get(request_type) is None:
|
|
363
380
|
self._library_event_handler_mappings[request_type] = {}
|
|
364
381
|
self._library_event_handler_mappings[request_type][library_data.name] = LibraryManager.RegisteredEventHandler(
|
|
365
|
-
handler=handler, library_data=library_data
|
|
382
|
+
handler=handler, library_data=library_data, event_data=event_data
|
|
366
383
|
)
|
|
367
384
|
|
|
368
|
-
def get_registered_event_handlers(self, request_type: type[Payload]) -> dict[str, RegisteredEventHandler]:
|
|
385
|
+
def get_registered_event_handlers(self, request_type: type[Payload]) -> dict[str, RegisteredEventHandler[Any]]:
|
|
369
386
|
"""Get all registered event handlers for a specific request type."""
|
|
370
387
|
return self._library_event_handler_mappings.get(request_type, {})
|
|
371
388
|
|