griptape-nodes 0.56.0__py3-none-any.whl → 0.56.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/app/app.py +10 -15
- griptape_nodes/app/watch.py +35 -67
- griptape_nodes/bootstrap/utils/__init__.py +1 -0
- griptape_nodes/bootstrap/utils/python_subprocess_executor.py +122 -0
- griptape_nodes/bootstrap/workflow_executors/local_session_workflow_executor.py +418 -0
- griptape_nodes/bootstrap/workflow_executors/local_workflow_executor.py +37 -8
- griptape_nodes/bootstrap/workflow_executors/subprocess_workflow_executor.py +326 -0
- griptape_nodes/bootstrap/workflow_executors/utils/__init__.py +1 -0
- griptape_nodes/bootstrap/workflow_executors/utils/subprocess_script.py +51 -0
- griptape_nodes/bootstrap/workflow_publishers/__init__.py +1 -0
- griptape_nodes/bootstrap/workflow_publishers/local_workflow_publisher.py +43 -0
- griptape_nodes/bootstrap/workflow_publishers/subprocess_workflow_publisher.py +84 -0
- griptape_nodes/bootstrap/workflow_publishers/utils/__init__.py +1 -0
- griptape_nodes/bootstrap/workflow_publishers/utils/subprocess_script.py +54 -0
- griptape_nodes/cli/commands/engine.py +4 -15
- griptape_nodes/cli/main.py +6 -1
- griptape_nodes/exe_types/core_types.py +26 -0
- griptape_nodes/exe_types/node_types.py +116 -1
- griptape_nodes/retained_mode/events/agent_events.py +2 -0
- griptape_nodes/retained_mode/events/base_events.py +18 -17
- griptape_nodes/retained_mode/events/execution_events.py +3 -1
- griptape_nodes/retained_mode/events/flow_events.py +5 -7
- griptape_nodes/retained_mode/events/mcp_events.py +363 -0
- griptape_nodes/retained_mode/events/node_events.py +3 -4
- griptape_nodes/retained_mode/griptape_nodes.py +8 -0
- griptape_nodes/retained_mode/managers/agent_manager.py +67 -4
- griptape_nodes/retained_mode/managers/event_manager.py +31 -13
- griptape_nodes/retained_mode/managers/flow_manager.py +76 -44
- griptape_nodes/retained_mode/managers/library_manager.py +7 -9
- griptape_nodes/retained_mode/managers/mcp_manager.py +364 -0
- griptape_nodes/retained_mode/managers/node_manager.py +12 -1
- griptape_nodes/retained_mode/managers/settings.py +40 -0
- griptape_nodes/retained_mode/managers/workflow_manager.py +94 -8
- griptape_nodes/traits/multi_options.py +5 -1
- griptape_nodes/traits/options.py +10 -2
- {griptape_nodes-0.56.0.dist-info → griptape_nodes-0.56.1.dist-info}/METADATA +2 -2
- {griptape_nodes-0.56.0.dist-info → griptape_nodes-0.56.1.dist-info}/RECORD +39 -26
- {griptape_nodes-0.56.0.dist-info → griptape_nodes-0.56.1.dist-info}/WHEEL +0 -0
- {griptape_nodes-0.56.0.dist-info → griptape_nodes-0.56.1.dist-info}/entry_points.txt +0 -0
|
@@ -18,6 +18,7 @@ from griptape_nodes.exe_types.node_types import (
|
|
|
18
18
|
BaseNode,
|
|
19
19
|
EndLoopNode,
|
|
20
20
|
ErrorProxyNode,
|
|
21
|
+
NodeDependencies,
|
|
21
22
|
NodeResolutionState,
|
|
22
23
|
StartLoopNode,
|
|
23
24
|
)
|
|
@@ -2075,11 +2076,21 @@ class NodeManager:
|
|
|
2075
2076
|
lock_command = SetLockNodeStateRequest(node_name=None, lock=True)
|
|
2076
2077
|
else:
|
|
2077
2078
|
lock_command = None
|
|
2079
|
+
|
|
2080
|
+
# Collect node dependencies
|
|
2081
|
+
node_dependencies = node.get_node_dependencies()
|
|
2082
|
+
if node_dependencies is None:
|
|
2083
|
+
# Ensure we always have a NodeDependencies object, even if empty
|
|
2084
|
+
node_dependencies = NodeDependencies()
|
|
2085
|
+
|
|
2086
|
+
# Add the library dependency to the node dependencies
|
|
2087
|
+
node_dependencies.libraries.add(library_details)
|
|
2088
|
+
|
|
2078
2089
|
# Hooray
|
|
2079
2090
|
serialized_node_commands = SerializedNodeCommands(
|
|
2080
2091
|
create_node_command=create_node_request,
|
|
2081
2092
|
element_modification_commands=element_modification_commands,
|
|
2082
|
-
|
|
2093
|
+
node_dependencies=node_dependencies,
|
|
2083
2094
|
lock_node_command=lock_command,
|
|
2084
2095
|
)
|
|
2085
2096
|
details = f"Successfully serialized node '{node_name}' into commands."
|
|
@@ -23,6 +23,7 @@ API_KEYS = Category(name="API Keys", description="API keys and authentication cr
|
|
|
23
23
|
EXECUTION = Category(name="Execution", description="Workflow execution and processing settings")
|
|
24
24
|
STORAGE = Category(name="Storage", description="Data storage and persistence configuration")
|
|
25
25
|
SYSTEM_REQUIREMENTS = Category(name="System Requirements", description="System resource requirements and limits")
|
|
26
|
+
MCP_SERVERS = Category(name="MCP Servers", description="Model Context Protocol server configurations")
|
|
26
27
|
|
|
27
28
|
|
|
28
29
|
def Field(category: str | Category = "General", **kwargs) -> Any:
|
|
@@ -56,6 +57,40 @@ class LogLevel(StrEnum):
|
|
|
56
57
|
DEBUG = "DEBUG"
|
|
57
58
|
|
|
58
59
|
|
|
60
|
+
class MCPServerConfig(BaseModel):
|
|
61
|
+
"""Configuration for a single MCP server."""
|
|
62
|
+
|
|
63
|
+
name: str = Field(description="Unique name/identifier for the MCP server")
|
|
64
|
+
enabled: bool = Field(default=True, description="Whether this MCP server is enabled")
|
|
65
|
+
transport: str = Field(default="stdio", description="Transport type: stdio, sse, streamable_http, or websocket")
|
|
66
|
+
|
|
67
|
+
# StdioConnection fields
|
|
68
|
+
command: str | None = Field(default=None, description="Command to start the MCP server (required for stdio)")
|
|
69
|
+
args: list[str] = Field(default_factory=list, description="Arguments to pass to the MCP server command (stdio)")
|
|
70
|
+
env: dict[str, str] = Field(default_factory=dict, description="Environment variables for the MCP server (stdio)")
|
|
71
|
+
cwd: str | None = Field(default=None, description="Working directory for the MCP server (stdio)")
|
|
72
|
+
encoding: str = Field(default="utf-8", description="Text encoding for stdio communication")
|
|
73
|
+
encoding_error_handler: str = Field(default="strict", description="Encoding error handler for stdio")
|
|
74
|
+
|
|
75
|
+
# HTTP-based connection fields (sse, streamable_http, websocket)
|
|
76
|
+
url: str | None = Field(
|
|
77
|
+
default=None, description="URL for HTTP-based connections (sse, streamable_http, websocket)"
|
|
78
|
+
)
|
|
79
|
+
headers: dict[str, str] | None = Field(default=None, description="HTTP headers for HTTP-based connections")
|
|
80
|
+
timeout: float | None = Field(default=None, description="HTTP timeout in seconds")
|
|
81
|
+
sse_read_timeout: float | None = Field(default=None, description="SSE read timeout in seconds")
|
|
82
|
+
terminate_on_close: bool = Field(
|
|
83
|
+
default=True, description="Whether to terminate session on close (streamable_http)"
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
# Common fields
|
|
87
|
+
description: str | None = Field(default=None, description="Optional description of what this MCP server provides")
|
|
88
|
+
capabilities: list[str] = Field(default_factory=list, description="List of capabilities this MCP server provides")
|
|
89
|
+
|
|
90
|
+
def __str__(self) -> str:
|
|
91
|
+
return f"{self.name} ({'enabled' if self.enabled else 'disabled'})"
|
|
92
|
+
|
|
93
|
+
|
|
59
94
|
class AppInitializationComplete(BaseModel):
|
|
60
95
|
libraries_to_register: list[str] = Field(default_factory=list)
|
|
61
96
|
workflows_to_register: list[str] = Field(default_factory=list)
|
|
@@ -215,3 +250,8 @@ class Settings(BaseModel):
|
|
|
215
250
|
default=True,
|
|
216
251
|
description="Enable file watching for synced workflows directory",
|
|
217
252
|
)
|
|
253
|
+
mcp_servers: list[MCPServerConfig] = Field(
|
|
254
|
+
category=MCP_SERVERS,
|
|
255
|
+
default_factory=list,
|
|
256
|
+
description="List of Model Context Protocol server configurations",
|
|
257
|
+
)
|
|
@@ -31,12 +31,12 @@ from griptape_nodes.retained_mode.events.app_events import (
|
|
|
31
31
|
|
|
32
32
|
# Runtime imports for ResultDetails since it's used at runtime
|
|
33
33
|
from griptape_nodes.retained_mode.events.base_events import ResultDetail, ResultDetails
|
|
34
|
+
from griptape_nodes.retained_mode.events.execution_events import StartFlowResultFailure, StartFlowResultSuccess
|
|
34
35
|
from griptape_nodes.retained_mode.events.flow_events import (
|
|
35
36
|
CreateFlowRequest,
|
|
36
37
|
GetTopLevelFlowRequest,
|
|
37
38
|
GetTopLevelFlowResultSuccess,
|
|
38
39
|
SerializedFlowCommands,
|
|
39
|
-
SerializedNodeCommands,
|
|
40
40
|
SerializeFlowToCommandsRequest,
|
|
41
41
|
SerializeFlowToCommandsResultSuccess,
|
|
42
42
|
SetFlowMetadataRequest,
|
|
@@ -118,7 +118,7 @@ if TYPE_CHECKING:
|
|
|
118
118
|
|
|
119
119
|
from griptape_nodes.exe_types.core_types import Parameter
|
|
120
120
|
from griptape_nodes.retained_mode.events.base_events import ResultPayload
|
|
121
|
-
from griptape_nodes.retained_mode.events.node_events import SetLockNodeStateRequest
|
|
121
|
+
from griptape_nodes.retained_mode.events.node_events import SerializedNodeCommands, SetLockNodeStateRequest
|
|
122
122
|
from griptape_nodes.retained_mode.managers.event_manager import EventManager
|
|
123
123
|
|
|
124
124
|
|
|
@@ -1379,14 +1379,14 @@ class WorkflowManager:
|
|
|
1379
1379
|
|
|
1380
1380
|
# Create the Workflow Metadata header
|
|
1381
1381
|
workflows_referenced = None
|
|
1382
|
-
if serialized_flow_commands.referenced_workflows:
|
|
1383
|
-
workflows_referenced = list(serialized_flow_commands.referenced_workflows)
|
|
1382
|
+
if serialized_flow_commands.node_dependencies.referenced_workflows:
|
|
1383
|
+
workflows_referenced = list(serialized_flow_commands.node_dependencies.referenced_workflows)
|
|
1384
1384
|
|
|
1385
1385
|
return WorkflowMetadata(
|
|
1386
1386
|
name=str(file_name),
|
|
1387
1387
|
schema_version=WorkflowMetadata.LATEST_SCHEMA_VERSION,
|
|
1388
1388
|
engine_version_created_with=engine_version,
|
|
1389
|
-
node_libraries_referenced=list(serialized_flow_commands.
|
|
1389
|
+
node_libraries_referenced=list(serialized_flow_commands.node_dependencies.libraries),
|
|
1390
1390
|
workflows_referenced=workflows_referenced,
|
|
1391
1391
|
creation_date=creation_date,
|
|
1392
1392
|
last_modified_date=datetime.now(tz=UTC),
|
|
@@ -1395,7 +1395,7 @@ class WorkflowManager:
|
|
|
1395
1395
|
image=image_path,
|
|
1396
1396
|
)
|
|
1397
1397
|
|
|
1398
|
-
def _generate_workflow_file_content( # noqa: PLR0912, C901
|
|
1398
|
+
def _generate_workflow_file_content( # noqa: PLR0912, PLR0915, C901
|
|
1399
1399
|
self,
|
|
1400
1400
|
serialized_flow_commands: SerializedFlowCommands,
|
|
1401
1401
|
workflow_metadata: WorkflowMetadata,
|
|
@@ -1410,6 +1410,13 @@ class WorkflowManager:
|
|
|
1410
1410
|
import_recorder = ImportRecorder()
|
|
1411
1411
|
import_recorder.add_from_import("griptape_nodes.retained_mode.griptape_nodes", "GriptapeNodes")
|
|
1412
1412
|
|
|
1413
|
+
# Add imports from node dependencies
|
|
1414
|
+
for import_dep in serialized_flow_commands.node_dependencies.imports:
|
|
1415
|
+
if import_dep.class_name:
|
|
1416
|
+
import_recorder.add_from_import(import_dep.module, import_dep.class_name)
|
|
1417
|
+
else:
|
|
1418
|
+
import_recorder.add_import(import_dep.module)
|
|
1419
|
+
|
|
1413
1420
|
ast_container = ASTContainer()
|
|
1414
1421
|
|
|
1415
1422
|
prereq_code = self._generate_workflow_run_prerequisite_code(
|
|
@@ -1989,6 +1996,17 @@ class WorkflowManager:
|
|
|
1989
1996
|
]
|
|
1990
1997
|
)
|
|
1991
1998
|
|
|
1999
|
+
# Ensure body is not empty - add pass statement if no input parameters
|
|
2000
|
+
if not build_flow_input_stmts:
|
|
2001
|
+
build_flow_input_stmts = [
|
|
2002
|
+
ast.Expr(
|
|
2003
|
+
value=ast.Constant(
|
|
2004
|
+
value="This workflow has no input parameters defined, so there's nothing necessary to supply"
|
|
2005
|
+
)
|
|
2006
|
+
),
|
|
2007
|
+
ast.Pass(),
|
|
2008
|
+
]
|
|
2009
|
+
|
|
1992
2010
|
# Wrap the individual argument processing in an else clause
|
|
1993
2011
|
individual_args_else = ast.If(
|
|
1994
2012
|
test=ast.Compare(
|
|
@@ -3160,7 +3178,7 @@ class WorkflowManager:
|
|
|
3160
3178
|
for node in nodes:
|
|
3161
3179
|
for param in node.parameters:
|
|
3162
3180
|
# Expose only the parameters that are relevant for workflow input and output.
|
|
3163
|
-
param_info = self.extract_parameter_shape_info(param, include_control_params=
|
|
3181
|
+
param_info = self.extract_parameter_shape_info(param, include_control_params=True)
|
|
3164
3182
|
if param_info is not None:
|
|
3165
3183
|
if node.name in workflow_shape[workflow_shape_type]:
|
|
3166
3184
|
cast("dict", workflow_shape[workflow_shape_type][node.name])[param.name] = param_info
|
|
@@ -3217,7 +3235,7 @@ class WorkflowManager:
|
|
|
3217
3235
|
return workflow_shape
|
|
3218
3236
|
|
|
3219
3237
|
def extract_parameter_shape_info(
|
|
3220
|
-
self, parameter: Parameter, *, include_control_params: bool
|
|
3238
|
+
self, parameter: Parameter, *, include_control_params: bool
|
|
3221
3239
|
) -> ParameterShapeInfo | None:
|
|
3222
3240
|
"""Extract shape information from a parameter for workflow shape building.
|
|
3223
3241
|
|
|
@@ -3276,12 +3294,80 @@ class WorkflowManager:
|
|
|
3276
3294
|
if isinstance(result, PublishWorkflowResultSuccess):
|
|
3277
3295
|
workflow_file = Path(result.published_workflow_file_path)
|
|
3278
3296
|
result = self._register_published_workflow_file(workflow_file, result)
|
|
3297
|
+
|
|
3298
|
+
if request.execute_on_publish:
|
|
3299
|
+
await self._handle_execute_on_publish(request, workflow_file)
|
|
3300
|
+
|
|
3279
3301
|
return result # noqa: TRY300
|
|
3280
3302
|
except Exception as e:
|
|
3281
3303
|
details = f"Failed to publish workflow '{request.workflow_name}': {e!s}"
|
|
3282
3304
|
logger.exception(details)
|
|
3283
3305
|
return PublishWorkflowResultFailure(exception=e, result_details=details)
|
|
3284
3306
|
|
|
3307
|
+
async def _handle_execute_on_publish(self, request: PublishWorkflowRequest, workflow_file: Path) -> None:
|
|
3308
|
+
class ExecuteOnPublishError(Exception):
|
|
3309
|
+
pass
|
|
3310
|
+
|
|
3311
|
+
# Create an event to track when we get a start workflow result
|
|
3312
|
+
start_result_received = asyncio.Event()
|
|
3313
|
+
exception: ExecuteOnPublishError | None = None
|
|
3314
|
+
|
|
3315
|
+
def invoke_done_callback(future: asyncio.Future) -> None:
|
|
3316
|
+
nonlocal exception
|
|
3317
|
+
try:
|
|
3318
|
+
future.result()
|
|
3319
|
+
except Exception as e:
|
|
3320
|
+
msg = f"Error during invocation of published workflow '{request.workflow_name}': {e!s}"
|
|
3321
|
+
logger.exception(msg)
|
|
3322
|
+
exception = ExecuteOnPublishError(e)
|
|
3323
|
+
start_result_received.set()
|
|
3324
|
+
|
|
3325
|
+
def on_start_flow_result(start_result: ResultPayload) -> None:
|
|
3326
|
+
nonlocal exception
|
|
3327
|
+
if isinstance(start_result, StartFlowResultSuccess):
|
|
3328
|
+
msg = f"Successfully started published workflow '{request.workflow_name}'"
|
|
3329
|
+
logger.info(msg)
|
|
3330
|
+
elif isinstance(start_result, StartFlowResultFailure):
|
|
3331
|
+
msg = f"Failed to invoke published workflow '{request.workflow_name}': {start_result.exception}"
|
|
3332
|
+
logger.exception(msg)
|
|
3333
|
+
exceptions = start_result.validation_exceptions
|
|
3334
|
+
exceptions.append(start_result.exception) if start_result.exception else None
|
|
3335
|
+
exception = ExecuteOnPublishError(exceptions)
|
|
3336
|
+
|
|
3337
|
+
start_result_received.set()
|
|
3338
|
+
|
|
3339
|
+
invoke_task = asyncio.create_task(
|
|
3340
|
+
self._invoke_published_workflow(request.workflow_name, workflow_file, on_start_flow_result)
|
|
3341
|
+
)
|
|
3342
|
+
invoke_task.add_done_callback(invoke_done_callback)
|
|
3343
|
+
|
|
3344
|
+
# Wait for StartFlow result
|
|
3345
|
+
try:
|
|
3346
|
+
await asyncio.wait_for(start_result_received.wait(), timeout=10.0)
|
|
3347
|
+
if exception is not None:
|
|
3348
|
+
raise exception
|
|
3349
|
+
except TimeoutError:
|
|
3350
|
+
# Timeout occurred - don't block on subprocess workflow execution, just log a warning
|
|
3351
|
+
msg = f"Timeout waiting for workflow '{request.workflow_name}' StartFlow result."
|
|
3352
|
+
logger.warning(msg)
|
|
3353
|
+
|
|
3354
|
+
async def _invoke_published_workflow(
|
|
3355
|
+
self, workflow_name: str, workflow_path: Path, on_start_flow_result: Callable[[ResultPayload], None]
|
|
3356
|
+
) -> None:
|
|
3357
|
+
from griptape_nodes.bootstrap.workflow_executors.subprocess_workflow_executor import SubprocessWorkflowExecutor
|
|
3358
|
+
|
|
3359
|
+
subprocess_executor = SubprocessWorkflowExecutor(
|
|
3360
|
+
workflow_path=str(workflow_path), on_start_flow_result=on_start_flow_result
|
|
3361
|
+
)
|
|
3362
|
+
storage_backend_value = GriptapeNodes.ConfigManager().get_config_value("storage_backend")
|
|
3363
|
+
|
|
3364
|
+
async with subprocess_executor as executor:
|
|
3365
|
+
await executor.arun(
|
|
3366
|
+
workflow_name=workflow_name,
|
|
3367
|
+
flow_input={},
|
|
3368
|
+
storage_backend=StorageBackend(value=storage_backend_value),
|
|
3369
|
+
)
|
|
3370
|
+
|
|
3285
3371
|
def _register_published_workflow_file(
|
|
3286
3372
|
self, workflow_file: Path, result: PublishWorkflowResultSuccess
|
|
3287
3373
|
) -> ResultPayload:
|
|
@@ -29,15 +29,17 @@ class MultiOptions(Trait):
|
|
|
29
29
|
placeholder: str = field(default="Select options...")
|
|
30
30
|
max_selected_display: int = field(default=3)
|
|
31
31
|
show_search: bool = field(default=True)
|
|
32
|
+
search_filter: str = field(default="")
|
|
32
33
|
icon_size: str = field(default="small")
|
|
33
34
|
|
|
34
|
-
def __init__(
|
|
35
|
+
def __init__( # noqa: PLR0913
|
|
35
36
|
self,
|
|
36
37
|
*,
|
|
37
38
|
choices: list | None = None,
|
|
38
39
|
placeholder: str = "Select options...",
|
|
39
40
|
max_selected_display: int = 3,
|
|
40
41
|
show_search: bool = True,
|
|
42
|
+
search_filter: str = "",
|
|
41
43
|
icon_size: str = "small",
|
|
42
44
|
) -> None:
|
|
43
45
|
super().__init__()
|
|
@@ -48,6 +50,7 @@ class MultiOptions(Trait):
|
|
|
48
50
|
self.placeholder = placeholder
|
|
49
51
|
self.max_selected_display = max_selected_display
|
|
50
52
|
self.show_search = show_search
|
|
53
|
+
self.search_filter = search_filter
|
|
51
54
|
|
|
52
55
|
# Validate icon_size
|
|
53
56
|
if icon_size not in ["small", "large"]:
|
|
@@ -183,6 +186,7 @@ class MultiOptions(Trait):
|
|
|
183
186
|
"placeholder": self.placeholder,
|
|
184
187
|
"max_selected_display": self.max_selected_display,
|
|
185
188
|
"show_search": self.show_search,
|
|
189
|
+
"search_filter": self.search_filter,
|
|
186
190
|
"icon_size": self.icon_size,
|
|
187
191
|
}
|
|
188
192
|
}
|
griptape_nodes/traits/options.py
CHANGED
|
@@ -26,12 +26,16 @@ class Options(Trait):
|
|
|
26
26
|
|
|
27
27
|
_choices: list = field(default_factory=lambda: ["choice 1", "choice 2", "choice 3"])
|
|
28
28
|
element_id: str = field(default_factory=lambda: "Options")
|
|
29
|
+
show_search: bool = field(default=True)
|
|
30
|
+
search_filter: str = field(default="")
|
|
29
31
|
|
|
30
|
-
def __init__(self, *, choices: list | None = None) -> None:
|
|
32
|
+
def __init__(self, *, choices: list | None = None, show_search: bool = True, search_filter: str = "") -> None:
|
|
31
33
|
super().__init__()
|
|
32
34
|
# Set choices through property to ensure dual sync from the start
|
|
33
35
|
if choices is not None:
|
|
34
36
|
self.choices = choices
|
|
37
|
+
self.show_search = show_search
|
|
38
|
+
self.search_filter = search_filter
|
|
35
39
|
|
|
36
40
|
@property
|
|
37
41
|
def choices(self) -> list:
|
|
@@ -122,4 +126,8 @@ class Options(Trait):
|
|
|
122
126
|
Using _choices directly breaks this cycle while still providing the correct
|
|
123
127
|
initial choices for UI rendering. The property-based sync handles runtime updates.
|
|
124
128
|
"""
|
|
125
|
-
return {
|
|
129
|
+
return {
|
|
130
|
+
"simple_dropdown": self._choices,
|
|
131
|
+
"show_search": self.show_search,
|
|
132
|
+
"search_filter": self.search_filter,
|
|
133
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: griptape-nodes
|
|
3
|
-
Version: 0.56.
|
|
3
|
+
Version: 0.56.1
|
|
4
4
|
Summary: Add your description here
|
|
5
|
-
Requires-Dist: griptape>=1.8.
|
|
5
|
+
Requires-Dist: griptape>=1.8.3
|
|
6
6
|
Requires-Dist: pydantic>=2.10.6
|
|
7
7
|
Requires-Dist: python-dotenv>=1.0.1
|
|
8
8
|
Requires-Dist: xdg-base-dirs>=6.0.2
|
|
@@ -2,21 +2,32 @@ griptape_nodes/__init__.py,sha256=WxWjICLxwuyZGDpPUyCmj047GbN7PIspi4YMWgmrrQc,67
|
|
|
2
2
|
griptape_nodes/__main__.py,sha256=fJhor6_1A27abwbnceyNheONP1iXkPzjjsV5jBEfF2M,144
|
|
3
3
|
griptape_nodes/app/.python-version,sha256=e1X45ntWI8S-8_ppEojalDfXnTq6FW3kjUgdsyrH0W0,5
|
|
4
4
|
griptape_nodes/app/__init__.py,sha256=DB-DTsgcNnbmEClXEouwzGhrmo3gHBCWXB9BkPGpdQI,90
|
|
5
|
-
griptape_nodes/app/app.py,sha256=
|
|
6
|
-
griptape_nodes/app/watch.py,sha256=
|
|
5
|
+
griptape_nodes/app/app.py,sha256=B0GVXGUMGadhM3OrgW-2MOyY6wlnjIkTb8_QVfwz5WA,18700
|
|
6
|
+
griptape_nodes/app/watch.py,sha256=hKVP_SuV9C17bH1h9o4uIVTKH-IL_-0iyHaNYmILTWU,1594
|
|
7
7
|
griptape_nodes/bootstrap/__init__.py,sha256=ENv3SIzQ9TtlRrg1y4e4CnoBpJaFpFSkNpTFBV8X5Ls,25
|
|
8
|
+
griptape_nodes/bootstrap/utils/__init__.py,sha256=tlNEApJLZazcBNhxkTdup4URwznnz4nZxjSaRfFrTBM,31
|
|
9
|
+
griptape_nodes/bootstrap/utils/python_subprocess_executor.py,sha256=s2Ymn5YsMVKYbwt8uaiiZElhorSX62FvxGQd24gMUE0,4288
|
|
8
10
|
griptape_nodes/bootstrap/workflow_executors/__init__.py,sha256=pyjN81-eLtjyECFYLXOtMCixiiI9qBi5yald86iM7Ek,34
|
|
9
|
-
griptape_nodes/bootstrap/workflow_executors/
|
|
11
|
+
griptape_nodes/bootstrap/workflow_executors/local_session_workflow_executor.py,sha256=t8eKqGnSSMx3TdP319UsUGGe-ezBocFMMdPnqZxtrrA,17952
|
|
12
|
+
griptape_nodes/bootstrap/workflow_executors/local_workflow_executor.py,sha256=jdv912EFLa-lSHxWeKGw9yjHGUZIiCSlTBAKI6x00L8,9767
|
|
13
|
+
griptape_nodes/bootstrap/workflow_executors/subprocess_workflow_executor.py,sha256=huyvnqOD9Snx_0K4-ScSxhMyA6R3Jm-qUO4pkK3xcfo,13861
|
|
14
|
+
griptape_nodes/bootstrap/workflow_executors/utils/__init__.py,sha256=IEz4GHM4-w_u6VpLemrj-V38v8aZJinr5Wya9ucEad0,40
|
|
15
|
+
griptape_nodes/bootstrap/workflow_executors/utils/subprocess_script.py,sha256=YJj85uZxdrEabwown4AbGo84zWVa4f1z1Gh0wNVv0-4,1413
|
|
10
16
|
griptape_nodes/bootstrap/workflow_executors/workflow_executor.py,sha256=MBbUFdbvsYOJl_ebxxSCxq1R37StghQ1gAdMkIcGtbI,1145
|
|
17
|
+
griptape_nodes/bootstrap/workflow_publishers/__init__.py,sha256=7ncdCGtEArgTBgSFDNCSBoIIAJpzlph1wTd2wipwvvM,35
|
|
18
|
+
griptape_nodes/bootstrap/workflow_publishers/local_workflow_publisher.py,sha256=zWLnXduPJw9vBoGfcGJZJ2DUzhLeJK6fS4J7oMQgoAA,1652
|
|
19
|
+
griptape_nodes/bootstrap/workflow_publishers/subprocess_workflow_publisher.py,sha256=RRZmmTE_inUe4UgFqnP45BdGHKSbcvl7D24mEjTAuJU,2778
|
|
20
|
+
griptape_nodes/bootstrap/workflow_publishers/utils/__init__.py,sha256=Kj-IIxgg01ihyUmLWgZu4ZJ6M7V1fK4Efw9quCcu-ZM,41
|
|
21
|
+
griptape_nodes/bootstrap/workflow_publishers/utils/subprocess_script.py,sha256=f-11vcvC7C821rTfX4PV1LMJuE5AeJp6yiBDWYjYoLc,1679
|
|
11
22
|
griptape_nodes/cli/__init__.py,sha256=HuXHtxqDMtpYRokxiFYuNB7R5EgkOshPil273kTmgNg,33
|
|
12
23
|
griptape_nodes/cli/commands/__init__.py,sha256=8EbS15rm9xrbcPocuQO2RmOwSD1BBwa8iDgPSdsvzuU,35
|
|
13
24
|
griptape_nodes/cli/commands/config.py,sha256=zh5rs2vCY_x9dEUK2jtQQJGcjlJzhpJJ-EgHHvkrvdg,2302
|
|
14
|
-
griptape_nodes/cli/commands/engine.py,sha256=
|
|
25
|
+
griptape_nodes/cli/commands/engine.py,sha256=PWcjuhG_q6wnX1dZY1RJKvQQLO4CmMFBGyhOUKYOofE,2484
|
|
15
26
|
griptape_nodes/cli/commands/init.py,sha256=dp7ovV2v8Q7dqeG3Q46w0TKQWKzTsAPzv0a2eeQ_gVM,25105
|
|
16
27
|
griptape_nodes/cli/commands/libraries.py,sha256=XMTFbC_Ie95qSfemHg-HgQwWeYgBhFjr5GCOD7Iifec,3662
|
|
17
28
|
griptape_nodes/cli/commands/models.py,sha256=txbozCLF_Hvj4q9g0P8gAi0ZfIFcL95Ad9QS_PfHiHY,17612
|
|
18
29
|
griptape_nodes/cli/commands/self.py,sha256=aafOn1ThMxoRu2OvwqxAu0BuM_3vfB7e8_dOWeUpNZI,4021
|
|
19
|
-
griptape_nodes/cli/main.py,sha256=
|
|
30
|
+
griptape_nodes/cli/main.py,sha256=A9k-4vdxOrm3Z0NNtDWLmvSW5ecvtIXInLR0zn2AERA,1739
|
|
20
31
|
griptape_nodes/cli/shared.py,sha256=JnUt-i7_hi81rqkT2fpVBJMTmODNiGFd7-Cv0Xt9QOU,2600
|
|
21
32
|
griptape_nodes/common/__init__.py,sha256=HTbJfTpu6-nU91zFCZW2qUNeW6bitNWNDayWqH6fpbA,22
|
|
22
33
|
griptape_nodes/common/directed_graph.py,sha256=hk3C_S4GiG4FZOmufjebb-6_2SwQrbyTidYTSbCDWMU,2361
|
|
@@ -28,9 +39,9 @@ griptape_nodes/drivers/storage/local_storage_driver.py,sha256=U1-2gqFQKsAyHL-S4e
|
|
|
28
39
|
griptape_nodes/drivers/storage/storage_backend.py,sha256=3QBIwrgPc1krBIiPYLoK2swhIPDiKJnnucOEdyx7y3c,184
|
|
29
40
|
griptape_nodes/exe_types/__init__.py,sha256=wGGwKGX9-TSarUFbXpDvdU_J7eXIbWTBl_NCLOZa-G8,32
|
|
30
41
|
griptape_nodes/exe_types/connections.py,sha256=_-VNzf6Kay62QzJlSX-LlHTUhz-CKF-UDsbZLJ0l6Wk,12435
|
|
31
|
-
griptape_nodes/exe_types/core_types.py,sha256=
|
|
42
|
+
griptape_nodes/exe_types/core_types.py,sha256=XlYXSQnlHew7yK_iJnSdOQyiYq63OmVMGF2SjKGA3lM,81328
|
|
32
43
|
griptape_nodes/exe_types/flow.py,sha256=pCeTrx8yrUgLw1U9yQxC7arzJjyP2vag-pG0QTKut-M,5716
|
|
33
|
-
griptape_nodes/exe_types/node_types.py,sha256=
|
|
44
|
+
griptape_nodes/exe_types/node_types.py,sha256=SqTKffO-Iux18v038DxVOpY-nrZkop7HoOH-sv7JUnI,77950
|
|
34
45
|
griptape_nodes/exe_types/param_components/__init__.py,sha256=ocm75WnsgiD6ozKVGFhoH9cQe_FEzeF2osxrRujOes0,60
|
|
35
46
|
griptape_nodes/exe_types/param_components/execution_status_component.py,sha256=eeUcUOOraGa6sDH_zg_QnGPoP0K-pm3fu90-KAtrmq8,5532
|
|
36
47
|
griptape_nodes/exe_types/type_validator.py,sha256=RTz1vX09jzQpHhozITMJ0siOZUXvsERDhrApjdaM1WM,1120
|
|
@@ -48,20 +59,21 @@ griptape_nodes/node_library/workflow_registry.py,sha256=FMiR_XWk2R1U0HhvzoQzk2tk
|
|
|
48
59
|
griptape_nodes/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
49
60
|
griptape_nodes/retained_mode/__init__.py,sha256=X12DKL6KhLsiRTPIlrPj2h76_sJ0q0eH4r0kMQkodm0,29
|
|
50
61
|
griptape_nodes/retained_mode/events/__init__.py,sha256=7B1C-c0jVvnShtHJ2lfX6BZPE0U1DgQwg1e4DorhKG0,22
|
|
51
|
-
griptape_nodes/retained_mode/events/agent_events.py,sha256=
|
|
62
|
+
griptape_nodes/retained_mode/events/agent_events.py,sha256=FtE9AA0yD4O2cblIO5g2_xBlU1XWwnK4BhcDJxlQDTU,5027
|
|
52
63
|
griptape_nodes/retained_mode/events/app_events.py,sha256=EEZhiCFFcgUKK7p7uniZMCZUPW12Kt5xzduUsrpxii8,8622
|
|
53
64
|
griptape_nodes/retained_mode/events/arbitrary_python_events.py,sha256=uhep1c1xjUc-YQO5nIStAE48PS6rFZLTDQIr_Qb3we8,1460
|
|
54
|
-
griptape_nodes/retained_mode/events/base_events.py,sha256=
|
|
65
|
+
griptape_nodes/retained_mode/events/base_events.py,sha256=UPEMkoU7lUtm8L_wdeTp8YRLSAFFgxJIVRasdqtuQfQ,23223
|
|
55
66
|
griptape_nodes/retained_mode/events/config_events.py,sha256=Y03YMLoJTXy0Sz6tq-6lOIs37CmXn1Br3GYAinl02nY,7070
|
|
56
67
|
griptape_nodes/retained_mode/events/connection_events.py,sha256=QjHAp0SeCbRSG-dF_nU_CPaOcSKItq2DWJ_FHWgF1b4,4744
|
|
57
68
|
griptape_nodes/retained_mode/events/context_events.py,sha256=-FIwjI0hJodDhfM4BF-3GTRycu80v1TlSSOX34oA9nA,2122
|
|
58
|
-
griptape_nodes/retained_mode/events/execution_events.py,sha256=
|
|
59
|
-
griptape_nodes/retained_mode/events/flow_events.py,sha256=
|
|
69
|
+
griptape_nodes/retained_mode/events/execution_events.py,sha256=JMKqauFNjfRTEIcm18sa5xFvn8rzDRjR8oThHWD3bzs,10297
|
|
70
|
+
griptape_nodes/retained_mode/events/flow_events.py,sha256=NBczPiloib0xAbRIbFa6qXaniJOrc-UOESVRAkqA95k,16890
|
|
60
71
|
griptape_nodes/retained_mode/events/generate_request_payload_schemas.py,sha256=PQ0QRZAUBljSIGjB8QhYUeRmSrfmLsJ6XVcygJKi13I,1102
|
|
61
72
|
griptape_nodes/retained_mode/events/library_events.py,sha256=9KVMHA5VazY3fXEIm31Zmy-rJ43AxNgna4SzVPmy8Pg,17629
|
|
62
73
|
griptape_nodes/retained_mode/events/logger_events.py,sha256=jYlxzPomgCsJuPtJ0znWBhD8QJfC8qC4xfChDiuVuyg,705
|
|
74
|
+
griptape_nodes/retained_mode/events/mcp_events.py,sha256=51OlMZVcabdcIxBb_ojvrHtq2jAzZA31pooPBKaApyg,10734
|
|
63
75
|
griptape_nodes/retained_mode/events/model_events.py,sha256=EbSjIpJrQi2RuRRFJsoioAyMchAba-vEOXvLBCR0xi0,9227
|
|
64
|
-
griptape_nodes/retained_mode/events/node_events.py,sha256=
|
|
76
|
+
griptape_nodes/retained_mode/events/node_events.py,sha256=ZV9kK5GqgJlDKT7ybifQDGbHpG5ObCywKH-OCVGq-gE,30026
|
|
65
77
|
griptape_nodes/retained_mode/events/object_events.py,sha256=cJaqEU73Lzf1RRxJrFqEpl8eTr-gDhKpXKywJ-vVCJQ,2631
|
|
66
78
|
griptape_nodes/retained_mode/events/os_events.py,sha256=X0mmyk_r5t6upaQ8eWClD7J25AiX2ggsAuxMZSW9Vx0,8085
|
|
67
79
|
griptape_nodes/retained_mode/events/parameter_events.py,sha256=32dDaVe9oV_fNRtz5xv4_9GP_yr_EXUMsRi2i1rTSNI,19276
|
|
@@ -73,15 +85,15 @@ griptape_nodes/retained_mode/events/sync_events.py,sha256=AoxBZLPPdzx4S5CiOJVRDe
|
|
|
73
85
|
griptape_nodes/retained_mode/events/validation_events.py,sha256=H2yWoHp2t7QwGV_fDQXRy7JojYnK4k6SOAlEvRYST_Q,3062
|
|
74
86
|
griptape_nodes/retained_mode/events/variable_events.py,sha256=fnl_sY8GWI_R4UJQTEJSlmsyCD9TiEW0U2UD2seBabs,10587
|
|
75
87
|
griptape_nodes/retained_mode/events/workflow_events.py,sha256=pvY-RTAUMM4YQjJPPDH1OWcJw-N5Gth6pJznK0Wkki0,22135
|
|
76
|
-
griptape_nodes/retained_mode/griptape_nodes.py,sha256=
|
|
88
|
+
griptape_nodes/retained_mode/griptape_nodes.py,sha256=yGJzCeKKT2wyMVJbstmUoJ-fV5WIEMm4doWWbdottCs,28231
|
|
77
89
|
griptape_nodes/retained_mode/managers/__init__.py,sha256=OTXysKusqYCQeAYwnVj4PbE3MxvAUTq9xOZT6vUE3JA,24
|
|
78
|
-
griptape_nodes/retained_mode/managers/agent_manager.py,sha256=
|
|
90
|
+
griptape_nodes/retained_mode/managers/agent_manager.py,sha256=GeBAMGnSB7wnkA6LGwBxR7WVXOc028X6B-Y4d2Two1I,15447
|
|
79
91
|
griptape_nodes/retained_mode/managers/arbitrary_code_exec_manager.py,sha256=3IRIrpKR62MvTdGWfQa1ARUVxCmMUNtzUU4xMcQdlCY,1891
|
|
80
92
|
griptape_nodes/retained_mode/managers/config_manager.py,sha256=LwtcdRx0r-3eU6K0O0M2jLlYQo5yoDQYM93Fg_vh9Mw,27854
|
|
81
93
|
griptape_nodes/retained_mode/managers/context_manager.py,sha256=eb44_CAZhCg2iYIoodlAPpYc67tG3sHyq9dPNoiq_1s,23031
|
|
82
94
|
griptape_nodes/retained_mode/managers/engine_identity_manager.py,sha256=GBBz7HJBJVNyXLGRdAvqDgihMRB_YjWqdEwLMCnadUg,4409
|
|
83
|
-
griptape_nodes/retained_mode/managers/event_manager.py,sha256=
|
|
84
|
-
griptape_nodes/retained_mode/managers/flow_manager.py,sha256=
|
|
95
|
+
griptape_nodes/retained_mode/managers/event_manager.py,sha256=n8qt5kefgEk-5uba9n96yHeUzB_3zJukqG_qo2pvhqo,12910
|
|
96
|
+
griptape_nodes/retained_mode/managers/flow_manager.py,sha256=k0JfkQ2mz6QgnEOmXjITGi51WCXmTJ6crzHf7fKwpXM,147418
|
|
85
97
|
griptape_nodes/retained_mode/managers/library_lifecycle/__init__.py,sha256=Iq79VxTdETiExBfFWXceJggDZqS6X3OkzXE9XwFclVw,1340
|
|
86
98
|
griptape_nodes/retained_mode/managers/library_lifecycle/data_models.py,sha256=fvAP0VaYGPHYl_Kg3RL4gdJlpqya8UTvpP-C49r950k,6723
|
|
87
99
|
griptape_nodes/retained_mode/managers/library_lifecycle/library_directory.py,sha256=Ywno93eVJH4sAtQ1dgHG2Pw9B3vw8fN8oAL0gn_l6OI,14836
|
|
@@ -94,9 +106,10 @@ griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/packa
|
|
|
94
106
|
griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/sandbox.py,sha256=XgG7whE74zWDxX1pOvhASW0pwjOei1EDLvIH19xdzT0,6117
|
|
95
107
|
griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance.py,sha256=cCGr-MQ1RlVBiUTZepYEKdVhPgC4ebcYrmpv8rI3VeM,894
|
|
96
108
|
griptape_nodes/retained_mode/managers/library_lifecycle/library_status.py,sha256=K3UEBzAdCY9wphyBbLxDYP0Q43aYvhLZ_Pz7_SzcPec,443
|
|
97
|
-
griptape_nodes/retained_mode/managers/library_manager.py,sha256=
|
|
109
|
+
griptape_nodes/retained_mode/managers/library_manager.py,sha256=4wl1eDbwCyT8r8E1KBWvogWLycAnMR94_NC9iNWO6rE,100102
|
|
110
|
+
griptape_nodes/retained_mode/managers/mcp_manager.py,sha256=BxNVDYUAn5-iylGzURqVZq1DRintrIK5T6q2X_rxm_U,15596
|
|
98
111
|
griptape_nodes/retained_mode/managers/model_manager.py,sha256=tjrzCYaacFsmcTMplxt2IDis9hkrVa7wuu3NQq9Sba0,44519
|
|
99
|
-
griptape_nodes/retained_mode/managers/node_manager.py,sha256=
|
|
112
|
+
griptape_nodes/retained_mode/managers/node_manager.py,sha256=hgKHdhqE5qgJHAPEfCW4V4NlC3bjj1OW8e97KNGNuxw,152309
|
|
100
113
|
griptape_nodes/retained_mode/managers/object_manager.py,sha256=NDbDSGI4PLU78xXBK0WGbk1Ejh5BN21I7dJOXbgl1bU,12814
|
|
101
114
|
griptape_nodes/retained_mode/managers/operation_manager.py,sha256=lTkMZlaacTgtV5oV-YF6HG8xsx9V_LwX1eg074WTs2k,20137
|
|
102
115
|
griptape_nodes/retained_mode/managers/os_manager.py,sha256=uQ0jRGXOimdmcdnwZUMAJnEdqvE33p7w5bBXjPN20fw,40128
|
|
@@ -111,12 +124,12 @@ griptape_nodes/retained_mode/managers/resource_types/cpu_resource.py,sha256=YHjU
|
|
|
111
124
|
griptape_nodes/retained_mode/managers/resource_types/os_resource.py,sha256=ImgkOQI_br4yI3EY777D93NR20al8b4q9IocqWESjkw,3082
|
|
112
125
|
griptape_nodes/retained_mode/managers/secrets_manager.py,sha256=tYiUpUhQYdpfu6Tvj98xGNHLc2ytSjH1tOshubD7BHI,6712
|
|
113
126
|
griptape_nodes/retained_mode/managers/session_manager.py,sha256=fLjtBvgGY3daq1vbpJPXq069n35Z-Zr5dF3B0XyD2JY,11817
|
|
114
|
-
griptape_nodes/retained_mode/managers/settings.py,sha256=
|
|
127
|
+
griptape_nodes/retained_mode/managers/settings.py,sha256=6JuxKLQrk3nbkHjiQdJDnpFDadZAGRIn7jSEzGl3Nx4,11159
|
|
115
128
|
griptape_nodes/retained_mode/managers/static_files_manager.py,sha256=f117cctpXh35TmXN8jzWNr1XFRzpkmqib9xkzNTay9U,11286
|
|
116
129
|
griptape_nodes/retained_mode/managers/sync_manager.py,sha256=-m2krEh2YtGs8iAPc8bhFGX8JqjeM5kEV1rnCmcj_yk,21247
|
|
117
130
|
griptape_nodes/retained_mode/managers/variable_manager.py,sha256=TnuqHSRK9Yiu_EtKxQksF9SyyQb72lbFQuTQZdpBxeE,24116
|
|
118
131
|
griptape_nodes/retained_mode/managers/version_compatibility_manager.py,sha256=85gpl9WCgHbWNifxoiAidHmsXyqpUCTjuEW-FziFYME,8375
|
|
119
|
-
griptape_nodes/retained_mode/managers/workflow_manager.py,sha256=
|
|
132
|
+
griptape_nodes/retained_mode/managers/workflow_manager.py,sha256=aPg8M6FQZdMRvkGlhSqfiE5nzxxC_vKbtAo-Lv6h0j4,194792
|
|
120
133
|
griptape_nodes/retained_mode/retained_mode.py,sha256=wGMkZX7clW7o4bA-t5ovPDK5cQaPQo_4_Yrvy4KxwL4,57615
|
|
121
134
|
griptape_nodes/retained_mode/utils/__init__.py,sha256=W5dvv8YwvVVq_8eVTgMd3Z_VB_Dtq1sIIVq8745QH_I,52
|
|
122
135
|
griptape_nodes/retained_mode/utils/engine_identity.py,sha256=PZmdlYM69-B-6Z1F4iJfZyVm2twJY5cSGoiUJCMj0xU,7846
|
|
@@ -135,9 +148,9 @@ griptape_nodes/traits/compare.py,sha256=X-BXGemRDxQV4EX8X24LdtcwMWwfQ1jGqDvH2bSi
|
|
|
135
148
|
griptape_nodes/traits/compare_images.py,sha256=KW0WlwsJP6nBoC1irdeRnUWUnZIJvlROlDhyWhX8iEs,1594
|
|
136
149
|
griptape_nodes/traits/file_system_picker.py,sha256=p-RaH4xwb2Fo0wuFsYbsiL66W23KdESX0Qq6EAtDFj8,5806
|
|
137
150
|
griptape_nodes/traits/minmax.py,sha256=eVySrz02WPvpwbSrqW7FRTmetNBOBKyf8YrXrzyOGnk,1312
|
|
138
|
-
griptape_nodes/traits/multi_options.py,sha256=
|
|
151
|
+
griptape_nodes/traits/multi_options.py,sha256=0iI5nTyZL1u4XSTqp27noddNy88Oizd8nQB3U25zB84,8467
|
|
139
152
|
griptape_nodes/traits/numbers_selector.py,sha256=Zos40TBqffWFVlgPJ1f1UtKGhl-mpfJbIid8YWeSLzI,2618
|
|
140
|
-
griptape_nodes/traits/options.py,sha256=
|
|
153
|
+
griptape_nodes/traits/options.py,sha256=20pByxnOh_A0bzqWr2I21OCMOFowFLbHNXUn4SPv4jI,6318
|
|
141
154
|
griptape_nodes/traits/slider.py,sha256=bLe46gtCmjhMCHaGzUstIWMJv2Zl2Yee7fkT6g4Q6Rk,1236
|
|
142
155
|
griptape_nodes/traits/trait_registry.py,sha256=pU26mW2ztfu1UARGYloflsTPqJ1X_-u013cMNoel9Hw,1171
|
|
143
156
|
griptape_nodes/traits/traits.json,sha256=JwFsOaFfLeR1ohcyh6XApc5N2-mWMPGSaYbpA-mD7mk,133
|
|
@@ -157,7 +170,7 @@ griptape_nodes/version_compatibility/versions/v0_39_0/modified_parameters_set_re
|
|
|
157
170
|
griptape_nodes/version_compatibility/workflow_versions/__init__.py,sha256=z5XDgkizoNByCXpyo34hfsJKFsWlOHbD6hgzfYH9ubc,52
|
|
158
171
|
griptape_nodes/version_compatibility/workflow_versions/v0_7_0/__init__.py,sha256=IzPPmGK86h2swfGGTOHyVcBIlOng6SjgWQzlbf3ngmo,51
|
|
159
172
|
griptape_nodes/version_compatibility/workflow_versions/v0_7_0/local_executor_argument_addition.py,sha256=9PclAp_Mm5IPtd5yj5XSS5-x7QYmifvhTly20CgBZmo,2018
|
|
160
|
-
griptape_nodes-0.56.
|
|
161
|
-
griptape_nodes-0.56.
|
|
162
|
-
griptape_nodes-0.56.
|
|
163
|
-
griptape_nodes-0.56.
|
|
173
|
+
griptape_nodes-0.56.1.dist-info/WHEEL,sha256=-neZj6nU9KAMg2CnCY6T3w8J53nx1kFGw_9HfoSzM60,79
|
|
174
|
+
griptape_nodes-0.56.1.dist-info/entry_points.txt,sha256=qvevqd3BVbAV5TcantnAm0ouqaqYKhsRO3pkFymWLWM,82
|
|
175
|
+
griptape_nodes-0.56.1.dist-info/METADATA,sha256=ea5ZbWojDGHds1gN7uzCxrxxsTpPyyy-9eGs5_uws3s,5039
|
|
176
|
+
griptape_nodes-0.56.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|