@josephyan/qingflow-cli 1.1.13 → 1.1.14

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 @josephyan/qingflow-cli@1.1.13
6
+ npm install @josephyan/qingflow-cli@1.1.14
7
7
  ```
8
8
 
9
9
  Run:
10
10
 
11
11
  ```bash
12
- npx -y -p @josephyan/qingflow-cli@1.1.13 qingflow
12
+ npx -y -p @josephyan/qingflow-cli@1.1.14 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": "1.1.13",
3
+ "version": "1.1.14",
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "qingflow-mcp"
7
- version = "1.1.13"
7
+ version = "1.1.14"
8
8
  description = "User-authenticated MCP server for Qingflow"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -4510,6 +4510,8 @@ def _builder_apply_summary(payload: JSONObject, resources: list[JSONObject]) ->
4510
4510
  and str(item.get("operation") or "") in {"updated", "layout_updated", "workflow_updated", "verified", "published"}
4511
4511
  )
4512
4512
  published_value = payload.get("published")
4513
+ if published_value is None:
4514
+ published_value = _builder_batch_published_value(payload)
4513
4515
  if published_value is None:
4514
4516
  publish_requested = payload.get("publish_requested")
4515
4517
  published_value = bool(publish_requested) and status in {"success", "partial_success"}
@@ -4539,6 +4541,24 @@ def _builder_apply_summary(payload: JSONObject, resources: list[JSONObject]) ->
4539
4541
  return summary
4540
4542
 
4541
4543
 
4544
+ def _builder_batch_published_value(payload: JSONObject) -> bool | None:
4545
+ apps = payload.get("apps")
4546
+ if not isinstance(apps, list) or not apps:
4547
+ return None
4548
+ values: list[bool] = []
4549
+ for item in apps:
4550
+ if not isinstance(item, dict):
4551
+ continue
4552
+ result = item.get("result") if isinstance(item.get("result"), dict) else {}
4553
+ if "published" in result:
4554
+ values.append(bool(result.get("published")))
4555
+ elif "published" in item:
4556
+ values.append(bool(item.get("published")))
4557
+ if not values:
4558
+ return None
4559
+ return all(values)
4560
+
4561
+
4542
4562
  def _builder_verification_truthy(value: object) -> bool:
4543
4563
  if value is None:
4544
4564
  return True