@josephyan/qingflow-cli 0.2.0-beta.71 → 0.2.0-beta.73
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/src/qingflow_mcp/backend_client.py +1 -0
- package/src/qingflow_mcp/builder_facade/models.py +22 -11
- package/src/qingflow_mcp/builder_facade/service.py +183 -121
- package/src/qingflow_mcp/cli/commands/__init__.py +4 -1
- package/src/qingflow_mcp/cli/commands/builder.py +81 -64
- package/src/qingflow_mcp/cli/commands/chart.py +18 -0
- package/src/qingflow_mcp/cli/commands/portal.py +25 -0
- package/src/qingflow_mcp/cli/commands/view.py +18 -0
- package/src/qingflow_mcp/cli/context.py +9 -0
- package/src/qingflow_mcp/response_trim.py +219 -178
- package/src/qingflow_mcp/server_app_builder.py +18 -42
- package/src/qingflow_mcp/server_app_user.py +21 -1
- package/src/qingflow_mcp/tools/ai_builder_tools.py +244 -124
- package/src/qingflow_mcp/tools/app_tools.py +0 -4
- package/src/qingflow_mcp/tools/resource_read_tools.py +399 -0
package/README.md
CHANGED
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
Install:
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
|
-
npm install @josephyan/qingflow-cli@0.2.0-beta.
|
|
6
|
+
npm install @josephyan/qingflow-cli@0.2.0-beta.73
|
|
7
7
|
```
|
|
8
8
|
|
|
9
9
|
Run:
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
npx -y -p @josephyan/qingflow-cli@0.2.0-beta.
|
|
12
|
+
npx -y -p @josephyan/qingflow-cli@0.2.0-beta.73 qingflow
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
Environment:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@josephyan/qingflow-cli",
|
|
3
|
-
"version": "0.2.0-beta.
|
|
3
|
+
"version": "0.2.0-beta.73",
|
|
4
4
|
"description": "Human-friendly Qingflow command line interface for auth, record operations, import, tasks, and stable builder flows.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
package/pyproject.toml
CHANGED
|
@@ -187,7 +187,8 @@ class FlowConditionRulePatch(StrictModel):
|
|
|
187
187
|
return value
|
|
188
188
|
payload = dict(value)
|
|
189
189
|
if "value" in payload and "values" not in payload:
|
|
190
|
-
|
|
190
|
+
raw_value = payload.pop("value")
|
|
191
|
+
payload["values"] = list(raw_value) if isinstance(raw_value, list) else [raw_value]
|
|
191
192
|
raw_operator = payload.get("operator", payload.get("op"))
|
|
192
193
|
if isinstance(raw_operator, str):
|
|
193
194
|
normalized = raw_operator.strip().lower()
|
|
@@ -238,7 +239,8 @@ class ViewFilterRulePatch(StrictModel):
|
|
|
238
239
|
return value
|
|
239
240
|
payload = dict(value)
|
|
240
241
|
if "value" in payload and "values" not in payload:
|
|
241
|
-
|
|
242
|
+
raw_value = payload.pop("value")
|
|
243
|
+
payload["values"] = list(raw_value) if isinstance(raw_value, list) else [raw_value]
|
|
242
244
|
raw_operator = payload.get("operator", payload.get("op"))
|
|
243
245
|
if isinstance(raw_operator, str):
|
|
244
246
|
normalized = raw_operator.strip().lower()
|
|
@@ -1092,7 +1094,8 @@ class ChartFilterRulePatch(StrictModel):
|
|
|
1092
1094
|
return value
|
|
1093
1095
|
payload = dict(value)
|
|
1094
1096
|
if "value" in payload and "values" not in payload:
|
|
1095
|
-
|
|
1097
|
+
raw_value = payload.pop("value")
|
|
1098
|
+
payload["values"] = list(raw_value) if isinstance(raw_value, list) else [raw_value]
|
|
1096
1099
|
raw_operator = payload.get("operator", payload.get("op"))
|
|
1097
1100
|
if isinstance(raw_operator, str):
|
|
1098
1101
|
normalized = raw_operator.strip().lower()
|
|
@@ -1338,7 +1341,7 @@ class PortalApplyRequest(StrictModel):
|
|
|
1338
1341
|
FieldPatch.model_rebuild()
|
|
1339
1342
|
|
|
1340
1343
|
|
|
1341
|
-
class
|
|
1344
|
+
class AppGetResponse(StrictModel):
|
|
1342
1345
|
app_key: str
|
|
1343
1346
|
title: str | None = None
|
|
1344
1347
|
app_icon: str | None = None
|
|
@@ -1349,39 +1352,48 @@ class AppReadSummaryResponse(StrictModel):
|
|
|
1349
1352
|
view_count: int = 0
|
|
1350
1353
|
workflow_enabled: bool = False
|
|
1351
1354
|
verification_hints: list[str] = Field(default_factory=list)
|
|
1355
|
+
editability: dict[str, bool | None] = Field(default_factory=dict)
|
|
1352
1356
|
|
|
1353
1357
|
|
|
1354
|
-
class
|
|
1358
|
+
class AppGetFieldsResponse(StrictModel):
|
|
1355
1359
|
app_key: str
|
|
1356
1360
|
fields: list[dict[str, Any]] = Field(default_factory=list)
|
|
1357
1361
|
field_count: int = 0
|
|
1358
1362
|
|
|
1359
1363
|
|
|
1360
|
-
class
|
|
1364
|
+
class AppGetLayoutResponse(StrictModel):
|
|
1361
1365
|
app_key: str
|
|
1362
1366
|
sections: list[dict[str, Any]] = Field(default_factory=list)
|
|
1363
1367
|
unplaced_fields: list[str] = Field(default_factory=list)
|
|
1364
1368
|
layout_mode_detected: str = "empty"
|
|
1365
1369
|
|
|
1366
1370
|
|
|
1367
|
-
class
|
|
1371
|
+
class AppGetViewsResponse(StrictModel):
|
|
1368
1372
|
app_key: str
|
|
1369
1373
|
views: list[dict[str, Any]] = Field(default_factory=list)
|
|
1370
1374
|
|
|
1371
1375
|
|
|
1372
|
-
class
|
|
1376
|
+
class AppGetFlowResponse(StrictModel):
|
|
1373
1377
|
app_key: str
|
|
1374
1378
|
enabled: bool = False
|
|
1375
1379
|
nodes: list[dict[str, Any]] = Field(default_factory=list)
|
|
1376
1380
|
transitions: list[dict[str, Any]] = Field(default_factory=list)
|
|
1377
1381
|
|
|
1378
1382
|
|
|
1379
|
-
class
|
|
1383
|
+
class AppGetChartsResponse(StrictModel):
|
|
1380
1384
|
app_key: str
|
|
1381
1385
|
charts: list[dict[str, Any]] = Field(default_factory=list)
|
|
1382
1386
|
chart_count: int = 0
|
|
1383
1387
|
|
|
1384
1388
|
|
|
1389
|
+
AppReadSummaryResponse = AppGetResponse
|
|
1390
|
+
AppFieldsReadResponse = AppGetFieldsResponse
|
|
1391
|
+
AppLayoutReadResponse = AppGetLayoutResponse
|
|
1392
|
+
AppViewsReadResponse = AppGetViewsResponse
|
|
1393
|
+
AppFlowReadResponse = AppGetFlowResponse
|
|
1394
|
+
AppChartsReadResponse = AppGetChartsResponse
|
|
1395
|
+
|
|
1396
|
+
|
|
1385
1397
|
class PortalListResponse(StrictModel):
|
|
1386
1398
|
items: list[dict[str, Any]] = Field(default_factory=list)
|
|
1387
1399
|
total: int = 0
|
|
@@ -1415,7 +1427,7 @@ class PortalGetResponse(StrictModel):
|
|
|
1415
1427
|
|
|
1416
1428
|
|
|
1417
1429
|
class ViewGetResponse(StrictModel):
|
|
1418
|
-
|
|
1430
|
+
view_key: str
|
|
1419
1431
|
base_info: dict[str, Any] = Field(default_factory=dict)
|
|
1420
1432
|
config: dict[str, Any] = Field(default_factory=dict)
|
|
1421
1433
|
questions: list[dict[str, Any]] = Field(default_factory=list)
|
|
@@ -1426,7 +1438,6 @@ class ChartGetResponse(StrictModel):
|
|
|
1426
1438
|
chart_id: str
|
|
1427
1439
|
base: dict[str, Any] = Field(default_factory=dict)
|
|
1428
1440
|
config: dict[str, Any] = Field(default_factory=dict)
|
|
1429
|
-
data: dict[str, Any] = Field(default_factory=dict)
|
|
1430
1441
|
|
|
1431
1442
|
|
|
1432
1443
|
class SchemaPlanRequest(StrictModel):
|