@josephyan/qingflow-app-builder-mcp 0.2.0-beta.4 → 0.2.0-beta.41

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.
Files changed (39) hide show
  1. package/README.md +3 -3
  2. package/package.json +1 -1
  3. package/pyproject.toml +3 -1
  4. package/skills/qingflow-app-builder/SKILL.md +154 -22
  5. package/skills/qingflow-app-builder/references/create-app.md +51 -21
  6. package/skills/qingflow-app-builder/references/environments.md +1 -1
  7. package/skills/qingflow-app-builder/references/flow-actors-and-permissions.md +123 -0
  8. package/skills/qingflow-app-builder/references/gotchas.md +28 -1
  9. package/skills/qingflow-app-builder/references/solution-playbooks.md +14 -12
  10. package/skills/qingflow-app-builder/references/tool-selection.md +45 -17
  11. package/skills/qingflow-app-builder/references/update-flow.md +112 -25
  12. package/skills/qingflow-app-builder/references/update-layout.md +11 -24
  13. package/skills/qingflow-app-builder/references/update-schema.md +1 -23
  14. package/skills/qingflow-app-builder/references/update-views.md +87 -21
  15. package/src/qingflow_mcp/__init__.py +1 -1
  16. package/src/qingflow_mcp/backend_client.py +189 -0
  17. package/src/qingflow_mcp/builder_facade/models.py +584 -1
  18. package/src/qingflow_mcp/builder_facade/service.py +4698 -262
  19. package/src/qingflow_mcp/config.py +39 -0
  20. package/src/qingflow_mcp/import_store.py +121 -0
  21. package/src/qingflow_mcp/list_type_labels.py +24 -0
  22. package/src/qingflow_mcp/server.py +131 -16
  23. package/src/qingflow_mcp/server_app_builder.py +132 -72
  24. package/src/qingflow_mcp/server_app_user.py +143 -187
  25. package/src/qingflow_mcp/solution/compiler/form_compiler.py +14 -4
  26. package/src/qingflow_mcp/solution/compiler/workflow_compiler.py +41 -2
  27. package/src/qingflow_mcp/solution/executor.py +44 -7
  28. package/src/qingflow_mcp/tools/ai_builder_tools.py +1567 -144
  29. package/src/qingflow_mcp/tools/app_tools.py +243 -14
  30. package/src/qingflow_mcp/tools/approval_tools.py +411 -76
  31. package/src/qingflow_mcp/tools/directory_tools.py +203 -31
  32. package/src/qingflow_mcp/tools/feedback_tools.py +230 -0
  33. package/src/qingflow_mcp/tools/file_tools.py +1 -0
  34. package/src/qingflow_mcp/tools/import_tools.py +1164 -0
  35. package/src/qingflow_mcp/tools/portal_tools.py +31 -0
  36. package/src/qingflow_mcp/tools/record_tools.py +4943 -1025
  37. package/src/qingflow_mcp/tools/task_context_tools.py +1335 -0
  38. package/src/qingflow_mcp/tools/task_tools.py +376 -225
  39. package/src/qingflow_mcp/tools/workflow_tools.py +78 -4
@@ -18,10 +18,18 @@ class PortalTools(ToolBase):
18
18
  def portal_get(profile: str = DEFAULT_PROFILE, dash_key: str = "", being_draft: bool = False) -> JSONObject:
19
19
  return self.portal_get(profile=profile, dash_key=dash_key, being_draft=being_draft)
20
20
 
21
+ @mcp.tool()
22
+ def portal_get_base_info(profile: str = DEFAULT_PROFILE, dash_key: str = "") -> JSONObject:
23
+ return self.portal_get_base_info(profile=profile, dash_key=dash_key)
24
+
21
25
  @mcp.tool()
22
26
  def portal_create(profile: str = DEFAULT_PROFILE, payload: JSONObject | None = None) -> JSONObject:
23
27
  return self.portal_create(profile=profile, payload=payload or {})
24
28
 
29
+ @mcp.tool(description=self._high_risk_tool_description(operation="update", target="portal base settings"))
30
+ def portal_update_base_info(profile: str = DEFAULT_PROFILE, dash_key: str = "", payload: JSONObject | None = None) -> JSONObject:
31
+ return self.portal_update_base_info(profile=profile, dash_key=dash_key, payload=payload or {})
32
+
25
33
  @mcp.tool(description=self._high_risk_tool_description(operation="update", target="portal configuration"))
26
34
  def portal_update(profile: str = DEFAULT_PROFILE, dash_key: str = "", payload: JSONObject | None = None) -> JSONObject:
27
35
  return self.portal_update(profile=profile, dash_key=dash_key, payload=payload or {})
@@ -59,6 +67,29 @@ class PortalTools(ToolBase):
59
67
 
60
68
  return self._run(profile, runner)
61
69
 
70
+ def portal_get_base_info(self, *, profile: str, dash_key: str) -> JSONObject:
71
+ self._require_dash_key(dash_key)
72
+
73
+ def runner(session_profile, context):
74
+ result = self.backend.request("GET", context, f"/dash/{dash_key}/baseInfo")
75
+ return {"profile": profile, "ws_id": session_profile.selected_ws_id, "dash_key": dash_key, "result": result}
76
+
77
+ return self._run(profile, runner)
78
+
79
+ def portal_update_base_info(self, *, profile: str, dash_key: str, payload: JSONObject) -> JSONObject:
80
+ self._require_dash_key(dash_key)
81
+ body = self._require_dict(payload)
82
+
83
+ def runner(session_profile, context):
84
+ result = self.backend.request("POST", context, f"/dash/{dash_key}/baseInfo", json_body=body)
85
+ return self._attach_human_review_notice(
86
+ {"profile": profile, "ws_id": session_profile.selected_ws_id, "dash_key": dash_key, "result": result},
87
+ operation="update",
88
+ target="portal base settings",
89
+ )
90
+
91
+ return self._run(profile, runner)
92
+
62
93
  def portal_update(self, *, profile: str, dash_key: str, payload: JSONObject) -> JSONObject:
63
94
  self._require_dash_key(dash_key)
64
95
  body = self._require_dict(payload)