flycode-mcp 1.14.2 → 1.14.4
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 +47 -1
- package/dist/cli.js +6893 -0
- package/dist/skills/flycode-mcp-skill/SKILL.md +321 -0
- package/dist/skills/flycode-mcp-skill/scripts/save_full_via_mcp.mjs +199 -0
- package/dist/skills/flycode-mcp-skill/tools/core.md +56 -0
- package/dist/skills/flycode-mcp-skill/tools/entity.md +255 -0
- package/dist/skills/flycode-mcp-skill/tools/form.md +248 -0
- package/dist/skills/flycode-mcp-skill/tools/function.md +114 -0
- package/dist/skills/flycode-mcp-skill/tools/gateway.md +65 -0
- package/dist/skills/flycode-mcp-skill/tools/h5.md +70 -0
- package/dist/skills/flycode-mcp-skill/tools/logic.md +296 -0
- package/package.json +4 -3
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# 网关工具手册:mcp_catalog / mcp_activate
|
|
2
|
+
|
|
3
|
+
> 属 **gateway** 组,连接后**始终可见**,不受渐进式披露与 `PROGRESSIVE_DISCLOSURE` 开关影响。
|
|
4
|
+
> 这两个工具只负责「导航与解锁」,不读写任何平台业务数据。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## `mcp_catalog` — 工具目录(只读)
|
|
9
|
+
|
|
10
|
+
查看当前 MCP 暴露了哪些能力域、各域启用状态与域内工具清单,用于渐进式披露下「先看清还有什么能力可解锁」。
|
|
11
|
+
|
|
12
|
+
**刻意不返回入参 schema**(递归结构全量 schema 单域曾达 504KB,回传会撑爆上下文)。参数细节以 `mcp_activate` 启用后客户端重拉的 `tools/list` 为准,或查本 Skill 的分模块手册(`tools/*.md`)。
|
|
13
|
+
|
|
14
|
+
### 输入
|
|
15
|
+
|
|
16
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
17
|
+
| --- | --- | --- | --- |
|
|
18
|
+
| `domain` | string | 否 | 聚焦某域,枚举 `core` / `entity` / `form` / `logic` / `function` / `h5`;不传返回全部域状态 |
|
|
19
|
+
|
|
20
|
+
### 输出
|
|
21
|
+
|
|
22
|
+
| 字段 | 类型 | 说明 |
|
|
23
|
+
| --- | --- | --- |
|
|
24
|
+
| `progressive` | boolean | 服务端是否处于渐进式披露模式(`PROGRESSIVE_DISCLOSURE=on`) |
|
|
25
|
+
| `domains` | array | 全部域的状态与工具清单,每项结构见下 |
|
|
26
|
+
| `domains[].name` | string | 域名:`core` / `entity` / `form` / `logic` / `function` / `h5` |
|
|
27
|
+
| `domains[].title` / `.description` | string | 域中文标题 / 域能力描述 |
|
|
28
|
+
| `domains[].alwaysOn` | boolean | 是否始终启用(core=true,其余 false) |
|
|
29
|
+
| `domains[].active` | boolean | 该域当前是否已启用(域内全部工具 enabled 才为 true) |
|
|
30
|
+
| `domains[].tools[]` | array | 每项 `{ name, description, active }`:工具名、描述(可能被降级截断)、启用态 |
|
|
31
|
+
| `focus` | object \| null | 仅当传了 `domain` 时返回:`{ name, title, tools[] }` 该域聚焦清单(同样不含 schema) |
|
|
32
|
+
| `truncated` | boolean | 返回体是否因超过体积硬上限被自动降级 |
|
|
33
|
+
| `note` | string | 降级时的说明文字(正常情况下无此字段) |
|
|
34
|
+
|
|
35
|
+
### 体积熔断(了解即可)
|
|
36
|
+
|
|
37
|
+
返回体超过 32KB 硬上限时自动分级降级:① 工具描述截断到 160 字符 → ② 清空工具描述只留名字与启用态 → ③ 丢弃工具清单只留域级信息。降级不影响工具可用性(当前实测正常最大约 4KB,几乎触发不到)。
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## `mcp_activate` — 启用/收起工具域
|
|
42
|
+
|
|
43
|
+
切换某能力域工具的可见性:启用后服务端推送 `tools/list_changed` 通知,合规客户端重拉工具清单后即可见该域全部工具;收起则从清单移除以回收上下文。
|
|
44
|
+
|
|
45
|
+
### 输入
|
|
46
|
+
|
|
47
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
48
|
+
| --- | --- | --- | --- |
|
|
49
|
+
| `domain` | string | 是 | 要切换的域:`entity` / `form` / `logic` / `function` / `h5`。**core 始终启用,无需也不应传 core** |
|
|
50
|
+
| `deactivate` | boolean | 否 | `true`=收起该域(从 tools/list 移除);省略或 `false`=启用该域 |
|
|
51
|
+
|
|
52
|
+
### 输出
|
|
53
|
+
|
|
54
|
+
| 字段 | 类型 | 说明 |
|
|
55
|
+
| --- | --- | --- |
|
|
56
|
+
| `domain` | string | 本次操作的域 |
|
|
57
|
+
| `deactivated` | boolean | 是否为收起操作 |
|
|
58
|
+
| `tools` | string[] | 受本次切换影响的工具名列表 |
|
|
59
|
+
| `progressive` | boolean | 服务端是否处于渐进式披露模式 |
|
|
60
|
+
| `note` | string | 提示信息:已推送 `tools/list_changed`;若客户端不重拉,请改用 `PROGRESSIVE_DISCLOSURE=off` |
|
|
61
|
+
|
|
62
|
+
### 坑
|
|
63
|
+
|
|
64
|
+
- `mcp_activate` 后调用域工具仍报 `tool not found` → 当前客户端未实现 `tools/list_changed` 重拉:**不要反复重试 activate**(无效操作),按顺序兜底:① 优先用客户端 exec 沙箱直调 MCP(如 Trae 的 `tools.run_mcp`);② 最后手段才设 `PROGRESSIVE_DISCLOSURE=off`(详见 SKILL.md「2.1」)。
|
|
65
|
+
- 渐进式披露已关闭(`off`)时,本工具退化为无害空操作。
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# H5 表单工具手册:h5 域(2 个工具)
|
|
2
|
+
|
|
3
|
+
> 属 **h5** 域:使用前需 `mcp_activate('h5')` 激活(连接后默认隐藏)。
|
|
4
|
+
> 两个工具全部只读,面向**智慧 100 H5 引擎**的 H5 表单(核心内容在 `confjson`,含 Vue 代码与元数据配置)。
|
|
5
|
+
> 租户未安装 H5 引擎时接口返回 **HTTP 404**,属正常现象,不是工具坏了。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## `page_h5_form` — 分页查询 H5 表单列表(只读)
|
|
10
|
+
|
|
11
|
+
分页查询 H5 表单列表。**列表结果不含 `confjson`**(体积大,已剔除以省上下文);要看内容用 `get_h5_form`。
|
|
12
|
+
|
|
13
|
+
### 输入(全部可选)
|
|
14
|
+
|
|
15
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
16
|
+
| --- | --- | --- | --- |
|
|
17
|
+
| `keywords` | string | 否 | H5 表单代码及其元数据中包含的关键字,模糊查询 |
|
|
18
|
+
| `pagecode` | string | 否 | H5 表单唯一编码,模糊查询 |
|
|
19
|
+
| `status` | string | 否 | 状态,整数含义:1-启用;2-停用。示例传 `"1"` |
|
|
20
|
+
| `title` | string | 否 | H5 表单标题,模糊查询 |
|
|
21
|
+
| `updateopname` | string | 否 | 最近修改人姓名,模糊查询 |
|
|
22
|
+
| `page` | string | 否 | 当前页,从 1 开始 |
|
|
23
|
+
| `rows` | string | 否 | 每页记录数 |
|
|
24
|
+
|
|
25
|
+
### 输出
|
|
26
|
+
|
|
27
|
+
| 字段 | 类型 | 说明 |
|
|
28
|
+
| --- | --- | --- |
|
|
29
|
+
| `data` | array | 这一页的 H5 表单数据(每项**不含 confjson**),字段见下 |
|
|
30
|
+
| `pageCount` / `pageIndex` / `pageSize` / `resultCount` | number | 总页数 / 第几页 / 每页记录数 / 总记录数 |
|
|
31
|
+
|
|
32
|
+
`data[]` 每项(均为可选字段):
|
|
33
|
+
|
|
34
|
+
| 字段 | 说明 |
|
|
35
|
+
| --- | --- |
|
|
36
|
+
| `pagecode` | H5 表单的唯一编码(`get_h5_form` 入参) |
|
|
37
|
+
| `title` | H5 表单标题 |
|
|
38
|
+
| `pagedescr` | H5 表单描述 |
|
|
39
|
+
| `status` | 状态;1-启用;2-停用 |
|
|
40
|
+
| `directorytypecode` | 所属目录编码(预留字段) |
|
|
41
|
+
| `pagetype` | 页面类型(预留字段) |
|
|
42
|
+
| `platcreateop` / `platcreatetime` | 创建人姓名 / 创建时间 |
|
|
43
|
+
| `platupdateop` / `platupdatetime` | 最近更新人姓名 / 最近更新时间 |
|
|
44
|
+
| `platstatus` | 平台状态 |
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## `get_h5_form` — 查询 H5 表单详情(只读)
|
|
49
|
+
|
|
50
|
+
按 `pagecode` 获取 H5 表单详情(**含 `confjson`**:Vue 代码与元数据配置)。
|
|
51
|
+
|
|
52
|
+
### 输入
|
|
53
|
+
|
|
54
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
55
|
+
| --- | --- | --- | --- |
|
|
56
|
+
| `pagecode` | string | 是 | H5 表单的唯一编码(来自 `page_h5_form`) |
|
|
57
|
+
|
|
58
|
+
### 输出
|
|
59
|
+
|
|
60
|
+
单个表单对象(无 data 数组、无分页信封),字段同列表单条 + 详情专有的:
|
|
61
|
+
|
|
62
|
+
| 字段 | 类型 | 说明 |
|
|
63
|
+
| --- | --- | --- |
|
|
64
|
+
| `confjson` | string \| null | H5 表单的内容 JSON 字符串,**包含 H5 表单的 Vue 代码与元数据配置(核心字段)** |
|
|
65
|
+
| `pagecode` / `title` / `pagedescr` / `status` 等 | string \| null | 同列表字段 |
|
|
66
|
+
|
|
67
|
+
### 注意
|
|
68
|
+
|
|
69
|
+
- 租户未装 H5 引擎时返回 HTTP 404(属正常),如实告知用户即可,不要重试或绕路。
|
|
70
|
+
- 修改 H5 表单**不在本 MCP 工具能力范围内**(h5 域只有两个只读工具),需要人工在平台操作,或使用 `smart100-h5-engine` 相关 Skill。
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
# 业务逻辑工具手册:logic 域(6 个工具)
|
|
2
|
+
|
|
3
|
+
> 属 **logic** 域:使用前需 `mcp_activate('logic')` 激活(连接后默认隐藏)。
|
|
4
|
+
> 读写分工:`page_model_logic_directories` / `page_model_logic_list` / `get_model_logic` 只读;写工具三选一——**改脚本用 `str_replace_flycode`、改结构/元数据/导出列用 `patch_model_logic`、仅新增或全量 JSON 很小时才用 `save_model_logic`**(铁律详见 SKILL.md 第四节)。
|
|
5
|
+
|
|
6
|
+
## 枚举速查
|
|
7
|
+
|
|
8
|
+
- `actiontype`(操作类型):1-列表查询 / 2-单个查询 / 3-数据提交 / 4-批量提交 / 5-导入 / 6-导出 / 7-离线数据获取 / 8-流程 / 9-业务调度 / 10-ipaas接口
|
|
9
|
+
- `actioncategory`(行为类型):1-flycode接口 / 2-微服务 / 3-内部函数 / 4-导入 / 5-导出 / 6-flycode导入 / 7-flycode导出
|
|
10
|
+
- `execmode`:1-同步 / 2-异步;`executionmode`:standard-标准 / strict-严格
|
|
11
|
+
- `tenantdbname`(租户库权限):只读 / 读写 / 报表;`usedatarule`:1-使用数据权限
|
|
12
|
+
- `input/output[].datatype`(参数形态):0-单实体 / 1-数组(0 表示 `IN.name`/`OUT.xxx` 是对象;1 表示是数组)
|
|
13
|
+
- `marktype`:0-平台 / 1-产品 / 2-租户;`status`:1-启用 / 2-停用
|
|
14
|
+
|
|
15
|
+
## commitMessage 通用结构(三个写工具共用)
|
|
16
|
+
|
|
17
|
+
| 字段 | 类型 | 必填 | 说明 |
|
|
18
|
+
| --- | --- | --- | --- |
|
|
19
|
+
| `committype` | enum | 是 | `saverecord` / `feature` / `fix` / `stylefix` / `refactor` / `testfix` |
|
|
20
|
+
| `committypetext` | enum | 是 | 与 committype **一一对应**:`保存记录` / `新功能添加` / `bug修改` / `样式修改` / `重构` / `测试` |
|
|
21
|
+
| `msgbody` | string | 条件 | `saverecord` 时忽略(服务端自动填当前时间);其余类型必填,按 git 提交规范写 |
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## `page_model_logic_directories` — 分页查询业务逻辑所属目录(只读)
|
|
26
|
+
|
|
27
|
+
分页查询业务模型目录(ModelDirectory)。返回各业务模型目录项:`modelcode`(即 modellogic 中的 `modelcode`,查某目录下业务逻辑时要用它)、`modelname`、`metamodelcode`、`directorytypecode`(父目录编码,一级目录其父为 `rootNode`)等。
|
|
28
|
+
|
|
29
|
+
### 输入(全部可选)
|
|
30
|
+
|
|
31
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
32
|
+
| --- | --- | --- | --- |
|
|
33
|
+
| `modelname` | string | 否 | 业务模型名模糊匹配;不传则返回该目录下的全部 |
|
|
34
|
+
| `directorytypecode` | string | 否 | 固定传 `"rootNode"` 查一级目录;传具体目录的 modelcode 可查其子目录;省略默认 `"rootNode"` |
|
|
35
|
+
| `dddlayer` | string | 否 | 目录层级:1-一级目录(默认) |
|
|
36
|
+
| `page` | string | 否 | 当前页,从 1 开始 |
|
|
37
|
+
| `rows` | string | 否 | 每页记录数(默认 999) |
|
|
38
|
+
|
|
39
|
+
### 输出
|
|
40
|
+
|
|
41
|
+
| 字段 | 类型 | 说明 |
|
|
42
|
+
| --- | --- | --- |
|
|
43
|
+
| `data` | array | 这一页的目录数据(每项见下;未声明字段透传) |
|
|
44
|
+
| `pageCount` / `pageIndex` / `pageSize` / `resultCount` | number | 分页信封 |
|
|
45
|
+
|
|
46
|
+
`data[]` 每项关键字段:
|
|
47
|
+
|
|
48
|
+
| 字段 | 说明 |
|
|
49
|
+
| --- | --- |
|
|
50
|
+
| `modelcode` | 业务模型唯一编码,**即 modellogic 的 modelcode**(必返) |
|
|
51
|
+
| `modelname` / `modeldescr` | 业务模型名(目录名)/ 描述 |
|
|
52
|
+
| `directorytypecode` | 所属目录编码(父目录的 modelcode;一级目录其父为 rootNode) |
|
|
53
|
+
| `metamodelcode` | 领域模型编码,与 modelcode 构成复合主键 |
|
|
54
|
+
| `dddlayer` / `seq` / `status` / `marktype` | 层级 / 顺序 / 状态 / 创建标记 |
|
|
55
|
+
| `classname` / `tablename` | 类名(部分业务模型带,如 ai_base / cost)/ 表名(可为空) |
|
|
56
|
+
| `createtime` / `updatetime` / `createaccountname` / `updateaccountname` 等 | 审计字段(账号编码为字符串型超大整数,按 string 兼容收口) |
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## `page_model_logic_list` — 分页查询业务逻辑(只读)
|
|
61
|
+
|
|
62
|
+
分页查询业务逻辑列表(ModelLogic)。`keys` 匹配标题/modellogiccode/行为方法名;`keywords` 匹配**完整 JSON(内含代码)中的关键字**。
|
|
63
|
+
|
|
64
|
+
### 输入(全部可选,按字符串传)
|
|
65
|
+
|
|
66
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
67
|
+
| --- | --- | --- | --- |
|
|
68
|
+
| `keys` | string | 否 | 标题、modellogiccode 或行为方法名,模糊匹配 |
|
|
69
|
+
| `keywords` | string | 否 | 完整 JSON(内含代码)中的关键字,模糊匹配 |
|
|
70
|
+
| `page` / `rows` | string | 否 | 分页(默认 1 / 20) |
|
|
71
|
+
| `updateopname` | string | 否 | 最近修改人姓名,模糊匹配 |
|
|
72
|
+
| `updatetimestart` / `updatetimeend` | string | 否 | 修改时间区间,`yyyy-MM-dd hh:mm:ss`,成对出现 |
|
|
73
|
+
| `actiontype` | string | 否 | 操作类型(见顶部枚举) |
|
|
74
|
+
| `actioncategory` | string | 否 | 行为类型(见顶部枚举) |
|
|
75
|
+
| `tenantdbname` | string | 否 | 脚本操作数据库的类型:只读 / 读写 / 报表 |
|
|
76
|
+
| `jobstatus` | string | 否 | 定时调度任务状态:1-启用 / 0-停用 / 2-无调度 |
|
|
77
|
+
|
|
78
|
+
### 输出
|
|
79
|
+
|
|
80
|
+
| 字段 | 类型 | 说明 |
|
|
81
|
+
| --- | --- | --- |
|
|
82
|
+
| `data` | array | 这一页的逻辑数据(每项见下) |
|
|
83
|
+
| `pageCount` / `pageIndex` / `pageSize` / `resultCount` | number | 分页信封 |
|
|
84
|
+
|
|
85
|
+
`data[]` 每项关键字段:
|
|
86
|
+
|
|
87
|
+
| 字段 | 说明 |
|
|
88
|
+
| --- | --- |
|
|
89
|
+
| `modellogiccode` | 逻辑编码,与 metamodelcode 构成复合主键(**必返**,`get_model_logic` 入参) |
|
|
90
|
+
| `modellogicname` / `functionname` | 逻辑标题 / 函数命名(A 逻辑调 B 逻辑时要写函数名) |
|
|
91
|
+
| `modelcode` / `modelname` | 所属业务模型编码(**必返**)/ 模型名 |
|
|
92
|
+
| `metamodelcode` | 领域模型编码 |
|
|
93
|
+
| `actiontype` / `actioncategory` / `execmode` | 操作类型 / 行为类型 / 执行方式 |
|
|
94
|
+
| `marktype` / `status` / `seq` / `confsource` | 标记 / 状态 / 顺序 / 配置来源 |
|
|
95
|
+
| `createtime` / `updatetime` / `createaccountname` / `updateaccountname` 等 | 审计字段 |
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## `get_model_logic` — 查询业务逻辑详情(只读)
|
|
100
|
+
|
|
101
|
+
按 `modellogiccode` 查询完整详情:flycode 脚本、input/output 参数及字段属性、操作步骤。
|
|
102
|
+
|
|
103
|
+
### 输入
|
|
104
|
+
|
|
105
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
106
|
+
| --- | --- | --- | --- |
|
|
107
|
+
| `modellogiccode` | string | 是 | 业务逻辑编码(来自 `page_model_logic_list`) |
|
|
108
|
+
|
|
109
|
+
### 输出(LogicResult,宽松对象)
|
|
110
|
+
|
|
111
|
+
| 字段 | 说明 |
|
|
112
|
+
| --- | --- |
|
|
113
|
+
| `modellogiccode` / `modelcode` | 逻辑编码 / 所属业务模型编码(两者必返) |
|
|
114
|
+
| `modellogicname` / `description` / `descr` | 标题 / 描述(descr 仅微服务 actioncategory=2 返回,等价 description) |
|
|
115
|
+
| `actioncategory` / `actiontype` / `execmode` / `executionmode` | 行为类型 / 操作类型 / 执行方式 / 执行模式(均为 string 兼容返回) |
|
|
116
|
+
| `functionname` | 函数命名 |
|
|
117
|
+
| `input` / `output` | 输入/输出参数数组(IN / OUT 的定义),结构见下 |
|
|
118
|
+
| `operations` | 操作步骤数组,**flycode 脚本在 `operations[].templateparams.flycode`**,通常只有单个元素;结构见下 |
|
|
119
|
+
| `rest` | 微服务 REST 配置 `{ server, url }`,仅 actioncategory=2 存在 |
|
|
120
|
+
| `bindjson` | 导出绑定配置 `{ bindcols[], modelcode, logiccode, logicname }`,仅 actioncategory=5 存在;`bindcols[]` 每项:`field`(字段名,导出列最佳定位键)、`column`(列标题)、`width`、`type`、`dynamictext` |
|
|
121
|
+
| `status` | 状态。⚠️ **详情接口返回不稳定**(部分调用不返回) |
|
|
122
|
+
| `message` / `marktype` / `tenantdbcode` / `tenantdbname` / `tenantdbtype` / `uilogicscript` / `usedatarule` / `idempotenttype` / `logicscript` | 提交信息 / 标记 / 其余保留或辅助字段 |
|
|
123
|
+
| ⚠️ `datapattern` | 是**列表接口字段**,详情多数不返回(勿在此找) |
|
|
124
|
+
|
|
125
|
+
`input[]/output[]` 每项(LogicParameters,均可选且可空):
|
|
126
|
+
|
|
127
|
+
| 字段 | 说明 |
|
|
128
|
+
| --- | --- |
|
|
129
|
+
| `name` | 参数名,代码中用此名字访问(`IN.name` / `OUT.xxx`) |
|
|
130
|
+
| `datatype` | 0-单实体 / 1-数组 |
|
|
131
|
+
| `objectcode` / `objectname` | 关联实体编码(自定义参数为空串)/ 参数中文名 |
|
|
132
|
+
| `properties` | 参数的属性数组:单实体时是 `IN.name` 对象的属性;数组时是元素对象的属性 |
|
|
133
|
+
| `customcode` | 自定义输出对象编码(仅自定义输出参数可能携带) |
|
|
134
|
+
| `marktype` | 创建标记 |
|
|
135
|
+
|
|
136
|
+
`properties[]` 每项(LogicParameterProperties):
|
|
137
|
+
|
|
138
|
+
| 字段 | 说明 |
|
|
139
|
+
| --- | --- |
|
|
140
|
+
| `name` | 字段访问名(代码中用) |
|
|
141
|
+
| `propertyname` / `propertycode` | 字段中文名 / 字段编码(自定义字段恒为空串 `""`,**空串不是有效定位键**) |
|
|
142
|
+
| `objectcode` | 所属实体编码(自定义字段为空串) |
|
|
143
|
+
| `propertytypecode` | 字段类型编码(完整枚举见 `tools/entity.md` 的 properties 表) |
|
|
144
|
+
| `marktype` | 创建标记 |
|
|
145
|
+
|
|
146
|
+
`operations[]` 每项(LogicOperations):
|
|
147
|
+
|
|
148
|
+
| 字段 | 说明 |
|
|
149
|
+
| --- | --- |
|
|
150
|
+
| `modellogiccode` | 业务逻辑编码(必返) |
|
|
151
|
+
| `modellogicstepcode` / `modellogicstepname` | 步骤编码 / 步骤名 |
|
|
152
|
+
| `templateparams` | `{ flycode, sourcemap, tempcompiledflycode }`——**flycode 即脚本代码字符串**(导出结构仅含 flycode) |
|
|
153
|
+
| `templateref` / `dynamic` / `marktype` / `seq` / `status` | 模板引用 / 动态配置(fieldmap、fieldblacklist)/ 标记 / 顺序 / 状态 |
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## `save_model_logic` — 全量保存业务逻辑(写,慎用)
|
|
158
|
+
|
|
159
|
+
全量保存一条业务逻辑。**仅用于**:① 新增;② 已有逻辑 JSON 很小(如微服务 `actioncategory=2`)。
|
|
160
|
+
编辑普通 flycode 接口的已有逻辑**禁止回传整份大对象**(极易超长截断、误改不相关字段)——改脚本用 `str_replace_flycode`,改结构/元数据用 `patch_model_logic`。
|
|
161
|
+
|
|
162
|
+
### 输入
|
|
163
|
+
|
|
164
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
165
|
+
| --- | --- | --- | --- |
|
|
166
|
+
| `logic` | object | 是 | 完整业务逻辑 JSON(LogicResult),通常来自 `get_model_logic` 返回、修改后回传。宽松对象:**查到什么就原样存回什么**,不要丢字段 |
|
|
167
|
+
| `commitMessage` | object | 是 | 提交信息(见顶部通用结构) |
|
|
168
|
+
|
|
169
|
+
### 输出
|
|
170
|
+
|
|
171
|
+
| 字段 | 类型 | 说明 |
|
|
172
|
+
| --- | --- | --- |
|
|
173
|
+
| `result` | string | 保存结果消息(服务端返回的 resp_data 字符串;失败时返回错误体 JSON) |
|
|
174
|
+
|
|
175
|
+
### 新建逻辑硬性前置(否则后端拒绝)
|
|
176
|
+
|
|
177
|
+
- `modellogiccode` / `modellogicstepcode` 必须是**纯数字 ID**:用 `generate_unique_code` 且**不传 prefix**(带字母前缀会被判 `modellogiccode不能为空` 拒绝)。
|
|
178
|
+
- 新建逻辑顶层**不要带** `metamodelcode` / `confsource`(详情接口不返回这两个字段,带上易触发 schema 报错)。
|
|
179
|
+
- 拿不准结构时,先 `get_model_logic` 取一条同类型真实逻辑作模板,只替换官方 code、名称与 flycode,其余字段原样保留。
|
|
180
|
+
- 完整 JSON 过大无法内联时,用 SKILL.md「八、超大 JSON 全量保存的官方脚本」(真·MCP 客户端),不要自写 REST 脚本。
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## `patch_model_logic` — 局部补丁修改业务逻辑(写)
|
|
185
|
+
|
|
186
|
+
以 delta ops 局部修改 input/output 结构、顶层元数据或导出列,**无需回传整份 LogicResult**。全部 op 预演成功才落库,任一失败整批回滚(事务性)。改 flycode 脚本本体请用 `str_replace_flycode`。
|
|
187
|
+
|
|
188
|
+
### 输入
|
|
189
|
+
|
|
190
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
191
|
+
| --- | --- | --- | --- |
|
|
192
|
+
| `modellogiccode` | string | 是 | 目标逻辑编码 |
|
|
193
|
+
| `ops` | array | 是 | 补丁操作数组,至少 1 个;按数组顺序依次作用于上一步结果。12 类 op 见下表 |
|
|
194
|
+
| `commitMessage` | object | 是 | 提交信息,整批 ops 共用一个 |
|
|
195
|
+
| `dryRun` | boolean | 否 | 只预演并输出摘要、不落库,**默认 false**。改动大或不确定时先置 true |
|
|
196
|
+
| `verify` | boolean | 否 | 保存后回读校验,**默认 true** |
|
|
197
|
+
|
|
198
|
+
### 12 类 op 一览
|
|
199
|
+
|
|
200
|
+
**① input/output 结构(6 类)**——公共定位字段 `target`(枚举 `input` / `output`):
|
|
201
|
+
|
|
202
|
+
| op | 关键字段 | 说明 |
|
|
203
|
+
| --- | --- | --- |
|
|
204
|
+
| `add_param` | `target`、`param`(单条 LogicParameters)、`position?`(默认末尾) | 向 input/output 追加一条参数 |
|
|
205
|
+
| `remove_param` | `target`、`name` | 按 name 删除整条参数 |
|
|
206
|
+
| `set_param_attrs` | `target`、`name`、`patch` | 按 name 定位参数,**浅合并**其顶层属性(如 `{ "datatype": "1", "objectname": "客户" }`) |
|
|
207
|
+
| `add_property` | `target`、`paramName`、`property`(单条 LogicParameterProperties)、`position?` | 向指定参数的 properties[] 追加一个字段 |
|
|
208
|
+
| `remove_property` | `target`、`paramName`、`propertyName?` / `propertyCode?`(二选一定位) | 删除一个字段。⚠️ 自定义字段 propertycode 恒为 `""`——**只传空串 propertyCode 而无 propertyName 会报 INVALID_PARAMS** |
|
|
209
|
+
| `replace_property` | `target`、`paramName`、`propertyName?` / `propertyCode?`、`property` | 按 name 或 propertycode 定位并**整体替换**一个字段 |
|
|
210
|
+
|
|
211
|
+
**② 元数据(1 类)**:
|
|
212
|
+
|
|
213
|
+
| op | 关键字段 | 说明 |
|
|
214
|
+
| --- | --- | --- |
|
|
215
|
+
| `set_meta` | `patch` | **浅合并**顶层元数据(modellogicname / description / actiontype / execmode / functionname / marktype 等)。⚠️ **不能含 input/output/operations**;⚠️ **切勿碰 bindjson**(会整体覆盖顶层丢导出列,改 bindjson 用 `set_bind_meta`) |
|
|
216
|
+
|
|
217
|
+
**③ 导出列(5 类,仅 `actioncategory=5` 导出类可用)**——定位字段 `field`(字段名,优先)/ `column`(列标题),二选一:
|
|
218
|
+
|
|
219
|
+
| op | 关键字段 | 说明 |
|
|
220
|
+
| --- | --- | --- |
|
|
221
|
+
| `add_export_column` | `column`(单条 LogicBindColumn,建议至少带 field)、`position?` | 向 bindjson.bindcols 追加一列 |
|
|
222
|
+
| `remove_export_column` | `field?` / `column?` | 删除一列 |
|
|
223
|
+
| `replace_export_column` | `field?` / `column?`、`newColumn` | 定位并整体替换一列 |
|
|
224
|
+
| `set_export_column_attrs` | `field?` / `column?`、`patch` | 浅合并某列部分属性(改 column 标题 / width / type,不改 field) |
|
|
225
|
+
| `set_bind_meta` | `patch` | 安全浅合并 bindjson 顶层(如 `{ "logicname": "新导出名" }`);**不能含 bindcols** |
|
|
226
|
+
|
|
227
|
+
### 输出
|
|
228
|
+
|
|
229
|
+
| 字段 | 类型 | 说明 |
|
|
230
|
+
| --- | --- | --- |
|
|
231
|
+
| `ok` | boolean | 整体是否成功(dryRun 成功也为 true,但 applied=false) |
|
|
232
|
+
| `applied` | boolean | 是否已落库;dryRun 或任一 op 预演失败时为 false |
|
|
233
|
+
| `verified` | boolean \| null | 回读校验:true 全部生效 / false 存在异常 / null 未落库或未开启校验 |
|
|
234
|
+
| `errorCode` | string | `OK` / `DRY_RUN` / `EMPTY_OPS` / `FETCH_FAILED` / `PARAM_NOT_FOUND` / `PROP_NOT_FOUND` / `DUP_NAME` / `OPS_FAILED` / `SAVE_FAILED` / `VERIFY_FAILED` |
|
|
235
|
+
| `message` | string | 结果说明;失败时给出可直接执行的处理建议 |
|
|
236
|
+
| `diff` | string | 全部 op 的执行摘要(超长截断;只回改动摘要,不回整份对象) |
|
|
237
|
+
| `ops` | array | 每个 op 的结果,与入参一一对应:`{ index, op, status(OK/FAILED), errorCode, message }`;op 级 errorCode:`OK` / `PARAM_NOT_FOUND` / `PROP_NOT_FOUND` / `DUP_NAME` / `INVALID_PARAMS` / `OP_ERROR` |
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## `str_replace_flycode` — 批量局部替换 flycode 脚本(写)
|
|
242
|
+
|
|
243
|
+
以 oldString→newString 局部替换 flycode 脚本,**不必回传整份**。支持多 op 批量、`rewrite:true` 整份重写(只传新全文)、dryRun 预览、occurrence/replaceAll 消歧;默认容忍 CRLF/LF 差异。全部 op 事务性预演,任一失败整批回滚。
|
|
244
|
+
|
|
245
|
+
### 输入
|
|
246
|
+
|
|
247
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
248
|
+
| --- | --- | --- | --- |
|
|
249
|
+
| `modelLogicCode` | string | 是 | 目标逻辑编码(⚠️ 参数名是 `modelLogicCode`,驼峰) |
|
|
250
|
+
| `ops` | array | 是 | 替换操作数组,至少 1 个;按顺序执行,全部成功才落库。op 结构见下 |
|
|
251
|
+
| `commitMessage` | object | 是 | 提交信息,整批 ops 共用一个 |
|
|
252
|
+
| `dryRun` | boolean | 否 | 只预演并输出 diff、不落库,**默认 false**。不确定 oldString 是否唯一时先置 true |
|
|
253
|
+
| `contextLines` | number | 否 | diff 每个改动点上下保留的行数,0–10,默认 3 |
|
|
254
|
+
| `verify` | boolean | 否 | 保存后回读校验,**默认 true** |
|
|
255
|
+
|
|
256
|
+
`ops[]` 每项:
|
|
257
|
+
|
|
258
|
+
| 字段 | 必填 | 说明 |
|
|
259
|
+
| --- | --- | --- |
|
|
260
|
+
| `oldString` | partial 模式必填 | 待替换原文片段,必须**在目标脚本中唯一命中**;从查询到的脚本原文**原样复制(含缩进与换行)**。`rewrite:true` 时被忽略 |
|
|
261
|
+
| `newString` | 是 | 替换后的新文本;partial 模式传空串表示删除该段;`rewrite:true` 时为**整份替换的目标全文** |
|
|
262
|
+
| `rewrite` | 否 | 整份替换开关:true 时忽略 oldString,把整个 operation 的 flycode 整体替换为 newString(大范围重构,省去回传旧全文);缺省为局部替换 |
|
|
263
|
+
| `operationIndex` | 否 | 作用于第几个 operation 的脚本,默认 0(多数逻辑只有一个 operation,无需传) |
|
|
264
|
+
| `replaceAll` | 否 | 替换全部匹配,默认 false;与 occurrence 互斥 |
|
|
265
|
+
| `occurrence` | 否 | 只替换第 N 个匹配(1-based),用于多处相同片段只改一处;与 replaceAll 互斥 |
|
|
266
|
+
| `matchMode` | 否 | `normalized`(默认,容忍 CRLF/LF 与行尾空白差异)/ `exact`(字节严格相等) |
|
|
267
|
+
| `label` | 否 | 可选标识,仅用于返回报告中辨认该 op |
|
|
268
|
+
|
|
269
|
+
### 输出
|
|
270
|
+
|
|
271
|
+
| 字段 | 类型 | 说明 |
|
|
272
|
+
| --- | --- | --- |
|
|
273
|
+
| `ok` / `applied` / `verified` / `message` | 同 patch_model_logic | verified:true 全部生效 / false 存在异常 / null 未落库 |
|
|
274
|
+
| `errorCode` | string | `OK` / `DRY_RUN` / `EMPTY_OPS` / `FETCH_FAILED` / `NO_OPERATIONS` / `OPS_FAILED` / `SAVE_FAILED` / `VERIFY_FAILED` |
|
|
275
|
+
| `lengthBefore` / `lengthAfter` | number | 替换前 / 后脚本总字符数 |
|
|
276
|
+
| `diff` | string | 全部 op 的 diff 片段(unified hunk 形态,超长截断;只回改动片段不回整份脚本) |
|
|
277
|
+
| `ops` | array | 每个 op 的结果,与入参一一对应,字段见下 |
|
|
278
|
+
|
|
279
|
+
`ops[]` 每项:
|
|
280
|
+
|
|
281
|
+
| 字段 | 说明 |
|
|
282
|
+
| --- | --- |
|
|
283
|
+
| `index` / `label` / `status` / `message` | 下标 / 调用方标识 / OK 或 FAILED / 失败原因 |
|
|
284
|
+
| `errorCode` | `OK` / `EMPTY_OLD_STRING` / `NOT_FOUND` / `NOT_UNIQUE` / `NO_TARGET` / `INVALID_PARAMS` / `OCCURRENCE_OUT_OF_RANGE` |
|
|
285
|
+
| `operationIndex` | 实际作用的 operation 下标 |
|
|
286
|
+
| `matchCount` / `replacedCount` | oldString 匹配总数 / 实际替换处数 |
|
|
287
|
+
| `range` | 首个替换点位置 `{ startOffset, endOffset, startLine, endLine }`(未执行时 null) |
|
|
288
|
+
| `suggestions` | `NOT_FOUND` 时的相似候选 `[{ startLine, score(0~1), preview }]`,供修正 oldString 参考 |
|
|
289
|
+
| `dependentOnFailedOp` | 前序 op 已失败时为 true(本 op 结果可能受影响) |
|
|
290
|
+
| `hunk` | 该 op 产生的 diff 片段 |
|
|
291
|
+
|
|
292
|
+
### 坑
|
|
293
|
+
|
|
294
|
+
- `oldString` 必须从 `get_model_logic` 拉到的脚本原文**原样复制**;NOT_FOUND 时先看 `suggestions` 修正,不要盲目重试。
|
|
295
|
+
- **verify:false / VERIFY_FAILED 视为真实未生效信号**(旧版「换行假阴性」已修复):`applied:true`+`verified:false` 时用 `get_model_logic` 实际回读确认,不要凭错误码重复提交。
|
|
296
|
+
- 整份重写务必用 `rewrite:true` 单 op(不传 oldString),不要把旧全文抄进 oldString。
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "flycode-mcp",
|
|
3
|
-
"version": "1.14.
|
|
3
|
+
"version": "1.14.4",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/flycode-mcp.min.js",
|
|
7
7
|
"bin": {
|
|
8
|
-
"flycode-mcp": "dist/
|
|
8
|
+
"flycode-mcp": "dist/cli.js"
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
|
-
"dist
|
|
11
|
+
"dist",
|
|
12
12
|
"README.md",
|
|
13
13
|
"LICENSE"
|
|
14
14
|
],
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"license": "AGPL-3.0-or-later",
|
|
38
38
|
"description": "A MCP Server for flycode language.",
|
|
39
39
|
"dependencies": {
|
|
40
|
+
"@clack/prompts": "^1.8.1",
|
|
40
41
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
41
42
|
"axios": "^1.19.0",
|
|
42
43
|
"zod": "^4.4.3"
|