@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,316 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: flow-validation.json
3
+ # timestamp: 2026-02-04T16:19:31+00:00
4
+
5
+ from __future__ import annotations
6
+
7
+ from enum import StrEnum
8
+ from typing import Annotated
9
+
10
+ from pydantic import AwareDatetime, BaseModel, ConfigDict, Field
11
+
12
+
13
+ class Type(StrEnum):
14
+ """
15
+ Type of warning
16
+ """
17
+
18
+ missing_selector = 'missing-selector'
19
+ infinite_loop = 'infinite-loop'
20
+ unreachable_node = 'unreachable-node'
21
+ missing_condition = 'missing-condition'
22
+ invalid_reference = 'invalid-reference'
23
+ missing_action_reference = 'missing-action-reference'
24
+ circular_dependency = 'circular-dependency'
25
+ duplicate_id = 'duplicate-id'
26
+ invalid_variable = 'invalid-variable'
27
+ missing_variable = 'missing-variable'
28
+ type_mismatch = 'type-mismatch'
29
+ performance_issue = 'performance-issue'
30
+ security_risk = 'security-risk'
31
+
32
+
33
+ class Category(StrEnum):
34
+ """
35
+ Category of the warning
36
+ """
37
+
38
+ logic = 'logic'
39
+ performance = 'performance'
40
+ security = 'security'
41
+ usability = 'usability'
42
+ compatibility = 'compatibility'
43
+
44
+
45
+ class WarningSeverity(StrEnum):
46
+ """
47
+ Severity level of the warning
48
+ """
49
+
50
+ minor = 'minor'
51
+ medium = 'medium'
52
+ critical = 'critical'
53
+ info = 'info'
54
+
55
+
56
+ class LoopInfo(BaseModel):
57
+ """
58
+ Information about a detected loop
59
+ """
60
+
61
+ model_config = ConfigDict(
62
+ populate_by_name=True,
63
+ )
64
+ nodes: list[str]
65
+ """
66
+ Node IDs that form the loop
67
+ """
68
+ hasExitCondition: bool
69
+ """
70
+ Whether the loop has a proper exit condition
71
+ """
72
+ severity: WarningSeverity
73
+ description: str
74
+ """
75
+ Description of the loop issue
76
+ """
77
+ maxIterations: int | None = None
78
+ """
79
+ Maximum iterations if detectable
80
+ """
81
+ isInfinite: bool | None = None
82
+ """
83
+ Whether this appears to be an infinite loop
84
+ """
85
+
86
+
87
+ class WarningsBySeverity(BaseModel):
88
+ """
89
+ Count of warnings by severity
90
+ """
91
+
92
+ model_config = ConfigDict(
93
+ populate_by_name=True,
94
+ )
95
+ minor: Annotated[int | None, Field(ge=0)] = None
96
+ medium: Annotated[int | None, Field(ge=0)] = None
97
+ critical: Annotated[int | None, Field(ge=0)] = None
98
+ info: Annotated[int | None, Field(ge=0)] = None
99
+
100
+
101
+ class ValidationSummary(BaseModel):
102
+ """
103
+ Summary statistics of validation results
104
+ """
105
+
106
+ model_config = ConfigDict(
107
+ populate_by_name=True,
108
+ )
109
+ totalNodes: Annotated[int, Field(ge=0)]
110
+ """
111
+ Total number of nodes in the flow
112
+ """
113
+ totalEdges: Annotated[int, Field(ge=0)]
114
+ """
115
+ Total number of edges in the flow
116
+ """
117
+ warningCount: Annotated[int, Field(ge=0)]
118
+ """
119
+ Total number of warnings
120
+ """
121
+ errorCount: Annotated[int, Field(ge=0)]
122
+ """
123
+ Total number of errors
124
+ """
125
+ criticalCount: Annotated[int | None, Field(ge=0)] = None
126
+ """
127
+ Number of critical severity issues
128
+ """
129
+ warningsByType: dict[str, int] | None = None
130
+ """
131
+ Count of warnings by type
132
+ """
133
+ warningsBySeverity: WarningsBySeverity | None = None
134
+ """
135
+ Count of warnings by severity
136
+ """
137
+
138
+
139
+ class ConfigValidation(BaseModel):
140
+ """
141
+ Validation of node configuration
142
+ """
143
+
144
+ model_config = ConfigDict(
145
+ populate_by_name=True,
146
+ )
147
+ isValid: bool | None = None
148
+ missingFields: list[str] | None = None
149
+ invalidFields: list[str] | None = None
150
+ typeErrors: list[str] | None = None
151
+
152
+
153
+ class FlowWarning(BaseModel):
154
+ """
155
+ Flow validation warning or error
156
+ """
157
+
158
+ model_config = ConfigDict(
159
+ populate_by_name=True,
160
+ )
161
+ id: str
162
+ """
163
+ Unique warning identifier
164
+ """
165
+ type: Type
166
+ """
167
+ Type of warning
168
+ """
169
+ severity: WarningSeverity
170
+ nodeId: str
171
+ """
172
+ ID of the node that triggered the warning
173
+ """
174
+ nodeName: str
175
+ """
176
+ Name of the node that triggered the warning
177
+ """
178
+ message: str
179
+ """
180
+ Warning message
181
+ """
182
+ description: str
183
+ """
184
+ Detailed description of the warning
185
+ """
186
+ affectedNodes: list[str] | None = None
187
+ """
188
+ List of other affected node IDs
189
+ """
190
+ suggestion: str | None = None
191
+ """
192
+ Suggested fix for the warning
193
+ """
194
+ category: Category | None = None
195
+ """
196
+ Category of the warning
197
+ """
198
+ createdAt: AwareDatetime | None = None
199
+ """
200
+ When the warning was detected
201
+ """
202
+
203
+
204
+ class LoopDetectionResult(BaseModel):
205
+ """
206
+ Result of loop detection analysis
207
+ """
208
+
209
+ model_config = ConfigDict(
210
+ populate_by_name=True,
211
+ )
212
+ hasLoops: bool
213
+ """
214
+ Whether loops were detected in the flow
215
+ """
216
+ loops: list[LoopInfo]
217
+ """
218
+ Information about detected loops
219
+ """
220
+ totalLoops: Annotated[int | None, Field(ge=0)] = None
221
+ """
222
+ Total number of loops detected
223
+ """
224
+ infiniteLoops: Annotated[int | None, Field(ge=0)] = None
225
+ """
226
+ Number of potentially infinite loops
227
+ """
228
+
229
+
230
+ class FlowValidationResult(BaseModel):
231
+ """
232
+ Complete result of flow validation
233
+ """
234
+
235
+ model_config = ConfigDict(
236
+ populate_by_name=True,
237
+ )
238
+ flowId: str
239
+ """
240
+ ID of the validated flow
241
+ """
242
+ flowName: str | None = None
243
+ """
244
+ Name of the validated flow
245
+ """
246
+ isValid: bool
247
+ """
248
+ Whether the flow is valid
249
+ """
250
+ warnings: list[FlowWarning]
251
+ """
252
+ List of warnings found
253
+ """
254
+ errors: list[FlowWarning]
255
+ """
256
+ List of errors found (critical warnings)
257
+ """
258
+ summary: ValidationSummary
259
+ validatedAt: AwareDatetime | None = None
260
+ """
261
+ When validation was performed
262
+ """
263
+ validationTime: Annotated[float | None, Field(ge=0.0)] = None
264
+ """
265
+ Time taken for validation in seconds
266
+ """
267
+
268
+
269
+ class NodeValidationResult(BaseModel):
270
+ """
271
+ Validation result for a specific node
272
+ """
273
+
274
+ model_config = ConfigDict(
275
+ populate_by_name=True,
276
+ )
277
+ nodeId: str
278
+ """
279
+ ID of the validated node
280
+ """
281
+ nodeType: str
282
+ """
283
+ Type of the node
284
+ """
285
+ isValid: bool
286
+ """
287
+ Whether the node is valid
288
+ """
289
+ warnings: list[FlowWarning] | None = None
290
+ """
291
+ Warnings specific to this node
292
+ """
293
+ configValidation: ConfigValidation | None = None
294
+ """
295
+ Validation of node configuration
296
+ """
297
+
298
+
299
+ class FlowValidation(BaseModel):
300
+ model_config = ConfigDict(
301
+ populate_by_name=True,
302
+ )
303
+ warnings: list[FlowWarning] | None = None
304
+ loopDetections: list[LoopDetectionResult] | None = None
305
+ validationResults: list[FlowValidationResult] | None = None
306
+
307
+
308
+ class FlowValidationModels(BaseModel):
309
+ """
310
+ Schema for flow validation warnings and errors
311
+ """
312
+
313
+ model_config = ConfigDict(
314
+ populate_by_name=True,
315
+ )
316
+ flowValidation: FlowValidation | None = None
@@ -0,0 +1,369 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: flow.json
3
+ # timestamp: 2026-02-04T16:19:25+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, ConfigDict
11
+
12
+
13
+ class Type(StrEnum):
14
+ """
15
+ Type of the flow
16
+ """
17
+
18
+ flow = 'flow'
19
+ test = 'test'
20
+ performance = 'performance'
21
+
22
+
23
+ class LastResult(StrEnum):
24
+ """
25
+ Result of last execution
26
+ """
27
+
28
+ passed = 'passed'
29
+ failed = 'failed'
30
+ pending = 'pending'
31
+ running = 'running'
32
+
33
+
34
+ class Position(BaseModel):
35
+ model_config = ConfigDict(
36
+ populate_by_name=True,
37
+ )
38
+ x: float
39
+ """
40
+ X coordinate
41
+ """
42
+ y: float
43
+ """
44
+ Y coordinate
45
+ """
46
+
47
+
48
+ class ActionData(BaseModel):
49
+ model_config = ConfigDict(
50
+ populate_by_name=True,
51
+ )
52
+ label: str
53
+ """
54
+ Human-readable label
55
+ """
56
+ type: str
57
+ """
58
+ Action type identifier
59
+ """
60
+ config: dict[str, Any]
61
+ """
62
+ Action-specific configuration
63
+ """
64
+
65
+
66
+ class Action(BaseModel):
67
+ model_config = ConfigDict(
68
+ populate_by_name=True,
69
+ )
70
+ id: str
71
+ """
72
+ Unique action identifier
73
+ """
74
+ type: str
75
+ """
76
+ Action type
77
+ """
78
+ position: Position
79
+ data: ActionData
80
+
81
+
82
+ class Edge(BaseModel):
83
+ model_config = ConfigDict(
84
+ populate_by_name=True,
85
+ )
86
+ id: str
87
+ """
88
+ Unique edge identifier
89
+ """
90
+ source: str
91
+ """
92
+ Source action ID
93
+ """
94
+ sourceHandle: str | None = None
95
+ """
96
+ Source handle identifier
97
+ """
98
+ target: str
99
+ """
100
+ Target action ID
101
+ """
102
+ targetHandle: str | None = None
103
+ """
104
+ Target handle identifier
105
+ """
106
+ type: str | None = 'step'
107
+ """
108
+ Edge type
109
+ """
110
+ data: dict[str, Any] | None = None
111
+ """
112
+ Additional edge data
113
+ """
114
+
115
+
116
+ class Zoom(BaseModel):
117
+ model_config = ConfigDict(
118
+ populate_by_name=True,
119
+ )
120
+ x: float
121
+ """
122
+ Pan X position
123
+ """
124
+ y: float
125
+ """
126
+ Pan Y position
127
+ """
128
+ zoom: float
129
+ """
130
+ Zoom level
131
+ """
132
+
133
+
134
+ class Variable(BaseModel):
135
+ model_config = ConfigDict(
136
+ populate_by_name=True,
137
+ )
138
+ id: str
139
+ """
140
+ Variable identifier
141
+ """
142
+ name: str
143
+ """
144
+ Variable name
145
+ """
146
+ type: str
147
+ """
148
+ Variable data type
149
+ """
150
+ value: str
151
+ """
152
+ Variable value
153
+ """
154
+ description: str | None = None
155
+ """
156
+ Optional description
157
+ """
158
+ isOutput: bool | None = None
159
+ """
160
+ Whether this is an output variable
161
+ """
162
+
163
+
164
+ class FlowVariables(BaseModel):
165
+ model_config = ConfigDict(
166
+ populate_by_name=True,
167
+ )
168
+ input: list[Variable]
169
+ """
170
+ Input variables
171
+ """
172
+ output: list[Variable]
173
+ """
174
+ Output variables
175
+ """
176
+
177
+
178
+ class FlowParameters(BaseModel):
179
+ model_config = ConfigDict(
180
+ populate_by_name=True,
181
+ )
182
+ input: list[Variable]
183
+ """
184
+ Input parameters
185
+ """
186
+ output: list[Variable]
187
+ """
188
+ Output parameters
189
+ """
190
+
191
+
192
+ class EnvironmentVariable(BaseModel):
193
+ model_config = ConfigDict(
194
+ populate_by_name=True,
195
+ )
196
+ id: str
197
+ """
198
+ Variable identifier
199
+ """
200
+ name: str
201
+ """
202
+ Variable name
203
+ """
204
+ type: str
205
+ """
206
+ Variable data type
207
+ """
208
+ value: str
209
+ """
210
+ Variable value
211
+ """
212
+ description: str | None = None
213
+ """
214
+ Optional description
215
+ """
216
+
217
+
218
+ class Environment(BaseModel):
219
+ model_config = ConfigDict(
220
+ populate_by_name=True,
221
+ )
222
+ id: str
223
+ """
224
+ Environment identifier
225
+ """
226
+ name: str
227
+ """
228
+ Environment name
229
+ """
230
+ variables: list[EnvironmentVariable]
231
+ """
232
+ Environment variables
233
+ """
234
+ description: str | None = None
235
+ """
236
+ Environment description
237
+ """
238
+ isDefault: bool | None = None
239
+ """
240
+ Whether this is the default environment
241
+ """
242
+ isActive: bool | None = None
243
+ """
244
+ Whether this environment is active
245
+ """
246
+ createdAt: AwareDatetime
247
+ """
248
+ Creation timestamp
249
+ """
250
+ updatedAt: AwareDatetime
251
+ """
252
+ Last update timestamp
253
+ """
254
+
255
+
256
+ class GlobalVariable(BaseModel):
257
+ model_config = ConfigDict(
258
+ populate_by_name=True,
259
+ )
260
+ id: str
261
+ """
262
+ Variable identifier
263
+ """
264
+ name: str
265
+ """
266
+ Variable name
267
+ """
268
+ type: str
269
+ """
270
+ Variable data type
271
+ """
272
+ value: str
273
+ """
274
+ Variable value
275
+ """
276
+ description: str | None = None
277
+ """
278
+ Optional description
279
+ """
280
+ createdAt: AwareDatetime
281
+ """
282
+ Creation timestamp
283
+ """
284
+ updatedAt: AwareDatetime
285
+ """
286
+ Last update timestamp
287
+ """
288
+
289
+
290
+ class Flow(BaseModel):
291
+ """
292
+ Complete flow definition for automation workflows
293
+ """
294
+
295
+ model_config = ConfigDict(
296
+ populate_by_name=True,
297
+ )
298
+ id: str
299
+ """
300
+ Unique identifier for the flow
301
+ """
302
+ name: str
303
+ """
304
+ Human-readable name of the flow
305
+ """
306
+ description: str | None = None
307
+ """
308
+ Optional description of the flow
309
+ """
310
+ tags: list[str] | None = None
311
+ """
312
+ Tags for categorization and filtering
313
+ """
314
+ parentID: str | None = None
315
+ """
316
+ Parent folder ID for organization
317
+ """
318
+ type: Type | None = None
319
+ """
320
+ Type of the flow
321
+ """
322
+ actions: list[Action]
323
+ """
324
+ List of actions in the flow
325
+ """
326
+ edges: list[Edge]
327
+ """
328
+ Connections between actions
329
+ """
330
+ zoom: Zoom | None = None
331
+ """
332
+ Canvas zoom and pan state
333
+ """
334
+ createdAt: AwareDatetime | None = None
335
+ """
336
+ Creation timestamp
337
+ """
338
+ updatedAt: AwareDatetime | None = None
339
+ """
340
+ Last update timestamp
341
+ """
342
+ variables: FlowVariables | None = None
343
+ """
344
+ Flow input and output variables
345
+ """
346
+ parameters: FlowParameters | None = None
347
+ """
348
+ Flow parameters for configuration
349
+ """
350
+ environment: Environment | None = None
351
+ """
352
+ Environment configuration
353
+ """
354
+ globalVariables: list[GlobalVariable] | None = None
355
+ """
356
+ Global variables available to the flow
357
+ """
358
+ synced: bool | None = None
359
+ """
360
+ Whether the flow is synced with server
361
+ """
362
+ lastRun: AwareDatetime | None = None
363
+ """
364
+ Last execution timestamp
365
+ """
366
+ lastResult: LastResult | None = None
367
+ """
368
+ Result of last execution
369
+ """
@@ -0,0 +1,9 @@
1
+ Metadata-Version: 2.4
2
+ Name: floweb-domain-models
3
+ Version: 1.0.0
4
+ Summary: Floweb Domain Models - Python Pydantic Models
5
+ Requires-Python: >=3.9
6
+ Requires-Dist: pydantic>=2.0.0
7
+ Dynamic: requires-dist
8
+ Dynamic: requires-python
9
+ Dynamic: summary
@@ -0,0 +1,16 @@
1
+ setup.py
2
+ floweb_domain_models.egg-info/PKG-INFO
3
+ floweb_domain_models.egg-info/SOURCES.txt
4
+ floweb_domain_models.egg-info/dependency_links.txt
5
+ floweb_domain_models.egg-info/requires.txt
6
+ floweb_domain_models.egg-info/top_level.txt
7
+ floweb_models/__init__.py
8
+ floweb_models/action_configs.py
9
+ floweb_models/debug.py
10
+ floweb_models/environment.py
11
+ floweb_models/execution_results.py
12
+ floweb_models/flow.py
13
+ floweb_models/flow_validation.py
14
+ floweb_models/parallel_execution.py
15
+ floweb_models/performance_test.py
16
+ floweb_models/websocket_communication.py
@@ -0,0 +1 @@
1
+ pydantic>=2.0.0