@object-ui/types 0.5.0 → 3.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 (127) hide show
  1. package/README.md +1 -1
  2. package/dist/ai.d.ts +376 -0
  3. package/dist/ai.d.ts.map +1 -0
  4. package/dist/ai.js +8 -0
  5. package/dist/app.d.ts +2 -2
  6. package/dist/complex.d.ts +2 -0
  7. package/dist/complex.d.ts.map +1 -1
  8. package/dist/crud.d.ts +3 -0
  9. package/dist/crud.d.ts.map +1 -1
  10. package/dist/data-display.d.ts +40 -0
  11. package/dist/data-display.d.ts.map +1 -1
  12. package/dist/data-protocol.d.ts +19 -19
  13. package/dist/data.d.ts +77 -0
  14. package/dist/data.d.ts.map +1 -1
  15. package/dist/designer.d.ts +473 -0
  16. package/dist/designer.d.ts.map +1 -0
  17. package/dist/designer.js +8 -0
  18. package/dist/form.d.ts +35 -1
  19. package/dist/form.d.ts.map +1 -1
  20. package/dist/index.d.ts +46 -8
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +18 -0
  23. package/dist/layout.d.ts +63 -8
  24. package/dist/layout.d.ts.map +1 -1
  25. package/dist/mobile.d.ts +186 -0
  26. package/dist/mobile.d.ts.map +1 -0
  27. package/dist/mobile.js +8 -0
  28. package/dist/objectql.d.ts +341 -88
  29. package/dist/objectql.d.ts.map +1 -1
  30. package/dist/permissions.d.ts +150 -0
  31. package/dist/permissions.d.ts.map +1 -0
  32. package/dist/permissions.js +8 -0
  33. package/dist/tenant.d.ts +138 -0
  34. package/dist/tenant.d.ts.map +1 -0
  35. package/dist/tenant.js +8 -0
  36. package/dist/theme.d.ts +115 -224
  37. package/dist/theme.d.ts.map +1 -1
  38. package/dist/ui-action.d.ts +126 -11
  39. package/dist/ui-action.d.ts.map +1 -1
  40. package/dist/views.d.ts +20 -0
  41. package/dist/views.d.ts.map +1 -1
  42. package/dist/widget.d.ts +181 -0
  43. package/dist/widget.d.ts.map +1 -0
  44. package/dist/widget.js +8 -0
  45. package/dist/workflow.d.ts +340 -0
  46. package/dist/workflow.d.ts.map +1 -0
  47. package/dist/workflow.js +8 -0
  48. package/dist/zod/blocks.zod.d.ts +2 -2
  49. package/dist/zod/blocks.zod.d.ts.map +1 -1
  50. package/dist/zod/blocks.zod.js +1 -1
  51. package/dist/zod/complex.zod.d.ts +6 -6
  52. package/dist/zod/complex.zod.d.ts.map +1 -1
  53. package/dist/zod/complex.zod.js +1 -1
  54. package/dist/zod/crud.zod.d.ts +5 -5
  55. package/dist/zod/data-display.zod.d.ts +2 -2
  56. package/dist/zod/data-display.zod.d.ts.map +1 -1
  57. package/dist/zod/data-display.zod.js +1 -1
  58. package/dist/zod/disclosure.zod.d.ts +2 -2
  59. package/dist/zod/disclosure.zod.d.ts.map +1 -1
  60. package/dist/zod/disclosure.zod.js +1 -1
  61. package/dist/zod/feedback.zod.d.ts +12 -12
  62. package/dist/zod/feedback.zod.d.ts.map +1 -1
  63. package/dist/zod/feedback.zod.js +1 -1
  64. package/dist/zod/form.zod.d.ts +6 -6
  65. package/dist/zod/form.zod.d.ts.map +1 -1
  66. package/dist/zod/form.zod.js +1 -1
  67. package/dist/zod/index.zod.d.ts +337 -146
  68. package/dist/zod/index.zod.d.ts.map +1 -1
  69. package/dist/zod/index.zod.js +4 -4
  70. package/dist/zod/layout.zod.d.ts +134 -2
  71. package/dist/zod/layout.zod.d.ts.map +1 -1
  72. package/dist/zod/layout.zod.js +35 -1
  73. package/dist/zod/navigation.zod.d.ts +2 -2
  74. package/dist/zod/navigation.zod.d.ts.map +1 -1
  75. package/dist/zod/navigation.zod.js +1 -1
  76. package/dist/zod/objectql.zod.d.ts +32 -16
  77. package/dist/zod/objectql.zod.d.ts.map +1 -1
  78. package/dist/zod/objectql.zod.js +8 -0
  79. package/dist/zod/overlay.zod.d.ts +2 -2
  80. package/dist/zod/overlay.zod.d.ts.map +1 -1
  81. package/dist/zod/overlay.zod.js +1 -1
  82. package/dist/zod/reports.zod.d.ts +19 -19
  83. package/dist/zod/reports.zod.d.ts.map +1 -1
  84. package/dist/zod/reports.zod.js +1 -1
  85. package/dist/zod/theme.zod.d.ts +948 -267
  86. package/dist/zod/theme.zod.d.ts.map +1 -1
  87. package/dist/zod/theme.zod.js +175 -45
  88. package/dist/zod/views.zod.d.ts +22 -22
  89. package/dist/zod/views.zod.d.ts.map +1 -1
  90. package/dist/zod/views.zod.js +1 -1
  91. package/package.json +3 -2
  92. package/src/__tests__/namespace-exports.test.ts +23 -68
  93. package/src/__tests__/phase2-schemas.test.ts +8 -13
  94. package/src/ai.ts +454 -0
  95. package/src/app.ts +2 -2
  96. package/src/complex.ts +2 -0
  97. package/src/crud.ts +3 -0
  98. package/src/data-display.ts +36 -0
  99. package/src/data-protocol.ts +19 -19
  100. package/src/data.ts +91 -0
  101. package/src/designer.ts +509 -0
  102. package/src/form.ts +35 -1
  103. package/src/index.ts +397 -8
  104. package/src/layout.ts +66 -8
  105. package/src/mobile.ts +205 -0
  106. package/src/objectql.ts +419 -93
  107. package/src/permissions.ts +166 -0
  108. package/src/tenant.ts +153 -0
  109. package/src/theme.ts +147 -260
  110. package/src/ui-action.ts +166 -27
  111. package/src/views.ts +17 -0
  112. package/src/widget.ts +197 -0
  113. package/src/workflow.ts +409 -0
  114. package/src/zod/blocks.zod.ts +1 -1
  115. package/src/zod/complex.zod.ts +1 -1
  116. package/src/zod/data-display.zod.ts +1 -1
  117. package/src/zod/disclosure.zod.ts +1 -1
  118. package/src/zod/feedback.zod.ts +1 -1
  119. package/src/zod/form.zod.ts +1 -1
  120. package/src/zod/index.zod.ts +14 -3
  121. package/src/zod/layout.zod.ts +39 -1
  122. package/src/zod/navigation.zod.ts +1 -1
  123. package/src/zod/objectql.zod.ts +8 -0
  124. package/src/zod/overlay.zod.ts +1 -1
  125. package/src/zod/reports.zod.ts +1 -1
  126. package/src/zod/theme.zod.ts +189 -48
  127. package/src/zod/views.zod.ts +1 -1
