@qingflow-tech/qingflow-app-builder-mcp 1.0.6 → 1.0.8
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 +98 -10
- package/skills/qingflow-app-builder/references/create-app.md +4 -1
- package/skills/qingflow-app-builder/references/gotchas.md +35 -1
- package/skills/qingflow-app-builder/references/match-rules.md +114 -0
- package/skills/qingflow-app-builder/references/tool-selection.md +9 -5
- package/skills/qingflow-app-builder/references/update-schema.md +6 -2
- package/skills/qingflow-app-builder/references/update-views.md +126 -5
- package/src/qingflow_mcp/builder_facade/models.py +433 -4
- package/src/qingflow_mcp/builder_facade/service.py +6536 -1212
- package/src/qingflow_mcp/cli/commands/builder.py +47 -26
- package/src/qingflow_mcp/cli/commands/record.py +58 -4
- package/src/qingflow_mcp/public_surface.py +4 -7
- package/src/qingflow_mcp/response_trim.py +17 -6
- package/src/qingflow_mcp/server.py +1 -0
- package/src/qingflow_mcp/server_app_builder.py +43 -20
- package/src/qingflow_mcp/server_app_user.py +1 -0
- package/src/qingflow_mcp/tools/ai_builder_tools.py +579 -119
- package/src/qingflow_mcp/tools/record_tools.py +9 -2
|
@@ -478,7 +478,6 @@ class RecordTools(ToolBase):
|
|
|
478
478
|
)
|
|
479
479
|
def record_insert(
|
|
480
480
|
app_key: str = "",
|
|
481
|
-
fields: JSONObject | None = None,
|
|
482
481
|
items: list[JSONObject] | None = None,
|
|
483
482
|
verify_write: bool = True,
|
|
484
483
|
output_profile: str = "normal",
|
|
@@ -486,7 +485,6 @@ class RecordTools(ToolBase):
|
|
|
486
485
|
return self.record_insert_public(
|
|
487
486
|
profile=DEFAULT_PROFILE,
|
|
488
487
|
app_key=app_key,
|
|
489
|
-
fields=fields,
|
|
490
488
|
items=items,
|
|
491
489
|
verify_write=verify_write,
|
|
492
490
|
output_profile=output_profile,
|
|
@@ -14118,11 +14116,15 @@ def _record_detail_associated_resource(raw: JSONObject) -> JSONObject:
|
|
|
14118
14116
|
view_key = _normalize_optional_text(raw.get("viewKey", raw.get("viewgraphKey")))
|
|
14119
14117
|
chart_key = _normalize_optional_text(raw.get("chartKey", raw.get("chartId")))
|
|
14120
14118
|
is_view = bool(view_key) or graph_type.endswith("view") or graph_type == "view"
|
|
14119
|
+
if is_view and not view_key and chart_key:
|
|
14120
|
+
view_key = chart_key
|
|
14121
|
+
chart_key = None
|
|
14121
14122
|
resource_type = "view" if is_view else "report"
|
|
14122
14123
|
view_type = _normalize_optional_text(raw.get("viewType", raw.get("viewgraphType", raw.get("graphType"))))
|
|
14123
14124
|
data_access = _record_detail_resource_data_access(resource_type=resource_type, view_type=view_type)
|
|
14124
14125
|
return {
|
|
14125
14126
|
"type": resource_type,
|
|
14127
|
+
"resource_type": resource_type,
|
|
14126
14128
|
"name": _normalize_optional_text(raw.get("viewName", raw.get("chartName", raw.get("name", raw.get("title"))))),
|
|
14127
14129
|
"app_key": _normalize_optional_text(raw.get("appKey", raw.get("targetAppKey"))),
|
|
14128
14130
|
"app_name": _normalize_optional_text(raw.get("formTitle", raw.get("appName", raw.get("targetAppName")))),
|
|
@@ -14130,10 +14132,15 @@ def _record_detail_associated_resource(raw: JSONObject) -> JSONObject:
|
|
|
14130
14132
|
"chart_key": chart_key,
|
|
14131
14133
|
"view_type": view_type,
|
|
14132
14134
|
"graph_type": raw.get("graphType"),
|
|
14135
|
+
"report_source": _record_detail_report_source(raw.get("sourceType")) if resource_type == "report" else None,
|
|
14133
14136
|
"data_access": data_access,
|
|
14134
14137
|
}
|
|
14135
14138
|
|
|
14136
14139
|
|
|
14140
|
+
def _record_detail_report_source(source_type: Any) -> str:
|
|
14141
|
+
return "dataset" if str(source_type or "").strip().upper() == "BI_DATASET" else "app"
|
|
14142
|
+
|
|
14143
|
+
|
|
14137
14144
|
def _record_detail_resource_data_access(*, resource_type: str, view_type: str | None) -> JSONObject:
|
|
14138
14145
|
if resource_type == "report":
|
|
14139
14146
|
return {
|