flycode-mcp 1.2.0 → 1.4.0

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 CHANGED
@@ -11,7 +11,7 @@ A [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server for the
11
11
  - 基于官方 `@modelcontextprotocol/sdk` 实现,使用标准 `stdio` 传输协议。
12
12
  - 启动即完成 APaaS IDE 平台鉴权链路:账号登录 → 获取租户信息 → 获取 IDE Token。
13
13
  - 内置统一请求层 `request`,自动按请求类型(`center` / `tenant`)切换中心服务地址与当前租户连接地址,并自动注入鉴权 Token。
14
- - 当前提供工具:业务逻辑类 `page_model_logic_list`(分页查询业务逻辑列表)、`get_model_logic`(查询单个业务逻辑详情)、`save_model_logic`(保存 / 更新业务逻辑完整 JSON)、`simple_save_model_logic`(轻量保存 flycode 业务逻辑,只传 `modelLogicCode` / `flycode` / 可选 `input` / `output`);实体类 `page_entity_list`(分页查询实体列表)、`get_entity`(查询实体详情)。
14
+ - 当前提供工具:业务逻辑类 `page_model_logic_list`(分页查询业务逻辑列表)、`get_model_logic`(查询单个业务逻辑详情)、`save_model_logic`(保存 / 更新业务逻辑完整 JSON)、`simple_save_flycode_model_logic`(轻量保存 flycode 业务逻辑,只传 `modelLogicCode` / `flycode` / 可选 `input` / `output`);实体类 `page_entity_list`(分页查询实体列表)、`get_entity`(查询实体详情);表单 / 页面类 `page_form_list`(分页查询表单 / 页面列表)、`get_form`(查询表单 / 页面详情)。
15
15
 
16
16
  ---
17
17
 
@@ -134,7 +134,7 @@ username=<账号>&password=<密码>&tenantCode=<租户号>&envName=<环境名>
134
134
 
135
135
  > 注:保存后建议重新 `get_model_logic` 核对最新版本。`committype=saverecord` 的提交时间由服务端写入,无需在 `msgbody` 中重复填写。
136
136
 
137
- ### `simple_save_model_logic` — 轻量保存 flycode 业务逻辑
137
+ ### `simple_save_flycode_model_logic` — 轻量保存 flycode 业务逻辑
138
138
 
139
139
  `save_model_logic` 的轻量版:同样用于保存 / 更新一条业务逻辑,但**只需提供少量参数**,避免回传从 `get_model_logic` 查到的庞大完整 `LogicResult`(易因超长被截断、占用大量上下文)。底层调用 `service/logic.ts` 的 `simpleSaveFlyCodeModelLogic`:先按 `modelLogicCode` 拉取完整对象,只把 `flycode` 写入 `operations[].templateparams.flycode`、按需覆盖 `input` / `output`,其余字段原样保留,再以 `overwrite: false` 提交到 `/bizserv/bizmodel/saveModelLogic`。
140
140
 
@@ -195,6 +195,51 @@ username=<账号>&password=<密码>&tenantCode=<租户号>&envName=<环境名>
195
195
  - `message`:保存时编写的提交信息(作用类似 git 提交信息)
196
196
  - `properties`:实体属性数组,每个属性含 `propertyname` / `columnname` / `propertytypecode`(字段类型映射)/ `relationobjectcode`(关联实体)/ `idxtype`(索引方式)/ `publishstatus` / `status` 等
197
197
 
198
+ ### `page_form_list` — 分页查询表单 / 页面列表
199
+
200
+ 根据查询条件分页查询 APaaS 平台中的表单 / 页面定义(只读、幂等)。底层调用 `formClient.pageFormList`(接口 `POST /bizserv/bizpage/pageList`)。
201
+
202
+ **输入参数:**
203
+
204
+ | 参数 | 类型 | 必填 | 说明 |
205
+ | --------------- | ------ | ---- | -------------------------------------------------------------------------- |
206
+ | `status` | string | 否 | 状态(整数):1-启用;2-停用。示例传 `"1"` |
207
+ | `keys` | string | 否 | 模糊匹配表单 `code` / `title` |
208
+ | `keywords` | string | 否 | 模糊匹配表单中的关键词 |
209
+ | `clientcategorycode` | string | 否 | 用户端分类编码:1-web 端;2-app 端;6-小程序端 |
210
+ | `page` | string | 否 | 当前页,从 1 开始,默认 1 |
211
+ | `rows` | string | 否 | 每页记录数,默认 20 |
212
+ | `type` | string | 否 | 类型(整数):5-列表查询;1-普通页面;99-二开页面;10-switchpage;11-树导航列表;100-原生页面;101-空白页面;7-报表页面;12-排序页面;300-步骤管理表单 |
213
+ | `updateopname` | string | 否 | 最近修改人姓名,模糊匹配 |
214
+ | `updatetimestart` | string | 否 | 修改开始时间,格式 `yyyy-MM-dd hh:mm:ss`,与结束时间成对出现 |
215
+ | `updatetimeend` | string | 否 | 修改结束时间,格式 `yyyy-MM-dd hh:mm:ss`,与开始时间成对出现 |
216
+
217
+ **返回:** 表单 / 页面列表的 JSON(`resp_data`),包含分页信封 `pageCount` / `pageIndex` / `pageSize` / `resultCount`,以及 `data` 数组中每个表单 / 页面的基本信息。`code` 为必填字段,其余字段(如 `createtime`、`title`、`clientcategorycode`、`confsource`、`marktype`、`directorytypename`、`metamodelcode`、`pagetypename`、`pagedescr`、`status`、`type`、`updatetime`、`updateaccountname`、`versionnum` 等)均为可选,且值可能为 `null`。
218
+
219
+ > 注:接口另有固定默认参数(`centercode`、`directorytypecode`、`starttime`),已在工具内部硬编码传入,不对外暴露。
220
+
221
+ ### `get_form` — 查询表单 / 页面详情
222
+
223
+ 根据表单 / 页面的唯一编码 `code` 获取其完整详情(只读、幂等)。底层调用 `formClient.getForm`(接口 `POST /bizserv/bizpage/getPage`)。
224
+
225
+ **输入参数:**
226
+
227
+ | 参数 | 类型 | 必填 | 说明 |
228
+ | ----- | ------ | ---- | -------------------------- |
229
+ | `code` | string | 是 | 要查详情的表单 / 页面的唯一编码 |
230
+
231
+ **返回:** 表单 / 页面详情的 JSON(`resp_data`),结构为顶层对象 `FormResult`,主要字段:
232
+
233
+ - `pageinfo`:页面基础信息(`code` / `title` / `type` / `status` / `marktype` / `clientcategorycode` / `versionnum` / `pagetemplatecode` / `pagedescr` 等;`eventlist` 页面级事件、`reportdesclist` 关联报表、`cache` 缓存配置)
234
+ - `businessmodel`:引用的后端业务模型 / 接口数组,结构同 `logicClient` 的 `LogicResult`(`actiontype` / `modelcode` / `modellogiccode` / `input` / `output` / `operations` 等)
235
+ - `presenter`:事件处理器(`initial` 初始化 / `interface` 对外接口 / `handlers` 事件处理器),每项含 `code` / `key` / `condition` / `actions`
236
+ - `view`:页面结构,递归的控件节点树;每个节点 `type` 为控件种类判别符(`layout` / `report` / `datagrid` / `textinput` / `button` / `table` / `select` / `checkbox` / `upload` 等),`content` 为递归子节点数组
237
+ - `controls`:扁平控件数组(部分页面才有)
238
+ - `pageswitch`:仅 switchpage 类型才有的页面切换配置(`mode` / `menu` / `pagerefs` / `eventlist`)
239
+ - `message`:每次保存填写的提交信息(类似 git 提交信息)
240
+
241
+ > 注:工具的 `description` 中附有「字段速查」,列出了各顶层对象的关键字段与编码枚举含义(如 `pageinfo.type` 页面类型、`marktype` 创建标记、`clientcategorycode` 用户端等),便于理解返回 JSON。详情类型的字段定义见 `src/clients/formClient.ts`(`FormResult` / `FormPageInfo` / `FormViewNode` / `FormControl` 等接口)。
242
+
198
243
  ---
199
244
 
200
245
  ## 项目结构
@@ -210,6 +255,7 @@ flycode-mcp/
210
255
  │ │ ├── authClient.ts # 登录 / 获取租户信息 / 获取 IDE Token 请求
211
256
  │ │ ├── logicClient.ts # 业务逻辑分页/详情查询、保存请求
212
257
  │ │ ├── entityClient.ts # 实体列表 pageEntityList / 详情 getEntity 请求
258
+ │ │ ├── formClient.ts # 表单 / 页面列表 pageFormList、详情 getForm 请求;FormResult 等详情类型定义
213
259
  │ │ └── types.ts # 公共响应信封类型(DataResponse / PageResponse / CommonResponse)
214
260
  │ ├── store/ # 运行时内存存储
215
261
  │ │ ├── token.ts # 鉴权 Token 存储器
@@ -221,6 +267,8 @@ flycode-mcp/
221
267
  │ │ │ └── schemas.ts # 业务逻辑共享 zod schema(LogicResult / 参数 / operations / bindjson)
222
268
  │ │ └── entity/
223
269
  │ │ └── read.ts # 只读类工具(page_entity_list / get_entity)
270
+ │ │ └── form/
271
+ │ │ └── read.ts # 只读类工具(page_form_list / get_form)
224
272
  │ └── utils/
225
273
  │ ├── config.ts # 从命令行参数解析连接配置(BASE_URL / 账号等)
226
274
  │ ├── request.ts # 统一 axios 请求层(中心/租户地址切换 + Token 注入)
@@ -240,8 +288,8 @@ flycode-mcp/
240
288
  2. **登录**:`service/auth.ts` 中的 `authenticate()` 调用 `/api/multiplat/auth/login` 获取 Token,存入内存。
241
289
  3. **定位租户与环境**:`authenticate()` 调用 `/api/multiplat/auth/getTenantInfo`,依据 `tenantCode + envName` 匹配出目标租户,保存其连接信息(`conn.config`)到内存。
242
290
  4. **获取 IDE Token**:`authenticate()` 调用 `/api/multiplat/auth/getIdeToken` 换取 IDE 专用 Token 并覆盖内存中的 Token。
243
- 5. **注册并启动**:创建 `McpServer`,注册 `page_model_logic_list`、`get_model_logic`、`save_model_logic`、`simple_save_model_logic`、`page_entity_list`、`get_entity` 等工具,通过 `StdioServerTransport` 监听请求。
244
- 6. **业务请求**:工具被调用时,`logicClient` / `entityClient` 通过 `request({ type: "tenant" })` 自动切换到当前租户连接地址,并携带已注入的 Token 发起查询。
291
+ 5. **注册并启动**:创建 `McpServer`,注册 `page_model_logic_list`、`get_model_logic`、`save_model_logic`、`simple_save_flycode_model_logic`、`page_entity_list`、`get_entity`、`page_form_list`、`get_form` 等工具,通过 `StdioServerTransport` 监听请求。
292
+ 6. **业务请求**:工具被调用时,`logicClient` / `entityClient` / `formClient` 通过 `request({ type: "tenant" })` 自动切换到当前租户连接地址,并携带已注入的 Token 发起查询。
245
293
 
246
294
  ---
247
295
 
@@ -0,0 +1,30 @@
1
+ import request from "../utils/request.js";
2
+ /**
3
+ * 分页条件查询表单
4
+ *
5
+ * @param data 查询条件数据
6
+ * @returns 响应数据
7
+ */
8
+ export function pageFormList(data) {
9
+ return request({
10
+ url: '/bizserv/bizpage/pageList',
11
+ method: 'post',
12
+ data,
13
+ type: 'tenant'
14
+ });
15
+ }
16
+ /**
17
+ * 获取表单详情
18
+ *
19
+ * @param data 请求数据,表单的唯一编码
20
+ * @returns 表单详情信息
21
+ */
22
+ export function getForm(data) {
23
+ return request({
24
+ url: '/bizserv/bizpage/getPage',
25
+ method: 'post',
26
+ data,
27
+ type: 'tenant'
28
+ });
29
+ }
30
+ //# sourceMappingURL=formClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formClient.js","sourceRoot":"","sources":["../../src/clients/formClient.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAA;AAiHzC;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAoB;IAC/C,OAAO,OAAO,CAAC;QACb,GAAG,EAAE,2BAA2B;QAChC,MAAM,EAAE,MAAM;QACd,IAAI;QACJ,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;AACJ,CAAC;AA4wBD;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,IAAgB;IACtC,OAAO,OAAO,CAAC;QACb,GAAG,EAAE,0BAA0B;QAC/B,MAAM,EAAE,MAAM;QACd,IAAI;QACJ,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;AACJ,CAAC"}
package/dist/index.js CHANGED
@@ -5,6 +5,7 @@ import { authenticate } from './service/auth.js';
5
5
  import { readTools as logicReadTools } from './tools/logic/read.js';
6
6
  import { writeTools as logicWriteTools } from './tools/logic/write.js';
7
7
  import { readTools as entityReadTools } from './tools/entity/read.js';
8
+ import { readTools as formReadTools } from './tools/form/read.js';
8
9
  // 鉴权初始化(登录 -> 获取租户信息 -> 获取 IDE Token)
9
10
  await authenticate();
10
11
  // 创建 MCP 服务器
@@ -17,6 +18,7 @@ const allTools = [
17
18
  ...logicReadTools,
18
19
  ...logicWriteTools,
19
20
  ...entityReadTools,
21
+ ...formReadTools,
20
22
  ];
21
23
  for (const t of allTools) {
22
24
  server.registerTool(t.name, t.config, t.handler);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACnE,OAAO,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAErE,sCAAsC;AACtC,MAAM,YAAY,EAAE,CAAA;AAEpB,aAAa;AACb,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAA;AAEF,uCAAuC;AACvC,MAAM,QAAQ,GAAc;IAC1B,GAAG,cAAc;IACjB,GAAG,eAAe;IAClB,GAAG,eAAe;CACnB,CAAA;AAED,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;IACzB,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;AAClD,CAAC;AAED,OAAO;AACP,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAA;IAC5C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC/B,kBAAkB;IAClB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAA;AACjD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IACjB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACnE,OAAO,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACrE,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEjE,sCAAsC;AACtC,MAAM,YAAY,EAAE,CAAA;AAEpB,aAAa;AACb,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAA;AAEF,uCAAuC;AACvC,MAAM,QAAQ,GAAc;IAC1B,GAAG,cAAc;IACjB,GAAG,eAAe;IAClB,GAAG,eAAe;IAClB,GAAG,aAAa;CACjB,CAAA;AAED,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;IACzB,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;AAClD,CAAC;AAED,OAAO;AACP,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAA;IAC5C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC/B,kBAAkB;IAClB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAA;AACjD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IACjB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAA"}
@@ -0,0 +1,196 @@
1
+ import { z } from 'zod';
2
+ import { pageFormList, getForm } from '../../clients/formClient.js';
3
+ /**
4
+ * 表单/页面列表查询结果的 outputSchema。
5
+ * 字段类型严格依据 formClient.ts 中的 FormPageResult 接口声明构建:
6
+ * 除 code 外,其余字段均为 string | null | undefined(可选且可空)。
7
+ * string|null -> z.union([z.string(), z.null()]);
8
+ * number|null -> z.coerce.number().nullable()(对字符串型数字容错)。
9
+ * 描述文字直接采用 formClient.ts 中 FormPageResult 的注释内容。
10
+ */
11
+ const formPageResultShape = z.object({
12
+ createtime: z.union([z.string(), z.null()]).optional().describe('创建时间'),
13
+ createaccountcode: z.union([z.string(), z.null()]).optional().describe('创建人的账号编码'),
14
+ createaccountname: z.union([z.string(), z.null()]).optional().describe('创建人姓名'),
15
+ code: z.string().describe('表单/页面的编码'),
16
+ clientcategorycode: z.union([z.string(), z.null()]).optional().describe('用户端分类编码,1-web端;2-app端;6-小程序端'),
17
+ confsource: z.coerce.number().nullable().optional().describe('配置来源,含义:1-IDE配置;2-用户级配置'),
18
+ directorytypecode: z.union([z.string(), z.null()]).optional().describe('所属目录分类的编码'),
19
+ directorytypename: z.union([z.string(), z.null()]).optional().describe('所属目录分类的名称'),
20
+ marktype: z.coerce.number().nullable().optional().describe('创建标记:0-平台;1-产品;2-租户'),
21
+ metamodelcode: z.union([z.string(), z.null()]).optional().describe('领域模型编码,和 code 共同构成复合主键'),
22
+ pagetemplatecode: z.union([z.string(), z.null()]).optional().describe('页面模板编码'),
23
+ pagetypename: z.union([z.string(), z.null()]).optional().describe('页面类型名称'),
24
+ pagedescr: z.union([z.string(), z.null()]).optional().describe('页面描述'),
25
+ ref: z.union([z.string(), z.null()]).optional().describe('外部引用,一般传空字符串'),
26
+ status: z.coerce.number().nullable().optional().describe('状态,含义:1-启用;2-停用'),
27
+ title: z.union([z.string(), z.null()]).optional().describe('标题'),
28
+ type: z.coerce.number().nullable().optional().describe('类型(整数)含义:5-列表查询;1-普通页面;99-二开页面;10-switchpage;11-树导航列表;100-原生页面;101-空白页面;7-报表页面;12-排序页面;300-步骤管理表单'),
29
+ updatetime: z.union([z.string(), z.null()]).optional().describe('最近更新时间'),
30
+ updateaccountcode: z.union([z.string(), z.null()]).optional().describe('最近更新人的账号编码'),
31
+ updateaccountname: z.union([z.string(), z.null()]).optional().describe('最近更新人的姓名'),
32
+ versionnum: z.union([z.string(), z.null()]).optional().describe('版本号')
33
+ });
34
+ /**
35
+ * 表单/页面详情查询结果(FormResult)的 outputSchema 形状。
36
+ * 描述文字直接采用 formClient.ts 中 FormResult 接口及其各字段的注释内容。
37
+ * 由于 FormResult 内部包含递归的 view 节点树、带索引签名的控件结构等复杂类型,
38
+ * 子对象(pageinfo / businessmodel / presenter / view / controls 等)统一以 z.any()
39
+ * 承接,仅对顶层各字段给出语义描述;本形状作为原始 ZodRawShape 直接传给
40
+ * registerTool 由 SDK 包装为 z.object,兼容服务端偶发返回的额外顶层字段时由
41
+ * 调用方(client)原样透传,避免 -32602 Output validation 报错。
42
+ */
43
+ const formResultShape = {
44
+ renderinfo: z.any().optional().describe('IDE 渲染标记'),
45
+ pageinfo: z.any().optional().describe('核心对象 1:页面基础信息'),
46
+ businessmodel: z.any().optional().describe('页面引用到的后端业务模型(接口),结构同 logicClient 的 LogicResult'),
47
+ actionlogic: z.any().optional().describe('动作逻辑,仅部分页面存在,非核心对象'),
48
+ presenter: z.any().optional().describe('核心对象 2:定义的各种事件,在不同时机触发,如按钮点击、下拉框选择的值改变、首次加载等'),
49
+ view: z.any().optional().describe('核心对象 3:定义的页面结构,页面由哪些控件构成,控件的属性、样式,绑定哪些事件等'),
50
+ controls: z.any().optional().describe('控件,仅部分页面存在,非核心对象'),
51
+ pageswitch: z.any().optional().describe('仅 switchpage 类型的表单有此字段,描述 switchpage 包含哪些页面'),
52
+ message: z.string().nullable().optional().describe('提交信息,每次保存时填写的,类似 git 的提交信息')
53
+ };
54
+ /** 只读类工具:查询、列表、读取等不会修改数据的操作。 */
55
+ export const readTools = [
56
+ {
57
+ name: 'page_form_list',
58
+ config: {
59
+ title: '分页查询表单/页面',
60
+ description: '根据查询条件分页查询表单/页面列表',
61
+ inputSchema: {
62
+ status: z.string().optional().describe('状态,整数含义:1-启用;2-停用。示例传 "1"'),
63
+ keys: z.string().optional().describe('模糊匹配表单 code / title'),
64
+ keywords: z.string().optional().describe('模糊匹配表单中的关键词'),
65
+ clientcategorycode: z.string().optional().describe('用户端分类编码,1-web端;2-app端;6-小程序端'),
66
+ page: z.string().optional().describe('分页,当前页,从 1 开始'),
67
+ rows: z.string().optional().describe('分页,每页记录数'),
68
+ type: z.string().optional().describe('类型(整数)含义:5-列表查询;1-普通页面;99-二开页面;10-switchpage;11-树导航列表;100-原生页面;101-空白页面;7-报表页面;12-排序页面;300-步骤管理表单'),
69
+ updateopname: z.string().optional().describe('最近修改人姓名'),
70
+ updatetimestart: z.string().optional().describe('修改开始时间,与修改结束时间成对出现,格式:yyyy-MM-dd hh:mm:ss'),
71
+ updatetimeend: z.string().optional().describe('修改结束时间,与修改开始时间成对出现,格式:yyyy-MM-dd hh:mm:ss')
72
+ },
73
+ outputSchema: {
74
+ data: z.array(formPageResultShape).describe('这一页的业务数据'),
75
+ pageCount: z.coerce.number().describe('总页数'),
76
+ pageIndex: z.coerce.number().describe('第几页'),
77
+ pageSize: z.coerce.number().describe('每页记录数'),
78
+ resultCount: z.coerce.number().describe('总记录数')
79
+ },
80
+ annotations: {
81
+ readOnlyHint: true, // 此操作不会修改数据
82
+ destructiveHint: false, // 此操作不具有破坏性
83
+ idempotentHint: true // 重复调用结果相同
84
+ }
85
+ },
86
+ handler: async (args) => {
87
+ const { status = '', keys = '', keywords = '', clientcategorycode = '', page = 1, rows = 20, type = '', updateopname = '', updatetimestart = '', updatetimeend = '' } = args;
88
+ try {
89
+ const res = await pageFormList({
90
+ // 以下为接口固定默认传值,不对外暴露
91
+ centercode: '',
92
+ directorytypecode: 'rootNode',
93
+ starttime: '',
94
+ status,
95
+ keys,
96
+ keywords,
97
+ clientcategorycode,
98
+ page: Number(page) || 1,
99
+ rows: Number(rows) || 20,
100
+ type,
101
+ updateopname,
102
+ updatetimestart,
103
+ updatetimeend
104
+ });
105
+ return {
106
+ content: [{
107
+ type: 'text',
108
+ text: JSON.stringify(res.resp_data)
109
+ }],
110
+ // outputSchema 已在工具上声明,SDK 1.30 要求调用结果必须携带
111
+ // structuredContent 与之匹配,否则会抛 -32602;这里同时返回
112
+ // 文本(给人/模型阅读)和结构化内容(供 schema 校验)。
113
+ structuredContent: res.resp_data
114
+ };
115
+ }
116
+ catch (e) {
117
+ // 业务/网络错误:HTTP 非 200 时 Axios 已在传输层抛出,
118
+ // 错误体形如 {"error_type":600,"error_code":"token无效,请重新登录","error_params":null}
119
+ // 将其原始 JSON 原样返回给模型,不做二次包装。
120
+ const err = e;
121
+ const body = err.response?.data ?? e;
122
+ return {
123
+ isError: true,
124
+ content: [{
125
+ type: 'text',
126
+ text: JSON.stringify(body)
127
+ }]
128
+ };
129
+ }
130
+ },
131
+ },
132
+ {
133
+ name: 'get_form',
134
+ config: {
135
+ title: '查询表单/页面详情',
136
+ description: `根据表单/页面的唯一编码 code 获取其完整详情。返回结构为顶层对象,包含:
137
+ - pageinfo:页面基础信息
138
+ - businessmodel:引用的后端业务模型/接口(结构同 logicClient 的 LogicResult)
139
+ - presenter:事件处理器(加载/按钮点击/下拉改变等时机触发)
140
+ - view:页面结构,递归的控件节点树
141
+ - controls:扁平控件数组(部分页面才有)
142
+ - pageswitch:仅 switchpage 类型才有的页面切换配置
143
+ - message:每次保存填写的提交信息(类似 git 提交信息)
144
+
145
+ 【字段速查(编码字段与关键结构,供理解返回 JSON)】
146
+ pageinfo 关键字段:
147
+ code 编码;title 标题;type 页面类型整数(同 page_form_list 的 type:5-列表查询/1-普通页面/99-二开/10-switchpage/11-树导航列表/100-原生/101-空白/7-报表/12-排序/300-步骤管理);status 状态(1-启用/2-停用);marktype 创建标记(0-平台/1-产品/2-租户);versionnum 版本号;directorytypecode 目录分类编码;pagetemplatecode 模板编码;clientcategorycode 用户端(1-web/2-app/6-小程序);pagedescr 描述;ref 外部引用(一般空);eventlist 页面级事件(如 onload,含 trigger/handler);reportdesclist 关联报表(reportcode/desccode);cache 缓存配置(keys/enable/submitevents)。
148
+ businessmodel(数组,每项):actioncategory/actiontype 动作类型;marktype 创建标记;modelcode 模型编码;modellogiccode/modellogicname 逻辑编码/名称;input/output 业务对象及其 properties(name/objectcode/propertycode/propertytypecode);operations 执行步骤(seq 序号/status/templateref 模板引用/templateparams);status 状态。
149
+ presenter:initial 初始化处理器、interface 对外接口(供其他页面调用,靠 key 标识)、handlers 事件处理器(按钮点击等);每项含 code/desc/name/key/condition(flycode 条件)/actions;action 的 type(receivelink 接收参数/flycode 脚本/datarequest 请求后端/eventlink 事件/exportfile 导出/popup 弹窗等)、script(flycode 脚本体)、logiccode(关联后端逻辑)、param(receivelink 传参:datatype/name/ctrlcode/properties)。
150
+ view(递归节点树):每个节点 type 为控件种类判别符(layout 布局/report 报表/datagrid 表格/textinput 文本输入/button 按钮/table 表格/dateinput 日期/select 下拉/checkbox 多选/image 图片/upload 上传/text 文本 等),content 为子节点数组(递归),eventlist 节点事件;常用样式/交互属性:title 标题、hidden 隐藏('1'/'0')、readonly 只读、required 必填、placeholder 占位提示、text 文本、icon 图标、width/height 尺寸、color/backgroundcolor 颜色、flex/flexdirection/flexgrow 弹性布局、margin*/padding* 边距/内边距、display 显示方式、bordervisible 边框、checkable 可勾选、multiselectable 多选、searchable 可搜索、maxlength 最大长度、format 格式(如日期)、decimaldigits 小数位、options 下拉选项([{key,text}])、cols 表格列定义。
151
+ controls(扁平数组):type/code/name/title/eventlist/options/rows,属性含义同 view 节点。
152
+ pageswitch(仅 switchpage):mode 切换模式、menu 菜单、pagerefs 被引用页面(pagecode/functioncode/title/hidden/marktype)、eventlist。
153
+ message:提交信息文本。`,
154
+ inputSchema: {
155
+ code: z.string().describe('表单/页面的唯一编码')
156
+ },
157
+ outputSchema: formResultShape,
158
+ annotations: {
159
+ readOnlyHint: true, // 此操作不会修改数据
160
+ destructiveHint: false, // 此操作不具有破坏性
161
+ idempotentHint: true // 重复调用结果相同
162
+ }
163
+ },
164
+ handler: async (args) => {
165
+ const { code } = args;
166
+ try {
167
+ const res = await getForm({ code });
168
+ return {
169
+ content: [{
170
+ type: 'text',
171
+ text: JSON.stringify(res.resp_data)
172
+ }],
173
+ // outputSchema 已在工具上声明,SDK 1.30 要求调用结果必须携带
174
+ // structuredContent 与之匹配,否则会抛 -32602;这里同时返回
175
+ // 文本(给人/模型阅读)和结构化内容(供 schema 校验)。
176
+ structuredContent: res.resp_data
177
+ };
178
+ }
179
+ catch (e) {
180
+ // 业务/网络错误:HTTP 非 200 时 Axios 已在传输层抛出,
181
+ // 错误体形如 {"error_type":600,"error_code":"token无效,请重新登录","error_params":null}
182
+ // 将其原始 JSON 原样返回给模型,不做二次包装。
183
+ const err = e;
184
+ const body = err.response?.data ?? e;
185
+ return {
186
+ isError: true,
187
+ content: [{
188
+ type: 'text',
189
+ text: JSON.stringify(body)
190
+ }]
191
+ };
192
+ }
193
+ }
194
+ }
195
+ ];
196
+ //# sourceMappingURL=read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/tools/form/read.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flycode-mcp",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.js",