package/src/ai.ts ADDED
@@ -0,0 +1,454 @@
1
+ /**
2
+ * ObjectUI
3
+ * Copyright (c) 2024-present ObjectStack Inc.
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+
9
+ /**
10
+ * @object-ui/types - AI Schema
11
+ *
12
+ * Defines AI-related UI component schemas for intelligent form assistance,
13
+ * recommendations, natural language queries, and data insights.
14
+ */
15
+
16
+ import type { BaseSchema } from './base';
17
+
18
+ /**
19
+ * AI Provider Type
20
+ */
21
+ export type AIProvider = 'openai' | 'anthropic' | 'google' | 'azure' | 'custom';
22
+
23
+ /**
24
+ * AI Model Type
25
+ */
26
+ export type AIModelType = 'gpt-4' | 'gpt-3.5-turbo' | 'claude-3' | 'gemini-pro' | 'custom';
27
+
28
+ /**
29
+ * AI Configuration
30
+ */
31
+ export interface AIConfig {
32
+ /**
33
+ * AI provider to use
34
+ */
35
+ provider?: AIProvider;
36
+
37
+ /**
38
+ * Model identifier
39
+ */
40
+ model?: AIModelType | string;
41
+
42
+ /**
43
+ * Custom API endpoint URL
44
+ */
45
+ apiEndpoint?: string;
46
+
47
+ /**
48
+ * Sampling temperature (0-1)
49
+ */
50
+ temperature?: number;
51
+
52
+ /**
53
+ * Maximum tokens for response
54
+ */
55
+ maxTokens?: number;
56
+
57
+ /**
58
+ * System prompt for the AI model
59
+ */
60
+ systemPrompt?: string;
61
+ }
62
+
63
+ /**
64
+ * AI Field Suggestion
65
+ */
66
+ export interface AIFieldSuggestion {
67
+ /**
68
+ * Name of the field being suggested
69
+ */
70
+ fieldName: string;
71
+
72
+ /**
73
+ * Suggested value for the field
74
+ */
75
+ value: any;
76
+
77
+ /**
78
+ * Confidence score (0-1)
79
+ */
80
+ confidence: number;
81
+
82
+ /**
83
+ * Explanation for the suggestion
84
+ */
85
+ reasoning?: string;
86
+ }
87
+
88
+ /**
89
+ * AI Form Assist Schema - Intelligent form field suggestions
90
+ */
91
+ export interface AIFormAssistSchema extends BaseSchema {
92
+ type: 'ai-form-assist';
93
+
94
+ /**
95
+ * Target form identifier
96
+ */
97
+ formId?: string;
98
+
99
+ /**
100
+ * Object name for context
101
+ */
102
+ objectName?: string;
103
+
104
+ /**
105
+ * Fields to provide suggestions for
106
+ */
107
+ fields?: string[];
108
+
109
+ /**
110
+ * Additional context for generating suggestions
111
+ */
112
+ context?: Record<string, any>;
113
+
114
+ /**
115
+ * AI configuration
116
+ */
117
+ config?: AIConfig;
118
+
119
+ /**
120
+ * Current suggestions
121
+ */
122
+ suggestions?: AIFieldSuggestion[];
123
+
124
+ /**
125
+ * Automatically fill fields with suggestions
126
+ */
127
+ autoFill?: boolean;
128
+
129
+ /**
130
+ * Show confidence scores for suggestions
131
+ */
132
+ showConfidence?: boolean;
133
+
134
+ /**
135
+ * Show reasoning for suggestions
136
+ */
137
+ showReasoning?: boolean;
138
+
139
+ /**
140
+ * Callback when a suggestion is applied
141
+ */
142
+ onApplySuggestion?: string;
143
+
144
+ /**
145
+ * Callback when a suggestion is rejected
146
+ */
147
+ onRejectSuggestion?: string;
148
+ }
149
+
150
+ /**
151
+ * AI Recommendation Item
152
+ */
153
+ export interface AIRecommendationItem {
154
+ /**
155
+ * Unique identifier
156
+ */
157
+ id: string;
158
+
159
+ /**
160
+ * Recommendation title
161
+ */
162
+ title: string;
163
+
164
+ /**
165
+ * Recommendation description
166
+ */
167
+ description?: string;
168
+
169
+ /**
170
+ * Relevance score (0-1)
171
+ */
172
+ score: number;
173
+
174
+ /**
175
+ * Recommendation category
176
+ */
177
+ category?: string;
178
+
179
+ /**
180
+ * Additional metadata
181
+ */
182
+ metadata?: Record<string, any>;
183
+
184
+ /**
185
+ * Action to perform when selected
186
+ */
187
+ action?: {
188
+ /**
189
+ * Action type
190
+ */
191
+ type: string;
192
+
193
+ /**
194
+ * Action target
195
+ */
196
+ target?: string;
197
+ };
198
+ }
199
+
200
+ /**
201
+ * AI Recommendations Schema - Intelligent content recommendations
202
+ */
203
+ export interface AIRecommendationsSchema extends BaseSchema {
204
+ type: 'ai-recommendations';
205
+
206
+ /**
207
+ * Object name for context
208
+ */
209
+ objectName?: string;
210
+
211
+ /**
212
+ * Additional context for generating recommendations
213
+ */
214
+ context?: Record<string, any>;
215
+
216
+ /**
217
+ * AI configuration
218
+ */
219
+ config?: AIConfig;
220
+
221
+ /**
222
+ * Current recommendations
223
+ */
224
+ recommendations?: AIRecommendationItem[];
225
+
226
+ /**
227
+ * Maximum number of results to display
228
+ */
229
+ maxResults?: number;
230
+
231
+ /**
232
+ * Show relevance scores
233
+ */
234
+ showScores?: boolean;
235
+
236
+ /**
237
+ * Display layout
238
+ */
239
+ layout?: 'list' | 'grid' | 'carousel';
240
+
241
+ /**
242
+ * Callback when a recommendation is selected
243
+ */
244
+ onSelect?: string;
245
+
246
+ /**
247
+ * Callback when a recommendation is dismissed
248
+ */
249
+ onDismiss?: string;
250
+
251
+ /**
252
+ * Loading state
253
+ */
254
+ loading?: boolean;
255
+
256
+ /**
257
+ * Message to display when no recommendations are available
258
+ */
259
+ emptyMessage?: string;
260
+ }
261
+
262
+ /**
263
+ * Natural Language Query Result
264
+ */
265
+ export interface NLQueryResult {
266
+ /**
267
+ * Original query string
268
+ */
269
+ query: string;
270
+
271
+ /**
272
+ * Parsed query representation
273
+ */
274
+ parsedQuery?: Record<string, any>;
275
+
276
+ /**
277
+ * Result data
278
+ */
279
+ data?: any[];
280
+
281
+ /**
282
+ * Column definitions for the result data
283
+ */
284
+ columns?: Array<{
285
+ /**
286
+ * Column name
287
+ */
288
+ name: string;
289
+
290
+ /**
291
+ * Display label
292
+ */
293
+ label?: string;
294
+
295
+ /**
296
+ * Column data type
297
+ */
298
+ type?: string;
299
+ }>;
300
+
301
+ /**
302
+ * AI-generated summary of the results
303
+ */
304
+ summary?: string;
305
+
306
+ /**
307
+ * Confidence score for the query interpretation (0-1)
308
+ */
309
+ confidence?: number;
310
+ }
311
+
312
+ /**
313
+ * Natural Language Query Schema - Query data using natural language
314
+ */
315
+ export interface NLQuerySchema extends BaseSchema {
316
+ type: 'nl-query';
317
+
318
+ /**
319
+ * Object name for context
320
+ */
321
+ objectName?: string;
322
+
323
+ /**
324
+ * Input placeholder text
325
+ */
326
+ placeholder?: string;
327
+
328
+ /**
329
+ * AI configuration
330
+ */
331
+ config?: AIConfig;
332
+
333
+ /**
334
+ * Current query result
335
+ */
336
+ result?: NLQueryResult;
337
+
338
+ /**
339
+ * Example queries to suggest
340
+ */
341
+ suggestions?: string[];
342
+
343
+ /**
344
+ * Show query history
345
+ */
346
+ showHistory?: boolean;
347
+
348
+ /**
349
+ * Query history entries
350
+ */
351
+ history?: Array<{
352
+ /**
353
+ * Query string
354
+ */
355
+ query: string;
356
+
357
+ /**
358
+ * Timestamp of the query
359
+ */
360
+ timestamp: string;
361
+ }>;
362
+
363
+ /**
364
+ * Loading state
365
+ */
366
+ loading?: boolean;
367
+
368
+ /**
369
+ * Callback when a query is submitted
370
+ */
371
+ onSubmit?: string;
372
+ }
373
+
374
+ /**
375
+ * AI Insights Schema - AI-generated data insights and analysis
376
+ */
377
+ export interface AIInsightsSchema extends BaseSchema {
378
+ type: 'ai-insights';
379
+
380
+ /**
381
+ * Object name for context
382
+ */
383
+ objectName?: string;
384
+
385
+ /**
386
+ * Data to analyze
387
+ */
388
+ data?: any[];
389
+
390
+ /**
391
+ * AI configuration
392
+ */
393
+ config?: AIConfig;
394
+
395
+ /**
396
+ * Generated insights
397
+ */
398
+ insights?: Array<{
399
+ /**
400
+ * Insight title
401
+ */
402
+ title: string;
403
+
404
+ /**
405
+ * Insight description
406
+ */
407
+ description: string;
408
+
409
+ /**
410
+ * Insight type
411
+ */
412
+ type: 'trend' | 'anomaly' | 'prediction' | 'recommendation';
413
+
414
+ /**
415
+ * Severity level
416
+ */
417
+ severity?: 'info' | 'warning' | 'critical';
418
+
419
+ /**
420
+ * Associated metric
421
+ */
422
+ metric?: {
423
+ /**
424
+ * Metric value
425
+ */
426
+ value: number;
427
+
428
+ /**
429
+ * Change from previous period
430
+ */
431
+ change?: number;
432
+
433
+ /**
434
+ * Unit of measurement
435
+ */
436
+ unit?: string;
437
+ };
438
+ }>;
439
+
440
+ /**
441
+ * Loading state
442
+ */
443
+ loading?: boolean;
444
+
445
+ /**
446
+ * Automatically refresh insights
447
+ */
448
+ autoRefresh?: boolean;
449
+
450
+ /**
451
+ * Auto-refresh interval (in seconds)
452
+ */
453
+ refreshInterval?: number;
454
+ }
package/src/app.ts CHANGED
@@ -66,13 +66,13 @@ export interface AppSchema extends BaseSchema {
66
66
  actions?: AppAction[];
67
67
 
68
68
  /**
69
- * Home page ID (ObjectStack Spec v0.7.1)
69
+ * Home page ID (ObjectStack Spec v2.0.1)
70
70
  * Default page to navigate to after login
71
71
  */
72
72
  homePageId?: string;
73
73
 
74
74
  /**
75
- * Required permissions (ObjectStack Spec v0.7.1)
75
+ * Required permissions (ObjectStack Spec v2.0.1)
76
76
  * Permissions required to access this application
77
77
  */
78
78
  requiredPermissions?: string[];
package/src/complex.ts CHANGED
@@ -519,6 +519,8 @@ export interface DashboardSchema extends BaseSchema {
519
519
  columns?: number;
520
520
  gap?: number;
521
521
  widgets: DashboardWidgetSchema[];
522
+ /** Auto-refresh interval in seconds. When set, the dashboard will periodically trigger onRefresh. */
523
+ refreshInterval?: number;
522
524
  }
523
525
 
524
526
  /**
package/src/crud.ts CHANGED
@@ -81,6 +81,9 @@ export interface ActionCondition {
81
81
  /**
82
82
  * Action button configuration for CRUD operations
83
83
  * Enhanced with Phase 2 features: ajax, confirm, dialog, chaining, conditional execution
84
+ *
85
+ * @deprecated Use `UIActionSchema` from `@object-ui/types` (re-exported from `ui-action.ts`) for new code.
86
+ * This legacy interface will be removed in a future major version.
84
87
  */
85
88
  export interface ActionSchema extends BaseSchema {
86
89
  type: 'action';
@@ -253,6 +253,11 @@ export interface TableColumn {
253
253
  * @default true
254
254
  */
255
255
  resizable?: boolean;
256
+ /**
257
+ * Whether column is editable (for inline editing)
258
+ * @default true
259
+ */
260
+ editable?: boolean;
256
261
  /**
257
262
  * Custom cell renderer function
258
263
  */
@@ -377,6 +382,37 @@ export interface DataTableSchema extends BaseSchema {
377
382
  * Columns reorder handler
378
383
  */
379
384
  onColumnsReorder?: (columns: TableColumn[]) => void;
385
+ /**
386
+ * Enable inline cell editing
387
+ * When true, cells become editable on double-click or Enter key
388
+ * @default false
389
+ */
390
+ editable?: boolean;
391
+ /**
392
+ * Cell value change handler
393
+ * Called when a cell value is edited
394
+ */
395
+ onCellChange?: (rowIndex: number, columnKey: string, newValue: any, row: any) => void;
396
+ /**
397
+ * Row save handler
398
+ * Called when saving changes for a single row
399
+ */
400
+ onRowSave?: (rowIndex: number, changes: Record<string, any>, row: any) => void | Promise<void>;
401
+ /**
402
+ * Batch save handler
403
+ * Called when saving changes for multiple rows
404
+ */
405
+ onBatchSave?: (changes: Array<{ rowIndex: number; changes: Record<string, any>; row: any }>) => void | Promise<void>;
406
+ /**
407
+ * Row click handler
408
+ * Called when a row is clicked
409
+ */
410
+ onRowClick?: (row: any) => void;
411
+ /**
412
+ * Dynamic row class name
413
+ * Function that returns a CSS class string for each row
414
+ */
415
+ rowClassName?: (row: any, index: number) => string | undefined;
380
416
  }
381
417
 
382
418
  /**
@@ -81,7 +81,7 @@ export interface WhereNode extends QueryASTNode {
81
81
  }
82
82
 
83
83
  /**
84
- * Join execution strategy hint (ObjectStack Spec v0.7.1)
84
+ * Join execution strategy hint (ObjectStack Spec v2.0.1)
85
85
  */
86
86
  export type JoinStrategy = 'auto' | 'database' | 'hash' | 'loop';
87
87
 
@@ -155,7 +155,7 @@ export interface AggregateNode extends QueryASTNode {
155
155
  }
156
156
 
157
157
  /**
158
- * Window function type (ObjectStack Spec v0.7.1)
158
+ * Window function type (ObjectStack Spec v2.0.1)
159
159
  */
160
160
  export type WindowFunction =
161
161
  | 'row_number'
@@ -173,12 +173,12 @@ export type WindowFunction =
173
173
  | 'max';
174
174
 
175
175
  /**
176
- * Window frame unit (ObjectStack Spec v0.7.1)
176
+ * Window frame unit (ObjectStack Spec v2.0.1)
177
177
  */
178
178
  export type WindowFrameUnit = 'rows' | 'range';
179
179
 
180
180
  /**
181
- * Window frame boundary (ObjectStack Spec v0.7.1)
181
+ * Window frame boundary (ObjectStack Spec v2.0.1)
182
182
  */
183
183
  export type WindowFrameBoundary =
184
184
  | 'unbounded_preceding'
@@ -188,7 +188,7 @@ export type WindowFrameBoundary =
188
188
  | { type: 'following'; offset: number };
189
189
 
190
190
  /**
191
- * Window frame specification (ObjectStack Spec v0.7.1)
191
+ * Window frame specification (ObjectStack Spec v2.0.1)
192
192
  */
193
193
  export interface WindowFrame {
194
194
  unit: WindowFrameUnit;
@@ -197,7 +197,7 @@ export interface WindowFrame {
197
197
  }
198
198
 
199
199
  /**
200
- * Window function node (ObjectStack Spec v0.7.1)
200
+ * Window function node (ObjectStack Spec v2.0.1)
201
201
  */
202
202
  export interface WindowNode extends QueryASTNode {
203
203
  type: 'window';
@@ -341,7 +341,7 @@ export interface QuerySchema {
341
341
  group_by?: string[];
342
342
 
343
343
  /**
344
- * Window functions (ObjectStack Spec v0.7.1)
344
+ * Window functions (ObjectStack Spec v2.0.1)
345
345
  */
346
346
  windows?: WindowConfig[];
347
347
 
@@ -388,7 +388,7 @@ export interface AggregationConfig {
388
388
  }
389
389
 
390
390
  /**
391
- * Window function configuration (ObjectStack Spec v0.7.1)
391
+ * Window function configuration (ObjectStack Spec v2.0.1)
392
392
  */
393
393
  export interface WindowConfig {
394
394
  /** Window function name */
@@ -826,12 +826,12 @@ export interface AdvancedValidationError {
826
826
 
827
827
  /**
828
828
  * =============================================================================
829
- * ObjectStack Spec v0.7.1: Object-Level Validation Framework
829
+ * ObjectStack Spec v2.0.1: Object-Level Validation Framework
830
830
  * =============================================================================
831
831
  */
832
832
 
833
833
  /**
834
- * Base validation interface (ObjectStack Spec v0.7.1)
834
+ * Base validation interface (ObjectStack Spec v2.0.1)
835
835
  */
836
836
  export interface BaseValidation {
837
837
  /** Unique validation name (snake_case) */
@@ -860,7 +860,7 @@ export interface BaseValidation {
860
860
  }
861
861
 
862
862
  /**
863
- * Script-based validation (ObjectStack Spec v0.7.1)
863
+ * Script-based validation (ObjectStack Spec v2.0.1)
864
864
  * Uses expression language to define conditions
865
865
  */
866
866
  export interface ScriptValidation extends BaseValidation {
@@ -871,7 +871,7 @@ export interface ScriptValidation extends BaseValidation {
871
871
  }
872
872
 
873
873
  /**
874
- * Uniqueness validation (ObjectStack Spec v0.7.1)
874
+ * Uniqueness validation (ObjectStack Spec v2.0.1)
875
875
  * Ensures field combinations are unique
876
876
  */
877
877
  export interface UniquenessValidation extends BaseValidation {
@@ -888,7 +888,7 @@ export interface UniquenessValidation extends BaseValidation {
888
888
  }
889
889
 
890
890
  /**
891
- * State machine validation (ObjectStack Spec v0.7.1)
891
+ * State machine validation (ObjectStack Spec v2.0.1)
892
892
  * Enforces valid state transitions
893
893
  */
894
894
  export interface StateMachineValidation extends BaseValidation {
@@ -911,7 +911,7 @@ export interface StateMachineValidation extends BaseValidation {
911
911
  }
912
912
 
913
913
  /**
914
- * Cross-field validation (ObjectStack Spec v0.7.1)
914
+ * Cross-field validation (ObjectStack Spec v2.0.1)
915
915
  * Validates relationships between multiple fields
916
916
  */
917
917
  export interface CrossFieldValidation extends BaseValidation {
@@ -925,7 +925,7 @@ export interface CrossFieldValidation extends BaseValidation {
925
925
  }
926
926
 
927
927
  /**
928
- * Async/remote validation (ObjectStack Spec v0.7.1)
928
+ * Async/remote validation (ObjectStack Spec v2.0.1)
929
929
  * Calls external endpoint for validation
930
930
  */
931
931
  export interface AsyncValidation extends BaseValidation {
@@ -948,7 +948,7 @@ export interface AsyncValidation extends BaseValidation {
948
948
  }
949
949
 
950
950
  /**
951
- * Conditional validation (ObjectStack Spec v0.7.1)
951
+ * Conditional validation (ObjectStack Spec v2.0.1)
952
952
  * Applies nested rules only when condition is met
953
953
  */
954
954
  export interface ConditionalValidation extends BaseValidation {
@@ -962,7 +962,7 @@ export interface ConditionalValidation extends BaseValidation {
962
962
  }
963
963
 
964
964
  /**
965
- * Format validation (ObjectStack Spec v0.7.1)
965
+ * Format validation (ObjectStack Spec v2.0.1)
966
966
  * Validates field format using regex or predefined patterns
967
967
  */
968
968
  export interface FormatValidation extends BaseValidation {
@@ -982,7 +982,7 @@ export interface FormatValidation extends BaseValidation {
982
982
  }
983
983
 
984
984
  /**
985
- * Range validation (ObjectStack Spec v0.7.1)
985
+ * Range validation (ObjectStack Spec v2.0.1)
986
986
  * Validates numeric or date ranges
987
987
  */
988
988
  export interface RangeValidation extends BaseValidation {
@@ -1005,7 +1005,7 @@ export interface RangeValidation extends BaseValidation {
1005
1005
  }
1006
1006
 
1007
1007
  /**
1008
- * Union type for all validation rules (ObjectStack Spec v0.7.1)
1008
+ * Union type for all validation rules (ObjectStack Spec v2.0.1)
1009
1009
  */
1010
1010
  export type ObjectValidationRule =
1011
1011
  | ScriptValidation