@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,345 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: flow.json
3
+ # timestamp: 2026-01-25T13:38:22+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: Any
151
+ """
152
+ Variable value
153
+ """
154
+ description: str | None = None
155
+ """
156
+ Optional description
157
+ """
158
+
159
+
160
+ class FlowVariables(BaseModel):
161
+ model_config = ConfigDict(
162
+ populate_by_name=True,
163
+ )
164
+ input: list[Variable]
165
+ """
166
+ Input variables
167
+ """
168
+ output: list[Variable]
169
+ """
170
+ Output variables
171
+ """
172
+
173
+
174
+ class FlowParameters(BaseModel):
175
+ model_config = ConfigDict(
176
+ populate_by_name=True,
177
+ )
178
+ input: list[Variable]
179
+ """
180
+ Input parameters
181
+ """
182
+ output: list[Variable]
183
+ """
184
+ Output parameters
185
+ """
186
+
187
+
188
+ class EnvironmentVariable(BaseModel):
189
+ model_config = ConfigDict(
190
+ populate_by_name=True,
191
+ )
192
+ id: str
193
+ """
194
+ Variable identifier
195
+ """
196
+ name: str
197
+ """
198
+ Variable name
199
+ """
200
+ type: str
201
+ """
202
+ Variable data type
203
+ """
204
+ value: Any
205
+ """
206
+ Variable value
207
+ """
208
+ description: str | None = None
209
+ """
210
+ Optional description
211
+ """
212
+
213
+
214
+ class Environment(BaseModel):
215
+ model_config = ConfigDict(
216
+ populate_by_name=True,
217
+ )
218
+ id: str
219
+ """
220
+ Environment identifier
221
+ """
222
+ name: str
223
+ """
224
+ Environment name
225
+ """
226
+ variables: list[EnvironmentVariable] | None = None
227
+ """
228
+ Environment variables
229
+ """
230
+ description: str | None = None
231
+ """
232
+ Environment description
233
+ """
234
+ isActive: bool | None = None
235
+ """
236
+ Whether this environment is active
237
+ """
238
+
239
+
240
+ class GlobalVariable(BaseModel):
241
+ model_config = ConfigDict(
242
+ populate_by_name=True,
243
+ )
244
+ id: str
245
+ """
246
+ Variable identifier
247
+ """
248
+ name: str
249
+ """
250
+ Variable name
251
+ """
252
+ type: str
253
+ """
254
+ Variable data type
255
+ """
256
+ value: Any
257
+ """
258
+ Variable value
259
+ """
260
+ description: str | None = None
261
+ """
262
+ Optional description
263
+ """
264
+
265
+
266
+ class Flow(BaseModel):
267
+ """
268
+ Complete flow definition for automation workflows
269
+ """
270
+
271
+ model_config = ConfigDict(
272
+ populate_by_name=True,
273
+ )
274
+ id: str
275
+ """
276
+ Unique identifier for the flow
277
+ """
278
+ name: str
279
+ """
280
+ Human-readable name of the flow
281
+ """
282
+ description: str | None = None
283
+ """
284
+ Optional description of the flow
285
+ """
286
+ tags: list[str] | None = None
287
+ """
288
+ Tags for categorization and filtering
289
+ """
290
+ parentID: str | None = None
291
+ """
292
+ Parent folder ID for organization
293
+ """
294
+ type: Type | None = 'flow'
295
+ """
296
+ Type of the flow
297
+ """
298
+ actions: list[Action]
299
+ """
300
+ List of actions in the flow
301
+ """
302
+ edges: list[Edge]
303
+ """
304
+ Connections between actions
305
+ """
306
+ zoom: Zoom | None = None
307
+ """
308
+ Canvas zoom and pan state
309
+ """
310
+ createdAt: AwareDatetime | None = None
311
+ """
312
+ Creation timestamp
313
+ """
314
+ updatedAt: AwareDatetime | None = None
315
+ """
316
+ Last update timestamp
317
+ """
318
+ variables: FlowVariables | None = None
319
+ """
320
+ Flow input and output variables
321
+ """
322
+ parameters: FlowParameters | None = None
323
+ """
324
+ Flow parameters for configuration
325
+ """
326
+ environment: Environment | None = None
327
+ """
328
+ Environment configuration
329
+ """
330
+ globalVariables: list[GlobalVariable] | None = None
331
+ """
332
+ Global variables available to the flow
333
+ """
334
+ synced: bool | None = None
335
+ """
336
+ Whether the flow is synced with server
337
+ """
338
+ lastRun: AwareDatetime | None = None
339
+ """
340
+ Last execution timestamp
341
+ """
342
+ lastResult: LastResult | None = None
343
+ """
344
+ Result of last execution
345
+ """
@@ -0,0 +1,316 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: flow-validation.json
3
+ # timestamp: 2026-01-25T13:38:27+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