@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.
Files changed (68) hide show
  1. package/README.md +100 -0
  2. package/index.d.ts +594 -0
  3. package/index.js +3 -0
  4. package/package.json +55 -0
  5. package/python-models/__init__.py +68 -0
  6. package/python-models/action-configs.py +1112 -0
  7. package/python-models/build/lib/floweb_models/__init__.py +194 -0
  8. package/python-models/build/lib/floweb_models/action_configs.py +783 -0
  9. package/python-models/build/lib/floweb_models/debug.py +209 -0
  10. package/python-models/build/lib/floweb_models/debug_models.py +141 -0
  11. package/python-models/build/lib/floweb_models/environment.py +158 -0
  12. package/python-models/build/lib/floweb_models/execution_results.py +208 -0
  13. package/python-models/build/lib/floweb_models/flow.py +345 -0
  14. package/python-models/build/lib/floweb_models/flow_validation.py +316 -0
  15. package/python-models/build/lib/floweb_models/parallel_execution.py +258 -0
  16. package/python-models/build/lib/floweb_models/performance_test.py +605 -0
  17. package/python-models/build/lib/floweb_models/websocket_communication.py +697 -0
  18. package/python-models/debug.py +209 -0
  19. package/python-models/dist/floweb_domain_models-1.0.0-py3-none-any.whl +0 -0
  20. package/python-models/environment.py +158 -0
  21. package/python-models/execution-results.py +208 -0
  22. package/python-models/flow-validation.py +316 -0
  23. package/python-models/flow.py +369 -0
  24. package/python-models/floweb_domain_models.egg-info/PKG-INFO +9 -0
  25. package/python-models/floweb_domain_models.egg-info/SOURCES.txt +16 -0
  26. package/python-models/floweb_domain_models.egg-info/dependency_links.txt +1 -0
  27. package/python-models/floweb_domain_models.egg-info/requires.txt +1 -0
  28. package/python-models/floweb_domain_models.egg-info/top_level.txt +1 -0
  29. package/python-models/floweb_models/__init__.py +194 -0
  30. package/python-models/floweb_models/__pycache__/__init__.cpython-312.pyc +0 -0
  31. package/python-models/floweb_models/__pycache__/action_configs.cpython-312.pyc +0 -0
  32. package/python-models/floweb_models/__pycache__/debug.cpython-312.pyc +0 -0
  33. package/python-models/floweb_models/__pycache__/debug_models.cpython-312.pyc +0 -0
  34. package/python-models/floweb_models/__pycache__/environment.cpython-312.pyc +0 -0
  35. package/python-models/floweb_models/__pycache__/execution_results.cpython-312.pyc +0 -0
  36. package/python-models/floweb_models/__pycache__/flow.cpython-312.pyc +0 -0
  37. package/python-models/floweb_models/__pycache__/flow_validation.cpython-312.pyc +0 -0
  38. package/python-models/floweb_models/__pycache__/parallel_execution.cpython-312.pyc +0 -0
  39. package/python-models/floweb_models/__pycache__/performance_test.cpython-312.pyc +0 -0
  40. package/python-models/floweb_models/__pycache__/websocket_communication.cpython-312.pyc +0 -0
  41. package/python-models/floweb_models/action_configs.py +1062 -0
  42. package/python-models/floweb_models/debug.py +209 -0
  43. package/python-models/floweb_models/debug_models.py +141 -0
  44. package/python-models/floweb_models/environment.py +158 -0
  45. package/python-models/floweb_models/execution_results.py +208 -0
  46. package/python-models/floweb_models/flow.py +345 -0
  47. package/python-models/floweb_models/flow_validation.py +316 -0
  48. package/python-models/floweb_models/parallel_execution.py +229 -0
  49. package/python-models/floweb_models/performance_test.py +605 -0
  50. package/python-models/floweb_models/websocket_communication.py +697 -0
  51. package/python-models/floweb_models.egg-info/PKG-INFO +9 -0
  52. package/python-models/floweb_models.egg-info/SOURCES.txt +16 -0
  53. package/python-models/floweb_models.egg-info/dependency_links.txt +1 -0
  54. package/python-models/floweb_models.egg-info/requires.txt +1 -0
  55. package/python-models/floweb_models.egg-info/top_level.txt +1 -0
  56. package/python-models/parallel-execution.py +475 -0
  57. package/python-models/performance-test.py +605 -0
  58. package/python-models/setup.py +13 -0
  59. package/python-models/websocket-communication.py +697 -0
  60. package/schemas/action-configs.json +1501 -0
  61. package/schemas/debug.json +203 -0
  62. package/schemas/environment.json +165 -0
  63. package/schemas/execution-results.json +209 -0
  64. package/schemas/flow-validation.json +311 -0
  65. package/schemas/flow.json +381 -0
  66. package/schemas/parallel-execution.json +219 -0
  67. package/schemas/performance-test.json +600 -0
  68. package/schemas/websocket-communication.json +1118 -0
