@qingflow-tech/qingflow-cli 1.1.43 → 1.1.44-beta.2
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.
- package/README.md +13 -6
- package/entry_point.py +1 -1
- package/npm/bin/qingflow.mjs +1 -2
- package/npm/lib/runtime.mjs +3 -7
- package/package.json +2 -2
- package/pyproject.toml +3 -4
- package/skills/qingflow-app-form/SKILL.md +66 -0
- package/skills/qingflow-app-form/agents/openai.yaml +4 -0
- package/skills/qingflow-cli/SKILL.md +8 -6
- package/skills/qingflow-cli/manifest.yaml +1 -1
- package/skills/qingflow-cli/reference/QINGFLOW_CLI_BUILDER_APP_DELIVERY_WORKFLOW.md +4 -4
- package/skills/qingflow-cli/reference/QINGFLOW_CLI_EXPLORATION_REPORT.md +1 -1
- package/skills/qingflow-cli/reference/QINGFLOW_CLI_FIELD_DATA_TYPES.md +1 -1
- package/skills/qingflow-cli/reference/QINGFLOW_CLI_SCHEMA_APPLY_FIELD_TYPES_AND_SCENARIOS.md +4 -4
- package/skills/qingflow-cli/reference/builder/10-build-single-app.md +5 -5
- package/skills/qingflow-cli/reference/builder/20-build-complete-system.md +14 -14
- package/skills/qingflow-cli/reference/builder/30-schema-fields.md +108 -103
- package/skills/qingflow-cli/reference/builder/40-layout.md +39 -31
- package/skills/qingflow-cli/reference/builder/README.md +9 -9
- package/skills/qingflow-cli/reference/builder/code-integrations/README.md +4 -2
- package/skills/qingflow-cli/reference/builder/code-integrations/code-block.md +2 -0
- package/skills/qingflow-cli/reference/builder/code-integrations/q-linker.md +2 -0
- package/skills/qingflow-cli/reference/builder/reference/app-delivery-sop.md +45 -38
- package/skills/qingflow-cli/reference/core/QINGFLOW_CLI_EXPLORATION_REPORT.md +1 -1
- package/skills/qingflow-cli/reference/core/QINGFLOW_CLI_FIELD_DATA_TYPES.md +1 -1
- package/skills/qingflow-cli/reference/examples/README.md +3 -3
- package/skills/qingflow-common/SKILL.md +47 -0
- package/skills/qingflow-common/agents/openai.yaml +4 -0
- package/src/qingflow_mcp/__main__.py +2 -3
- package/src/qingflow_mcp/app_form_compat.py +104 -0
- package/src/qingflow_mcp/app_form_validator.py +462 -0
- package/src/qingflow_mcp/builder_facade/app_form.py +4205 -0
- package/src/qingflow_mcp/builder_facade/app_form_schema.py +425 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/manifest.json +42 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/complete.json +2969 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/address.json +392 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/amount.json +236 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/attachment.json +425 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/code_block.json +318 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/data_relation.json +580 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/date.json +150 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/datetime.json +150 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/department.json +345 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/email.json +190 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/link.json +190 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/long_text.json +190 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/member.json +484 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/multi_select.json +214 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/number.json +236 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/phone.json +199 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/q_linker.json +412 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/relation.json +454 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/single_choice.json +214 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/single_select.json +214 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/subtable.json +1921 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/text.json +190 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/formula.json +1594 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/summary.json +718 -0
- package/src/qingflow_mcp/builder_facade/service.py +8 -4
- package/src/qingflow_mcp/cli/commands/builder.py +93 -28
- package/src/qingflow_mcp/cli/json_io.py +21 -2
- package/src/qingflow_mcp/cli/main.py +3 -39
- package/src/qingflow_mcp/public_surface.py +5 -2
- package/src/qingflow_mcp/response_trim.py +50 -0
- package/src/qingflow_mcp/server.py +24 -3
- package/src/qingflow_mcp/server_app_builder.py +44 -87
- package/src/qingflow_mcp/tools/ai_builder_tools.py +103 -100
- package/src/qingflow_mcp/tools/app_tools.py +46 -65
- package/src/qingflow_mcp/tools/record_tools.py +3 -3
- package/src/qingflow_mcp/version.py +2 -4
- package/docs/local-agent-install.md +0 -370
- package/skills/qingflow-mcp-setup/SKILL.md +0 -115
- package/skills/qingflow-mcp-setup/agents/openai.yaml +0 -4
- package/skills/qingflow-mcp-setup/references/claude-desktop.md +0 -34
- package/skills/qingflow-mcp-setup/references/environments.md +0 -62
- package/skills/qingflow-mcp-setup/references/generic-stdio.md +0 -32
- package/skills/qingflow-mcp-setup/scripts/check_local_server.sh +0 -38
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$defs": {
|
|
3
|
+
"CodeBlockBinding": {
|
|
4
|
+
"additionalProperties": false,
|
|
5
|
+
"allOf": [
|
|
6
|
+
{
|
|
7
|
+
"if": {
|
|
8
|
+
"properties": {
|
|
9
|
+
"outputs": {
|
|
10
|
+
"minItems": 1
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"required": [
|
|
14
|
+
"outputs"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
"then": {
|
|
18
|
+
"properties": {
|
|
19
|
+
"code": {
|
|
20
|
+
"pattern": "(^|[^A-Za-z0-9_$])qf_output\\s*=(?!=)"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"description": "代码块的输入、代码和输出映射;配置 outputs 时,代码必须显式给 qf_output 赋值,仅 return 对象不会产生可回写结果。每个输出目标还必须满足应用级唯一性规则,不能与任何代码块或 Q-Linker 的其他输出指向同一实际字段。多个生产方需要回写时,请选择不同目标字段或合并为一个生产方。",
|
|
27
|
+
"properties": {
|
|
28
|
+
"autoTrigger": {
|
|
29
|
+
"description": "是否在输入变化时自动执行代码块。",
|
|
30
|
+
"type": [
|
|
31
|
+
"boolean",
|
|
32
|
+
"null"
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
"code": {
|
|
36
|
+
"description": "业务代码源码;MCP/CLI 仅保存,不执行。inputs 声明的 var 会由 Builder 自动注入。配置 outputs 时必须显式赋值 qf_output,例如 qf_output = { score: input.score };,仅 return 对象或比较 qf_output 不会回写。",
|
|
37
|
+
"minLength": 1,
|
|
38
|
+
"type": "string"
|
|
39
|
+
},
|
|
40
|
+
"customButtonText": {
|
|
41
|
+
"description": "自定义触发按钮文案。",
|
|
42
|
+
"type": [
|
|
43
|
+
"string",
|
|
44
|
+
"null"
|
|
45
|
+
]
|
|
46
|
+
},
|
|
47
|
+
"customButtonTextEnabled": {
|
|
48
|
+
"description": "是否启用自定义触发按钮文案。",
|
|
49
|
+
"type": [
|
|
50
|
+
"boolean",
|
|
51
|
+
"null"
|
|
52
|
+
]
|
|
53
|
+
},
|
|
54
|
+
"hideOnForm": {
|
|
55
|
+
"description": "是否在表单填写界面隐藏该代码块字段。",
|
|
56
|
+
"type": [
|
|
57
|
+
"boolean",
|
|
58
|
+
"null"
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
"inputs": {
|
|
62
|
+
"description": "当前表单字段到代码变量的映射。Builder 会在保存时自动生成读取 qf_field 的代码前缀;业务 code 直接使用 var,不要手写 qf_field.{字段名$$ID$$}。",
|
|
63
|
+
"items": {
|
|
64
|
+
"$ref": "#/$defs/CodeBlockInputBinding"
|
|
65
|
+
},
|
|
66
|
+
"type": "array"
|
|
67
|
+
},
|
|
68
|
+
"outputs": {
|
|
69
|
+
"description": "代码输出路径到目标字段的映射;每个 path 必须从代码显式赋值的 qf_output 中读取,且所有 targetField 在整个应用的代码块和 Q-Linker 输出中必须全局唯一。",
|
|
70
|
+
"items": {
|
|
71
|
+
"$ref": "#/$defs/CodeBlockOutputBinding"
|
|
72
|
+
},
|
|
73
|
+
"type": "array"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"required": [
|
|
77
|
+
"code"
|
|
78
|
+
],
|
|
79
|
+
"type": "object"
|
|
80
|
+
},
|
|
81
|
+
"CodeBlockConfig": {
|
|
82
|
+
"additionalProperties": false,
|
|
83
|
+
"description": "代码块的高层声明;无法无损还原为该结构时阻断处理。",
|
|
84
|
+
"properties": {
|
|
85
|
+
"codeBlockBinding": {
|
|
86
|
+
"$ref": "#/$defs/CodeBlockBinding"
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"required": [
|
|
90
|
+
"codeBlockBinding"
|
|
91
|
+
],
|
|
92
|
+
"type": "object"
|
|
93
|
+
},
|
|
94
|
+
"CodeBlockInputBinding": {
|
|
95
|
+
"additionalProperties": false,
|
|
96
|
+
"description": "一个表单字段到代码变量的映射;Builder 自动生成后端字段读取前缀。",
|
|
97
|
+
"properties": {
|
|
98
|
+
"field": {
|
|
99
|
+
"$ref": "#/$defs/FieldSelector",
|
|
100
|
+
"description": "输入来源字段。"
|
|
101
|
+
},
|
|
102
|
+
"var": {
|
|
103
|
+
"description": "业务 code 中直接使用的 JavaScript 变量名;null 表示由 Builder 生成合法且唯一的变量名。",
|
|
104
|
+
"type": [
|
|
105
|
+
"string",
|
|
106
|
+
"null"
|
|
107
|
+
]
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"required": [
|
|
111
|
+
"field"
|
|
112
|
+
],
|
|
113
|
+
"type": "object"
|
|
114
|
+
},
|
|
115
|
+
"CodeBlockOutputBinding": {
|
|
116
|
+
"additionalProperties": false,
|
|
117
|
+
"description": "一个代码输出值到表单字段的映射;同一实际目标字段在整个应用中只能被一个代码块或 Q-Linker 输出映射写入。",
|
|
118
|
+
"properties": {
|
|
119
|
+
"alias": {
|
|
120
|
+
"description": "输出别名;用于后续数据关联引用。",
|
|
121
|
+
"minLength": 1,
|
|
122
|
+
"type": "string"
|
|
123
|
+
},
|
|
124
|
+
"aliasId": {
|
|
125
|
+
"description": "后端生成的输出别名 ID;新增输出时省略,Builder 在首次写入后按 alias 与 path 自动回填再保存关系。更新已有输出时必须保留 get 返回值,不得自行编造或置空。",
|
|
126
|
+
"minimum": 1,
|
|
127
|
+
"type": "integer"
|
|
128
|
+
},
|
|
129
|
+
"path": {
|
|
130
|
+
"description": "从 qf_output 中取值的 JSONPath。",
|
|
131
|
+
"minLength": 1,
|
|
132
|
+
"type": "string"
|
|
133
|
+
},
|
|
134
|
+
"targetField": {
|
|
135
|
+
"$ref": "#/$defs/FieldSelector",
|
|
136
|
+
"description": "接收结果的当前表单字段;该字段在整个应用的全部代码块和 Q-Linker outputs 中只能作为 targetField 出现一次,不得被多个输出关系重复写入。"
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
"required": [
|
|
140
|
+
"alias",
|
|
141
|
+
"path",
|
|
142
|
+
"targetField"
|
|
143
|
+
],
|
|
144
|
+
"type": "object"
|
|
145
|
+
},
|
|
146
|
+
"FieldCommon": {
|
|
147
|
+
"allOf": [
|
|
148
|
+
{
|
|
149
|
+
"if": {
|
|
150
|
+
"properties": {
|
|
151
|
+
"defaultType": {
|
|
152
|
+
"const": 2
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
"required": [
|
|
156
|
+
"defaultType"
|
|
157
|
+
]
|
|
158
|
+
},
|
|
159
|
+
"then": {
|
|
160
|
+
"properties": {
|
|
161
|
+
"defaultValue": {
|
|
162
|
+
"type": "null"
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"if": {
|
|
169
|
+
"properties": {
|
|
170
|
+
"defaultType": {
|
|
171
|
+
"const": 3
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
"required": [
|
|
175
|
+
"defaultType"
|
|
176
|
+
]
|
|
177
|
+
},
|
|
178
|
+
"then": {
|
|
179
|
+
"properties": {
|
|
180
|
+
"defaultValue": {
|
|
181
|
+
"minLength": 1,
|
|
182
|
+
"type": [
|
|
183
|
+
"string",
|
|
184
|
+
"null"
|
|
185
|
+
]
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
],
|
|
191
|
+
"anyOf": [
|
|
192
|
+
{
|
|
193
|
+
"required": [
|
|
194
|
+
"queId"
|
|
195
|
+
]
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"required": [
|
|
199
|
+
"name"
|
|
200
|
+
]
|
|
201
|
+
}
|
|
202
|
+
],
|
|
203
|
+
"description": "顶层业务字段的公共属性;字段类型由 TopField 的判别分支定义。",
|
|
204
|
+
"properties": {
|
|
205
|
+
"beingRequired": {
|
|
206
|
+
"description": "该字段是否必填;缺失时保留已有字段当前值。",
|
|
207
|
+
"type": "boolean"
|
|
208
|
+
},
|
|
209
|
+
"defaultType": {
|
|
210
|
+
"default": 1,
|
|
211
|
+
"description": "默认值类型,与 defaultValue 联动;1 表示静态值,2 表示关联/绑定值且 defaultValue 只能省略或为 null,3 表示公式值且提供 defaultValue 时必须为非空公式文本。省略 defaultType 但提供 defaultValue 时按 1 处理。",
|
|
212
|
+
"enum": [
|
|
213
|
+
1,
|
|
214
|
+
2,
|
|
215
|
+
3
|
|
216
|
+
],
|
|
217
|
+
"type": "integer"
|
|
218
|
+
},
|
|
219
|
+
"defaultValue": {
|
|
220
|
+
"$ref": "#/$defs/ScalarDefaultValue",
|
|
221
|
+
"description": "普通字段的默认值;后端 queDefaultValue 为字符串,因此数字等字面量也必须以字符串传入。defaultType 为 1 时表示静态文本,为 3 时表示公式文本,为 2 时不携带字面量默认值。表格、地址、附件、引用等结构化默认值必须放在具体字段 config.defaultValues。显式 null 表示清除默认值。"
|
|
222
|
+
},
|
|
223
|
+
"name": {
|
|
224
|
+
"description": "字段展示名称;新增字段必填,已有字段可在携带 queId 时省略;同一父级内唯一。",
|
|
225
|
+
"minLength": 1,
|
|
226
|
+
"type": "string"
|
|
227
|
+
},
|
|
228
|
+
"queId": {
|
|
229
|
+
"description": "已有字段的后端 ID;更新时用于精确定位并复用,新增字段通常省略。",
|
|
230
|
+
"minimum": 1,
|
|
231
|
+
"type": "integer"
|
|
232
|
+
},
|
|
233
|
+
"questionDescription": {
|
|
234
|
+
"description": "字段说明;null 或空字符串表示清空。",
|
|
235
|
+
"type": [
|
|
236
|
+
"string",
|
|
237
|
+
"null"
|
|
238
|
+
]
|
|
239
|
+
},
|
|
240
|
+
"questionType": {
|
|
241
|
+
"description": "字段类型;具体可用值由当前字段详情 Schema 的判别分支约束。",
|
|
242
|
+
"type": "string"
|
|
243
|
+
},
|
|
244
|
+
"width": {
|
|
245
|
+
"description": "字段在所在行的宽度百分比;只能选择 25、50、75 或 100。",
|
|
246
|
+
"enum": [
|
|
247
|
+
25,
|
|
248
|
+
50,
|
|
249
|
+
75,
|
|
250
|
+
100
|
|
251
|
+
],
|
|
252
|
+
"type": "integer"
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
"type": "object"
|
|
256
|
+
},
|
|
257
|
+
"FieldSelector": {
|
|
258
|
+
"additionalProperties": false,
|
|
259
|
+
"anyOf": [
|
|
260
|
+
{
|
|
261
|
+
"required": [
|
|
262
|
+
"queId"
|
|
263
|
+
]
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
"required": [
|
|
267
|
+
"name"
|
|
268
|
+
]
|
|
269
|
+
}
|
|
270
|
+
],
|
|
271
|
+
"description": "字段选择器;用于定位应用的数据标题、数据封面、自定义编号取值来源或其他配置引用的字段。至少提供 queId 或 name,两者同时提供时必须指向同一字段。",
|
|
272
|
+
"properties": {
|
|
273
|
+
"name": {
|
|
274
|
+
"description": "字段名称;仅在当前作用域内唯一时可用于解析。",
|
|
275
|
+
"minLength": 1,
|
|
276
|
+
"type": "string"
|
|
277
|
+
},
|
|
278
|
+
"queId": {
|
|
279
|
+
"description": "已有字段的后端 ID;优先用于精确解析。",
|
|
280
|
+
"minimum": 1,
|
|
281
|
+
"type": "integer"
|
|
282
|
+
}
|
|
283
|
+
},
|
|
284
|
+
"type": "object"
|
|
285
|
+
},
|
|
286
|
+
"ScalarDefaultValue": {
|
|
287
|
+
"description": "后端 queDefaultValue 支持的普通字段默认值;非空值必须是字符串,显式 null 表示清除默认值。数字和布尔值应先转换为字符串,对象和数组必须使用字段专用默认值配置。defaultType 为 3 时,通过 AppForm Schema 查询能力传入当前 schema_version 并设置 schema_kind=formula 获取公式语法、字段引用、运算符和全部函数说明;CLI 使用 builder app-form schema --schema-kind formula。需要配置结构化默认值时,传入当前 schema_version,并将字段的 questionType 作为 field_type 获取字段详细 Schema。",
|
|
288
|
+
"type": [
|
|
289
|
+
"null",
|
|
290
|
+
"string"
|
|
291
|
+
]
|
|
292
|
+
}
|
|
293
|
+
},
|
|
294
|
+
"$id": "https://builder.qingflow.com/schemas/app-form-apply/v1alpha1/fields/code_block.json",
|
|
295
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
296
|
+
"allOf": [
|
|
297
|
+
{
|
|
298
|
+
"$ref": "#/$defs/FieldCommon"
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
"properties": {
|
|
302
|
+
"config": {
|
|
303
|
+
"$ref": "#/$defs/CodeBlockConfig"
|
|
304
|
+
},
|
|
305
|
+
"questionType": {
|
|
306
|
+
"const": "code_block"
|
|
307
|
+
}
|
|
308
|
+
},
|
|
309
|
+
"required": [
|
|
310
|
+
"questionType",
|
|
311
|
+
"config"
|
|
312
|
+
]
|
|
313
|
+
}
|
|
314
|
+
],
|
|
315
|
+
"title": "Qingflow AppForm v1alpha1 code_block field",
|
|
316
|
+
"type": "object",
|
|
317
|
+
"unevaluatedProperties": false
|
|
318
|
+
}
|