@josephyan/qingflow-app-builder-mcp 1.1.12 → 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-app-builder-mcp@1.1.12
6
+ npm install @josephyan/qingflow-app-builder-mcp@1.1.14
7
7
  ```
8
8
 
9
9
  Run:
10
10
 
11
11
  ```bash
12
- npx -y -p @josephyan/qingflow-app-builder-mcp@1.1.12 qingflow-app-builder-mcp
12
+ npx -y -p @josephyan/qingflow-app-builder-mcp@1.1.14 qingflow-app-builder-mcp
13
13
  ```
14
14
 
15
15
  Environment:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@josephyan/qingflow-app-builder-mcp",
3
- "version": "1.1.12",
3
+ "version": "1.1.14",
4
4
  "description": "Builder MCP for Qingflow app/package/system design and staged solution workflows.",
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.12"
7
+ version = "1.1.14"
8
8
  description = "User-authenticated MCP server for Qingflow"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -486,6 +486,9 @@ class AiBuilderFacade:
486
486
  "verified": verified,
487
487
  "app_key": app_key,
488
488
  "current_version_id": apply_result.get("currentVersionId"),
489
+ "write_executed": True,
490
+ "write_succeeded": True,
491
+ "safe_to_retry": False,
489
492
  }
490
493
  return finalize(self._append_publish_result(profile=profile, app_key=app_key, publish=publish, response=response))
491
494
 
@@ -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