@@ -0,0 +1,258 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: parallel-execution.json
3
+ # timestamp: 2026-02-04T17:10:20+00:00
4
+
5
+ from __future__ import annotations
6
+
7
+ from enum import StrEnum
8
+ from typing import Any
9
+
10
+ from pydantic import AwareDatetime, BaseModel, Field, RootModel
11
+
12
+
13
+ class Mode(StrEnum):
14
+ """
15
+ Execution mode
16
+ """
17
+
18
+ full = 'full'
19
+ partial = 'partial'
20
+
21
+
22
+ class Flow(RootModel[Any]):
23
+ root: Any
24
+
25
+
26
+ class Position(BaseModel):
27
+ x: float = Field(..., description='X coordinate')
28
+ y: float = Field(..., description='Y coordinate')
29
+
30
+
31
+ class ActionData(BaseModel):
32
+ label: str = Field(..., description='Human-readable label')
33
+ type: str = Field(..., description='Action type identifier')
34
+ config: dict[str, Any] = Field(..., description='Action-specific configuration')
35
+
36
+
37
+ class Action(BaseModel):
38
+ id: str = Field(..., description='Unique action identifier')
39
+ type: str = Field(..., description='Action type')
40
+ position: Position
41
+ data: ActionData
42
+
43
+
44
+ class Edge(BaseModel):
45
+ id: str = Field(..., description='Unique edge identifier')
46
+ source: str = Field(..., description='Source action ID')
47
+ source_handle: str | None = Field(
48
+ None, alias='sourceHandle', description='Source handle identifier'
49
+ )
50
+ target: str = Field(..., description='Target action ID')
51
+ target_handle: str | None = Field(
52
+ None, alias='targetHandle', description='Target handle identifier'
53
+ )
54
+ type: str | None = Field('step', description='Edge type')
55
+ data: dict[str, Any] | None = Field(None, description='Additional edge data')
56
+
57
+
58
+ class Zoom(BaseModel):
59
+ x: float = Field(..., description='Pan X position')
60
+ y: float = Field(..., description='Pan Y position')
61
+ zoom: float = Field(..., description='Zoom level')
62
+
63
+
64
+ class Variable(BaseModel):
65
+ id: str = Field(..., description='Variable identifier')
66
+ name: str = Field(..., description='Variable name')
67
+ type: str = Field(..., description='Variable data type')
68
+ value: str = Field(..., description='Variable value')
69
+ description: str | None = Field(None, description='Optional description')
70
+ is_output: bool | None = Field(
71
+ None, alias='isOutput', description='Whether this is an output variable'
72
+ )
73
+
74
+
75
+ class FlowVariables(BaseModel):
76
+ input: list[Variable] = Field(..., description='Input variables')
77
+ output: list[Variable] = Field(..., description='Output variables')
78
+
79
+
80
+ class FlowParameters(BaseModel):
81
+ input: list[Variable] = Field(..., description='Input parameters')
82
+ output: list[Variable] = Field(..., description='Output parameters')
83
+
84
+
85
+ class EnvironmentVariable(BaseModel):
86
+ id: str = Field(..., description='Variable identifier')
87
+ name: str = Field(..., description='Variable name')
88
+ type: str = Field(..., description='Variable data type')
89
+ value: str = Field(..., description='Variable value')
90
+ description: str | None = Field(None, description='Optional description')
91
+
92
+
93
+ class Environment(BaseModel):
94
+ id: str = Field(..., description='Environment identifier')
95
+ name: str = Field(..., description='Environment name')
96
+ variables: list[EnvironmentVariable] = Field(
97
+ ..., description='Environment variables'
98
+ )
99
+ description: str | None = Field(None, description='Environment description')
100
+ is_default: bool | None = Field(
101
+ None, alias='isDefault', description='Whether this is the default environment'
102
+ )
103
+ is_active: bool | None = Field(
104
+ None, alias='isActive', description='Whether this environment is active'
105
+ )
106
+ created_at: AwareDatetime = Field(
107
+ ..., alias='createdAt', description='Creation timestamp'
108
+ )
109
+ updated_at: AwareDatetime = Field(
110
+ ..., alias='updatedAt', description='Last update timestamp'
111
+ )
112
+
113
+
114
+ class GlobalVariable(BaseModel):
115
+ id: str = Field(..., description='Variable identifier')
116
+ name: str = Field(..., description='Variable name')
117
+ type: str = Field(..., description='Variable data type')
118
+ value: str = Field(..., description='Variable value')
119
+ description: str | None = Field(None, description='Optional description')
120
+ created_at: AwareDatetime = Field(
121
+ ..., alias='createdAt', description='Creation timestamp'
122
+ )
123
+ updated_at: AwareDatetime = Field(
124
+ ..., alias='updatedAt', description='Last update timestamp'
125
+ )
126
+
127
+
128
+ class Status(StrEnum):
129
+ """
130
+ Execution status
131
+ """
132
+
133
+ completed = 'completed'
134
+ error = 'error'
135
+ stopped = 'stopped'
136
+ running = 'running'
137
+ pending = 'pending'
138
+
139
+
140
+ class FlowExecutionResult(BaseModel):
141
+ """
142
+ Result of a single test execution
143
+ """
144
+
145
+ flow_id: str = Field(..., description='ID of the executed flow')
146
+ flow_name: str = Field(..., description='Name of the executed flow')
147
+ success: bool = Field(..., description='Whether the test passed')
148
+ status: Status = Field(..., description='Execution status')
149
+ total_actions: int = Field(..., description='Total actions in the flow', ge=0)
150
+ executed_actions: int = Field(..., description='Number of actions executed', ge=0)
151
+ successful_actions: int = Field(
152
+ ..., description='Number of successful actions', ge=0
153
+ )
154
+ duration_seconds: float = Field(
155
+ ..., description='Total execution time in seconds', ge=0.0
156
+ )
157
+ report: dict[str, Any] = Field(..., description='Full flow report')
158
+ error: str | None = Field(None, description='Error message if failed')
159
+ metadata: dict[str, Any] | None = Field({}, description='Additional test metadata')
160
+
161
+
162
+ class BrowserMode(StrEnum):
163
+ """
164
+ Browser mode
165
+ """
166
+
167
+ headful = 'headful'
168
+ headless = 'headless'
169
+
170
+
171
+ class Browser(StrEnum):
172
+ """
173
+ Browser to use for execution
174
+ """
175
+
176
+ chrome = 'chrome'
177
+ firefox = 'firefox'
178
+ safari = 'safari'
179
+ edge = 'edge'
180
+
181
+
182
+ class ParallelTestsResult(BaseModel):
183
+ """
184
+ Result of parallel test execution
185
+ """
186
+
187
+ total_tests: int = Field(..., description='Total number of tests', ge=0)
188
+ passed_tests: int = Field(..., description='Number of passed tests', ge=0)
189
+ failed_tests: int = Field(..., description='Number of failed tests', ge=0)
190
+ skipped_tests: int | None = Field(0, description='Number of skipped tests', ge=0)
191
+ total_duration_seconds: float = Field(
192
+ ..., description='Total execution time', ge=0.0
193
+ )
194
+ results: list[FlowExecutionResult] = Field(
195
+ ..., description='Individual test results'
196
+ )
197
+ success: bool = Field(..., description='Overall success status')
198
+
199
+
200
+ class FlowExecutionRequest(BaseModel):
201
+ """
202
+ Request to execute a single test/flow
203
+ """
204
+
205
+ flow: Flow = Field(..., description='Flow to execute with all required fields')
206
+ mode: Mode | None = Field('full', description='Execution mode')
207
+ recording: dict[str, Any] | None = Field(
208
+ None, description='Recording configuration'
209
+ )
210
+ metadata: dict[str, Any] | None = Field({}, description='Additional test metadata')
211
+
212
+
213
+ class ParallelTestsRequest(BaseModel):
214
+ """
215
+ Request to execute multiple tests in parallel
216
+ """
217
+
218
+ tests: list[FlowExecutionRequest] = Field(
219
+ ..., description='List of tests to execute'
220
+ )
221
+ data: dict[str, Any] | None = Field(
222
+ None,
223
+ description='Shared data containing environment and globalVariables for all tests',
224
+ )
225
+ max_parallel: int | None = Field(
226
+ 10, description='Maximum number of parallel executions', ge=1, le=50
227
+ )
228
+ stop_on_failure: bool | None = Field(
229
+ False, description='Stop all tests if one fails'
230
+ )
231
+ cleanup_after: bool | None = Field(
232
+ True, description='Cleanup resources after execution'
233
+ )
234
+ browser_mode: BrowserMode | None = Field('headful', description='Browser mode')
235
+ browser: Browser | None = Field(
236
+ 'chrome', description='Browser to use for execution'
237
+ )
238
+ incognito: bool | None = Field(
239
+ False, description='Run tests in incognito/private mode'
240
+ )
241
+ max_retries: int | None = Field(
242
+ 3, description='Maximum retries for transient failures', ge=0, le=10
243
+ )
244
+
245
+
246
+ class ParallelExecution(BaseModel):
247
+ requests: list[ParallelTestsRequest] | None = None
248
+ results: list[ParallelTestsResult] | None = None
249
+
250
+
251
+ class ParallelExecutionModels(BaseModel):
252
+ """
253
+ Schema for parallel test execution requests and results
254
+ """
255
+
256
+ parallel_execution: ParallelExecution | None = Field(
257
+ None, alias='parallelExecution'
258
+ )