@qingflow-tech/qingflow-app-builder-mcp 1.0.13 → 1.0.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 @qingflow-tech/qingflow-app-builder-mcp@1.0.13
6
+ npm install @qingflow-tech/qingflow-app-builder-mcp@1.0.14
7
7
  ```
8
8
 
9
9
  Run:
10
10
 
11
11
  ```bash
12
- npx -y -p @qingflow-tech/qingflow-app-builder-mcp@1.0.13 qingflow-app-builder-mcp
12
+ npx -y -p @qingflow-tech/qingflow-app-builder-mcp@1.0.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": "@qingflow-tech/qingflow-app-builder-mcp",
3
- "version": "1.0.13",
3
+ "version": "1.0.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.0.13"
7
+ version = "1.0.14"
8
8
  description = "User-authenticated MCP server for Qingflow"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -17721,8 +17721,23 @@ def _apply_field_mutation(field: dict[str, Any], mutation: Any) -> None:
17721
17721
  field["config"] = deepcopy(payload["code_block_config"])
17722
17722
  question_rebuild_required = True
17723
17723
  if "code_block_binding" in payload:
17724
+ existing_code_block_config = _normalize_code_block_config(field.get("code_block_config") or field.get("config") or {})
17725
+ next_code_block_binding = _normalize_code_block_binding(payload["code_block_binding"])
17724
17726
  field["code_block_binding"] = payload["code_block_binding"]
17725
17727
  field["_explicit_code_block_binding"] = True
17728
+ if (
17729
+ "code_block_config" not in payload
17730
+ and existing_code_block_config is not None
17731
+ and next_code_block_binding is not None
17732
+ ):
17733
+ existing_code = _normalize_code_block_output_assignment(
17734
+ _strip_code_block_generated_input_prelude(str(existing_code_block_config.get("code_content") or ""))
17735
+ )
17736
+ next_code = _normalize_code_block_output_assignment(str(next_code_block_binding.get("code") or ""))
17737
+ if existing_code != next_code:
17738
+ existing_code_block_config["code_content"] = next_code
17739
+ field["code_block_config"] = existing_code_block_config
17740
+ field["config"] = deepcopy(existing_code_block_config)
17726
17741
  question_rebuild_required = True
17727
17742
  if "auto_trigger" in payload:
17728
17743
  field["auto_trigger"] = payload["auto_trigger"]
@@ -18228,6 +18243,15 @@ def _compile_code_block_binding_fields(
18228
18243
  "alias_id": _coerce_positive_int(output_item.get("alias_id")),
18229
18244
  }
18230
18245
  )
18246
+ current_field_refs: set[int] = set()
18247
+ for field in next_fields:
18248
+ if not isinstance(field, dict):
18249
+ continue
18250
+ field_ref = _coerce_positive_int(field.get("que_id"))
18251
+ if field_ref is None:
18252
+ field_ref = _coerce_any_int(field.get("que_temp_id"))
18253
+ if field_ref is not None:
18254
+ current_field_refs.add(field_ref)
18231
18255
  carried_relations: list[dict[str, Any]] = []
18232
18256
  for relation in existing_relations:
18233
18257
  if not isinstance(relation, dict):
@@ -18238,6 +18262,8 @@ def _compile_code_block_binding_fields(
18238
18262
  alias_config = relation.get("aliasConfig") if isinstance(relation.get("aliasConfig"), dict) else {}
18239
18263
  source_ref = _coerce_positive_int(alias_config.get("queId"))
18240
18264
  target_ref = _coerce_positive_int(relation.get("queId"))
18265
+ if source_ref not in current_field_refs or target_ref not in current_field_refs:
18266
+ continue
18241
18267
  if (source_ref is not None and source_ref in affected_source_refs) or (target_ref is not None and target_ref in affected_target_refs):
18242
18268
  continue
18243
18269
  carried_relations.append(deepcopy(relation))