Skip to content

Commit aa58136

Browse files
committed
Add Publish to Folder publishing target to the standard library
1 parent a6f2d61 commit aa58136

5 files changed

Lines changed: 607 additions & 0 deletions

File tree

griptape_nodes_library.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"name": "Griptape Nodes Library",
33
"library_schema_version": "0.6.0",
4+
"advanced_library_path": "griptape_nodes_library/griptape_nodes_library_advanced.py",
45
"settings": [
56
{
67
"description": "API keys required by nodes in this library",
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import logging
2+
3+
from griptape_nodes.node_library.advanced_node_library import AdvancedNodeLibrary
4+
from griptape_nodes.node_library.library_registry import Library, LibrarySchema
5+
from griptape_nodes.retained_mode.events.base_events import RequestPayload, ResultPayload
6+
from griptape_nodes.retained_mode.events.workflow_events import (
7+
PublishWorkflowRegisteredEventData,
8+
PublishWorkflowRequest,
9+
)
10+
from griptape_nodes.retained_mode.griptape_nodes import GriptapeNodes
11+
12+
logging.basicConfig(level=logging.INFO)
13+
logger = logging.getLogger("griptape_nodes")
14+
15+
16+
def _publish_workflow_request_handler(request: RequestPayload) -> ResultPayload:
17+
if not isinstance(request, PublishWorkflowRequest):
18+
msg = f"Expected PublishWorkflowRequest, got {type(request).__name__}"
19+
raise TypeError(msg)
20+
from griptape_nodes_library.publish_workflow.local_publisher import LocalPublisher
21+
22+
publisher = LocalPublisher(
23+
workflow_name=request.workflow_name,
24+
pickle_control_flow_result=request.pickle_control_flow_result,
25+
)
26+
return publisher.publish_workflow()
27+
28+
29+
class GriptapeNodesLibraryAdvanced(AdvancedNodeLibrary):
30+
"""Advanced library implementation for the default Griptape Nodes Library."""
31+
32+
def before_library_nodes_loaded(self, library_data: LibrarySchema, library: Library) -> None: # noqa: ARG002
33+
"""Called before any nodes are loaded from the library."""
34+
msg = f"Starting to load nodes for '{library_data.name}' library..."
35+
logger.info(msg)
36+
37+
def after_library_nodes_loaded(self, library_data: LibrarySchema, library: Library) -> None: # noqa: ARG002
38+
"""Called after all nodes have been loaded from the library."""
39+
GriptapeNodes.LibraryManager().on_register_event_handler(
40+
request_type=PublishWorkflowRequest,
41+
handler=_publish_workflow_request_handler,
42+
library_data=library_data,
43+
event_data=PublishWorkflowRegisteredEventData(
44+
start_flow_node_type="StartFlow",
45+
start_flow_node_library_name=library_data.name,
46+
end_flow_node_type="EndFlow",
47+
end_flow_node_library_name=library_data.name,
48+
),
49+
)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"""Publish workflow package for local publishing."""

0 commit comments

Comments
 (0)