@josephyan/qingflow-cli 0.2.0-beta.984 → 0.2.0-beta.986
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 +2 -2
- package/docs/local-agent-install.md +70 -11
- package/package.json +1 -1
- package/pyproject.toml +1 -1
- package/src/qingflow_mcp/__init__.py +1 -1
- package/src/qingflow_mcp/builder_facade/service.py +47 -21
- package/src/qingflow_mcp/cli/commands/auth.py +14 -43
- package/src/qingflow_mcp/cli/commands/task.py +4 -1
- package/src/qingflow_mcp/cli/commands/workspace.py +0 -8
- package/src/qingflow_mcp/cli/formatters.py +0 -21
- package/src/qingflow_mcp/config.py +39 -0
- package/src/qingflow_mcp/errors.py +2 -2
- package/src/qingflow_mcp/public_surface.py +2 -6
- package/src/qingflow_mcp/response_trim.py +1 -8
- package/src/qingflow_mcp/server.py +1 -1
- package/src/qingflow_mcp/server_app_builder.py +4 -28
- package/src/qingflow_mcp/server_app_user.py +4 -28
- package/src/qingflow_mcp/session_store.py +31 -5
- package/src/qingflow_mcp/tools/ai_builder_tools.py +117 -1
- package/src/qingflow_mcp/tools/app_tools.py +51 -1
- package/src/qingflow_mcp/tools/approval_tools.py +82 -1
- package/src/qingflow_mcp/tools/auth_tools.py +258 -288
- package/src/qingflow_mcp/tools/base.py +204 -4
- package/src/qingflow_mcp/tools/code_block_tools.py +21 -0
- package/src/qingflow_mcp/tools/custom_button_tools.py +24 -1
- package/src/qingflow_mcp/tools/directory_tools.py +28 -1
- package/src/qingflow_mcp/tools/feedback_tools.py +8 -0
- package/src/qingflow_mcp/tools/file_tools.py +25 -1
- package/src/qingflow_mcp/tools/import_tools.py +40 -1
- package/src/qingflow_mcp/tools/navigation_tools.py +34 -1
- package/src/qingflow_mcp/tools/package_tools.py +37 -1
- package/src/qingflow_mcp/tools/portal_tools.py +28 -1
- package/src/qingflow_mcp/tools/qingbi_report_tools.py +38 -1
- package/src/qingflow_mcp/tools/record_tools.py +255 -2
- package/src/qingflow_mcp/tools/repository_dev_tools.py +21 -2
- package/src/qingflow_mcp/tools/resource_read_tools.py +23 -1
- package/src/qingflow_mcp/tools/role_tools.py +19 -1
- package/src/qingflow_mcp/tools/solution_tools.py +56 -1
- package/src/qingflow_mcp/tools/task_context_tools.py +205 -6
- package/src/qingflow_mcp/tools/task_tools.py +49 -3
- package/src/qingflow_mcp/tools/view_tools.py +56 -1
- package/src/qingflow_mcp/tools/workflow_tools.py +65 -1
- package/src/qingflow_mcp/tools/workspace_tools.py +14 -225
|
@@ -40,7 +40,7 @@ from ..builder_facade.models import (
|
|
|
40
40
|
)
|
|
41
41
|
from ..builder_facade.service import AiBuilderFacade, INTEGRATION_OUTPUT_TARGET_FIELD_TYPES
|
|
42
42
|
from .app_tools import AppTools
|
|
43
|
-
from .base import ToolBase
|
|
43
|
+
from .base import ToolBase, tool_cn_name
|
|
44
44
|
from .custom_button_tools import CustomButtonTools
|
|
45
45
|
from .directory_tools import DirectoryTools
|
|
46
46
|
from .package_tools import PackageTools
|
|
@@ -55,7 +55,17 @@ PUBLIC_STABLE_FLOW_NODE_TYPES = ["start", "approve", "fill", "copy", "webhook",
|
|
|
55
55
|
|
|
56
56
|
|
|
57
57
|
class AiBuilderTools(ToolBase):
|
|
58
|
+
"""AI Builder 工具(中文名:AI 搭建编排)。
|
|
59
|
+
|
|
60
|
+
类型:应用搭建编排工具。
|
|
61
|
+
主要职责:
|
|
62
|
+
1. 编排 schema/layout/views/flow/charts 的计划与应用;
|
|
63
|
+
2. 聚合 builder 侧读写与校验能力;
|
|
64
|
+
3. 将复杂搭建流程收敛为可执行步骤。
|
|
65
|
+
"""
|
|
66
|
+
|
|
58
67
|
def __init__(self, sessions, backend) -> None:
|
|
68
|
+
"""执行内部辅助逻辑。"""
|
|
59
69
|
super().__init__(sessions, backend)
|
|
60
70
|
self._facade = AiBuilderFacade(
|
|
61
71
|
apps=AppTools(sessions, backend),
|
|
@@ -71,6 +81,7 @@ class AiBuilderTools(ToolBase):
|
|
|
71
81
|
)
|
|
72
82
|
|
|
73
83
|
def register(self, mcp) -> None:
|
|
84
|
+
"""注册当前工具到 MCP 服务。"""
|
|
74
85
|
@mcp.tool()
|
|
75
86
|
def builder_tool_contract(tool_name: str = "") -> JSONObject:
|
|
76
87
|
return self.builder_tool_contract(tool_name=tool_name)
|
|
@@ -451,7 +462,9 @@ class AiBuilderTools(ToolBase):
|
|
|
451
462
|
expected_package_id=expected_package_id,
|
|
452
463
|
)
|
|
453
464
|
|
|
465
|
+
@tool_cn_name("分组列表查询")
|
|
454
466
|
def package_list(self, *, profile: str, trial_status: str = "all") -> JSONObject:
|
|
467
|
+
"""执行分组与包相关逻辑。"""
|
|
455
468
|
normalized_args = {"trial_status": trial_status}
|
|
456
469
|
return _safe_tool_call(
|
|
457
470
|
lambda: self._facade.package_list(profile=profile, trial_status=trial_status),
|
|
@@ -460,7 +473,9 @@ class AiBuilderTools(ToolBase):
|
|
|
460
473
|
suggested_next_call={"tool_name": "package_list", "arguments": {"profile": profile, "trial_status": trial_status}},
|
|
461
474
|
)
|
|
462
475
|
|
|
476
|
+
@tool_cn_name("分组解析")
|
|
463
477
|
def package_resolve(self, *, profile: str, package_name: str) -> JSONObject:
|
|
478
|
+
"""执行分组与包相关逻辑。"""
|
|
464
479
|
normalized_args = {"package_name": package_name}
|
|
465
480
|
return _safe_tool_call(
|
|
466
481
|
lambda: self._facade.package_resolve(profile=profile, package_name=package_name),
|
|
@@ -469,7 +484,9 @@ class AiBuilderTools(ToolBase):
|
|
|
469
484
|
suggested_next_call={"tool_name": "package_resolve", "arguments": {"profile": profile, "package_name": package_name}},
|
|
470
485
|
)
|
|
471
486
|
|
|
487
|
+
@tool_cn_name("搭建工具契约查询")
|
|
472
488
|
def builder_tool_contract(self, *, tool_name: str) -> JSONObject:
|
|
489
|
+
"""执行工具方法逻辑。"""
|
|
473
490
|
requested = str(tool_name or "").strip()
|
|
474
491
|
public_tool_names = public_builder_contract_tool_names()
|
|
475
492
|
if requested in _PRIVATE_BUILDER_TOOL_CONTRACTS:
|
|
@@ -519,6 +536,7 @@ class AiBuilderTools(ToolBase):
|
|
|
519
536
|
"contract": contract,
|
|
520
537
|
}
|
|
521
538
|
|
|
539
|
+
@tool_cn_name("分组创建")
|
|
522
540
|
def package_create(
|
|
523
541
|
self,
|
|
524
542
|
*,
|
|
@@ -528,6 +546,7 @@ class AiBuilderTools(ToolBase):
|
|
|
528
546
|
color: str | None = None,
|
|
529
547
|
visibility: JSONObject | None = None,
|
|
530
548
|
) -> JSONObject:
|
|
549
|
+
"""执行分组与包相关逻辑。"""
|
|
531
550
|
visibility_patch = None
|
|
532
551
|
if visibility is not None:
|
|
533
552
|
try:
|
|
@@ -562,7 +581,9 @@ class AiBuilderTools(ToolBase):
|
|
|
562
581
|
},
|
|
563
582
|
)
|
|
564
583
|
|
|
584
|
+
@tool_cn_name("分组详情查询")
|
|
565
585
|
def package_get(self, *, profile: str, package_id: int | None = None) -> JSONObject:
|
|
586
|
+
"""执行分组与包相关逻辑。"""
|
|
566
587
|
normalized_args = {"package_id": package_id}
|
|
567
588
|
return _publicize_package_fields(_safe_tool_call(
|
|
568
589
|
lambda: self._facade.package_get(profile=profile, package_id=package_id),
|
|
@@ -571,6 +592,7 @@ class AiBuilderTools(ToolBase):
|
|
|
571
592
|
suggested_next_call={"tool_name": "package_get", "arguments": {"profile": profile, "package_id": package_id}},
|
|
572
593
|
))
|
|
573
594
|
|
|
595
|
+
@tool_cn_name("分组配置应用")
|
|
574
596
|
def package_apply(
|
|
575
597
|
self,
|
|
576
598
|
*,
|
|
@@ -584,6 +606,7 @@ class AiBuilderTools(ToolBase):
|
|
|
584
606
|
items: list[dict] | None = None,
|
|
585
607
|
allow_detach: bool = False,
|
|
586
608
|
) -> JSONObject:
|
|
609
|
+
"""执行分组与包相关逻辑。"""
|
|
587
610
|
visibility_patch = None
|
|
588
611
|
if visibility is not None:
|
|
589
612
|
try:
|
|
@@ -617,6 +640,7 @@ class AiBuilderTools(ToolBase):
|
|
|
617
640
|
suggested_next_call={"tool_name": "package_apply", "arguments": {"profile": profile, **normalized_args}},
|
|
618
641
|
))
|
|
619
642
|
|
|
643
|
+
@tool_cn_name("分组更新")
|
|
620
644
|
def package_update(
|
|
621
645
|
self,
|
|
622
646
|
*,
|
|
@@ -627,6 +651,7 @@ class AiBuilderTools(ToolBase):
|
|
|
627
651
|
color: str | None = None,
|
|
628
652
|
visibility: JSONObject | None = None,
|
|
629
653
|
) -> JSONObject:
|
|
654
|
+
"""执行分组与包相关逻辑。"""
|
|
630
655
|
visibility_patch = None
|
|
631
656
|
if visibility is not None:
|
|
632
657
|
try:
|
|
@@ -654,6 +679,7 @@ class AiBuilderTools(ToolBase):
|
|
|
654
679
|
suggested_next_call={"tool_name": "package_update", "arguments": {"profile": profile, **normalized_args}},
|
|
655
680
|
)
|
|
656
681
|
|
|
682
|
+
@tool_cn_name("方案安装")
|
|
657
683
|
def solution_install(
|
|
658
684
|
self,
|
|
659
685
|
*,
|
|
@@ -662,6 +688,7 @@ class AiBuilderTools(ToolBase):
|
|
|
662
688
|
being_copy_data: bool = True,
|
|
663
689
|
solution_source: str = "solutionDetail",
|
|
664
690
|
) -> JSONObject:
|
|
691
|
+
"""执行方案相关逻辑。"""
|
|
665
692
|
normalized_args = {
|
|
666
693
|
"solution_key": solution_key,
|
|
667
694
|
"being_copy_data": being_copy_data,
|
|
@@ -679,6 +706,7 @@ class AiBuilderTools(ToolBase):
|
|
|
679
706
|
suggested_next_call={"tool_name": "solution_install", "arguments": {"profile": profile, **normalized_args}},
|
|
680
707
|
)
|
|
681
708
|
|
|
709
|
+
@tool_cn_name("成员检索")
|
|
682
710
|
def member_search(
|
|
683
711
|
self,
|
|
684
712
|
*,
|
|
@@ -688,6 +716,7 @@ class AiBuilderTools(ToolBase):
|
|
|
688
716
|
page_size: int = 20,
|
|
689
717
|
contain_disable: bool = False,
|
|
690
718
|
) -> JSONObject:
|
|
719
|
+
"""执行工具方法逻辑。"""
|
|
691
720
|
normalized_args = {
|
|
692
721
|
"query": query,
|
|
693
722
|
"page_num": page_num,
|
|
@@ -707,7 +736,9 @@ class AiBuilderTools(ToolBase):
|
|
|
707
736
|
suggested_next_call={"tool_name": "member_search", "arguments": {"profile": profile, **normalized_args}},
|
|
708
737
|
)
|
|
709
738
|
|
|
739
|
+
@tool_cn_name("角色检索")
|
|
710
740
|
def role_search(self, *, profile: str, keyword: str, page_num: int = 1, page_size: int = 20) -> JSONObject:
|
|
741
|
+
"""执行角色相关逻辑。"""
|
|
711
742
|
normalized_args = {"keyword": keyword, "page_num": page_num, "page_size": page_size}
|
|
712
743
|
return _safe_tool_call(
|
|
713
744
|
lambda: self._facade.role_search(profile=profile, keyword=keyword, page_num=page_num, page_size=page_size),
|
|
@@ -716,6 +747,7 @@ class AiBuilderTools(ToolBase):
|
|
|
716
747
|
suggested_next_call={"tool_name": "role_search", "arguments": {"profile": profile, **normalized_args}},
|
|
717
748
|
)
|
|
718
749
|
|
|
750
|
+
@tool_cn_name("角色创建")
|
|
719
751
|
def role_create(
|
|
720
752
|
self,
|
|
721
753
|
*,
|
|
@@ -726,6 +758,7 @@ class AiBuilderTools(ToolBase):
|
|
|
726
758
|
member_names: list[str],
|
|
727
759
|
role_icon: str = "ex-user-outlined",
|
|
728
760
|
) -> JSONObject:
|
|
761
|
+
"""执行角色相关逻辑。"""
|
|
729
762
|
normalized_args = {
|
|
730
763
|
"role_name": role_name,
|
|
731
764
|
"member_uids": member_uids,
|
|
@@ -747,7 +780,9 @@ class AiBuilderTools(ToolBase):
|
|
|
747
780
|
suggested_next_call={"tool_name": "role_create", "arguments": {"profile": profile, **normalized_args}},
|
|
748
781
|
)
|
|
749
782
|
|
|
783
|
+
@tool_cn_name("分组挂载应用")
|
|
750
784
|
def package_attach_app(self, *, profile: str, tag_id: int, app_key: str, app_title: str = "") -> JSONObject:
|
|
785
|
+
"""执行分组与包相关逻辑。"""
|
|
751
786
|
normalized_args = {"tag_id": tag_id, "app_key": app_key, "app_title": app_title}
|
|
752
787
|
result = _safe_tool_call(
|
|
753
788
|
lambda: self._facade.package_attach_app(profile=profile, tag_id=tag_id, app_key=app_key, app_title=app_title),
|
|
@@ -766,6 +801,7 @@ class AiBuilderTools(ToolBase):
|
|
|
766
801
|
),
|
|
767
802
|
)
|
|
768
803
|
|
|
804
|
+
@tool_cn_name("释放应用编辑锁")
|
|
769
805
|
def app_release_edit_lock_if_mine(
|
|
770
806
|
self,
|
|
771
807
|
*,
|
|
@@ -774,6 +810,7 @@ class AiBuilderTools(ToolBase):
|
|
|
774
810
|
lock_owner_email: str = "",
|
|
775
811
|
lock_owner_name: str = "",
|
|
776
812
|
) -> JSONObject:
|
|
813
|
+
"""执行应用相关逻辑。"""
|
|
777
814
|
normalized_args = {
|
|
778
815
|
"app_key": app_key,
|
|
779
816
|
"lock_owner_email": lock_owner_email,
|
|
@@ -791,6 +828,7 @@ class AiBuilderTools(ToolBase):
|
|
|
791
828
|
suggested_next_call={"tool_name": "app_release_edit_lock_if_mine", "arguments": {"profile": profile, **normalized_args}},
|
|
792
829
|
)
|
|
793
830
|
|
|
831
|
+
@tool_cn_name("应用解析")
|
|
794
832
|
def app_resolve(
|
|
795
833
|
self,
|
|
796
834
|
*,
|
|
@@ -799,6 +837,7 @@ class AiBuilderTools(ToolBase):
|
|
|
799
837
|
app_name: str = "",
|
|
800
838
|
package_id: int | None = None,
|
|
801
839
|
) -> JSONObject:
|
|
840
|
+
"""执行应用相关逻辑。"""
|
|
802
841
|
normalized_args = {"app_key": app_key, "app_name": app_name, "package_id": package_id}
|
|
803
842
|
return _publicize_package_fields(_safe_tool_call(
|
|
804
843
|
lambda: self._facade.app_resolve(profile=profile, app_key=app_key, app_name=app_name, package_tag_id=package_id),
|
|
@@ -807,7 +846,9 @@ class AiBuilderTools(ToolBase):
|
|
|
807
846
|
suggested_next_call={"tool_name": "app_resolve", "arguments": {"profile": profile, **normalized_args}},
|
|
808
847
|
))
|
|
809
848
|
|
|
849
|
+
@tool_cn_name("应用按钮列表")
|
|
810
850
|
def app_custom_button_list(self, *, profile: str, app_key: str) -> JSONObject:
|
|
851
|
+
"""执行应用相关逻辑。"""
|
|
811
852
|
normalized_args = {"app_key": app_key}
|
|
812
853
|
return _safe_tool_call(
|
|
813
854
|
lambda: self._facade.app_custom_button_list(profile=profile, app_key=app_key),
|
|
@@ -816,7 +857,9 @@ class AiBuilderTools(ToolBase):
|
|
|
816
857
|
suggested_next_call={"tool_name": "app_custom_button_list", "arguments": {"profile": profile, **normalized_args}},
|
|
817
858
|
)
|
|
818
859
|
|
|
860
|
+
@tool_cn_name("应用按钮详情")
|
|
819
861
|
def app_custom_button_get(self, *, profile: str, app_key: str, button_id: int) -> JSONObject:
|
|
862
|
+
"""执行应用相关逻辑。"""
|
|
820
863
|
normalized_args = {"app_key": app_key, "button_id": button_id}
|
|
821
864
|
return _safe_tool_call(
|
|
822
865
|
lambda: self._facade.app_custom_button_get(profile=profile, app_key=app_key, button_id=button_id),
|
|
@@ -825,7 +868,9 @@ class AiBuilderTools(ToolBase):
|
|
|
825
868
|
suggested_next_call={"tool_name": "app_custom_button_get", "arguments": {"profile": profile, **normalized_args}},
|
|
826
869
|
)
|
|
827
870
|
|
|
871
|
+
@tool_cn_name("应用按钮创建")
|
|
828
872
|
def app_custom_button_create(self, *, profile: str, app_key: str, payload: JSONObject) -> JSONObject:
|
|
873
|
+
"""执行应用相关逻辑。"""
|
|
829
874
|
try:
|
|
830
875
|
request = CustomButtonPatch.model_validate(payload)
|
|
831
876
|
except ValidationError as exc:
|
|
@@ -857,7 +902,9 @@ class AiBuilderTools(ToolBase):
|
|
|
857
902
|
suggested_next_call={"tool_name": "app_custom_button_create", "arguments": {"profile": profile, **normalized_args}},
|
|
858
903
|
)
|
|
859
904
|
|
|
905
|
+
@tool_cn_name("应用按钮更新")
|
|
860
906
|
def app_custom_button_update(self, *, profile: str, app_key: str, button_id: int, payload: JSONObject) -> JSONObject:
|
|
907
|
+
"""执行应用相关逻辑。"""
|
|
861
908
|
try:
|
|
862
909
|
request = CustomButtonPatch.model_validate(payload)
|
|
863
910
|
except ValidationError as exc:
|
|
@@ -890,7 +937,9 @@ class AiBuilderTools(ToolBase):
|
|
|
890
937
|
suggested_next_call={"tool_name": "app_custom_button_update", "arguments": {"profile": profile, **normalized_args}},
|
|
891
938
|
)
|
|
892
939
|
|
|
940
|
+
@tool_cn_name("应用按钮删除")
|
|
893
941
|
def app_custom_button_delete(self, *, profile: str, app_key: str, button_id: int) -> JSONObject:
|
|
942
|
+
"""执行应用相关逻辑。"""
|
|
894
943
|
normalized_args = {"app_key": app_key, "button_id": button_id}
|
|
895
944
|
return _safe_tool_call(
|
|
896
945
|
lambda: self._facade.app_custom_button_delete(profile=profile, app_key=app_key, button_id=button_id),
|
|
@@ -899,7 +948,9 @@ class AiBuilderTools(ToolBase):
|
|
|
899
948
|
suggested_next_call={"tool_name": "app_custom_button_delete", "arguments": {"profile": profile, **normalized_args}},
|
|
900
949
|
)
|
|
901
950
|
|
|
951
|
+
@tool_cn_name("应用摘要读取")
|
|
902
952
|
def app_read_summary(self, *, profile: str, app_key: str) -> JSONObject:
|
|
953
|
+
"""执行应用相关逻辑。"""
|
|
903
954
|
normalized_args = {"app_key": app_key}
|
|
904
955
|
return _publicize_package_fields(_safe_tool_call(
|
|
905
956
|
lambda: self._facade.app_read_summary(profile=profile, app_key=app_key),
|
|
@@ -908,7 +959,9 @@ class AiBuilderTools(ToolBase):
|
|
|
908
959
|
suggested_next_call={"tool_name": "app_get", "arguments": {"profile": profile, "app_key": app_key}},
|
|
909
960
|
))
|
|
910
961
|
|
|
962
|
+
@tool_cn_name("应用详情查询")
|
|
911
963
|
def app_get(self, *, profile: str, app_key: str) -> JSONObject:
|
|
964
|
+
"""执行应用相关逻辑。"""
|
|
912
965
|
normalized_args = {"app_key": app_key}
|
|
913
966
|
return _publicize_package_fields(_safe_tool_call(
|
|
914
967
|
lambda: self._facade.app_get(profile=profile, app_key=app_key),
|
|
@@ -917,7 +970,9 @@ class AiBuilderTools(ToolBase):
|
|
|
917
970
|
suggested_next_call={"tool_name": "app_get", "arguments": {"profile": profile, "app_key": app_key}},
|
|
918
971
|
))
|
|
919
972
|
|
|
973
|
+
@tool_cn_name("应用字段摘要读取")
|
|
920
974
|
def app_read_fields(self, *, profile: str, app_key: str) -> JSONObject:
|
|
975
|
+
"""执行应用相关逻辑。"""
|
|
921
976
|
normalized_args = {"app_key": app_key}
|
|
922
977
|
return _safe_tool_call(
|
|
923
978
|
lambda: self._facade.app_read_fields(profile=profile, app_key=app_key),
|
|
@@ -926,7 +981,9 @@ class AiBuilderTools(ToolBase):
|
|
|
926
981
|
suggested_next_call={"tool_name": "app_get_fields", "arguments": {"profile": profile, "app_key": app_key}},
|
|
927
982
|
)
|
|
928
983
|
|
|
984
|
+
@tool_cn_name("应用字段详情查询")
|
|
929
985
|
def app_get_fields(self, *, profile: str, app_key: str) -> JSONObject:
|
|
986
|
+
"""执行应用相关逻辑。"""
|
|
930
987
|
normalized_args = {"app_key": app_key}
|
|
931
988
|
return _safe_tool_call(
|
|
932
989
|
lambda: self._facade.app_get_fields(profile=profile, app_key=app_key),
|
|
@@ -935,6 +992,7 @@ class AiBuilderTools(ToolBase):
|
|
|
935
992
|
suggested_next_call={"tool_name": "app_get_fields", "arguments": {"profile": profile, "app_key": app_key}},
|
|
936
993
|
)
|
|
937
994
|
|
|
995
|
+
@tool_cn_name("修复代码块字段")
|
|
938
996
|
def app_repair_code_blocks(
|
|
939
997
|
self,
|
|
940
998
|
*,
|
|
@@ -943,6 +1001,7 @@ class AiBuilderTools(ToolBase):
|
|
|
943
1001
|
field: str | None = None,
|
|
944
1002
|
apply: bool = False,
|
|
945
1003
|
) -> JSONObject:
|
|
1004
|
+
"""执行应用相关逻辑。"""
|
|
946
1005
|
normalized_args = {"app_key": app_key, "field": field, "apply": apply}
|
|
947
1006
|
return _safe_tool_call(
|
|
948
1007
|
lambda: self._facade.app_repair_code_blocks(profile=profile, app_key=app_key, field=field, apply=apply),
|
|
@@ -951,7 +1010,9 @@ class AiBuilderTools(ToolBase):
|
|
|
951
1010
|
suggested_next_call={"tool_name": "app_repair_code_blocks", "arguments": {"profile": profile, **normalized_args}},
|
|
952
1011
|
)
|
|
953
1012
|
|
|
1013
|
+
@tool_cn_name("应用布局摘要读取")
|
|
954
1014
|
def app_read_layout_summary(self, *, profile: str, app_key: str) -> JSONObject:
|
|
1015
|
+
"""执行应用相关逻辑。"""
|
|
955
1016
|
normalized_args = {"app_key": app_key}
|
|
956
1017
|
return _safe_tool_call(
|
|
957
1018
|
lambda: self._facade.app_read_layout_summary(profile=profile, app_key=app_key),
|
|
@@ -960,7 +1021,9 @@ class AiBuilderTools(ToolBase):
|
|
|
960
1021
|
suggested_next_call={"tool_name": "app_get_layout", "arguments": {"profile": profile, "app_key": app_key}},
|
|
961
1022
|
)
|
|
962
1023
|
|
|
1024
|
+
@tool_cn_name("应用布局详情查询")
|
|
963
1025
|
def app_get_layout(self, *, profile: str, app_key: str) -> JSONObject:
|
|
1026
|
+
"""执行应用相关逻辑。"""
|
|
964
1027
|
normalized_args = {"app_key": app_key}
|
|
965
1028
|
return _safe_tool_call(
|
|
966
1029
|
lambda: self._facade.app_get_layout(profile=profile, app_key=app_key),
|
|
@@ -969,7 +1032,9 @@ class AiBuilderTools(ToolBase):
|
|
|
969
1032
|
suggested_next_call={"tool_name": "app_get_layout", "arguments": {"profile": profile, "app_key": app_key}},
|
|
970
1033
|
)
|
|
971
1034
|
|
|
1035
|
+
@tool_cn_name("应用视图摘要读取")
|
|
972
1036
|
def app_read_views_summary(self, *, profile: str, app_key: str) -> JSONObject:
|
|
1037
|
+
"""执行应用相关逻辑。"""
|
|
973
1038
|
normalized_args = {"app_key": app_key}
|
|
974
1039
|
return _safe_tool_call(
|
|
975
1040
|
lambda: self._facade.app_read_views_summary(profile=profile, app_key=app_key),
|
|
@@ -978,7 +1043,9 @@ class AiBuilderTools(ToolBase):
|
|
|
978
1043
|
suggested_next_call={"tool_name": "app_get_views", "arguments": {"profile": profile, "app_key": app_key}},
|
|
979
1044
|
)
|
|
980
1045
|
|
|
1046
|
+
@tool_cn_name("应用视图详情查询")
|
|
981
1047
|
def app_get_views(self, *, profile: str, app_key: str) -> JSONObject:
|
|
1048
|
+
"""执行应用相关逻辑。"""
|
|
982
1049
|
normalized_args = {"app_key": app_key}
|
|
983
1050
|
return _safe_tool_call(
|
|
984
1051
|
lambda: self._facade.app_get_views(profile=profile, app_key=app_key),
|
|
@@ -987,7 +1054,9 @@ class AiBuilderTools(ToolBase):
|
|
|
987
1054
|
suggested_next_call={"tool_name": "app_get_views", "arguments": {"profile": profile, "app_key": app_key}},
|
|
988
1055
|
)
|
|
989
1056
|
|
|
1057
|
+
@tool_cn_name("应用流程摘要读取")
|
|
990
1058
|
def app_read_flow_summary(self, *, profile: str, app_key: str) -> JSONObject:
|
|
1059
|
+
"""执行应用相关逻辑。"""
|
|
991
1060
|
normalized_args = {"app_key": app_key}
|
|
992
1061
|
return _safe_tool_call(
|
|
993
1062
|
lambda: self._facade.app_read_flow_summary(profile=profile, app_key=app_key),
|
|
@@ -996,7 +1065,9 @@ class AiBuilderTools(ToolBase):
|
|
|
996
1065
|
suggested_next_call={"tool_name": "app_get_flow", "arguments": {"profile": profile, "app_key": app_key}},
|
|
997
1066
|
)
|
|
998
1067
|
|
|
1068
|
+
@tool_cn_name("应用流程详情查询")
|
|
999
1069
|
def app_get_flow(self, *, profile: str, app_key: str) -> JSONObject:
|
|
1070
|
+
"""执行应用相关逻辑。"""
|
|
1000
1071
|
normalized_args = {"app_key": app_key}
|
|
1001
1072
|
return _safe_tool_call(
|
|
1002
1073
|
lambda: self._facade.app_get_flow(profile=profile, app_key=app_key),
|
|
@@ -1005,7 +1076,9 @@ class AiBuilderTools(ToolBase):
|
|
|
1005
1076
|
suggested_next_call={"tool_name": "app_get_flow", "arguments": {"profile": profile, "app_key": app_key}},
|
|
1006
1077
|
)
|
|
1007
1078
|
|
|
1079
|
+
@tool_cn_name("应用图表摘要读取")
|
|
1008
1080
|
def app_read_charts_summary(self, *, profile: str, app_key: str) -> JSONObject:
|
|
1081
|
+
"""执行应用相关逻辑。"""
|
|
1009
1082
|
normalized_args = {"app_key": app_key}
|
|
1010
1083
|
return _safe_tool_call(
|
|
1011
1084
|
lambda: self._facade.app_read_charts_summary(profile=profile, app_key=app_key),
|
|
@@ -1014,7 +1087,9 @@ class AiBuilderTools(ToolBase):
|
|
|
1014
1087
|
suggested_next_call={"tool_name": "app_get_charts", "arguments": {"profile": profile, "app_key": app_key}},
|
|
1015
1088
|
)
|
|
1016
1089
|
|
|
1090
|
+
@tool_cn_name("应用图表详情查询")
|
|
1017
1091
|
def app_get_charts(self, *, profile: str, app_key: str) -> JSONObject:
|
|
1092
|
+
"""执行应用相关逻辑。"""
|
|
1018
1093
|
normalized_args = {"app_key": app_key}
|
|
1019
1094
|
return _safe_tool_call(
|
|
1020
1095
|
lambda: self._facade.app_get_charts(profile=profile, app_key=app_key),
|
|
@@ -1023,7 +1098,9 @@ class AiBuilderTools(ToolBase):
|
|
|
1023
1098
|
suggested_next_call={"tool_name": "app_get_charts", "arguments": {"profile": profile, "app_key": app_key}},
|
|
1024
1099
|
)
|
|
1025
1100
|
|
|
1101
|
+
@tool_cn_name("门户列表查询")
|
|
1026
1102
|
def portal_list(self, *, profile: str) -> JSONObject:
|
|
1103
|
+
"""执行门户相关逻辑。"""
|
|
1027
1104
|
return _publicize_package_fields(_safe_tool_call(
|
|
1028
1105
|
lambda: self._facade.portal_list(profile=profile),
|
|
1029
1106
|
error_code="PORTAL_LIST_FAILED",
|
|
@@ -1031,7 +1108,9 @@ class AiBuilderTools(ToolBase):
|
|
|
1031
1108
|
suggested_next_call={"tool_name": "portal_list", "arguments": {"profile": profile}},
|
|
1032
1109
|
))
|
|
1033
1110
|
|
|
1111
|
+
@tool_cn_name("门户详情查询")
|
|
1034
1112
|
def portal_get(self, *, profile: str, dash_key: str, being_draft: bool = True) -> JSONObject:
|
|
1113
|
+
"""执行门户相关逻辑。"""
|
|
1035
1114
|
normalized_args = {"dash_key": dash_key, "being_draft": being_draft}
|
|
1036
1115
|
return _publicize_package_fields(_safe_tool_call(
|
|
1037
1116
|
lambda: self._facade.portal_get(profile=profile, dash_key=dash_key, being_draft=being_draft),
|
|
@@ -1040,7 +1119,9 @@ class AiBuilderTools(ToolBase):
|
|
|
1040
1119
|
suggested_next_call={"tool_name": "portal_get", "arguments": {"profile": profile, **normalized_args}},
|
|
1041
1120
|
))
|
|
1042
1121
|
|
|
1122
|
+
@tool_cn_name("门户摘要读取")
|
|
1043
1123
|
def portal_read_summary(self, *, profile: str, dash_key: str, being_draft: bool = True) -> JSONObject:
|
|
1124
|
+
"""执行门户相关逻辑。"""
|
|
1044
1125
|
normalized_args = {"dash_key": dash_key, "being_draft": being_draft}
|
|
1045
1126
|
return _publicize_package_fields(_safe_tool_call(
|
|
1046
1127
|
lambda: self._facade.portal_read_summary(profile=profile, dash_key=dash_key, being_draft=being_draft),
|
|
@@ -1049,7 +1130,9 @@ class AiBuilderTools(ToolBase):
|
|
|
1049
1130
|
suggested_next_call={"tool_name": "portal_get", "arguments": {"profile": profile, **normalized_args}},
|
|
1050
1131
|
))
|
|
1051
1132
|
|
|
1133
|
+
@tool_cn_name("视图详情查询")
|
|
1052
1134
|
def view_get(self, *, profile: str, view_key: str = "", viewgraph_key: str = "") -> JSONObject:
|
|
1135
|
+
"""执行视图相关逻辑。"""
|
|
1053
1136
|
resolved_view_key = str(view_key or viewgraph_key or "").strip()
|
|
1054
1137
|
normalized_args = {"view_key": resolved_view_key}
|
|
1055
1138
|
return _safe_tool_call(
|
|
@@ -1059,12 +1142,14 @@ class AiBuilderTools(ToolBase):
|
|
|
1059
1142
|
suggested_next_call={"tool_name": "view_get", "arguments": {"profile": profile, **normalized_args}},
|
|
1060
1143
|
)
|
|
1061
1144
|
|
|
1145
|
+
@tool_cn_name("图表详情查询")
|
|
1062
1146
|
def chart_get(
|
|
1063
1147
|
self,
|
|
1064
1148
|
*,
|
|
1065
1149
|
profile: str,
|
|
1066
1150
|
chart_id: str,
|
|
1067
1151
|
) -> JSONObject:
|
|
1152
|
+
"""执行图表相关逻辑。"""
|
|
1068
1153
|
normalized_args = {"chart_id": chart_id}
|
|
1069
1154
|
return _safe_tool_call(
|
|
1070
1155
|
lambda: self._facade.chart_get(profile=profile, chart_id=chart_id),
|
|
@@ -1073,6 +1158,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1073
1158
|
suggested_next_call={"tool_name": "chart_get", "arguments": {"profile": profile, "chart_id": chart_id}},
|
|
1074
1159
|
)
|
|
1075
1160
|
|
|
1161
|
+
@tool_cn_name("应用结构规划")
|
|
1076
1162
|
def app_schema_plan(
|
|
1077
1163
|
self,
|
|
1078
1164
|
*,
|
|
@@ -1088,6 +1174,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1088
1174
|
update_fields: list[JSONObject],
|
|
1089
1175
|
remove_fields: list[JSONObject],
|
|
1090
1176
|
) -> JSONObject:
|
|
1177
|
+
"""执行应用相关逻辑。"""
|
|
1091
1178
|
try:
|
|
1092
1179
|
request = SchemaPlanRequest.model_validate(
|
|
1093
1180
|
{
|
|
@@ -1133,6 +1220,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1133
1220
|
suggested_next_call={"tool_name": "app_schema_plan", "arguments": {"profile": profile, **normalized_args}},
|
|
1134
1221
|
))
|
|
1135
1222
|
|
|
1223
|
+
@tool_cn_name("应用布局规划")
|
|
1136
1224
|
def app_layout_plan(
|
|
1137
1225
|
self,
|
|
1138
1226
|
*,
|
|
@@ -1142,6 +1230,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1142
1230
|
sections: list[JSONObject] | None = None,
|
|
1143
1231
|
preset: str | None = None,
|
|
1144
1232
|
) -> JSONObject:
|
|
1233
|
+
"""执行应用相关逻辑。"""
|
|
1145
1234
|
try:
|
|
1146
1235
|
request = LayoutPlanRequest.model_validate(
|
|
1147
1236
|
{
|
|
@@ -1179,6 +1268,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1179
1268
|
suggested_next_call={"tool_name": "app_layout_plan", "arguments": {"profile": profile, **normalized_request}},
|
|
1180
1269
|
)
|
|
1181
1270
|
|
|
1271
|
+
@tool_cn_name("应用流程规划")
|
|
1182
1272
|
def app_flow_plan(
|
|
1183
1273
|
self,
|
|
1184
1274
|
*,
|
|
@@ -1189,6 +1279,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1189
1279
|
transitions: list[JSONObject] | None = None,
|
|
1190
1280
|
preset: str | None = None,
|
|
1191
1281
|
) -> JSONObject:
|
|
1282
|
+
"""执行应用相关逻辑。"""
|
|
1192
1283
|
try:
|
|
1193
1284
|
request = FlowPlanRequest.model_validate(
|
|
1194
1285
|
{
|
|
@@ -1223,6 +1314,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1223
1314
|
suggested_next_call={"tool_name": "app_flow_plan", "arguments": {"profile": profile, **request.model_dump(mode="json")}},
|
|
1224
1315
|
)
|
|
1225
1316
|
|
|
1317
|
+
@tool_cn_name("应用视图规划")
|
|
1226
1318
|
def app_views_plan(
|
|
1227
1319
|
self,
|
|
1228
1320
|
*,
|
|
@@ -1232,6 +1324,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1232
1324
|
remove_views: list[str] | None = None,
|
|
1233
1325
|
preset: str | None = None,
|
|
1234
1326
|
) -> JSONObject:
|
|
1327
|
+
"""执行应用相关逻辑。"""
|
|
1235
1328
|
try:
|
|
1236
1329
|
request = ViewsPlanRequest.model_validate(
|
|
1237
1330
|
{
|
|
@@ -1264,6 +1357,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1264
1357
|
suggested_next_call={"tool_name": "app_views_plan", "arguments": {"profile": profile, **request.model_dump(mode="json")}},
|
|
1265
1358
|
)
|
|
1266
1359
|
|
|
1360
|
+
@tool_cn_name("应用结构应用")
|
|
1267
1361
|
def app_schema_apply(
|
|
1268
1362
|
self,
|
|
1269
1363
|
*,
|
|
@@ -1281,6 +1375,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1281
1375
|
update_fields: list[JSONObject],
|
|
1282
1376
|
remove_fields: list[JSONObject],
|
|
1283
1377
|
) -> JSONObject:
|
|
1378
|
+
"""执行应用相关逻辑。"""
|
|
1284
1379
|
result = self._app_schema_apply_once(
|
|
1285
1380
|
profile=profile,
|
|
1286
1381
|
app_key=app_key,
|
|
@@ -1333,6 +1428,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1333
1428
|
update_fields: list[JSONObject],
|
|
1334
1429
|
remove_fields: list[JSONObject],
|
|
1335
1430
|
) -> JSONObject:
|
|
1431
|
+
"""执行内部辅助逻辑。"""
|
|
1336
1432
|
effective_app_name = app_name or app_title
|
|
1337
1433
|
plan_result = self._rewrite_plan_result_for_apply(
|
|
1338
1434
|
result=self.app_schema_plan(
|
|
@@ -1419,7 +1515,9 @@ class AiBuilderTools(ToolBase):
|
|
|
1419
1515
|
)
|
|
1420
1516
|
return _publicize_package_fields(result)
|
|
1421
1517
|
|
|
1518
|
+
@tool_cn_name("应用布局应用")
|
|
1422
1519
|
def app_layout_apply(self, *, profile: str, app_key: str, mode: str = "merge", publish: bool = True, sections: list[JSONObject]) -> JSONObject:
|
|
1520
|
+
"""执行应用相关逻辑。"""
|
|
1423
1521
|
result = self._app_layout_apply_once(
|
|
1424
1522
|
profile=profile,
|
|
1425
1523
|
app_key=app_key,
|
|
@@ -1440,6 +1538,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1440
1538
|
)
|
|
1441
1539
|
|
|
1442
1540
|
def _app_layout_apply_once(self, *, profile: str, app_key: str, mode: str = "merge", publish: bool = True, sections: list[JSONObject]) -> JSONObject:
|
|
1541
|
+
"""执行内部辅助逻辑。"""
|
|
1443
1542
|
plan_result = self._rewrite_plan_result_for_apply(
|
|
1444
1543
|
result=self.app_layout_plan(
|
|
1445
1544
|
profile=profile,
|
|
@@ -1496,6 +1595,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1496
1595
|
suggested_next_call={"tool_name": "app_layout_apply", "arguments": {"profile": profile, **normalized_args}},
|
|
1497
1596
|
)
|
|
1498
1597
|
|
|
1598
|
+
@tool_cn_name("应用流程应用")
|
|
1499
1599
|
def app_flow_apply(
|
|
1500
1600
|
self,
|
|
1501
1601
|
*,
|
|
@@ -1506,6 +1606,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1506
1606
|
nodes: list[JSONObject],
|
|
1507
1607
|
transitions: list[JSONObject],
|
|
1508
1608
|
) -> JSONObject:
|
|
1609
|
+
"""执行应用相关逻辑。"""
|
|
1509
1610
|
result = self._app_flow_apply_once(
|
|
1510
1611
|
profile=profile,
|
|
1511
1612
|
app_key=app_key,
|
|
@@ -1537,6 +1638,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1537
1638
|
nodes: list[JSONObject],
|
|
1538
1639
|
transitions: list[JSONObject],
|
|
1539
1640
|
) -> JSONObject:
|
|
1641
|
+
"""执行内部辅助逻辑。"""
|
|
1540
1642
|
plan_result = self._rewrite_plan_result_for_apply(
|
|
1541
1643
|
result=self.app_flow_plan(
|
|
1542
1644
|
profile=profile,
|
|
@@ -1604,6 +1706,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1604
1706
|
suggested_next_call={"tool_name": "app_flow_apply", "arguments": {"profile": profile, **normalized_args}},
|
|
1605
1707
|
)
|
|
1606
1708
|
|
|
1709
|
+
@tool_cn_name("应用视图应用")
|
|
1607
1710
|
def app_views_apply(
|
|
1608
1711
|
self,
|
|
1609
1712
|
*,
|
|
@@ -1613,6 +1716,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1613
1716
|
upsert_views: list[JSONObject],
|
|
1614
1717
|
remove_views: list[str],
|
|
1615
1718
|
) -> JSONObject:
|
|
1719
|
+
"""执行应用相关逻辑。"""
|
|
1616
1720
|
result = self._app_views_apply_once(
|
|
1617
1721
|
profile=profile,
|
|
1618
1722
|
app_key=app_key,
|
|
@@ -1641,6 +1745,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1641
1745
|
upsert_views: list[JSONObject],
|
|
1642
1746
|
remove_views: list[str],
|
|
1643
1747
|
) -> JSONObject:
|
|
1748
|
+
"""执行内部辅助逻辑。"""
|
|
1644
1749
|
plan_result = self._rewrite_plan_result_for_apply(
|
|
1645
1750
|
result=self.app_views_plan(
|
|
1646
1751
|
profile=profile,
|
|
@@ -1696,6 +1801,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1696
1801
|
suggested_next_call={"tool_name": "app_views_apply", "arguments": {"profile": profile, **normalized_args}},
|
|
1697
1802
|
)
|
|
1698
1803
|
|
|
1804
|
+
@tool_cn_name("图表配置应用")
|
|
1699
1805
|
def chart_apply(
|
|
1700
1806
|
self,
|
|
1701
1807
|
*,
|
|
@@ -1705,6 +1811,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1705
1811
|
remove_chart_ids: list[str],
|
|
1706
1812
|
reorder_chart_ids: list[str],
|
|
1707
1813
|
) -> JSONObject:
|
|
1814
|
+
"""执行图表相关逻辑。"""
|
|
1708
1815
|
return self.app_charts_apply(
|
|
1709
1816
|
profile=profile,
|
|
1710
1817
|
app_key=app_key,
|
|
@@ -1713,6 +1820,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1713
1820
|
reorder_chart_ids=reorder_chart_ids,
|
|
1714
1821
|
)
|
|
1715
1822
|
|
|
1823
|
+
@tool_cn_name("应用图表应用")
|
|
1716
1824
|
def app_charts_apply(
|
|
1717
1825
|
self,
|
|
1718
1826
|
*,
|
|
@@ -1722,6 +1830,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1722
1830
|
remove_chart_ids: list[str],
|
|
1723
1831
|
reorder_chart_ids: list[str],
|
|
1724
1832
|
) -> JSONObject:
|
|
1833
|
+
"""执行应用相关逻辑。"""
|
|
1725
1834
|
try:
|
|
1726
1835
|
request = ChartApplyRequest.model_validate(
|
|
1727
1836
|
{
|
|
@@ -1755,6 +1864,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1755
1864
|
suggested_next_call={"tool_name": "app_charts_apply", "arguments": {"profile": profile, **normalized_args}},
|
|
1756
1865
|
)
|
|
1757
1866
|
|
|
1867
|
+
@tool_cn_name("门户配置应用")
|
|
1758
1868
|
def portal_apply(
|
|
1759
1869
|
self,
|
|
1760
1870
|
*,
|
|
@@ -1772,6 +1882,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1772
1882
|
dash_global_config: JSONObject | None = None,
|
|
1773
1883
|
config: JSONObject | None = None,
|
|
1774
1884
|
) -> JSONObject:
|
|
1885
|
+
"""执行门户相关逻辑。"""
|
|
1775
1886
|
try:
|
|
1776
1887
|
request = PortalApplyRequest.model_validate(
|
|
1777
1888
|
{
|
|
@@ -1820,6 +1931,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1820
1931
|
suggested_next_call={"tool_name": "portal_apply", "arguments": {"profile": profile, **normalized_args}},
|
|
1821
1932
|
))
|
|
1822
1933
|
|
|
1934
|
+
@tool_cn_name("应用发布校验")
|
|
1823
1935
|
def app_publish_verify(
|
|
1824
1936
|
self,
|
|
1825
1937
|
*,
|
|
@@ -1827,6 +1939,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1827
1939
|
app_key: str,
|
|
1828
1940
|
expected_package_id: int | None = None,
|
|
1829
1941
|
) -> JSONObject:
|
|
1942
|
+
"""执行应用相关逻辑。"""
|
|
1830
1943
|
normalized_args = {"app_key": app_key, "expected_package_id": expected_package_id}
|
|
1831
1944
|
result = _publicize_package_fields(_safe_tool_call(
|
|
1832
1945
|
lambda: self._facade.app_publish_verify(profile=profile, app_key=app_key, expected_package_tag_id=expected_package_id),
|
|
@@ -1845,6 +1958,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1845
1958
|
))
|
|
1846
1959
|
|
|
1847
1960
|
def _retry_after_self_lock_release(self, *, profile: str, result: JSONObject, retry_call) -> JSONObject:
|
|
1961
|
+
"""执行内部辅助逻辑。"""
|
|
1848
1962
|
if not isinstance(result, dict) or result.get("status") != "failed" or result.get("error_code") != "APP_EDIT_LOCKED":
|
|
1849
1963
|
return result
|
|
1850
1964
|
suggested = result.get("suggested_next_call")
|
|
@@ -1910,6 +2024,7 @@ class AiBuilderTools(ToolBase):
|
|
|
1910
2024
|
plan_tool_name: str,
|
|
1911
2025
|
apply_tool_name: str,
|
|
1912
2026
|
) -> JSONObject:
|
|
2027
|
+
"""执行内部辅助逻辑。"""
|
|
1913
2028
|
if not isinstance(result, dict):
|
|
1914
2029
|
return result
|
|
1915
2030
|
rewritten = dict(result)
|
|
@@ -2616,6 +2731,7 @@ _BUILDER_TOOL_CONTRACTS: dict[str, JSONObject] = {
|
|
|
2616
2731
|
"field.autoTrigger": "field.auto_trigger",
|
|
2617
2732
|
"field.customBtnTextStatus": "field.custom_button_text_enabled",
|
|
2618
2733
|
"field.customBtnText": "field.custom_button_text",
|
|
2734
|
+
"field.subfieldUpdates": "field.subfield_updates",
|
|
2619
2735
|
},
|
|
2620
2736
|
"allowed_values": {
|
|
2621
2737
|
"field.type": [member.value for member in PublicFieldType],
|