griptape-nodes 0.40.0__py3-none-any.whl → 0.42.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/__init__.py +1 -5
- griptape_nodes/app/app.py +12 -9
- griptape_nodes/app/app_sessions.py +132 -36
- griptape_nodes/app/watch.py +3 -1
- griptape_nodes/drivers/storage/local_storage_driver.py +3 -2
- griptape_nodes/exe_types/flow.py +68 -368
- griptape_nodes/machines/control_flow.py +16 -13
- griptape_nodes/machines/node_resolution.py +16 -14
- griptape_nodes/node_library/workflow_registry.py +2 -2
- griptape_nodes/retained_mode/events/agent_events.py +70 -8
- griptape_nodes/retained_mode/events/app_events.py +132 -11
- griptape_nodes/retained_mode/events/arbitrary_python_events.py +23 -0
- griptape_nodes/retained_mode/events/base_events.py +7 -25
- griptape_nodes/retained_mode/events/config_events.py +87 -11
- griptape_nodes/retained_mode/events/connection_events.py +56 -5
- griptape_nodes/retained_mode/events/context_events.py +27 -4
- griptape_nodes/retained_mode/events/execution_events.py +99 -14
- griptape_nodes/retained_mode/events/flow_events.py +165 -7
- griptape_nodes/retained_mode/events/library_events.py +193 -15
- griptape_nodes/retained_mode/events/logger_events.py +11 -0
- griptape_nodes/retained_mode/events/node_events.py +243 -22
- griptape_nodes/retained_mode/events/object_events.py +40 -4
- griptape_nodes/retained_mode/events/os_events.py +13 -2
- griptape_nodes/retained_mode/events/parameter_events.py +212 -8
- griptape_nodes/retained_mode/events/secrets_events.py +59 -7
- griptape_nodes/retained_mode/events/static_file_events.py +57 -4
- griptape_nodes/retained_mode/events/validation_events.py +39 -4
- griptape_nodes/retained_mode/events/workflow_events.py +188 -17
- griptape_nodes/retained_mode/griptape_nodes.py +46 -323
- griptape_nodes/retained_mode/managers/agent_manager.py +1 -1
- griptape_nodes/retained_mode/managers/engine_identity_manager.py +146 -0
- griptape_nodes/retained_mode/managers/event_manager.py +14 -2
- griptape_nodes/retained_mode/managers/flow_manager.py +749 -64
- griptape_nodes/retained_mode/managers/library_manager.py +112 -2
- griptape_nodes/retained_mode/managers/node_manager.py +35 -32
- griptape_nodes/retained_mode/managers/object_manager.py +11 -3
- griptape_nodes/retained_mode/managers/os_manager.py +70 -1
- griptape_nodes/retained_mode/managers/secrets_manager.py +4 -0
- griptape_nodes/retained_mode/managers/session_manager.py +328 -0
- griptape_nodes/retained_mode/managers/settings.py +7 -0
- griptape_nodes/retained_mode/managers/workflow_manager.py +523 -454
- griptape_nodes/retained_mode/retained_mode.py +44 -0
- griptape_nodes/retained_mode/utils/engine_identity.py +141 -27
- {griptape_nodes-0.40.0.dist-info → griptape_nodes-0.42.0.dist-info}/METADATA +2 -2
- {griptape_nodes-0.40.0.dist-info → griptape_nodes-0.42.0.dist-info}/RECORD +48 -47
- griptape_nodes/retained_mode/utils/session_persistence.py +0 -105
- {griptape_nodes-0.40.0.dist-info → griptape_nodes-0.42.0.dist-info}/WHEEL +0 -0
- {griptape_nodes-0.40.0.dist-info → griptape_nodes-0.42.0.dist-info}/entry_points.txt +0 -0
- {griptape_nodes-0.40.0.dist-info → griptape_nodes-0.42.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -21,6 +21,18 @@ class RunAgentRequestArtifact(dict):
|
|
|
21
21
|
@dataclass
|
|
22
22
|
@PayloadRegistry.register
|
|
23
23
|
class RunAgentRequest(RequestPayload):
|
|
24
|
+
"""Run an agent with input and optional artifacts.
|
|
25
|
+
|
|
26
|
+
Use when: Executing conversational AI interactions, processing user queries,
|
|
27
|
+
running autonomous agents, handling multi-modal inputs with URLs.
|
|
28
|
+
|
|
29
|
+
Args:
|
|
30
|
+
input: Text input to send to the agent
|
|
31
|
+
url_artifacts: List of URL artifacts to include with the request
|
|
32
|
+
|
|
33
|
+
Results: RunAgentResultStarted -> RunAgentResultSuccess (with output) | RunAgentResultFailure (execution error)
|
|
34
|
+
"""
|
|
35
|
+
|
|
24
36
|
input: str
|
|
25
37
|
url_artifacts: list[RunAgentRequestArtifact]
|
|
26
38
|
|
|
@@ -28,76 +40,126 @@ class RunAgentRequest(RequestPayload):
|
|
|
28
40
|
@dataclass
|
|
29
41
|
@PayloadRegistry.register
|
|
30
42
|
class RunAgentResultStarted(WorkflowNotAlteredMixin, ResultPayloadSuccess):
|
|
31
|
-
|
|
43
|
+
"""Agent execution started successfully. Execution will continue asynchronously."""
|
|
32
44
|
|
|
33
45
|
|
|
34
46
|
@dataclass
|
|
35
47
|
@PayloadRegistry.register
|
|
36
48
|
class RunAgentResultSuccess(WorkflowNotAlteredMixin, ResultPayloadSuccess):
|
|
49
|
+
"""Agent execution completed successfully.
|
|
50
|
+
|
|
51
|
+
Args:
|
|
52
|
+
output: Dictionary containing agent response and execution results
|
|
53
|
+
"""
|
|
54
|
+
|
|
37
55
|
output: dict
|
|
38
56
|
|
|
39
57
|
|
|
40
58
|
@dataclass
|
|
41
59
|
@PayloadRegistry.register
|
|
42
60
|
class RunAgentResultFailure(WorkflowNotAlteredMixin, ResultPayloadFailure):
|
|
61
|
+
"""Agent execution failed.
|
|
62
|
+
|
|
63
|
+
Args:
|
|
64
|
+
error: Dictionary containing error details and failure information
|
|
65
|
+
"""
|
|
66
|
+
|
|
43
67
|
error: dict
|
|
44
68
|
|
|
45
69
|
|
|
46
70
|
@dataclass
|
|
47
71
|
@PayloadRegistry.register
|
|
48
72
|
class GetConversationMemoryRequest(RequestPayload):
|
|
49
|
-
|
|
73
|
+
"""Get the agent's conversation memory.
|
|
74
|
+
|
|
75
|
+
Use when: Reviewing conversation history, implementing memory inspection,
|
|
76
|
+
debugging agent behavior, displaying conversation context.
|
|
77
|
+
|
|
78
|
+
Results: GetConversationMemoryResultSuccess (with runs) | GetConversationMemoryResultFailure (memory error)
|
|
79
|
+
"""
|
|
50
80
|
|
|
51
81
|
|
|
52
82
|
@dataclass
|
|
53
83
|
@PayloadRegistry.register
|
|
54
84
|
class GetConversationMemoryResultSuccess(WorkflowNotAlteredMixin, ResultPayloadSuccess):
|
|
85
|
+
"""Conversation memory retrieved successfully.
|
|
86
|
+
|
|
87
|
+
Args:
|
|
88
|
+
runs: List of conversation runs (exchanges between user and agent)
|
|
89
|
+
"""
|
|
90
|
+
|
|
55
91
|
runs: list[Run]
|
|
56
92
|
|
|
57
93
|
|
|
58
94
|
@dataclass
|
|
59
95
|
@PayloadRegistry.register
|
|
60
96
|
class GetConversationMemoryResultFailure(WorkflowNotAlteredMixin, ResultPayloadFailure):
|
|
61
|
-
|
|
97
|
+
"""Conversation memory retrieval failed. Common causes: memory not initialized, access error."""
|
|
62
98
|
|
|
63
99
|
|
|
64
100
|
@dataclass
|
|
65
101
|
@PayloadRegistry.register
|
|
66
102
|
class ConfigureAgentRequest(RequestPayload):
|
|
103
|
+
"""Configure agent settings and behavior.
|
|
104
|
+
|
|
105
|
+
Use when: Setting up agent parameters, changing model configurations,
|
|
106
|
+
customizing agent behavior, updating agent settings.
|
|
107
|
+
|
|
108
|
+
Args:
|
|
109
|
+
prompt_driver: Dictionary of prompt driver configuration options
|
|
110
|
+
|
|
111
|
+
Results: ConfigureAgentResultSuccess | ConfigureAgentResultFailure (configuration error)
|
|
112
|
+
"""
|
|
113
|
+
|
|
67
114
|
prompt_driver: dict = field(default_factory=dict)
|
|
68
115
|
|
|
69
116
|
|
|
70
117
|
@dataclass
|
|
71
118
|
@PayloadRegistry.register
|
|
72
119
|
class ConfigureAgentResultSuccess(WorkflowNotAlteredMixin, ResultPayloadSuccess):
|
|
73
|
-
|
|
120
|
+
"""Agent configured successfully. New settings are now active."""
|
|
74
121
|
|
|
75
122
|
|
|
76
123
|
@dataclass
|
|
77
124
|
@PayloadRegistry.register
|
|
78
125
|
class ConfigureAgentResultFailure(WorkflowNotAlteredMixin, ResultPayloadFailure):
|
|
79
|
-
|
|
126
|
+
"""Agent configuration failed. Common causes: invalid parameters, configuration error."""
|
|
80
127
|
|
|
81
128
|
|
|
82
129
|
@dataclass
|
|
83
130
|
@PayloadRegistry.register
|
|
84
131
|
class ResetAgentConversationMemoryRequest(RequestPayload):
|
|
85
|
-
|
|
132
|
+
"""Reset the agent's conversation memory.
|
|
133
|
+
|
|
134
|
+
Use when: Starting fresh conversations, clearing conversation history,
|
|
135
|
+
resolving memory issues, implementing conversation reset features.
|
|
136
|
+
|
|
137
|
+
Results: ResetAgentConversationMemoryResultSuccess | ResetAgentConversationMemoryResultFailure (reset error)
|
|
138
|
+
"""
|
|
86
139
|
|
|
87
140
|
|
|
88
141
|
@dataclass
|
|
89
142
|
@PayloadRegistry.register
|
|
90
143
|
class ResetAgentConversationMemoryResultSuccess(WorkflowNotAlteredMixin, ResultPayloadSuccess):
|
|
91
|
-
|
|
144
|
+
"""Agent conversation memory reset successfully. All previous conversation history cleared."""
|
|
92
145
|
|
|
93
146
|
|
|
94
147
|
@dataclass
|
|
95
148
|
@PayloadRegistry.register
|
|
96
149
|
class ResetAgentConversationMemoryResultFailure(WorkflowNotAlteredMixin, ResultPayloadFailure):
|
|
97
|
-
|
|
150
|
+
"""Agent conversation memory reset failed. Common causes: memory access error, system constraints."""
|
|
98
151
|
|
|
99
152
|
|
|
100
153
|
@dataclass
|
|
101
154
|
@PayloadRegistry.register
|
|
102
155
|
class AgentStreamEvent(ExecutionPayload):
|
|
156
|
+
"""Streaming token event during agent execution.
|
|
157
|
+
|
|
158
|
+
Use when: Implementing real-time agent output, displaying progressive responses,
|
|
159
|
+
building streaming UIs, monitoring agent token generation.
|
|
160
|
+
|
|
161
|
+
Args:
|
|
162
|
+
token: Individual token generated by the agent during execution
|
|
163
|
+
"""
|
|
164
|
+
|
|
103
165
|
token: str
|
|
@@ -13,6 +13,17 @@ from griptape_nodes.retained_mode.events.payload_registry import PayloadRegistry
|
|
|
13
13
|
@dataclass
|
|
14
14
|
@PayloadRegistry.register
|
|
15
15
|
class AppStartSessionRequest(RequestPayload):
|
|
16
|
+
"""Start a new application session.
|
|
17
|
+
|
|
18
|
+
Use when: Initializing client connections, beginning new workflow sessions,
|
|
19
|
+
setting up isolated execution environments, managing session state.
|
|
20
|
+
|
|
21
|
+
Args:
|
|
22
|
+
session_id: Specific session ID to use (None for auto-generated)
|
|
23
|
+
|
|
24
|
+
Results: AppStartSessionResultSuccess (with session ID) | AppStartSessionResultFailure (session creation error)
|
|
25
|
+
"""
|
|
26
|
+
|
|
16
27
|
# TODO: https://github.com/griptape-ai/griptape-nodes/issues/1600
|
|
17
28
|
session_id: str | None = None
|
|
18
29
|
|
|
@@ -20,48 +31,80 @@ class AppStartSessionRequest(RequestPayload):
|
|
|
20
31
|
@dataclass
|
|
21
32
|
@PayloadRegistry.register
|
|
22
33
|
class AppStartSessionResultSuccess(ResultPayloadSuccess):
|
|
34
|
+
"""Session started successfully.
|
|
35
|
+
|
|
36
|
+
Args:
|
|
37
|
+
session_id: Unique identifier for the created session
|
|
38
|
+
"""
|
|
39
|
+
|
|
23
40
|
session_id: str
|
|
24
41
|
|
|
25
42
|
|
|
26
43
|
@dataclass
|
|
27
44
|
@PayloadRegistry.register
|
|
28
45
|
class AppStartSessionResultFailure(ResultPayloadFailure):
|
|
29
|
-
|
|
46
|
+
"""Session start failed. Common causes: resource constraints, initialization error."""
|
|
30
47
|
|
|
31
48
|
|
|
32
49
|
@dataclass
|
|
33
50
|
@PayloadRegistry.register
|
|
34
51
|
class AppGetSessionRequest(RequestPayload):
|
|
35
|
-
|
|
52
|
+
"""Get the current session information.
|
|
53
|
+
|
|
54
|
+
Use when: Checking session status, retrieving session details,
|
|
55
|
+
validating session state, debugging session issues.
|
|
56
|
+
|
|
57
|
+
Results: AppGetSessionResultSuccess (with session ID) | AppGetSessionResultFailure (session error)
|
|
58
|
+
"""
|
|
36
59
|
|
|
37
60
|
|
|
38
61
|
@dataclass
|
|
39
62
|
@PayloadRegistry.register
|
|
40
63
|
class AppGetSessionResultSuccess(WorkflowNotAlteredMixin, ResultPayloadSuccess):
|
|
64
|
+
"""Session information retrieved successfully.
|
|
65
|
+
|
|
66
|
+
Args:
|
|
67
|
+
session_id: Current session identifier (None if no active session)
|
|
68
|
+
"""
|
|
69
|
+
|
|
41
70
|
session_id: str | None
|
|
42
71
|
|
|
43
72
|
|
|
44
73
|
@dataclass
|
|
45
74
|
@PayloadRegistry.register
|
|
46
75
|
class AppGetSessionResultFailure(WorkflowNotAlteredMixin, ResultPayloadFailure):
|
|
47
|
-
|
|
76
|
+
"""Session information retrieval failed. Common causes: session not found, access error."""
|
|
48
77
|
|
|
49
78
|
|
|
50
79
|
@dataclass
|
|
51
80
|
@PayloadRegistry.register
|
|
52
81
|
class AppInitializationComplete(AppPayload):
|
|
53
|
-
|
|
82
|
+
"""Application initialization completed successfully. All subsystems ready."""
|
|
54
83
|
|
|
55
84
|
|
|
56
85
|
@dataclass
|
|
57
86
|
@PayloadRegistry.register
|
|
58
87
|
class GetEngineVersionRequest(RequestPayload):
|
|
59
|
-
|
|
88
|
+
"""Get the engine version information.
|
|
89
|
+
|
|
90
|
+
Use when: Checking compatibility, displaying version info,
|
|
91
|
+
debugging engine issues, validating engine capabilities.
|
|
92
|
+
|
|
93
|
+
Results: GetEngineVersionResultSuccess (with version numbers) | GetEngineVersionResultFailure (version error)
|
|
94
|
+
"""
|
|
60
95
|
|
|
61
96
|
|
|
62
97
|
@dataclass
|
|
63
98
|
@PayloadRegistry.register
|
|
64
99
|
class GetEngineVersionResultSuccess(ResultPayloadSuccess):
|
|
100
|
+
"""Engine version retrieved successfully.
|
|
101
|
+
|
|
102
|
+
Args:
|
|
103
|
+
major: Major version number
|
|
104
|
+
minor: Minor version number
|
|
105
|
+
patch: Patch version number
|
|
106
|
+
"""
|
|
107
|
+
|
|
65
108
|
major: int
|
|
66
109
|
minor: int
|
|
67
110
|
patch: int
|
|
@@ -70,25 +113,37 @@ class GetEngineVersionResultSuccess(ResultPayloadSuccess):
|
|
|
70
113
|
@dataclass
|
|
71
114
|
@PayloadRegistry.register
|
|
72
115
|
class GetEngineVersionResultFailure(WorkflowNotAlteredMixin, ResultPayloadFailure):
|
|
73
|
-
|
|
116
|
+
"""Engine version retrieval failed. Common causes: version not available, system error."""
|
|
74
117
|
|
|
75
118
|
|
|
76
119
|
@dataclass
|
|
77
120
|
@PayloadRegistry.register
|
|
78
121
|
class AppEndSessionRequest(RequestPayload):
|
|
79
|
-
|
|
122
|
+
"""End the current application session.
|
|
123
|
+
|
|
124
|
+
Use when: Closing client connections, cleaning up session resources,
|
|
125
|
+
terminating workflow sessions, implementing logout functionality.
|
|
126
|
+
|
|
127
|
+
Results: AppEndSessionResultSuccess (with session ID) | AppEndSessionResultFailure (cleanup error)
|
|
128
|
+
"""
|
|
80
129
|
|
|
81
130
|
|
|
82
131
|
@dataclass
|
|
83
132
|
@PayloadRegistry.register
|
|
84
133
|
class AppEndSessionResultSuccess(ResultPayloadSuccess):
|
|
134
|
+
"""Session ended successfully.
|
|
135
|
+
|
|
136
|
+
Args:
|
|
137
|
+
session_id: Identifier of the ended session (None if no session was active)
|
|
138
|
+
"""
|
|
139
|
+
|
|
85
140
|
session_id: str | None
|
|
86
141
|
|
|
87
142
|
|
|
88
143
|
@dataclass
|
|
89
144
|
@PayloadRegistry.register
|
|
90
145
|
class AppEndSessionResultFailure(ResultPayloadFailure):
|
|
91
|
-
|
|
146
|
+
"""Session end failed. Common causes: session not found, cleanup error."""
|
|
92
147
|
|
|
93
148
|
|
|
94
149
|
@dataclass
|
|
@@ -100,13 +155,13 @@ class SessionHeartbeatRequest(RequestPayload):
|
|
|
100
155
|
@dataclass
|
|
101
156
|
@PayloadRegistry.register
|
|
102
157
|
class SessionHeartbeatResultSuccess(ResultPayloadSuccess):
|
|
103
|
-
|
|
158
|
+
"""Session heartbeat successful. Session is active and responsive."""
|
|
104
159
|
|
|
105
160
|
|
|
106
161
|
@dataclass
|
|
107
162
|
@PayloadRegistry.register
|
|
108
163
|
class SessionHeartbeatResultFailure(ResultPayloadFailure):
|
|
109
|
-
|
|
164
|
+
"""Session heartbeat failed. Common causes: session inactive, network error, timeout."""
|
|
110
165
|
|
|
111
166
|
|
|
112
167
|
@dataclass
|
|
@@ -125,6 +180,25 @@ class EngineHeartbeatRequest(RequestPayload):
|
|
|
125
180
|
@dataclass
|
|
126
181
|
@PayloadRegistry.register
|
|
127
182
|
class EngineHeartbeatResultSuccess(ResultPayloadSuccess):
|
|
183
|
+
"""Engine heartbeat successful with comprehensive status information.
|
|
184
|
+
|
|
185
|
+
Args:
|
|
186
|
+
heartbeat_id: Unique identifier correlating with the request
|
|
187
|
+
engine_version: Current engine version string
|
|
188
|
+
engine_id: Unique engine identifier (None if not set)
|
|
189
|
+
session_id: Current session identifier (None if no session)
|
|
190
|
+
timestamp: Heartbeat timestamp
|
|
191
|
+
instance_type: Cloud instance type (None if not applicable)
|
|
192
|
+
instance_region: Cloud instance region (None if not applicable)
|
|
193
|
+
instance_provider: Cloud provider name (None if not applicable)
|
|
194
|
+
deployment_type: Type of deployment (None if not applicable)
|
|
195
|
+
public_ip: Public IP address (None if not available)
|
|
196
|
+
current_workflow: Name of active workflow (None if none)
|
|
197
|
+
workflow_file_path: Path to workflow file (None if none)
|
|
198
|
+
has_active_flow: Whether there's an active flow running
|
|
199
|
+
engine_name: Human-readable engine name
|
|
200
|
+
"""
|
|
201
|
+
|
|
128
202
|
heartbeat_id: str
|
|
129
203
|
engine_version: str
|
|
130
204
|
engine_id: str | None
|
|
@@ -144,40 +218,87 @@ class EngineHeartbeatResultSuccess(ResultPayloadSuccess):
|
|
|
144
218
|
@dataclass
|
|
145
219
|
@PayloadRegistry.register
|
|
146
220
|
class EngineHeartbeatResultFailure(ResultPayloadFailure):
|
|
221
|
+
"""Engine heartbeat failed.
|
|
222
|
+
|
|
223
|
+
Args:
|
|
224
|
+
heartbeat_id: Unique identifier correlating with the request
|
|
225
|
+
"""
|
|
226
|
+
|
|
147
227
|
heartbeat_id: str
|
|
148
228
|
|
|
149
229
|
|
|
150
230
|
@dataclass
|
|
151
231
|
@PayloadRegistry.register
|
|
152
232
|
class SetEngineNameRequest(RequestPayload):
|
|
233
|
+
"""Set the human-readable engine name.
|
|
234
|
+
|
|
235
|
+
Use when: Customizing engine identification, setting up engine instances,
|
|
236
|
+
implementing engine management, branding engine instances.
|
|
237
|
+
|
|
238
|
+
Args:
|
|
239
|
+
engine_name: New name for the engine
|
|
240
|
+
|
|
241
|
+
Results: SetEngineNameResultSuccess (with name) | SetEngineNameResultFailure (validation error)
|
|
242
|
+
"""
|
|
243
|
+
|
|
153
244
|
engine_name: str
|
|
154
245
|
|
|
155
246
|
|
|
156
247
|
@dataclass
|
|
157
248
|
@PayloadRegistry.register
|
|
158
249
|
class SetEngineNameResultSuccess(WorkflowNotAlteredMixin, ResultPayloadSuccess):
|
|
250
|
+
"""Engine name set successfully.
|
|
251
|
+
|
|
252
|
+
Args:
|
|
253
|
+
engine_name: The name that was set for the engine
|
|
254
|
+
"""
|
|
255
|
+
|
|
159
256
|
engine_name: str
|
|
160
257
|
|
|
161
258
|
|
|
162
259
|
@dataclass
|
|
163
260
|
@PayloadRegistry.register
|
|
164
261
|
class SetEngineNameResultFailure(WorkflowNotAlteredMixin, ResultPayloadFailure):
|
|
262
|
+
"""Engine name setting failed.
|
|
263
|
+
|
|
264
|
+
Args:
|
|
265
|
+
error_message: Detailed error message describing the failure
|
|
266
|
+
"""
|
|
267
|
+
|
|
165
268
|
error_message: str
|
|
166
269
|
|
|
167
270
|
|
|
168
271
|
@dataclass
|
|
169
272
|
@PayloadRegistry.register
|
|
170
273
|
class GetEngineNameRequest(RequestPayload):
|
|
171
|
-
|
|
274
|
+
"""Get the current engine name.
|
|
275
|
+
|
|
276
|
+
Use when: Displaying engine information, checking engine identity,
|
|
277
|
+
implementing engine management UIs, debugging engine issues.
|
|
278
|
+
|
|
279
|
+
Results: GetEngineNameResultSuccess (with name) | GetEngineNameResultFailure (retrieval error)
|
|
280
|
+
"""
|
|
172
281
|
|
|
173
282
|
|
|
174
283
|
@dataclass
|
|
175
284
|
@PayloadRegistry.register
|
|
176
285
|
class GetEngineNameResultSuccess(WorkflowNotAlteredMixin, ResultPayloadSuccess):
|
|
286
|
+
"""Engine name retrieved successfully.
|
|
287
|
+
|
|
288
|
+
Args:
|
|
289
|
+
engine_name: Current engine name
|
|
290
|
+
"""
|
|
291
|
+
|
|
177
292
|
engine_name: str
|
|
178
293
|
|
|
179
294
|
|
|
180
295
|
@dataclass
|
|
181
296
|
@PayloadRegistry.register
|
|
182
297
|
class GetEngineNameResultFailure(WorkflowNotAlteredMixin, ResultPayloadFailure):
|
|
298
|
+
"""Engine name retrieval failed.
|
|
299
|
+
|
|
300
|
+
Args:
|
|
301
|
+
error_message: Detailed error message describing the failure
|
|
302
|
+
"""
|
|
303
|
+
|
|
183
304
|
error_message: str
|
|
@@ -15,16 +15,39 @@ from griptape_nodes.retained_mode.events.payload_registry import PayloadRegistry
|
|
|
15
15
|
@dataclass
|
|
16
16
|
@PayloadRegistry.register
|
|
17
17
|
class RunArbitraryPythonStringRequest(RequestPayload):
|
|
18
|
+
"""Execute arbitrary Python code string.
|
|
19
|
+
|
|
20
|
+
Use when: Development/debugging, testing code snippets, prototyping,
|
|
21
|
+
educational purposes. WARNING: This is configurable behavior that can be disabled.
|
|
22
|
+
|
|
23
|
+
Args:
|
|
24
|
+
python_string: Python code string to execute
|
|
25
|
+
|
|
26
|
+
Results: RunArbitraryPythonStringResultSuccess (with output) | RunArbitraryPythonStringResultFailure (execution error)
|
|
27
|
+
"""
|
|
28
|
+
|
|
18
29
|
python_string: str
|
|
19
30
|
|
|
20
31
|
|
|
21
32
|
@dataclass
|
|
22
33
|
@PayloadRegistry.register
|
|
23
34
|
class RunArbitraryPythonStringResultSuccess(ResultPayloadSuccess):
|
|
35
|
+
"""Python code executed successfully.
|
|
36
|
+
|
|
37
|
+
Args:
|
|
38
|
+
python_output: String output from the executed Python code
|
|
39
|
+
"""
|
|
40
|
+
|
|
24
41
|
python_output: str
|
|
25
42
|
|
|
26
43
|
|
|
27
44
|
@dataclass
|
|
28
45
|
@PayloadRegistry.register
|
|
29
46
|
class RunArbitraryPythonStringResultFailure(ResultPayloadFailure):
|
|
47
|
+
"""Python code execution failed.
|
|
48
|
+
|
|
49
|
+
Args:
|
|
50
|
+
python_output: Error output from the failed Python code execution
|
|
51
|
+
"""
|
|
52
|
+
|
|
30
53
|
python_output: str
|
|
@@ -12,9 +12,6 @@ from griptape.structures import Structure
|
|
|
12
12
|
from griptape.tools import BaseTool
|
|
13
13
|
from pydantic import BaseModel, Field
|
|
14
14
|
|
|
15
|
-
from griptape_nodes.retained_mode.utils.engine_identity import EngineIdentity
|
|
16
|
-
from griptape_nodes.retained_mode.utils.session_persistence import SessionPersistence
|
|
17
|
-
|
|
18
15
|
if TYPE_CHECKING:
|
|
19
16
|
import builtins
|
|
20
17
|
|
|
@@ -113,32 +110,13 @@ A = TypeVar("A", bound=AppPayload)
|
|
|
113
110
|
class BaseEvent(BaseModel, ABC):
|
|
114
111
|
"""Abstract base class for all events."""
|
|
115
112
|
|
|
116
|
-
#
|
|
117
|
-
# TODO: https://github.com/griptape-ai/griptape-nodes/issues/848
|
|
118
|
-
_session_id: ClassVar[str | None] = None
|
|
113
|
+
# Instance fields for engine and session identification
|
|
119
114
|
_engine_id: ClassVar[str | None] = None
|
|
115
|
+
_session_id: ClassVar[str | None] = None
|
|
120
116
|
|
|
121
|
-
# Instance variables with a default_factory that references the class variable
|
|
122
117
|
engine_id: str | None = Field(default_factory=lambda: BaseEvent._engine_id)
|
|
123
118
|
session_id: str | None = Field(default_factory=lambda: BaseEvent._session_id)
|
|
124
119
|
|
|
125
|
-
@classmethod
|
|
126
|
-
def initialize_engine_id(cls) -> None:
|
|
127
|
-
"""Initialize the engine ID if not already set."""
|
|
128
|
-
if cls._engine_id is None:
|
|
129
|
-
persisted_engine_id = cls._engine_id = EngineIdentity.get_engine_id()
|
|
130
|
-
if persisted_engine_id:
|
|
131
|
-
cls._engine_id = persisted_engine_id
|
|
132
|
-
|
|
133
|
-
@classmethod
|
|
134
|
-
def initialize_session_id(cls) -> None:
|
|
135
|
-
"""Initialize the session ID from persisted storage if available."""
|
|
136
|
-
if cls._session_id is None:
|
|
137
|
-
# Check if there's a persisted session ID
|
|
138
|
-
persisted_session_id = SessionPersistence.get_persisted_session_id()
|
|
139
|
-
if persisted_session_id:
|
|
140
|
-
cls._session_id = persisted_session_id
|
|
141
|
-
|
|
142
120
|
# Custom JSON encoder for the payload
|
|
143
121
|
class Config:
|
|
144
122
|
"""Pydantic configuration for the BaseEvent class."""
|
|
@@ -207,6 +185,8 @@ class EventRequest(BaseEvent, Generic[P]):
|
|
|
207
185
|
"""Request event."""
|
|
208
186
|
|
|
209
187
|
request: P
|
|
188
|
+
request_id: str | None = None
|
|
189
|
+
response_topic: str | None = None
|
|
210
190
|
|
|
211
191
|
def __init__(self, **data) -> None:
|
|
212
192
|
"""Initialize an EventRequest, inferring the generic type if needed."""
|
|
@@ -262,7 +242,7 @@ class EventRequest(BaseEvent, Generic[P]):
|
|
|
262
242
|
raise ValueError(msg)
|
|
263
243
|
|
|
264
244
|
# Create the event instance with the payload
|
|
265
|
-
return cls(request=request_payload)
|
|
245
|
+
return cls(request=request_payload, **event_data)
|
|
266
246
|
|
|
267
247
|
|
|
268
248
|
class EventResult(BaseEvent, Generic[P, R], ABC):
|
|
@@ -270,6 +250,8 @@ class EventResult(BaseEvent, Generic[P, R], ABC):
|
|
|
270
250
|
|
|
271
251
|
request: P
|
|
272
252
|
result: R
|
|
253
|
+
request_id: str | None = None
|
|
254
|
+
response_topic: str | None = None
|
|
273
255
|
retained_mode: str | None = None
|
|
274
256
|
|
|
275
257
|
def __init__(self, **data) -> None:
|