@qingflow-tech/qingflow-cli 1.1.50-beta.3 → 1.1.50-beta.5

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 (50) hide show
  1. package/README.md +3 -3
  2. package/package.json +1 -1
  3. package/pyproject.toml +1 -1
  4. package/skills/qingflow-cli/SKILL.md +37 -0
  5. package/skills/qingflow-cli/reference/builder/50-views.md +19 -4
  6. package/skills/qingflow-cli/reference/builder/80-buttons-associated-resources.md +2 -0
  7. package/src/qingflow_mcp/app_form_validator.py +53 -14
  8. package/src/qingflow_mcp/builder_facade/app_form.py +152 -47
  9. package/src/qingflow_mcp/builder_facade/models.py +19 -0
  10. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/complete.json +3 -3
  11. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/address.json +1 -1
  12. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/amount.json +1 -1
  13. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/attachment.json +1 -1
  14. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/code_block.json +3 -3
  15. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/data_relation.json +3 -3
  16. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/date.json +1 -1
  17. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/datetime.json +1 -1
  18. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/department.json +3 -3
  19. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/email.json +1 -1
  20. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/link.json +1 -1
  21. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/long_text.json +1 -1
  22. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/member.json +3 -3
  23. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/multi_select.json +1 -1
  24. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/number.json +1 -1
  25. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/phone.json +1 -1
  26. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/q_linker.json +3 -3
  27. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/relation.json +3 -3
  28. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/rich_text.json +1 -1
  29. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/single_choice.json +1 -1
  30. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/single_select.json +1 -1
  31. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/subtable.json +3 -3
  32. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/text.json +1 -1
  33. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/formula.json +35 -0
  34. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/summary.json +2 -2
  35. package/src/qingflow_mcp/builder_facade/schemas/views/manifest.json +2 -3
  36. package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/complete.json +68 -16
  37. package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/details/button-config.json +6 -6
  38. package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/details/data-permission.json +1 -1
  39. package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/details/display.json +13 -11
  40. package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/details/operation-permission.json +3 -3
  41. package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/details/query-condition.json +1 -1
  42. package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/summary.json +51 -6
  43. package/src/qingflow_mcp/builder_facade/service.py +198 -83
  44. package/src/qingflow_mcp/builder_facade/views_extract.py +21 -1
  45. package/src/qingflow_mcp/cli/commands/builder.py +4 -2
  46. package/src/qingflow_mcp/server_app_builder.py +2 -2
  47. package/src/qingflow_mcp/solution/compiler/view_compiler.py +2 -1
  48. package/src/qingflow_mcp/solution/executor.py +3 -1
  49. package/src/qingflow_mcp/solution/spec_models.py +1 -0
  50. package/src/qingflow_mcp/tools/ai_builder_tools.py +7 -5
@@ -911,13 +911,14 @@ class SolutionExecutor:
911
911
  data.setdefault("asosChartConfig", {"limitType": 1, "asosChartIdList": []})
912
912
  data.setdefault("viewgraphGanttConfigVO", None)
913
913
  data.setdefault("viewgraphHierarchyConfigVO", None)
914
+ data.setdefault("viewgraphCalendarConfigVO", None)
914
915
  data.setdefault("viewgraphLimitFormula", "")
915
916
  data.setdefault("buttonConfigDTOList", [])
916
917
  if not data.get("viewgraphQuestions"):
917
918
  data["viewgraphQuestions"] = _build_viewgraph_questions(schema, visible_que_ids)
918
919
  if not data.get("viewgraphSorts"):
919
920
  data["viewgraphSorts"] = [{"queId": 0, "beingSortAscend": True, "queType": 8}]
920
- if data.get("viewgraphType") in {"cardView", "boardView", "ganttView", "hierarchyView"}:
921
+ if data.get("viewgraphType") in {"cardView", "boardView", "ganttView", "hierarchyView", "calendarView"}:
921
922
  data["titleQue"] = visible_que_ids[0] if visible_que_ids else None
922
923
  else:
923
924
  data.setdefault("titleQue", None)
@@ -2234,6 +2235,7 @@ def _portal_view_type(store: RunArtifactStore, entity_id: str, view_id: str) ->
2234
2235
  "board": "boardView",
2235
2236
  "gantt": "ganttView",
2236
2237
  "hierarchy": "hierarchyView",
2238
+ "calendar": "calendarView",
2237
2239
  }
2238
2240
  for entity in store.data.get("normalized_solution_spec", {}).get("entities", []):
2239
2241
  if entity["entity_id"] != entity_id:
@@ -56,6 +56,7 @@ class ViewType(str, Enum):
56
56
  board = "board"
57
57
  gantt = "gantt"
58
58
  hierarchy = "hierarchy"
59
+ calendar = "calendar"
59
60
 
60
61
 
61
62
  class ChartType(str, Enum):
@@ -2009,20 +2009,22 @@ class AiBuilderTools(ToolBase):
2009
2009
  suggested_next_call={"tool_name": "app_get_charts", "arguments": {"profile": profile, "app_key": app_key}},
2010
2010
  )
2011
2011
 
2012
- def app_get_buttons(self, *, profile: str, app_key: str = "", app_keys: list[str] | None = None) -> JSONObject:
2012
+ def app_get_buttons(self, *, profile: str, app_key: str = "", app_keys: list[str] | None = None, button_text: str | None = None) -> JSONObject:
2013
2013
  if app_keys is not None:
2014
2014
  return self._read_app_batch(
2015
2015
  tool_name="app_get_buttons",
2016
2016
  profile=profile,
2017
2017
  app_keys=app_keys,
2018
- read_one=lambda item_app_key: self.app_get_buttons(profile=profile, app_key=item_app_key, app_keys=None),
2018
+ read_one=lambda item_app_key: self.app_get_buttons(profile=profile, app_key=item_app_key, app_keys=None, button_text=button_text),
2019
2019
  )
2020
- normalized_args = {"app_key": app_key}
2020
+ normalized_args: JSONObject = {"app_key": app_key}
2021
+ if str(button_text or "").strip():
2022
+ normalized_args["button_text"] = str(button_text or "").strip()
2021
2023
  return _safe_tool_call(
2022
- lambda: self._facade.app_get_buttons(profile=profile, app_key=app_key),
2024
+ lambda: self._facade.app_get_buttons(profile=profile, app_key=app_key, button_text=button_text),
2023
2025
  error_code="APP_GET_BUTTONS_FAILED",
2024
2026
  normalized_args=normalized_args,
2025
- suggested_next_call={"tool_name": "app_get_buttons", "arguments": {"profile": profile, "app_key": app_key}},
2027
+ suggested_next_call={"tool_name": "app_get_buttons", "arguments": {"profile": profile, **normalized_args}},
2026
2028
  )
2027
2029
 
2028
2030
  def app_get_associated_resources(self, *, profile: str, app_key: str = "", app_keys: list[str] | None = None) -> JSONObject: