@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.
- package/README.md +3 -3
- package/package.json +1 -1
- package/pyproject.toml +1 -1
- package/skills/qingflow-cli/SKILL.md +37 -0
- package/skills/qingflow-cli/reference/builder/50-views.md +19 -4
- package/skills/qingflow-cli/reference/builder/80-buttons-associated-resources.md +2 -0
- package/src/qingflow_mcp/app_form_validator.py +53 -14
- package/src/qingflow_mcp/builder_facade/app_form.py +152 -47
- package/src/qingflow_mcp/builder_facade/models.py +19 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/complete.json +3 -3
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/address.json +1 -1
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/amount.json +1 -1
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/attachment.json +1 -1
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/code_block.json +3 -3
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/data_relation.json +3 -3
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/date.json +1 -1
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/datetime.json +1 -1
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/department.json +3 -3
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/email.json +1 -1
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/link.json +1 -1
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/long_text.json +1 -1
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/member.json +3 -3
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/multi_select.json +1 -1
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/number.json +1 -1
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/phone.json +1 -1
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/q_linker.json +3 -3
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/relation.json +3 -3
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/rich_text.json +1 -1
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/single_choice.json +1 -1
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/single_select.json +1 -1
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/subtable.json +3 -3
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/text.json +1 -1
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/formula.json +35 -0
- package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/summary.json +2 -2
- package/src/qingflow_mcp/builder_facade/schemas/views/manifest.json +2 -3
- package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/complete.json +68 -16
- package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/details/button-config.json +6 -6
- package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/details/data-permission.json +1 -1
- package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/details/display.json +13 -11
- package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/details/operation-permission.json +3 -3
- package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/details/query-condition.json +1 -1
- package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/summary.json +51 -6
- package/src/qingflow_mcp/builder_facade/service.py +198 -83
- package/src/qingflow_mcp/builder_facade/views_extract.py +21 -1
- package/src/qingflow_mcp/cli/commands/builder.py +4 -2
- package/src/qingflow_mcp/server_app_builder.py +2 -2
- package/src/qingflow_mcp/solution/compiler/view_compiler.py +2 -1
- package/src/qingflow_mcp/solution/executor.py +3 -1
- package/src/qingflow_mcp/solution/spec_models.py +1 -0
- 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:
|
|
@@ -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,
|
|
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:
|