@qingflow-tech/qingflow-cli 1.1.41 → 1.1.43-beta.1

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 (51) hide show
  1. package/README.md +4 -4
  2. package/package.json +2 -1
  3. package/pyproject.toml +3 -2
  4. package/skills/qingflow-cli/reference/QINGFLOW_CLI_TASK_CONTEXT_WORKFLOW.md +1 -1
  5. package/skills/qingflow-cli/reference/task/QINGFLOW_CLI_TASK_CONTEXT_WORKFLOW.md +1 -1
  6. package/src/qingflow_mcp/app_form_compat.py +115 -0
  7. package/src/qingflow_mcp/app_form_validator.py +199 -0
  8. package/src/qingflow_mcp/builder_facade/app_form.py +2836 -0
  9. package/src/qingflow_mcp/builder_facade/app_form_schema.py +269 -0
  10. package/src/qingflow_mcp/builder_facade/schemas/app_form/manifest.json +37 -0
  11. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/complete.json +1766 -0
  12. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/address.json +76 -0
  13. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/amount.json +76 -0
  14. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/attachment.json +76 -0
  15. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/code_block.json +223 -0
  16. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/data_relation.json +538 -0
  17. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/date.json +76 -0
  18. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/datetime.json +76 -0
  19. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/department.json +149 -0
  20. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/email.json +76 -0
  21. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/link.json +76 -0
  22. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/long_text.json +76 -0
  23. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/member.json +76 -0
  24. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/multi_select.json +92 -0
  25. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/number.json +76 -0
  26. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/phone.json +76 -0
  27. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/q_linker.json +338 -0
  28. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/relation.json +137 -0
  29. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/single_choice.json +92 -0
  30. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/single_select.json +92 -0
  31. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/subtable.json +810 -0
  32. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/text.json +76 -0
  33. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/summary.json +713 -0
  34. package/src/qingflow_mcp/builder_facade/service.py +5 -2
  35. package/src/qingflow_mcp/cli/commands/builder.py +91 -28
  36. package/src/qingflow_mcp/cli/json_io.py +21 -2
  37. package/src/qingflow_mcp/cli/main.py +3 -39
  38. package/src/qingflow_mcp/cloud_auth.py +11 -0
  39. package/src/qingflow_mcp/cloud_context.py +5 -0
  40. package/src/qingflow_mcp/cloud_oauth_proxy.py +453 -0
  41. package/src/qingflow_mcp/cloud_redis.py +25 -0
  42. package/src/qingflow_mcp/config.py +44 -0
  43. package/src/qingflow_mcp/public_surface.py +5 -2
  44. package/src/qingflow_mcp/response_trim.py +8 -0
  45. package/src/qingflow_mcp/server_app_builder.py +38 -86
  46. package/src/qingflow_mcp/server_app_user.py +2 -1
  47. package/src/qingflow_mcp/server_cloud.py +245 -22
  48. package/src/qingflow_mcp/tools/ai_builder_tools.py +93 -100
  49. package/src/qingflow_mcp/tools/app_tools.py +46 -65
  50. package/src/qingflow_mcp/tools/base.py +2 -1
  51. package/src/qingflow_mcp/tools/task_context_tools.py +6 -0
@@ -0,0 +1,538 @@
1
+ {
2
+ "$defs": {
3
+ "AliasSelector": {
4
+ "additionalProperties": false,
5
+ "description": "Q-Linker 或代码块输出别名;已有输出优先携带 aliasId。",
6
+ "properties": {
7
+ "aliasId": {
8
+ "description": "后端生成的别名 ID;新增输出时可省略。",
9
+ "minimum": 1,
10
+ "type": "integer"
11
+ },
12
+ "name": {
13
+ "description": "输出别名名称。",
14
+ "minLength": 1,
15
+ "type": "string"
16
+ }
17
+ },
18
+ "required": [
19
+ "name"
20
+ ],
21
+ "type": "object"
22
+ },
23
+ "DataRelationCondition": {
24
+ "additionalProperties": false,
25
+ "description": "一条数据关联过滤条件。",
26
+ "properties": {
27
+ "operand": {
28
+ "$ref": "#/$defs/DataRelationOperand",
29
+ "description": "比较值来源;可为字面量、当前表单字段或输出别名。"
30
+ },
31
+ "operator": {
32
+ "description": "比较运算符;Reconciler 会结合字段类型校验可用性。",
33
+ "enum": [
34
+ "equal",
35
+ "not_equal",
36
+ "contains",
37
+ "not_contains",
38
+ "greater_than",
39
+ "greater_or_equal",
40
+ "less_than",
41
+ "less_or_equal",
42
+ "dynamic_range",
43
+ "equal_any",
44
+ "not_equal_any",
45
+ "is_empty",
46
+ "is_not_empty",
47
+ "belongs_to",
48
+ "not_belongs_to",
49
+ "subordinate_to",
50
+ "not_subordinate_to",
51
+ "subordinate_included",
52
+ "subordinate_not_included",
53
+ "fuzzy_match",
54
+ "contains_any",
55
+ "contains_all",
56
+ "decimal_range"
57
+ ]
58
+ },
59
+ "sourceField": {
60
+ "$ref": "#/$defs/FieldSelector",
61
+ "description": "被过滤的数据源字段。"
62
+ }
63
+ },
64
+ "required": [
65
+ "sourceField",
66
+ "operator",
67
+ "operand"
68
+ ],
69
+ "type": "object"
70
+ },
71
+ "DataRelationConfig": {
72
+ "additionalProperties": false,
73
+ "description": "数据关联字段配置;从应用、Q-Linker 或代码块输出中读取数据。",
74
+ "properties": {
75
+ "aggregation": {
76
+ "description": "可选聚合方式;null 表示不聚合。",
77
+ "enum": [
78
+ "sum",
79
+ "average",
80
+ "max",
81
+ "min",
82
+ "first",
83
+ "last",
84
+ "filled_count",
85
+ "empty_count",
86
+ "count",
87
+ null
88
+ ],
89
+ "type": [
90
+ "string",
91
+ "null"
92
+ ]
93
+ },
94
+ "customButton": {
95
+ "$ref": "#/$defs/DataRelationCustomButton",
96
+ "description": "可选自定义按钮配置。"
97
+ },
98
+ "filters": {
99
+ "$ref": "#/$defs/DataRelationFilters",
100
+ "description": "可选过滤条件;支持简单条件组或高级公式。"
101
+ },
102
+ "sort": {
103
+ "$ref": "#/$defs/DataRelationSort",
104
+ "description": "可选排序配置。"
105
+ },
106
+ "source": {
107
+ "$ref": "#/$defs/DataRelationSource",
108
+ "description": "数据来源;按 kind 选择一种来源结构。"
109
+ }
110
+ },
111
+ "required": [
112
+ "source"
113
+ ],
114
+ "type": "object"
115
+ },
116
+ "DataRelationCustomButton": {
117
+ "description": "数据关联自定义按钮;启用时必须引用已有 buttonId。",
118
+ "oneOf": [
119
+ {
120
+ "additionalProperties": false,
121
+ "properties": {
122
+ "enabled": {
123
+ "const": false
124
+ }
125
+ },
126
+ "required": [
127
+ "enabled"
128
+ ],
129
+ "type": "object"
130
+ },
131
+ {
132
+ "additionalProperties": false,
133
+ "properties": {
134
+ "buttonId": {
135
+ "minimum": 1,
136
+ "type": "integer"
137
+ },
138
+ "enabled": {
139
+ "const": true
140
+ }
141
+ },
142
+ "required": [
143
+ "enabled",
144
+ "buttonId"
145
+ ],
146
+ "type": "object"
147
+ }
148
+ ]
149
+ },
150
+ "DataRelationFilters": {
151
+ "description": "simple 模式的外层组为 OR、组内条件为 AND;advanced 模式使用完整公式。",
152
+ "oneOf": [
153
+ {
154
+ "additionalProperties": false,
155
+ "properties": {
156
+ "groups": {
157
+ "description": "OR 条件组数组;每个内层数组是一组 AND 条件。",
158
+ "items": {
159
+ "items": {
160
+ "$ref": "#/$defs/DataRelationCondition"
161
+ },
162
+ "minItems": 1,
163
+ "type": "array"
164
+ },
165
+ "type": "array"
166
+ },
167
+ "mode": {
168
+ "const": "simple"
169
+ }
170
+ },
171
+ "required": [
172
+ "mode",
173
+ "groups"
174
+ ],
175
+ "type": "object"
176
+ },
177
+ {
178
+ "additionalProperties": false,
179
+ "properties": {
180
+ "formula": {
181
+ "description": "解码后的高级筛选公式。",
182
+ "minLength": 1,
183
+ "type": "string"
184
+ },
185
+ "mode": {
186
+ "const": "advanced"
187
+ }
188
+ },
189
+ "required": [
190
+ "mode",
191
+ "formula"
192
+ ],
193
+ "type": "object"
194
+ }
195
+ ]
196
+ },
197
+ "DataRelationOperand": {
198
+ "description": "数据关联条件右值的判别联合。",
199
+ "oneOf": [
200
+ {
201
+ "additionalProperties": false,
202
+ "properties": {
203
+ "kind": {
204
+ "const": "literal"
205
+ },
206
+ "values": {
207
+ "description": "字面量值列表。",
208
+ "items": {
209
+ "$ref": "#/$defs/JsonValue"
210
+ },
211
+ "type": "array"
212
+ }
213
+ },
214
+ "required": [
215
+ "kind",
216
+ "values"
217
+ ],
218
+ "type": "object"
219
+ },
220
+ {
221
+ "additionalProperties": false,
222
+ "properties": {
223
+ "field": {
224
+ "$ref": "#/$defs/FieldSelector"
225
+ },
226
+ "kind": {
227
+ "const": "current_field"
228
+ }
229
+ },
230
+ "required": [
231
+ "kind",
232
+ "field"
233
+ ],
234
+ "type": "object"
235
+ },
236
+ {
237
+ "additionalProperties": false,
238
+ "properties": {
239
+ "alias": {
240
+ "$ref": "#/$defs/AliasSelector"
241
+ },
242
+ "kind": {
243
+ "const": "alias"
244
+ },
245
+ "producer": {
246
+ "$ref": "#/$defs/FieldSelector"
247
+ }
248
+ },
249
+ "required": [
250
+ "kind",
251
+ "producer",
252
+ "alias"
253
+ ],
254
+ "type": "object"
255
+ }
256
+ ]
257
+ },
258
+ "DataRelationSort": {
259
+ "description": "数据关联排序开关;启用时必须指定排序来源和方向。",
260
+ "oneOf": [
261
+ {
262
+ "additionalProperties": false,
263
+ "properties": {
264
+ "enabled": {
265
+ "const": false
266
+ }
267
+ },
268
+ "required": [
269
+ "enabled"
270
+ ],
271
+ "type": "object"
272
+ },
273
+ {
274
+ "additionalProperties": false,
275
+ "properties": {
276
+ "by": {
277
+ "$ref": "#/$defs/DataRelationSortBy"
278
+ },
279
+ "direction": {
280
+ "enum": [
281
+ "asc",
282
+ "desc"
283
+ ]
284
+ },
285
+ "enabled": {
286
+ "const": true
287
+ }
288
+ },
289
+ "required": [
290
+ "enabled",
291
+ "by",
292
+ "direction"
293
+ ],
294
+ "type": "object"
295
+ }
296
+ ]
297
+ },
298
+ "DataRelationSortBy": {
299
+ "description": "排序值来源;可为来源字段或输出别名。",
300
+ "oneOf": [
301
+ {
302
+ "additionalProperties": false,
303
+ "properties": {
304
+ "field": {
305
+ "$ref": "#/$defs/FieldSelector"
306
+ },
307
+ "kind": {
308
+ "const": "field"
309
+ }
310
+ },
311
+ "required": [
312
+ "kind",
313
+ "field"
314
+ ],
315
+ "type": "object"
316
+ },
317
+ {
318
+ "additionalProperties": false,
319
+ "properties": {
320
+ "alias": {
321
+ "$ref": "#/$defs/AliasSelector"
322
+ },
323
+ "kind": {
324
+ "const": "alias"
325
+ },
326
+ "producer": {
327
+ "$ref": "#/$defs/FieldSelector"
328
+ }
329
+ },
330
+ "required": [
331
+ "kind",
332
+ "producer",
333
+ "alias"
334
+ ],
335
+ "type": "object"
336
+ }
337
+ ]
338
+ },
339
+ "DataRelationSource": {
340
+ "description": "数据关联来源判别联合;kind 决定其余必填字段。",
341
+ "oneOf": [
342
+ {
343
+ "additionalProperties": false,
344
+ "properties": {
345
+ "appKey": {
346
+ "description": "来源应用的 appKey。",
347
+ "minLength": 1,
348
+ "type": "string"
349
+ },
350
+ "field": {
351
+ "$ref": "#/$defs/FieldSelector",
352
+ "description": "来源应用中的结果字段。"
353
+ },
354
+ "kind": {
355
+ "const": "app"
356
+ }
357
+ },
358
+ "required": [
359
+ "kind",
360
+ "appKey",
361
+ "field"
362
+ ],
363
+ "type": "object"
364
+ },
365
+ {
366
+ "additionalProperties": false,
367
+ "properties": {
368
+ "alias": {
369
+ "$ref": "#/$defs/AliasSelector",
370
+ "description": "Q-Linker 输出别名。"
371
+ },
372
+ "kind": {
373
+ "const": "q_linker"
374
+ },
375
+ "producer": {
376
+ "$ref": "#/$defs/FieldSelector",
377
+ "description": "当前应用中的 Q-Linker 字段。"
378
+ }
379
+ },
380
+ "required": [
381
+ "kind",
382
+ "producer",
383
+ "alias"
384
+ ],
385
+ "type": "object"
386
+ },
387
+ {
388
+ "additionalProperties": false,
389
+ "properties": {
390
+ "alias": {
391
+ "$ref": "#/$defs/AliasSelector",
392
+ "description": "代码块输出别名。"
393
+ },
394
+ "kind": {
395
+ "const": "code_block"
396
+ },
397
+ "producer": {
398
+ "$ref": "#/$defs/FieldSelector",
399
+ "description": "当前应用中的代码块字段。"
400
+ }
401
+ },
402
+ "required": [
403
+ "kind",
404
+ "producer",
405
+ "alias"
406
+ ],
407
+ "type": "object"
408
+ }
409
+ ]
410
+ },
411
+ "FieldCommon": {
412
+ "description": "顶层业务字段的公共属性;字段类型由 TopField 的判别分支定义。",
413
+ "properties": {
414
+ "dataCover": {
415
+ "description": "是否作为数据封面;仅顶层附件字段可设为 true。",
416
+ "type": "boolean"
417
+ },
418
+ "dataTitle": {
419
+ "description": "是否作为数据标题;整个 body 最多且必须按规则存在一个。",
420
+ "type": "boolean"
421
+ },
422
+ "description": {
423
+ "description": "字段说明;null 或空字符串表示清空。",
424
+ "type": [
425
+ "string",
426
+ "null"
427
+ ]
428
+ },
429
+ "name": {
430
+ "description": "字段展示名称;同一父级内唯一,不单独作为字段身份。",
431
+ "minLength": 1,
432
+ "type": "string"
433
+ },
434
+ "queId": {
435
+ "description": "已有字段的后端 ID;get 返回,新增字段省略。",
436
+ "minimum": 1,
437
+ "type": "integer"
438
+ },
439
+ "required": {
440
+ "description": "是否必填;缺失时保留已有字段当前值。",
441
+ "type": "boolean"
442
+ },
443
+ "width": {
444
+ "description": "字段在所在行的宽度百分比;同一行要么全部提供且合计 100,要么全部省略。",
445
+ "maximum": 100,
446
+ "minimum": 1,
447
+ "type": "integer"
448
+ }
449
+ },
450
+ "required": [
451
+ "name"
452
+ ],
453
+ "type": "object"
454
+ },
455
+ "FieldSelector": {
456
+ "additionalProperties": false,
457
+ "anyOf": [
458
+ {
459
+ "required": [
460
+ "queId"
461
+ ]
462
+ },
463
+ {
464
+ "required": [
465
+ "name"
466
+ ]
467
+ }
468
+ ],
469
+ "description": "跨字段引用选择器;至少提供 queId 或 name,两者同时提供时必须指向同一字段。",
470
+ "properties": {
471
+ "name": {
472
+ "description": "字段名称;仅在当前作用域内唯一时可用于解析。",
473
+ "minLength": 1,
474
+ "type": "string"
475
+ },
476
+ "queId": {
477
+ "description": "已有字段的后端 ID;优先用于精确解析。",
478
+ "minimum": 1,
479
+ "type": "integer"
480
+ }
481
+ },
482
+ "type": "object"
483
+ },
484
+ "JsonValue": {
485
+ "description": "数据关联字面量支持的任意 JSON 值。",
486
+ "oneOf": [
487
+ {
488
+ "type": "null"
489
+ },
490
+ {
491
+ "type": "boolean"
492
+ },
493
+ {
494
+ "type": "number"
495
+ },
496
+ {
497
+ "type": "string"
498
+ },
499
+ {
500
+ "items": {
501
+ "$ref": "#/$defs/JsonValue"
502
+ },
503
+ "type": "array"
504
+ },
505
+ {
506
+ "additionalProperties": {
507
+ "$ref": "#/$defs/JsonValue"
508
+ },
509
+ "type": "object"
510
+ }
511
+ ]
512
+ }
513
+ },
514
+ "$id": "https://builder.qingflow.com/schemas/app-form-apply/v1alpha1/fields/data_relation.json",
515
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
516
+ "allOf": [
517
+ {
518
+ "$ref": "#/$defs/FieldCommon"
519
+ },
520
+ {
521
+ "properties": {
522
+ "config": {
523
+ "$ref": "#/$defs/DataRelationConfig"
524
+ },
525
+ "type": {
526
+ "const": "data_relation"
527
+ }
528
+ },
529
+ "required": [
530
+ "type",
531
+ "config"
532
+ ]
533
+ }
534
+ ],
535
+ "title": "Qingflow AppForm v1alpha1 data_relation field",
536
+ "type": "object",
537
+ "unevaluatedProperties": false
538
+ }
@@ -0,0 +1,76 @@
1
+ {
2
+ "$defs": {
3
+ "EmptyConfig": {
4
+ "additionalProperties": false,
5
+ "description": "该字段类型没有特殊配置。",
6
+ "type": "object"
7
+ },
8
+ "FieldCommon": {
9
+ "description": "顶层业务字段的公共属性;字段类型由 TopField 的判别分支定义。",
10
+ "properties": {
11
+ "dataCover": {
12
+ "description": "是否作为数据封面;仅顶层附件字段可设为 true。",
13
+ "type": "boolean"
14
+ },
15
+ "dataTitle": {
16
+ "description": "是否作为数据标题;整个 body 最多且必须按规则存在一个。",
17
+ "type": "boolean"
18
+ },
19
+ "description": {
20
+ "description": "字段说明;null 或空字符串表示清空。",
21
+ "type": [
22
+ "string",
23
+ "null"
24
+ ]
25
+ },
26
+ "name": {
27
+ "description": "字段展示名称;同一父级内唯一,不单独作为字段身份。",
28
+ "minLength": 1,
29
+ "type": "string"
30
+ },
31
+ "queId": {
32
+ "description": "已有字段的后端 ID;get 返回,新增字段省略。",
33
+ "minimum": 1,
34
+ "type": "integer"
35
+ },
36
+ "required": {
37
+ "description": "是否必填;缺失时保留已有字段当前值。",
38
+ "type": "boolean"
39
+ },
40
+ "width": {
41
+ "description": "字段在所在行的宽度百分比;同一行要么全部提供且合计 100,要么全部省略。",
42
+ "maximum": 100,
43
+ "minimum": 1,
44
+ "type": "integer"
45
+ }
46
+ },
47
+ "required": [
48
+ "name"
49
+ ],
50
+ "type": "object"
51
+ }
52
+ },
53
+ "$id": "https://builder.qingflow.com/schemas/app-form-apply/v1alpha1/fields/date.json",
54
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
55
+ "allOf": [
56
+ {
57
+ "$ref": "#/$defs/FieldCommon"
58
+ },
59
+ {
60
+ "properties": {
61
+ "config": {
62
+ "$ref": "#/$defs/EmptyConfig"
63
+ },
64
+ "type": {
65
+ "const": "date"
66
+ }
67
+ },
68
+ "required": [
69
+ "type"
70
+ ]
71
+ }
72
+ ],
73
+ "title": "Qingflow AppForm v1alpha1 date field",
74
+ "type": "object",
75
+ "unevaluatedProperties": false
76
+ }
@@ -0,0 +1,76 @@
1
+ {
2
+ "$defs": {
3
+ "EmptyConfig": {
4
+ "additionalProperties": false,
5
+ "description": "该字段类型没有特殊配置。",
6
+ "type": "object"
7
+ },
8
+ "FieldCommon": {
9
+ "description": "顶层业务字段的公共属性;字段类型由 TopField 的判别分支定义。",
10
+ "properties": {
11
+ "dataCover": {
12
+ "description": "是否作为数据封面;仅顶层附件字段可设为 true。",
13
+ "type": "boolean"
14
+ },
15
+ "dataTitle": {
16
+ "description": "是否作为数据标题;整个 body 最多且必须按规则存在一个。",
17
+ "type": "boolean"
18
+ },
19
+ "description": {
20
+ "description": "字段说明;null 或空字符串表示清空。",
21
+ "type": [
22
+ "string",
23
+ "null"
24
+ ]
25
+ },
26
+ "name": {
27
+ "description": "字段展示名称;同一父级内唯一,不单独作为字段身份。",
28
+ "minLength": 1,
29
+ "type": "string"
30
+ },
31
+ "queId": {
32
+ "description": "已有字段的后端 ID;get 返回,新增字段省略。",
33
+ "minimum": 1,
34
+ "type": "integer"
35
+ },
36
+ "required": {
37
+ "description": "是否必填;缺失时保留已有字段当前值。",
38
+ "type": "boolean"
39
+ },
40
+ "width": {
41
+ "description": "字段在所在行的宽度百分比;同一行要么全部提供且合计 100,要么全部省略。",
42
+ "maximum": 100,
43
+ "minimum": 1,
44
+ "type": "integer"
45
+ }
46
+ },
47
+ "required": [
48
+ "name"
49
+ ],
50
+ "type": "object"
51
+ }
52
+ },
53
+ "$id": "https://builder.qingflow.com/schemas/app-form-apply/v1alpha1/fields/datetime.json",
54
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
55
+ "allOf": [
56
+ {
57
+ "$ref": "#/$defs/FieldCommon"
58
+ },
59
+ {
60
+ "properties": {
61
+ "config": {
62
+ "$ref": "#/$defs/EmptyConfig"
63
+ },
64
+ "type": {
65
+ "const": "datetime"
66
+ }
67
+ },
68
+ "required": [
69
+ "type"
70
+ ]
71
+ }
72
+ ],
73
+ "title": "Qingflow AppForm v1alpha1 datetime field",
74
+ "type": "object",
75
+ "unevaluatedProperties": false
76
+ }