@josephyan/qingflow-app-builder-mcp 1.1.16 → 1.1.18
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 +2 -2
- package/package.json +1 -1
- package/pyproject.toml +1 -1
- package/skills/qingflow-app-builder/SKILL.md +56 -11
- package/skills/qingflow-app-builder/references/complete-system-development-guide.md +54 -5
- package/skills/qingflow-app-builder/references/create-app.md +10 -1
- package/skills/qingflow-app-builder/references/gotchas.md +17 -3
- package/skills/qingflow-app-builder/references/single-app-development-guide.md +33 -4
- package/skills/qingflow-app-builder/references/tool-selection.md +20 -4
- package/skills/qingflow-app-builder/references/update-schema.md +11 -0
- package/skills/qingflow-app-builder/references/update-views.md +49 -0
- package/src/qingflow_mcp/builder_facade/models.py +202 -2
- package/src/qingflow_mcp/builder_facade/service.py +622 -29
- package/src/qingflow_mcp/cli/commands/builder.py +6 -3
- package/src/qingflow_mcp/server_app_builder.py +6 -3
- package/src/qingflow_mcp/tools/ai_builder_tools.py +548 -30
|
@@ -214,7 +214,8 @@ def register(subparsers: argparse._SubParsersAction[argparse.ArgumentParser]) ->
|
|
|
214
214
|
schema_apply_apply.add_argument("--visibility-file")
|
|
215
215
|
schema_apply_apply.add_argument("--create-if-missing", action="store_true")
|
|
216
216
|
schema_apply_apply.add_argument("--publish", action=argparse.BooleanOptionalAction, default=None)
|
|
217
|
-
schema_apply_apply.add_argument("--apps-file", help="多应用 schema JSON
|
|
217
|
+
schema_apply_apply.add_argument("--apps-file", help="多应用 schema JSON 对象;每项可带 client_key/app_name/form,支持 relation target_app_ref")
|
|
218
|
+
schema_apply_apply.add_argument("--form-file", help="单应用表单结构 JSON 数组;form[].rows[][] 同时声明字段和表单分组布局")
|
|
218
219
|
schema_apply_apply.add_argument("--add-fields-file", help="字段 JSON 数组;字段可用 as_data_title/as_data_cover 标记数据标题/封面")
|
|
219
220
|
schema_apply_apply.add_argument("--update-fields-file", help="字段更新 JSON 数组;set 内可用 as_data_title/as_data_cover 标记数据标题/封面")
|
|
220
221
|
schema_apply_apply.add_argument("--remove-fields-file")
|
|
@@ -578,10 +579,10 @@ def _handle_schema_apply(args: argparse.Namespace, context: CliContext) -> dict:
|
|
|
578
579
|
fix_hint="Pass a JSON array, or a JSON object like {\"package_id\":1001,\"apps\":[...]} with at least one app item.",
|
|
579
580
|
error_code="APPS_FILE_EMPTY",
|
|
580
581
|
)
|
|
581
|
-
if args.app_key or args.app_name or args.app_title or args.add_fields_file or args.update_fields_file or args.remove_fields_file:
|
|
582
|
+
if args.app_key or args.app_name or args.app_title or args.form_file or args.add_fields_file or args.update_fields_file or args.remove_fields_file:
|
|
582
583
|
raise_config_error(
|
|
583
584
|
"schema apply multi-app mode accepts --package-id plus --apps-file only; --create-if-missing is optional.",
|
|
584
|
-
fix_hint="Use
|
|
585
|
+
fix_hint="Use apps[].form inside --apps-file for batch mode, or remove --apps-file and use --form-file for a single app.",
|
|
585
586
|
)
|
|
586
587
|
if package_id is None:
|
|
587
588
|
raise_config_error(
|
|
@@ -595,6 +596,7 @@ def _handle_schema_apply(args: argparse.Namespace, context: CliContext) -> dict:
|
|
|
595
596
|
create_if_missing=effective_create_if_missing,
|
|
596
597
|
publish=effective_publish,
|
|
597
598
|
apps=apps,
|
|
599
|
+
form=None,
|
|
598
600
|
add_fields=[],
|
|
599
601
|
update_fields=[],
|
|
600
602
|
remove_fields=[],
|
|
@@ -631,6 +633,7 @@ def _handle_schema_apply(args: argparse.Namespace, context: CliContext) -> dict:
|
|
|
631
633
|
visibility=load_object_arg(args.visibility_file, option_name="--visibility-file"),
|
|
632
634
|
create_if_missing=bool(args.create_if_missing),
|
|
633
635
|
publish=True if args.publish is None else bool(args.publish),
|
|
636
|
+
form=load_list_arg(args.form_file, option_name="--form-file") if args.form_file else [],
|
|
634
637
|
add_fields=load_list_arg(args.add_fields_file, option_name="--add-fields-file"),
|
|
635
638
|
update_fields=load_list_arg(args.update_fields_file, option_name="--update-fields-file"),
|
|
636
639
|
remove_fields=load_list_arg(args.remove_fields_file, option_name="--remove-fields-file"),
|
|
@@ -428,16 +428,17 @@ def build_builder_server() -> FastMCP:
|
|
|
428
428
|
visibility: dict | None = None,
|
|
429
429
|
create_if_missing: bool | None = None,
|
|
430
430
|
publish: bool = True,
|
|
431
|
+
form: list[dict] | None = None,
|
|
431
432
|
add_fields: list[dict] | None = None,
|
|
432
433
|
update_fields: list[dict] | None = None,
|
|
433
434
|
remove_fields: list[dict] | None = None,
|
|
434
435
|
apps: list[dict] | None = None,
|
|
435
436
|
) -> dict:
|
|
436
437
|
if apps:
|
|
437
|
-
if app_key or app_name or app_title or add_fields or update_fields or remove_fields:
|
|
438
|
+
if app_key or app_name or app_title or form or add_fields or update_fields or remove_fields:
|
|
438
439
|
return _config_failure(
|
|
439
440
|
"app_schema_apply multi-app mode accepts package_id plus apps only; create_if_missing is optional.",
|
|
440
|
-
fix_hint="Use
|
|
441
|
+
fix_hint="Use apps[].form for batch mode, or use the single-app arguments without apps.",
|
|
441
442
|
)
|
|
442
443
|
if package_id is None:
|
|
443
444
|
return _config_failure(
|
|
@@ -450,6 +451,7 @@ def build_builder_server() -> FastMCP:
|
|
|
450
451
|
visibility=visibility,
|
|
451
452
|
create_if_missing=True if create_if_missing is None else bool(create_if_missing),
|
|
452
453
|
publish=publish,
|
|
454
|
+
form=None,
|
|
453
455
|
add_fields=[],
|
|
454
456
|
update_fields=[],
|
|
455
457
|
remove_fields=[],
|
|
@@ -482,10 +484,11 @@ def build_builder_server() -> FastMCP:
|
|
|
482
484
|
visibility=visibility,
|
|
483
485
|
create_if_missing=effective_create_if_missing,
|
|
484
486
|
publish=publish,
|
|
487
|
+
form=form or [],
|
|
485
488
|
add_fields=add_fields or [],
|
|
486
489
|
update_fields=update_fields or [],
|
|
487
490
|
remove_fields=remove_fields or [],
|
|
488
|
-
apps=
|
|
491
|
+
apps=None,
|
|
489
492
|
)
|
|
490
493
|
|
|
491
494
|
@server.tool()
|