@qingflow-tech/qingflow-app-builder-mcp 1.0.30 → 1.0.31
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
CHANGED
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
Install:
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
|
-
npm install @qingflow-tech/qingflow-app-builder-mcp@1.0.
|
|
6
|
+
npm install @qingflow-tech/qingflow-app-builder-mcp@1.0.31
|
|
7
7
|
```
|
|
8
8
|
|
|
9
9
|
Run:
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
npx -y -p @qingflow-tech/qingflow-app-builder-mcp@1.0.
|
|
12
|
+
npx -y -p @qingflow-tech/qingflow-app-builder-mcp@1.0.31 qingflow-app-builder-mcp
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
Environment:
|
package/package.json
CHANGED
package/pyproject.toml
CHANGED
|
@@ -99,6 +99,8 @@ from .models import (
|
|
|
99
99
|
FlowNodePermissionsPatch,
|
|
100
100
|
)
|
|
101
101
|
|
|
102
|
+
BUILDER_PORTAL_LIST_DETAIL_VERIFY_LIMIT = 50
|
|
103
|
+
|
|
102
104
|
|
|
103
105
|
QUESTION_TYPE_TO_FIELD_TYPE: dict[int, str] = {
|
|
104
106
|
2: FieldType.text.value,
|
|
@@ -5998,6 +6000,42 @@ class AiBuilderFacade:
|
|
|
5998
6000
|
warnings: list[dict[str, Any]] = []
|
|
5999
6001
|
items: list[dict[str, Any]] = []
|
|
6000
6002
|
permission_verified = True
|
|
6003
|
+
if isinstance(raw_items, list) and len(raw_items) > BUILDER_PORTAL_LIST_DETAIL_VERIFY_LIMIT:
|
|
6004
|
+
normalized = _normalize_portal_list_items(raw_items)
|
|
6005
|
+
response = PortalListResponse(items=normalized, total=len(normalized))
|
|
6006
|
+
warnings.append(
|
|
6007
|
+
_warning(
|
|
6008
|
+
"PORTAL_PERMISSION_VERIFICATION_SKIPPED",
|
|
6009
|
+
"builder portal_list returned the discovery list without per-portal edit permission checks because the workspace has too many portals",
|
|
6010
|
+
total_available=len(raw_items),
|
|
6011
|
+
detail_verify_limit=BUILDER_PORTAL_LIST_DETAIL_VERIFY_LIMIT,
|
|
6012
|
+
)
|
|
6013
|
+
)
|
|
6014
|
+
return {
|
|
6015
|
+
"status": "success",
|
|
6016
|
+
"error_code": None,
|
|
6017
|
+
"recoverable": False,
|
|
6018
|
+
"message": "list builder portal discovery items",
|
|
6019
|
+
"normalized_args": {},
|
|
6020
|
+
"missing_fields": [],
|
|
6021
|
+
"allowed_values": {},
|
|
6022
|
+
"details": {
|
|
6023
|
+
"total_available": len(raw_items),
|
|
6024
|
+
"detail_verify_limit": BUILDER_PORTAL_LIST_DETAIL_VERIFY_LIMIT,
|
|
6025
|
+
"permission_filter_applied": False,
|
|
6026
|
+
},
|
|
6027
|
+
"request_id": None,
|
|
6028
|
+
"suggested_next_call": None,
|
|
6029
|
+
"noop": False,
|
|
6030
|
+
"warnings": warnings,
|
|
6031
|
+
"verification": {
|
|
6032
|
+
"portal_list_loaded": True,
|
|
6033
|
+
"portal_permissions_verified": False,
|
|
6034
|
+
"permission_filter_applied": False,
|
|
6035
|
+
},
|
|
6036
|
+
"verified": False,
|
|
6037
|
+
**response.model_dump(mode="json"),
|
|
6038
|
+
}
|
|
6001
6039
|
for raw_item in raw_items if isinstance(raw_items, list) else []:
|
|
6002
6040
|
if not isinstance(raw_item, dict):
|
|
6003
6041
|
continue
|
|
@@ -5343,6 +5343,7 @@ _BUILDER_TOOL_CONTRACTS: dict[str, JSONObject] = {
|
|
|
5343
5343
|
"returns builder-configurable portal list items only",
|
|
5344
5344
|
"use this as the builder portal discovery path before portal_get",
|
|
5345
5345
|
"results are compact list items, not raw dash payloads",
|
|
5346
|
+
"large workspaces may return an unfiltered discovery list with portal_permissions_verified=false instead of probing every portal detail",
|
|
5346
5347
|
],
|
|
5347
5348
|
"minimal_example": {
|
|
5348
5349
|
"profile": "default",
|