@autoweb/domain-models 1.0.0
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.
- package/README.md +100 -0
- package/index.d.ts +594 -0
- package/index.js +3 -0
- package/package.json +55 -0
- package/python-models/__init__.py +68 -0
- package/python-models/action-configs.py +1112 -0
- package/python-models/build/lib/floweb_models/__init__.py +194 -0
- package/python-models/build/lib/floweb_models/action_configs.py +783 -0
- package/python-models/build/lib/floweb_models/debug.py +209 -0
- package/python-models/build/lib/floweb_models/debug_models.py +141 -0
- package/python-models/build/lib/floweb_models/environment.py +158 -0
- package/python-models/build/lib/floweb_models/execution_results.py +208 -0
- package/python-models/build/lib/floweb_models/flow.py +345 -0
- package/python-models/build/lib/floweb_models/flow_validation.py +316 -0
- package/python-models/build/lib/floweb_models/parallel_execution.py +258 -0
- package/python-models/build/lib/floweb_models/performance_test.py +605 -0
- package/python-models/build/lib/floweb_models/websocket_communication.py +697 -0
- package/python-models/debug.py +209 -0
- package/python-models/dist/floweb_domain_models-1.0.0-py3-none-any.whl +0 -0
- package/python-models/environment.py +158 -0
- package/python-models/execution-results.py +208 -0
- package/python-models/flow-validation.py +316 -0
- package/python-models/flow.py +369 -0
- package/python-models/floweb_domain_models.egg-info/PKG-INFO +9 -0
- package/python-models/floweb_domain_models.egg-info/SOURCES.txt +16 -0
- package/python-models/floweb_domain_models.egg-info/dependency_links.txt +1 -0
- package/python-models/floweb_domain_models.egg-info/requires.txt +1 -0
- package/python-models/floweb_domain_models.egg-info/top_level.txt +1 -0
- package/python-models/floweb_models/__init__.py +194 -0
- package/python-models/floweb_models/__pycache__/__init__.cpython-312.pyc +0 -0
- package/python-models/floweb_models/__pycache__/action_configs.cpython-312.pyc +0 -0
- package/python-models/floweb_models/__pycache__/debug.cpython-312.pyc +0 -0
- package/python-models/floweb_models/__pycache__/debug_models.cpython-312.pyc +0 -0
- package/python-models/floweb_models/__pycache__/environment.cpython-312.pyc +0 -0
- package/python-models/floweb_models/__pycache__/execution_results.cpython-312.pyc +0 -0
- package/python-models/floweb_models/__pycache__/flow.cpython-312.pyc +0 -0
- package/python-models/floweb_models/__pycache__/flow_validation.cpython-312.pyc +0 -0
- package/python-models/floweb_models/__pycache__/parallel_execution.cpython-312.pyc +0 -0
- package/python-models/floweb_models/__pycache__/performance_test.cpython-312.pyc +0 -0
- package/python-models/floweb_models/__pycache__/websocket_communication.cpython-312.pyc +0 -0
- package/python-models/floweb_models/action_configs.py +1062 -0
- package/python-models/floweb_models/debug.py +209 -0
- package/python-models/floweb_models/debug_models.py +141 -0
- package/python-models/floweb_models/environment.py +158 -0
- package/python-models/floweb_models/execution_results.py +208 -0
- package/python-models/floweb_models/flow.py +345 -0
- package/python-models/floweb_models/flow_validation.py +316 -0
- package/python-models/floweb_models/parallel_execution.py +229 -0
- package/python-models/floweb_models/performance_test.py +605 -0
- package/python-models/floweb_models/websocket_communication.py +697 -0
- package/python-models/floweb_models.egg-info/PKG-INFO +9 -0
- package/python-models/floweb_models.egg-info/SOURCES.txt +16 -0
- package/python-models/floweb_models.egg-info/dependency_links.txt +1 -0
- package/python-models/floweb_models.egg-info/requires.txt +1 -0
- package/python-models/floweb_models.egg-info/top_level.txt +1 -0
- package/python-models/parallel-execution.py +475 -0
- package/python-models/performance-test.py +605 -0
- package/python-models/setup.py +13 -0
- package/python-models/websocket-communication.py +697 -0
- package/schemas/action-configs.json +1501 -0
- package/schemas/debug.json +203 -0
- package/schemas/environment.json +165 -0
- package/schemas/execution-results.json +209 -0
- package/schemas/flow-validation.json +311 -0
- package/schemas/flow.json +381 -0
- package/schemas/parallel-execution.json +219 -0
- package/schemas/performance-test.json +600 -0
- package/schemas/websocket-communication.json +1118 -0
|
@@ -0,0 +1,697 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: websocket-communication.json
|
|
3
|
+
# timestamp: 2026-02-04T15:38:26+00:00
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from enum import StrEnum
|
|
8
|
+
from typing import Any, Literal
|
|
9
|
+
|
|
10
|
+
from pydantic import BaseModel, ConfigDict
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class WebSocketMessage(BaseModel):
|
|
14
|
+
"""
|
|
15
|
+
Base WebSocket message structure
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
model_config = ConfigDict(
|
|
19
|
+
populate_by_name=True,
|
|
20
|
+
)
|
|
21
|
+
command: str
|
|
22
|
+
"""
|
|
23
|
+
Command type
|
|
24
|
+
"""
|
|
25
|
+
flow_id: str | None = None
|
|
26
|
+
"""
|
|
27
|
+
Flow ID for the command
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class SessionInfo(BaseModel):
|
|
32
|
+
"""
|
|
33
|
+
Information about an active session
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
model_config = ConfigDict(
|
|
37
|
+
populate_by_name=True,
|
|
38
|
+
)
|
|
39
|
+
flowId: str
|
|
40
|
+
"""
|
|
41
|
+
Flow ID
|
|
42
|
+
"""
|
|
43
|
+
status: str
|
|
44
|
+
"""
|
|
45
|
+
Session status
|
|
46
|
+
"""
|
|
47
|
+
browser: str
|
|
48
|
+
"""
|
|
49
|
+
Browser type
|
|
50
|
+
"""
|
|
51
|
+
startedAt: int
|
|
52
|
+
"""
|
|
53
|
+
Start timestamp
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class Flow(BaseModel):
|
|
58
|
+
"""
|
|
59
|
+
Flow to execute
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
model_config = ConfigDict(
|
|
63
|
+
populate_by_name=True,
|
|
64
|
+
)
|
|
65
|
+
id: str
|
|
66
|
+
name: str
|
|
67
|
+
actions: list[dict[str, Any]]
|
|
68
|
+
edges: list[dict[str, Any]]
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
class Mode(StrEnum):
|
|
72
|
+
full = 'full'
|
|
73
|
+
partial = 'partial'
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
class RunCommand(WebSocketMessage):
|
|
77
|
+
model_config = ConfigDict(
|
|
78
|
+
populate_by_name=True,
|
|
79
|
+
)
|
|
80
|
+
command: Literal['run']
|
|
81
|
+
"""
|
|
82
|
+
Command type
|
|
83
|
+
"""
|
|
84
|
+
flow: Flow
|
|
85
|
+
"""
|
|
86
|
+
Flow to execute
|
|
87
|
+
"""
|
|
88
|
+
mode: Mode | None = 'full'
|
|
89
|
+
recording: dict[str, Any] | None = None
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
class RecordCommand(WebSocketMessage):
|
|
93
|
+
model_config = ConfigDict(
|
|
94
|
+
populate_by_name=True,
|
|
95
|
+
)
|
|
96
|
+
command: Literal['record']
|
|
97
|
+
"""
|
|
98
|
+
Command type
|
|
99
|
+
"""
|
|
100
|
+
flow_id: str | None = None
|
|
101
|
+
"""
|
|
102
|
+
Flow ID for the command
|
|
103
|
+
"""
|
|
104
|
+
url: str | None = None
|
|
105
|
+
config: dict[str, Any] | None = {}
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
class PauseRecordingCommand(WebSocketMessage):
|
|
109
|
+
model_config = ConfigDict(
|
|
110
|
+
populate_by_name=True,
|
|
111
|
+
)
|
|
112
|
+
command: Literal['pause_recording']
|
|
113
|
+
"""
|
|
114
|
+
Command type
|
|
115
|
+
"""
|
|
116
|
+
session_id: str
|
|
117
|
+
"""
|
|
118
|
+
Recording session ID
|
|
119
|
+
"""
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
class ResumeRecordingCommand(WebSocketMessage):
|
|
123
|
+
model_config = ConfigDict(
|
|
124
|
+
populate_by_name=True,
|
|
125
|
+
)
|
|
126
|
+
command: Literal['resume_recording']
|
|
127
|
+
"""
|
|
128
|
+
Command type
|
|
129
|
+
"""
|
|
130
|
+
session_id: str
|
|
131
|
+
"""
|
|
132
|
+
Recording session ID
|
|
133
|
+
"""
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
class StopRecordingCommand(WebSocketMessage):
|
|
137
|
+
model_config = ConfigDict(
|
|
138
|
+
populate_by_name=True,
|
|
139
|
+
)
|
|
140
|
+
command: Literal['stop_recording']
|
|
141
|
+
"""
|
|
142
|
+
Command type
|
|
143
|
+
"""
|
|
144
|
+
session_id: str
|
|
145
|
+
"""
|
|
146
|
+
Recording session ID
|
|
147
|
+
"""
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
class FinishRecordingCommand(WebSocketMessage):
|
|
151
|
+
model_config = ConfigDict(
|
|
152
|
+
populate_by_name=True,
|
|
153
|
+
)
|
|
154
|
+
command: Literal['finish_recording']
|
|
155
|
+
"""
|
|
156
|
+
Command type
|
|
157
|
+
"""
|
|
158
|
+
session_id: str
|
|
159
|
+
"""
|
|
160
|
+
Recording session ID
|
|
161
|
+
"""
|
|
162
|
+
flow_name: str | None = 'Recorded Flow'
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
class GetRecordingStatusCommand(WebSocketMessage):
|
|
166
|
+
model_config = ConfigDict(
|
|
167
|
+
populate_by_name=True,
|
|
168
|
+
)
|
|
169
|
+
command: Literal['get_recording_status']
|
|
170
|
+
"""
|
|
171
|
+
Command type
|
|
172
|
+
"""
|
|
173
|
+
session_id: str | None = None
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
class ListRecordingsCommand(WebSocketMessage):
|
|
177
|
+
model_config = ConfigDict(
|
|
178
|
+
populate_by_name=True,
|
|
179
|
+
)
|
|
180
|
+
command: Literal['list_recordings']
|
|
181
|
+
"""
|
|
182
|
+
Command type
|
|
183
|
+
"""
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
class ConvertRecordingToFlowCommand(WebSocketMessage):
|
|
187
|
+
model_config = ConfigDict(
|
|
188
|
+
populate_by_name=True,
|
|
189
|
+
)
|
|
190
|
+
command: Literal['convert_recording_to_flow']
|
|
191
|
+
"""
|
|
192
|
+
Command type
|
|
193
|
+
"""
|
|
194
|
+
session_id: str
|
|
195
|
+
"""
|
|
196
|
+
Recording session ID
|
|
197
|
+
"""
|
|
198
|
+
flow_name: str | None = 'Recorded Flow'
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
class GetRealtimeActionsCommand(WebSocketMessage):
|
|
202
|
+
model_config = ConfigDict(
|
|
203
|
+
populate_by_name=True,
|
|
204
|
+
)
|
|
205
|
+
command: Literal['get_realtime_actions']
|
|
206
|
+
"""
|
|
207
|
+
Command type
|
|
208
|
+
"""
|
|
209
|
+
session_id: str
|
|
210
|
+
"""
|
|
211
|
+
Recording session ID
|
|
212
|
+
"""
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
class GetLatestRealtimeActionCommand(WebSocketMessage):
|
|
216
|
+
model_config = ConfigDict(
|
|
217
|
+
populate_by_name=True,
|
|
218
|
+
)
|
|
219
|
+
command: Literal['get_latest_realtime_action']
|
|
220
|
+
"""
|
|
221
|
+
Command type
|
|
222
|
+
"""
|
|
223
|
+
session_id: str
|
|
224
|
+
"""
|
|
225
|
+
Recording session ID
|
|
226
|
+
"""
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
class StopCommand(WebSocketMessage):
|
|
230
|
+
model_config = ConfigDict(
|
|
231
|
+
populate_by_name=True,
|
|
232
|
+
)
|
|
233
|
+
command: Literal['stop']
|
|
234
|
+
"""
|
|
235
|
+
Command type
|
|
236
|
+
"""
|
|
237
|
+
flow_id: str | None = None
|
|
238
|
+
"""
|
|
239
|
+
Flow ID for the command
|
|
240
|
+
"""
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
class CloseCommand(WebSocketMessage):
|
|
244
|
+
model_config = ConfigDict(
|
|
245
|
+
populate_by_name=True,
|
|
246
|
+
)
|
|
247
|
+
command: Literal['close']
|
|
248
|
+
"""
|
|
249
|
+
Command type
|
|
250
|
+
"""
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
class ListSessionsCommand(WebSocketMessage):
|
|
254
|
+
model_config = ConfigDict(
|
|
255
|
+
populate_by_name=True,
|
|
256
|
+
)
|
|
257
|
+
command: Literal['list_sessions']
|
|
258
|
+
"""
|
|
259
|
+
Command type
|
|
260
|
+
"""
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
class CloseSessionCommand(WebSocketMessage):
|
|
264
|
+
model_config = ConfigDict(
|
|
265
|
+
populate_by_name=True,
|
|
266
|
+
)
|
|
267
|
+
command: Literal['close_session']
|
|
268
|
+
"""
|
|
269
|
+
Command type
|
|
270
|
+
"""
|
|
271
|
+
flow_id: str | None = None
|
|
272
|
+
"""
|
|
273
|
+
Flow ID for the command
|
|
274
|
+
"""
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
class RestartEngineCommand(WebSocketMessage):
|
|
278
|
+
model_config = ConfigDict(
|
|
279
|
+
populate_by_name=True,
|
|
280
|
+
)
|
|
281
|
+
command: Literal['restart_engine']
|
|
282
|
+
"""
|
|
283
|
+
Command type
|
|
284
|
+
"""
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
class CloseEngineCommand(WebSocketMessage):
|
|
288
|
+
model_config = ConfigDict(
|
|
289
|
+
populate_by_name=True,
|
|
290
|
+
)
|
|
291
|
+
command: Literal['close_engine']
|
|
292
|
+
"""
|
|
293
|
+
Command type
|
|
294
|
+
"""
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
class GetEngineStatusCommand(WebSocketMessage):
|
|
298
|
+
model_config = ConfigDict(
|
|
299
|
+
populate_by_name=True,
|
|
300
|
+
)
|
|
301
|
+
command: Literal['get_engine_status']
|
|
302
|
+
"""
|
|
303
|
+
Command type
|
|
304
|
+
"""
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
class StartPerformanceScanCommand(WebSocketMessage):
|
|
308
|
+
model_config = ConfigDict(
|
|
309
|
+
populate_by_name=True,
|
|
310
|
+
)
|
|
311
|
+
command: Literal['start_performance_scan']
|
|
312
|
+
"""
|
|
313
|
+
Command type
|
|
314
|
+
"""
|
|
315
|
+
test_id: str
|
|
316
|
+
"""
|
|
317
|
+
Performance test ID
|
|
318
|
+
"""
|
|
319
|
+
url: str
|
|
320
|
+
"""
|
|
321
|
+
URL to navigate to and record
|
|
322
|
+
"""
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
class StopPerformanceScanCommand(WebSocketMessage):
|
|
326
|
+
model_config = ConfigDict(
|
|
327
|
+
populate_by_name=True,
|
|
328
|
+
)
|
|
329
|
+
command: Literal['stop_performance_scan']
|
|
330
|
+
"""
|
|
331
|
+
Command type
|
|
332
|
+
"""
|
|
333
|
+
test_id: str
|
|
334
|
+
"""
|
|
335
|
+
Performance test ID
|
|
336
|
+
"""
|
|
337
|
+
session_id: str
|
|
338
|
+
"""
|
|
339
|
+
Recording session ID
|
|
340
|
+
"""
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
class RunLoadTestCommand(WebSocketMessage):
|
|
344
|
+
model_config = ConfigDict(
|
|
345
|
+
populate_by_name=True,
|
|
346
|
+
)
|
|
347
|
+
command: Literal['run_load_test']
|
|
348
|
+
"""
|
|
349
|
+
Command type
|
|
350
|
+
"""
|
|
351
|
+
test_id: str
|
|
352
|
+
"""
|
|
353
|
+
Performance test ID
|
|
354
|
+
"""
|
|
355
|
+
config: dict[str, Any]
|
|
356
|
+
"""
|
|
357
|
+
Load test configuration
|
|
358
|
+
"""
|
|
359
|
+
auth_config: dict[str, Any] | None = None
|
|
360
|
+
"""
|
|
361
|
+
Authentication configuration for load test
|
|
362
|
+
"""
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
class StopLoadTestCommand(WebSocketMessage):
|
|
366
|
+
model_config = ConfigDict(
|
|
367
|
+
populate_by_name=True,
|
|
368
|
+
)
|
|
369
|
+
command: Literal['stop_load_test']
|
|
370
|
+
"""
|
|
371
|
+
Command type
|
|
372
|
+
"""
|
|
373
|
+
test_id: str
|
|
374
|
+
"""
|
|
375
|
+
Performance test ID
|
|
376
|
+
"""
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
class WebSocketResponse(BaseModel):
|
|
380
|
+
"""
|
|
381
|
+
Base WebSocket response structure
|
|
382
|
+
"""
|
|
383
|
+
|
|
384
|
+
model_config = ConfigDict(
|
|
385
|
+
populate_by_name=True,
|
|
386
|
+
)
|
|
387
|
+
command: str
|
|
388
|
+
"""
|
|
389
|
+
Command that was executed
|
|
390
|
+
"""
|
|
391
|
+
success: bool
|
|
392
|
+
"""
|
|
393
|
+
Whether the command succeeded
|
|
394
|
+
"""
|
|
395
|
+
message: str | None = None
|
|
396
|
+
"""
|
|
397
|
+
Response message
|
|
398
|
+
"""
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
class Report(BaseModel):
|
|
402
|
+
"""
|
|
403
|
+
Flow execution report
|
|
404
|
+
"""
|
|
405
|
+
|
|
406
|
+
model_config = ConfigDict(
|
|
407
|
+
populate_by_name=True,
|
|
408
|
+
)
|
|
409
|
+
actions: list[dict[str, Any]] | None = None
|
|
410
|
+
variables: dict[str, Any] | None = None
|
|
411
|
+
parameters: dict[str, Any] | None = None
|
|
412
|
+
output: dict[str, Any] | None = None
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
class RunResponse(WebSocketResponse):
|
|
416
|
+
model_config = ConfigDict(
|
|
417
|
+
populate_by_name=True,
|
|
418
|
+
)
|
|
419
|
+
command: Literal['run']
|
|
420
|
+
"""
|
|
421
|
+
Command that was executed
|
|
422
|
+
"""
|
|
423
|
+
mode: Mode
|
|
424
|
+
reports: list[Report]
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
class ListSessionsResponse(WebSocketResponse):
|
|
428
|
+
model_config = ConfigDict(
|
|
429
|
+
populate_by_name=True,
|
|
430
|
+
)
|
|
431
|
+
command: Literal['list_sessions']
|
|
432
|
+
"""
|
|
433
|
+
Command that was executed
|
|
434
|
+
"""
|
|
435
|
+
sessions: list[SessionInfo]
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
class EngineStatusResponse(WebSocketResponse):
|
|
439
|
+
model_config = ConfigDict(
|
|
440
|
+
populate_by_name=True,
|
|
441
|
+
)
|
|
442
|
+
command: Literal['get_engine_status']
|
|
443
|
+
"""
|
|
444
|
+
Command that was executed
|
|
445
|
+
"""
|
|
446
|
+
status: str
|
|
447
|
+
"""
|
|
448
|
+
Engine status
|
|
449
|
+
"""
|
|
450
|
+
uptime: int
|
|
451
|
+
"""
|
|
452
|
+
Engine uptime in seconds
|
|
453
|
+
"""
|
|
454
|
+
active_sessions: int
|
|
455
|
+
"""
|
|
456
|
+
Number of active sessions
|
|
457
|
+
"""
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
class Command(StrEnum):
|
|
461
|
+
"""
|
|
462
|
+
Command that was executed
|
|
463
|
+
"""
|
|
464
|
+
|
|
465
|
+
record = 'record'
|
|
466
|
+
pause_recording = 'pause_recording'
|
|
467
|
+
resume_recording = 'resume_recording'
|
|
468
|
+
stop_recording = 'stop_recording'
|
|
469
|
+
finish_recording = 'finish_recording'
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
class RecordingResponse(WebSocketResponse):
|
|
473
|
+
model_config = ConfigDict(
|
|
474
|
+
populate_by_name=True,
|
|
475
|
+
)
|
|
476
|
+
command: Command
|
|
477
|
+
"""
|
|
478
|
+
Command that was executed
|
|
479
|
+
"""
|
|
480
|
+
session_id: str | None = None
|
|
481
|
+
data: dict[str, Any] | None = None
|
|
482
|
+
|
|
483
|
+
|
|
484
|
+
class RecordingStatusResponse(WebSocketResponse):
|
|
485
|
+
model_config = ConfigDict(
|
|
486
|
+
populate_by_name=True,
|
|
487
|
+
)
|
|
488
|
+
command: Literal['get_recording_status']
|
|
489
|
+
"""
|
|
490
|
+
Command that was executed
|
|
491
|
+
"""
|
|
492
|
+
session_info: dict[str, Any] | None = None
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
class ListRecordingsResponse(WebSocketResponse):
|
|
496
|
+
model_config = ConfigDict(
|
|
497
|
+
populate_by_name=True,
|
|
498
|
+
)
|
|
499
|
+
command: Literal['list_recordings']
|
|
500
|
+
"""
|
|
501
|
+
Command that was executed
|
|
502
|
+
"""
|
|
503
|
+
recordings: list[dict[str, Any]] | None = []
|
|
504
|
+
|
|
505
|
+
|
|
506
|
+
class DebugRunCommand(WebSocketMessage):
|
|
507
|
+
model_config = ConfigDict(
|
|
508
|
+
populate_by_name=True,
|
|
509
|
+
)
|
|
510
|
+
command: Literal['debug_run']
|
|
511
|
+
"""
|
|
512
|
+
Command type
|
|
513
|
+
"""
|
|
514
|
+
session_id: str
|
|
515
|
+
"""
|
|
516
|
+
Unique debug session identifier
|
|
517
|
+
"""
|
|
518
|
+
flow: dict[str, Any]
|
|
519
|
+
"""
|
|
520
|
+
Flow to execute in debug mode
|
|
521
|
+
"""
|
|
522
|
+
breakpoints: list[str] | None = []
|
|
523
|
+
"""
|
|
524
|
+
List of action IDs where execution should pause
|
|
525
|
+
"""
|
|
526
|
+
mode: Literal['debug'] = 'debug'
|
|
527
|
+
|
|
528
|
+
|
|
529
|
+
class DebugStepCommand(WebSocketMessage):
|
|
530
|
+
model_config = ConfigDict(
|
|
531
|
+
populate_by_name=True,
|
|
532
|
+
)
|
|
533
|
+
command: Literal['debug_step']
|
|
534
|
+
"""
|
|
535
|
+
Command type
|
|
536
|
+
"""
|
|
537
|
+
session_id: str
|
|
538
|
+
"""
|
|
539
|
+
Debug session identifier
|
|
540
|
+
"""
|
|
541
|
+
|
|
542
|
+
|
|
543
|
+
class DebugContinueCommand(WebSocketMessage):
|
|
544
|
+
model_config = ConfigDict(
|
|
545
|
+
populate_by_name=True,
|
|
546
|
+
)
|
|
547
|
+
command: Literal['debug_continue']
|
|
548
|
+
"""
|
|
549
|
+
Command type
|
|
550
|
+
"""
|
|
551
|
+
session_id: str
|
|
552
|
+
"""
|
|
553
|
+
Debug session identifier
|
|
554
|
+
"""
|
|
555
|
+
|
|
556
|
+
|
|
557
|
+
class DebugPauseCommand(WebSocketMessage):
|
|
558
|
+
model_config = ConfigDict(
|
|
559
|
+
populate_by_name=True,
|
|
560
|
+
)
|
|
561
|
+
command: Literal['debug_pause']
|
|
562
|
+
"""
|
|
563
|
+
Command type
|
|
564
|
+
"""
|
|
565
|
+
session_id: str
|
|
566
|
+
"""
|
|
567
|
+
Debug session identifier
|
|
568
|
+
"""
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
class DebugStopCommand(WebSocketMessage):
|
|
572
|
+
model_config = ConfigDict(
|
|
573
|
+
populate_by_name=True,
|
|
574
|
+
)
|
|
575
|
+
command: Literal['debug_stop']
|
|
576
|
+
"""
|
|
577
|
+
Command type
|
|
578
|
+
"""
|
|
579
|
+
session_id: str
|
|
580
|
+
"""
|
|
581
|
+
Debug session identifier
|
|
582
|
+
"""
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
class Command1(StrEnum):
|
|
586
|
+
"""
|
|
587
|
+
Command that was executed
|
|
588
|
+
"""
|
|
589
|
+
|
|
590
|
+
debug_run = 'debug_run'
|
|
591
|
+
debug_step = 'debug_step'
|
|
592
|
+
debug_continue = 'debug_continue'
|
|
593
|
+
debug_pause = 'debug_pause'
|
|
594
|
+
debug_stop = 'debug_stop'
|
|
595
|
+
debug_error = 'debug_error'
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
class State(StrEnum):
|
|
599
|
+
"""
|
|
600
|
+
Current debug session state
|
|
601
|
+
"""
|
|
602
|
+
|
|
603
|
+
ready = 'ready'
|
|
604
|
+
running = 'running'
|
|
605
|
+
paused = 'paused'
|
|
606
|
+
stepping = 'stepping'
|
|
607
|
+
completed = 'completed'
|
|
608
|
+
error = 'error'
|
|
609
|
+
stopped = 'stopped'
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
class DebugResponse(WebSocketResponse):
|
|
613
|
+
model_config = ConfigDict(
|
|
614
|
+
populate_by_name=True,
|
|
615
|
+
)
|
|
616
|
+
command: Command1
|
|
617
|
+
"""
|
|
618
|
+
Command that was executed
|
|
619
|
+
"""
|
|
620
|
+
session_id: str | None = None
|
|
621
|
+
"""
|
|
622
|
+
Debug session identifier
|
|
623
|
+
"""
|
|
624
|
+
state: State | None = None
|
|
625
|
+
"""
|
|
626
|
+
Current debug session state
|
|
627
|
+
"""
|
|
628
|
+
data: dict[str, Any] | None = None
|
|
629
|
+
"""
|
|
630
|
+
Additional debug data (action results, variables, etc.)
|
|
631
|
+
"""
|
|
632
|
+
error: str | None = None
|
|
633
|
+
"""
|
|
634
|
+
Error message if command failed
|
|
635
|
+
"""
|
|
636
|
+
|
|
637
|
+
|
|
638
|
+
class WebsocketCommunication(BaseModel):
|
|
639
|
+
model_config = ConfigDict(
|
|
640
|
+
populate_by_name=True,
|
|
641
|
+
)
|
|
642
|
+
commands: (
|
|
643
|
+
list[
|
|
644
|
+
RunCommand
|
|
645
|
+
| RecordCommand
|
|
646
|
+
| PauseRecordingCommand
|
|
647
|
+
| ResumeRecordingCommand
|
|
648
|
+
| StopRecordingCommand
|
|
649
|
+
| FinishRecordingCommand
|
|
650
|
+
| GetRecordingStatusCommand
|
|
651
|
+
| ListRecordingsCommand
|
|
652
|
+
| ConvertRecordingToFlowCommand
|
|
653
|
+
| GetRealtimeActionsCommand
|
|
654
|
+
| GetLatestRealtimeActionCommand
|
|
655
|
+
| StopCommand
|
|
656
|
+
| CloseCommand
|
|
657
|
+
| ListSessionsCommand
|
|
658
|
+
| CloseSessionCommand
|
|
659
|
+
| RestartEngineCommand
|
|
660
|
+
| CloseEngineCommand
|
|
661
|
+
| GetEngineStatusCommand
|
|
662
|
+
| StartPerformanceScanCommand
|
|
663
|
+
| StopPerformanceScanCommand
|
|
664
|
+
| RunLoadTestCommand
|
|
665
|
+
| StopLoadTestCommand
|
|
666
|
+
| DebugRunCommand
|
|
667
|
+
| DebugStepCommand
|
|
668
|
+
| DebugContinueCommand
|
|
669
|
+
| DebugPauseCommand
|
|
670
|
+
| DebugStopCommand
|
|
671
|
+
]
|
|
672
|
+
| None
|
|
673
|
+
) = None
|
|
674
|
+
responses: (
|
|
675
|
+
list[
|
|
676
|
+
RunResponse
|
|
677
|
+
| ListSessionsResponse
|
|
678
|
+
| EngineStatusResponse
|
|
679
|
+
| RecordingResponse
|
|
680
|
+
| RecordingStatusResponse
|
|
681
|
+
| ListRecordingsResponse
|
|
682
|
+
| DebugResponse
|
|
683
|
+
| WebSocketResponse
|
|
684
|
+
]
|
|
685
|
+
| None
|
|
686
|
+
) = None
|
|
687
|
+
|
|
688
|
+
|
|
689
|
+
class WebSocketCommunicationModels(BaseModel):
|
|
690
|
+
"""
|
|
691
|
+
Schema for WebSocket API commands and responses
|
|
692
|
+
"""
|
|
693
|
+
|
|
694
|
+
model_config = ConfigDict(
|
|
695
|
+
populate_by_name=True,
|
|
696
|
+
)
|
|
697
|
+
websocketCommunication: WebsocketCommunication | None = None
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
setup.py
|
|
2
|
+
floweb_models/__init__.py
|
|
3
|
+
floweb_models/action_configs.py
|
|
4
|
+
floweb_models/debug_models.py
|
|
5
|
+
floweb_models/environment.py
|
|
6
|
+
floweb_models/execution_results.py
|
|
7
|
+
floweb_models/flow.py
|
|
8
|
+
floweb_models/flow_validation.py
|
|
9
|
+
floweb_models/parallel_execution.py
|
|
10
|
+
floweb_models/performance_test.py
|
|
11
|
+
floweb_models/websocket_communication.py
|
|
12
|
+
floweb_models.egg-info/PKG-INFO
|
|
13
|
+
floweb_models.egg-info/SOURCES.txt
|
|
14
|
+
floweb_models.egg-info/dependency_links.txt
|
|
15
|
+
floweb_models.egg-info/requires.txt
|
|
16
|
+
floweb_models.egg-info/top_level.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pydantic>=2.0.0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
floweb_models
|