flycode-mcp 1.6.1 → 1.7.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_flycode_model_logic`(轻量保存 flycode 业务逻辑,只传 `modelLogicCode` / `flycode` / 可选 `input` / `output`);实体类 `page_entity_list`(分页查询实体列表)、`get_entity`(查询实体详情);表单 / 页面类 `page_form_list`(分页查询表单 / 页面列表)、`get_form`(查询表单 /
|
|
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`(查询表单 / 页面详情);函数类 `page_function_list`(分页查询 flycode 函数列表)、`get_function`(查询 flycode 函数详情,含 `confjson` 函数代码内容);SQL 执行类 `run_sql`(在业务库中执行一条 SELECT 查询,返回查询结果数据与结果总数);通用类 `generate_unique_code`(生成唯一编码,用于新建实体 / 领域 / 表单时生成 JSON 中的 `code` 字段)。
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
@@ -126,9 +126,9 @@ username=<账号>&password=<密码>&tenantCode=<租户号>&envName=<环境名>
|
|
|
126
126
|
| -------------- | -------- | ---- | ---------------------------------------------------------------------------------------------------------- |
|
|
127
127
|
| `logic` | object | 是 | 完整的业务逻辑 JSON 对象(`LogicResult`)。通常来自 `get_model_logic` 的返回,修改后原样回传;微服务 / 导出 / 内部函数等各类结构均兼容(未声明字段会被保留) |
|
|
128
128
|
| `commitMessage`| object | 是 | 提交信息,含以下字段: |
|
|
129
|
-
|
|
|
130
|
-
|
|
|
131
|
-
|
|
|
129
|
+
| `committype`| enum | 是 | 提交类型:`saverecord` / `feature` / `fix` / `stylefix` / `refactor` / `testfix`(与 `committypetext` 一一对应) |
|
|
130
|
+
| `committypetext`| enum | 是 | 提交类型名称:`保存记录` / `新功能添加` / `bug修改` / `样式修改` / `重构` / `测试`(与 `committype` 一一对应) |
|
|
131
|
+
| `msgbody` | string | 条件 | 提交内容。`committype=saverecord` 时忽略(服务端自动填入 `yyyy-MM-dd hh:mm` 格式的当前时间);其他类型必填,按 git 提交规范书写 |
|
|
132
132
|
|
|
133
133
|
**返回:** 保存操作的结果消息(服务端返回的 `resp_data` 字符串;失败时返回错误体 JSON)。
|
|
134
134
|
|
|
@@ -240,6 +240,45 @@ username=<账号>&password=<密码>&tenantCode=<租户号>&envName=<环境名>
|
|
|
240
240
|
|
|
241
241
|
> 注:工具的 `description` 中附有「字段速查」,列出了各顶层对象的关键字段与编码枚举含义(如 `pageinfo.type` 页面类型、`marktype` 创建标记、`clientcategorycode` 用户端等),便于理解返回 JSON。详情类型的字段定义见 `src/clients/formClient.ts`(`FormResult` / `FormPageInfo` / `FormViewNode` / `FormControl` 等接口)。
|
|
242
242
|
|
|
243
|
+
### `page_function_list` — 分页查询 flycode 函数列表
|
|
244
|
+
|
|
245
|
+
根据查询条件分页查询 APaaS 平台中的 flycode 函数定义(只读、幂等)。底层调用 `functionClient.pageFunctionList`(接口 `POST /bizserv/bizmodel/pageList`)。
|
|
246
|
+
|
|
247
|
+
**输入参数:**
|
|
248
|
+
|
|
249
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
250
|
+
| ------------- | ------ | ---- | -------------------------------------------------------------------------- |
|
|
251
|
+
| `classname` | string | 否 | 函数英文名 |
|
|
252
|
+
| `name` | string | 否 | 函数中文名,通常和 `modelname` 一致 |
|
|
253
|
+
| `modelname` | string | 否 | 函数中文名,通常和 `name` 一致 |
|
|
254
|
+
| `flycodekey` | string | 否 | 函数内容关键字,模糊匹配 |
|
|
255
|
+
| `page` | string | 否 | 当前页,从 1 开始,默认 1 |
|
|
256
|
+
| `rows` | string | 否 | 每页记录数,默认 20 |
|
|
257
|
+
|
|
258
|
+
**返回:** flycode 函数列表的 JSON(`resp_data`),包含分页信封 `pageCount` / `pageIndex` / `pageSize` / `resultCount`,以及 `data` 数组中每个函数的基本信息:`classname`(函数英文名)/ `modelname`(函数中文名)/ `modeldescr`(函数描述)/ `modelcode`(函数编码)/ `metamodelcode`(领域模型编码)/ `dddlayer`(函数层级,固定 3)/ `marktype`(创建标记:0-平台;1-产品;2-租户)/ `status`(状态:1-启用;2-停用)/ `tablename` / `createtime` / `updatetime` / `createaccountname` / `updateaccountname` 等。字段值可能为 `null`,且 `marktype` / `status` / `dddlayer` 等部分字段以数字或字符串两种形态返回。
|
|
259
|
+
|
|
260
|
+
> 注:接口另有固定默认参数(`dddlayer` 固定传 3、`directorytypecode`、`starttime`),已在工具内部硬编码传入,不对外暴露。
|
|
261
|
+
|
|
262
|
+
### `get_function` — 查询 flycode 函数详情
|
|
263
|
+
|
|
264
|
+
根据函数的编码 `modelcode` 查询其完整详情(只读、幂等),包含函数的基本信息与 flycode 函数代码内容 `confjson`。底层调用 `functionClient.getFunction`(接口 `POST /bizserv/bizmodel/get`)。
|
|
265
|
+
|
|
266
|
+
**输入参数:**
|
|
267
|
+
|
|
268
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
269
|
+
| ----------- | ------ | ---- | -------------------------- |
|
|
270
|
+
| `modelcode` | string | 是 | 要查详情的函数的编码 |
|
|
271
|
+
|
|
272
|
+
**返回:** flycode 函数详情的 JSON(`resp_data`),主要字段:
|
|
273
|
+
|
|
274
|
+
- `classname` / `modelname` / `modeldescr` / `modelcode` / `metamodelcode`:函数英文名、中文名、描述、编码、领域模型编码
|
|
275
|
+
- `dddlayer`:函数层级,固定为 3
|
|
276
|
+
- `marktype` / `status`:创建标记(0-平台;1-产品;2-租户)、状态(1-启用;2-停用)
|
|
277
|
+
- `tablename` / `createtime` / `updatetime` / `createaccountname` / `updateaccountname`:数据库表名(函数一般无对应表,通常为空)、时间戳与创建 / 更新人
|
|
278
|
+
- `confjson`:flycode 函数代码内容,是函数实现体的核心字段
|
|
279
|
+
|
|
280
|
+
> 注:详情接口返回结构不稳定(部分字段调用时可能缺省),工具以宽松结构(`z.looseObject`)透传服务端返回的额外字段,确保任意详情均可正常返回。字段定义见 `src/clients/functionClient.ts`(`FunctionResult` / `FunctionPageResult` 接口)。
|
|
281
|
+
|
|
243
282
|
### `run_sql` — 执行 SQL 查询
|
|
244
283
|
|
|
245
284
|
在业务库中执行一条 SELECT 查询 SQL(只读、幂等),直接探查业务表数据、核对字段值、验证同步结果等。底层调用 `runClient.sqlRun`(接口 `POST /api/biz/sqlrun`)。
|
|
@@ -288,6 +327,7 @@ flycode-mcp/
|
|
|
288
327
|
│ │ ├── authClient.ts # 登录 / 获取租户信息 / 获取 IDE Token 请求
|
|
289
328
|
│ │ ├── logicClient.ts # 业务逻辑分页/详情查询、保存请求
|
|
290
329
|
│ │ ├── entityClient.ts # 实体列表 pageEntityList / 详情 getEntity 请求
|
|
330
|
+
│ │ ├── functionClient.ts # flycode 函数列表 pageFunctionList、详情 getFunction 请求;FunctionResult 等类型定义
|
|
291
331
|
│ │ ├── formClient.ts # 表单 / 页面列表 pageFormList、详情 getForm 请求;FormResult 等详情类型定义
|
|
292
332
|
│ │ ├── runClient.ts # SQL 查询 sqlRun 请求(POST /api/biz/sqlrun)
|
|
293
333
|
│ │ └── types.ts # 公共响应信封类型(DataResponse / PageResponse / CommonResponse)
|
|
@@ -305,6 +345,8 @@ flycode-mcp/
|
|
|
305
345
|
│ │ │ └── schemas.ts # 实体共享 zod schema(EntityResult / EntityProperty,宽松透传结构)
|
|
306
346
|
│ │ ├── form/
|
|
307
347
|
│ │ │ └── read.ts # 只读类工具(page_form_list / get_form)
|
|
348
|
+
│ │ ├── function/
|
|
349
|
+
│ │ │ └── read.ts # 只读类工具(page_function_list / get_function)
|
|
308
350
|
│ │ └── run/
|
|
309
351
|
│ │ └── read.ts # 只读类工具(run_sql:执行 SQL 查询)
|
|
310
352
|
│ └── utils/
|
|
@@ -327,8 +369,8 @@ flycode-mcp/
|
|
|
327
369
|
2. **登录**:`service/auth.ts` 中的 `authenticate()` 调用 `/api/multiplat/auth/login` 获取 Token,存入内存。
|
|
328
370
|
3. **定位租户与环境**:`authenticate()` 调用 `/api/multiplat/auth/getTenantInfo`,依据 `tenantCode + envName` 匹配出目标租户,保存其连接信息(`conn.config`)到内存。
|
|
329
371
|
4. **获取 IDE Token**:`authenticate()` 调用 `/api/multiplat/auth/getIdeToken` 换取 IDE 专用 Token 并覆盖内存中的 Token。
|
|
330
|
-
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`、`run_sql`、`generate_unique_code` 等工具,通过 `StdioServerTransport` 监听请求。
|
|
331
|
-
6. **业务请求**:工具被调用时,`logicClient` / `entityClient` / `formClient` / `runClient` 通过 `request({ type: "tenant" })` 自动切换到当前租户连接地址,并携带已注入的 Token 发起查询。
|
|
372
|
+
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`、`page_function_list`、`get_function`、`run_sql`、`generate_unique_code` 等工具,通过 `StdioServerTransport` 监听请求。
|
|
373
|
+
6. **业务请求**:工具被调用时,`logicClient` / `entityClient` / `formClient` / `functionClient` / `runClient` 通过 `request({ type: "tenant" })` 自动切换到当前租户连接地址,并携带已注入的 Token 发起查询。
|
|
332
374
|
|
|
333
375
|
---
|
|
334
376
|
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import request from "../utils/request.js";
|
|
2
|
+
/**
|
|
3
|
+
* 条件分页查询 flycode 函数列表
|
|
4
|
+
*
|
|
5
|
+
* @param data 查询参数
|
|
6
|
+
* @returns 查询结果列表
|
|
7
|
+
*/
|
|
8
|
+
export function pageFunctionList(data) {
|
|
9
|
+
return request({
|
|
10
|
+
url: '/bizserv/bizmodel/pageList',
|
|
11
|
+
method: 'post',
|
|
12
|
+
data,
|
|
13
|
+
type: 'tenant'
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* flycode 函数详情查询
|
|
18
|
+
*
|
|
19
|
+
* @param data 查询参数,指定函数编码
|
|
20
|
+
* @returns 返回详情查询结果
|
|
21
|
+
*/
|
|
22
|
+
export function getFunction(data) {
|
|
23
|
+
return request({
|
|
24
|
+
url: '/bizserv/bizmodel/get',
|
|
25
|
+
method: 'post',
|
|
26
|
+
data,
|
|
27
|
+
type: 'tenant'
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=functionClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functionClient.js","sourceRoot":"","sources":["../../src/clients/functionClient.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAA;AAyEzC;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAwB;IACvD,OAAO,OAAO,CAAC;QACb,GAAG,EAAE,4BAA4B;QACjC,MAAM,EAAE,MAAM;QACd,IAAI;QACJ,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;AACJ,CAAC;AAwBD;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,IAAoB;IAC9C,OAAO,OAAO,CAAC;QACb,GAAG,EAAE,uBAAuB;QAC5B,MAAM,EAAE,MAAM;QACd,IAAI;QACJ,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ 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
8
|
import { readTools as formReadTools } from './tools/form/read.js';
|
|
9
|
+
import { readTools as functionReadTools } from './tools/function/read.js';
|
|
9
10
|
import { readTools as runReadTools } from './tools/run/read.js';
|
|
10
11
|
import { commonTools } from './tools/common.js';
|
|
11
12
|
// 鉴权初始化(登录 -> 获取租户信息 -> 获取 IDE Token)
|
|
@@ -21,6 +22,7 @@ const allTools = [
|
|
|
21
22
|
...logicWriteTools,
|
|
22
23
|
...entityReadTools,
|
|
23
24
|
...formReadTools,
|
|
25
|
+
...functionReadTools,
|
|
24
26
|
...runReadTools,
|
|
25
27
|
...commonTools,
|
|
26
28
|
];
|
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;AACrE,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,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;IAChB,GAAG,YAAY;IACf,GAAG,WAAW;CACf,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,CAAA;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;IACF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;IACF,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,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,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;AACjE,OAAO,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AACzE,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,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;IAChB,GAAG,iBAAiB;IACpB,GAAG,YAAY;IACf,GAAG,WAAW;CACf,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,CAAA;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;IACF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;IACF,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,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { getFunction, pageFunctionList } from '../../clients/functionClient.js';
|
|
3
|
+
/**
|
|
4
|
+
* flycode 函数列表查询结果的 outputSchema。
|
|
5
|
+
* 字段类型严格依据 functionClient.ts 中的 FunctionPageResult 接口声明构建:
|
|
6
|
+
* 除 string | null 外,其余字段均为 number | string | null(可选且可空)。
|
|
7
|
+
* string | null -> z.union([z.string(), z.null()]).optional()
|
|
8
|
+
* number | string | null -> z.union([z.string(), z.number()]).nullable().optional()
|
|
9
|
+
* 描述文字直接采用 functionClient.ts 中 FunctionPageParams / FunctionPageResult 的注释内容;
|
|
10
|
+
* catchall 实现服务端返回的额外字段原样透传(不被 SDK 的 outputSchema 校验剥离)。
|
|
11
|
+
*/
|
|
12
|
+
const functionPageResultShape = z.object({
|
|
13
|
+
classname: z.union([z.string(), z.null()]).optional().describe('函数英文名'),
|
|
14
|
+
createaccountcode: z.union([z.string(), z.number()]).nullable().optional().describe('创建人的账号 code'),
|
|
15
|
+
createaccountname: z.union([z.string(), z.null()]).optional().describe('创建人姓名'),
|
|
16
|
+
createtime: z.union([z.string(), z.null()]).optional().describe('创建时间'),
|
|
17
|
+
dddlayer: z.union([z.string(), z.number()]).nullable().optional().describe('函数层级标识,列表查询时固定传 3,输出同步返回该值'),
|
|
18
|
+
directorytypecode: z.union([z.string(), z.number()]).nullable().optional().describe('所属目录分类的编码'),
|
|
19
|
+
marktype: z.union([z.string(), z.number()]).nullable().optional().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
20
|
+
metamodelcode: z.union([z.string(), z.number()]).nullable().optional().describe('领域模型编码,和 modelcode 共同构成复合主键'),
|
|
21
|
+
modelcode: z.union([z.string(), z.number()]).nullable().optional().describe('函数的编码'),
|
|
22
|
+
modeldescr: z.union([z.string(), z.null()]).optional().describe('函数描述'),
|
|
23
|
+
modelname: z.union([z.string(), z.null()]).optional().describe('函数中文名'),
|
|
24
|
+
seq: z.union([z.string(), z.number()]).nullable().optional().describe('顺序'),
|
|
25
|
+
status: z.union([z.string(), z.number()]).nullable().optional().describe('状态,含义:1-启用;2-停用'),
|
|
26
|
+
tablename: z.union([z.string(), z.null()]).optional().describe('数据库表名(函数一般无对应表,通常为空)'),
|
|
27
|
+
updateaccountcode: z.union([z.string(), z.number()]).nullable().optional().describe('最近更新人的账号 code'),
|
|
28
|
+
updateaccountname: z.union([z.string(), z.null()]).optional().describe('最近更新人姓名'),
|
|
29
|
+
updatetime: z.union([z.string(), z.null()]).optional().describe('最近更新时间')
|
|
30
|
+
}).catchall(z.unknown());
|
|
31
|
+
/**
|
|
32
|
+
* flycode 函数详情查询结果(FunctionResult)的 outputSchema 形状。
|
|
33
|
+
* FunctionResult 继承 FunctionPageResult 并额外携带 confjson(flycode 函数代码内容)。
|
|
34
|
+
* 描述文字直接采用 functionClient.ts 中 FunctionPageParams / FunctionResult 的注释内容。
|
|
35
|
+
* 顶层使用 z.looseObject 实现 passthrough,兼容服务端可能返回的额外顶层字段,
|
|
36
|
+
* 避免 -32602 Output validation 报错(详情接口返回结构不稳定时尤其重要)。
|
|
37
|
+
*/
|
|
38
|
+
const functionResultShape = {
|
|
39
|
+
classname: z.union([z.string(), z.null()]).optional().describe('函数英文名'),
|
|
40
|
+
createaccountcode: z.union([z.string(), z.number()]).nullable().optional().describe('创建人的账号 code'),
|
|
41
|
+
createaccountname: z.union([z.string(), z.null()]).optional().describe('创建人姓名'),
|
|
42
|
+
createtime: z.union([z.string(), z.null()]).optional().describe('创建时间'),
|
|
43
|
+
dddlayer: z.union([z.string(), z.number()]).nullable().optional().describe('函数层级标识,列表查询时固定传 3,输出同步返回该值'),
|
|
44
|
+
directorytypecode: z.union([z.string(), z.number()]).nullable().optional().describe('所属目录分类的编码'),
|
|
45
|
+
marktype: z.union([z.string(), z.number()]).nullable().optional().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
46
|
+
metamodelcode: z.union([z.string(), z.number()]).nullable().optional().describe('领域模型编码,和 modelcode 共同构成复合主键'),
|
|
47
|
+
modelcode: z.union([z.string(), z.number()]).nullable().optional().describe('函数的编码'),
|
|
48
|
+
modeldescr: z.union([z.string(), z.null()]).optional().describe('函数描述'),
|
|
49
|
+
modelname: z.union([z.string(), z.null()]).optional().describe('函数中文名'),
|
|
50
|
+
seq: z.union([z.string(), z.number()]).nullable().optional().describe('顺序'),
|
|
51
|
+
status: z.union([z.string(), z.number()]).nullable().optional().describe('状态,含义:1-启用;2-停用'),
|
|
52
|
+
tablename: z.union([z.string(), z.null()]).optional().describe('数据库表名(函数一般无对应表,通常为空)'),
|
|
53
|
+
updateaccountcode: z.union([z.string(), z.number()]).nullable().optional().describe('最近更新人的账号 code'),
|
|
54
|
+
updateaccountname: z.union([z.string(), z.null()]).optional().describe('最近更新人姓名'),
|
|
55
|
+
updatetime: z.union([z.string(), z.null()]).optional().describe('最近更新时间'),
|
|
56
|
+
/** flycode 函数代码内容(详情接口专有字段) */
|
|
57
|
+
confjson: z.string().nullable().optional().describe('flycode 函数代码内容')
|
|
58
|
+
};
|
|
59
|
+
/** 只读类工具:查询、列表、读取等不会修改数据的操作。 */
|
|
60
|
+
export const readTools = [
|
|
61
|
+
{
|
|
62
|
+
name: 'page_function_list',
|
|
63
|
+
config: {
|
|
64
|
+
title: '分页查询 flycode 函数',
|
|
65
|
+
description: `根据查询条件分页查询 flycode 函数列表(Function)。适用于查找函数及其元信息。
|
|
66
|
+
|
|
67
|
+
【整数映射速查】(输入筛选按字符串传入,如 status 传 "1"、dddlayer 固定传 "3";输出字段以数字或字符串返回,两种都兼容)
|
|
68
|
+
- dddlayer(函数层级):固定传 3,代表函数类
|
|
69
|
+
- marktype(创建标记,仅输出):0-平台;1-产品;2-租户
|
|
70
|
+
- status(状态,仅输出):1-启用;2-停用`,
|
|
71
|
+
inputSchema: {
|
|
72
|
+
classname: z.string().optional().describe('函数英文名'),
|
|
73
|
+
name: z.string().optional().describe('函数中文名,通常和 modelname 一致'),
|
|
74
|
+
modelname: z.string().optional().describe('函数中文名,通常和 name 一致'),
|
|
75
|
+
flycodekey: z.string().optional().describe('函数内容关键字'),
|
|
76
|
+
page: z.string().optional().describe('分页,当前页,从 1 开始'),
|
|
77
|
+
rows: z.string().optional().describe('分页,每页记录数')
|
|
78
|
+
},
|
|
79
|
+
outputSchema: {
|
|
80
|
+
data: z.array(functionPageResultShape).describe('这一页的业务数据'),
|
|
81
|
+
pageCount: z.coerce.number().describe('总页数'),
|
|
82
|
+
pageIndex: z.coerce.number().describe('第几页'),
|
|
83
|
+
pageSize: z.coerce.number().describe('每页记录数'),
|
|
84
|
+
resultCount: z.coerce.number().describe('总记录数')
|
|
85
|
+
},
|
|
86
|
+
annotations: {
|
|
87
|
+
readOnlyHint: true, // 此操作不会修改数据
|
|
88
|
+
destructiveHint: false, // 此操作不具有破坏性
|
|
89
|
+
idempotentHint: true // 重复调用结果相同
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
handler: async (args) => {
|
|
93
|
+
const { classname = '', name = '', modelname = '', flycodekey = '', page = 1, rows = 20 } = args;
|
|
94
|
+
try {
|
|
95
|
+
const res = await pageFunctionList({
|
|
96
|
+
// 以下为接口固定默认传值,不对外暴露
|
|
97
|
+
dddlayer: 3,
|
|
98
|
+
directorytypecode: '',
|
|
99
|
+
starttime: '',
|
|
100
|
+
classname,
|
|
101
|
+
name,
|
|
102
|
+
modelname,
|
|
103
|
+
flycodekey,
|
|
104
|
+
page: Number(page) || 1,
|
|
105
|
+
rows: Number(rows) || 20
|
|
106
|
+
});
|
|
107
|
+
return {
|
|
108
|
+
content: [{
|
|
109
|
+
type: 'text',
|
|
110
|
+
text: JSON.stringify(res.resp_data)
|
|
111
|
+
}],
|
|
112
|
+
// outputSchema 已在工具上声明,SDK 1.30 要求调用结果必须携带
|
|
113
|
+
// structuredContent 与之匹配,否则会抛 -32602;这里同时返回
|
|
114
|
+
// 文本(给人/模型阅读)和结构化内容(供 schema 校验)。
|
|
115
|
+
structuredContent: res.resp_data
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
catch (e) {
|
|
119
|
+
// 业务/网络错误:HTTP 非 200 时 Axios 已在传输层抛出,
|
|
120
|
+
// 错误体形如 {"error_type":600,"error_code":"token无效,请重新登录","error_params":null}
|
|
121
|
+
// 将其原始 JSON 原样返回给模型,不做二次包装。
|
|
122
|
+
const err = e;
|
|
123
|
+
const body = err.response?.data ?? e;
|
|
124
|
+
return {
|
|
125
|
+
isError: true,
|
|
126
|
+
content: [{
|
|
127
|
+
type: 'text',
|
|
128
|
+
text: JSON.stringify(body)
|
|
129
|
+
}]
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
name: 'get_function',
|
|
136
|
+
config: {
|
|
137
|
+
title: '查询 flycode 函数详情',
|
|
138
|
+
description: `根据函数的编码 modelcode 查询其完整详情:包含函数的基本信息(英文名、中文名、描述、层级、状态等)以及函数的代码内容 confjson。
|
|
139
|
+
注意:此处的代码和业务逻辑的 flycode 稍有不同,此处的代码仅仅是运行在 Java Nashorn 引擎的 ES5 Javascript 代码,没有 flycode 代码一样的编译 FlyQL 处理、内置对象。
|
|
140
|
+
在业务逻辑 flycode 中通过 loadex("方法名") 加载。
|
|
141
|
+
|
|
142
|
+
【整数/枚举映射速查】(详情返回字段,部分以数字返回、部分以字符串返回,解析时两种都兼容)
|
|
143
|
+
- dddlayer(函数层级):固定传 3,代表函数类
|
|
144
|
+
- marktype(创建标记):0-平台;1-产品;2-租户
|
|
145
|
+
- status(状态):1-启用;2-停用
|
|
146
|
+
- confjson:flycode 函数代码内容,是函数实现体的核心字段`,
|
|
147
|
+
inputSchema: {
|
|
148
|
+
modelcode: z.string().describe('函数的编码')
|
|
149
|
+
},
|
|
150
|
+
// z.looseObject 实现有额外字段时原样透传
|
|
151
|
+
outputSchema: z.looseObject(functionResultShape),
|
|
152
|
+
annotations: {
|
|
153
|
+
readOnlyHint: true, // 此操作不会修改数据
|
|
154
|
+
destructiveHint: false, // 此操作不具有破坏性
|
|
155
|
+
idempotentHint: true // 重复调用结果相同
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
handler: async (args) => {
|
|
159
|
+
const { modelcode } = args;
|
|
160
|
+
try {
|
|
161
|
+
const res = await getFunction({ modelcode });
|
|
162
|
+
return {
|
|
163
|
+
content: [{
|
|
164
|
+
type: 'text',
|
|
165
|
+
text: JSON.stringify(res.resp_data)
|
|
166
|
+
}],
|
|
167
|
+
// outputSchema 已在工具上声明,SDK 1.30 要求调用结果必须携带
|
|
168
|
+
// structuredContent 与之匹配,否则会抛 -32602;这里同时返回
|
|
169
|
+
// 文本(给人/模型阅读)和结构化内容(供 schema 校验)。
|
|
170
|
+
structuredContent: res.resp_data
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
catch (e) {
|
|
174
|
+
// 业务/网络错误:HTTP 非 200 时 Axios 已在传输层抛出,
|
|
175
|
+
// 错误体形如 {"error_type":600,"error_code":"token无效,请重新登录","error_params":null}
|
|
176
|
+
// 将其原始 JSON 原样返回给模型,不做二次包装。
|
|
177
|
+
const err = e;
|
|
178
|
+
const body = err.response?.data ?? e;
|
|
179
|
+
return {
|
|
180
|
+
isError: true,
|
|
181
|
+
content: [{
|
|
182
|
+
type: 'text',
|
|
183
|
+
text: JSON.stringify(body)
|
|
184
|
+
}]
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
];
|
|
190
|
+
//# sourceMappingURL=read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/tools/function/read.ts"],"names":[],"mappings":"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"}
|