flycode-mcp 1.0.5 → 1.1.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/dist/clients/entityClient.js.map +1 -1
- package/dist/clients/logicClient.js +17 -0
- package/dist/clients/logicClient.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/service/logic.js +26 -0
- package/dist/service/logic.js.map +1 -0
- package/dist/tools/entity/read.js +24 -15
- package/dist/tools/entity/read.js.map +1 -1
- package/dist/tools/logic/read.js +2 -65
- package/dist/tools/logic/read.js.map +1 -1
- package/dist/tools/logic/schemas.js +106 -0
- package/dist/tools/logic/schemas.js.map +1 -0
- package/dist/tools/logic/write.js +72 -0
- package/dist/tools/logic/write.js.map +1 -0
- package/dist/utils/date.js +45 -0
- package/dist/utils/date.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entityClient.js","sourceRoot":"","sources":["../../src/clients/entityClient.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAA;AA6FzC;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAsB;IACnD,OAAO,OAAO,CAAC;QACb,GAAG,EAAE,uBAAuB;QAC5B,MAAM,EAAE,MAAM;QACd,IAAI;QACJ,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"entityClient.js","sourceRoot":"","sources":["../../src/clients/entityClient.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAA;AA6FzC;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAsB;IACnD,OAAO,OAAO,CAAC;QACb,GAAG,EAAE,uBAAuB;QAC5B,MAAM,EAAE,MAAM;QACd,IAAI;QACJ,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;AACJ,CAAC;AAmID;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,IAAkB;IAC1C,OAAO,OAAO,CAAC;QACb,GAAG,EAAE,2BAA2B;QAChC,MAAM,EAAE,MAAM;QACd,IAAI;QACJ,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -25,4 +25,21 @@ export function getModelLogic(data) {
|
|
|
25
25
|
type: 'tenant'
|
|
26
26
|
});
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* 保存业务领域
|
|
30
|
+
*
|
|
31
|
+
* @param data
|
|
32
|
+
*/
|
|
33
|
+
export function saveModelLogic(data) {
|
|
34
|
+
return request({
|
|
35
|
+
url: '/bizserv/bizmodel/saveModelLogic',
|
|
36
|
+
method: 'post',
|
|
37
|
+
data: {
|
|
38
|
+
...data,
|
|
39
|
+
// 保存时增加的字段
|
|
40
|
+
overwrite: false
|
|
41
|
+
},
|
|
42
|
+
type: 'tenant'
|
|
43
|
+
});
|
|
44
|
+
}
|
|
28
45
|
//# sourceMappingURL=logicClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logicClient.js","sourceRoot":"","sources":["../../src/clients/logicClient.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAA;AA8GzC;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAqB;IACtD,OAAO,OAAO,CAAoB;QAChC,GAAG,EAAE,sCAAsC;QAC3C,MAAM,EAAE,MAAM;QACd,IAAI;QACJ,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"logicClient.js","sourceRoot":"","sources":["../../src/clients/logicClient.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAA;AA8GzC;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAqB;IACtD,OAAO,OAAO,CAAoB;QAChC,GAAG,EAAE,sCAAsC;QAC3C,MAAM,EAAE,MAAM;QACd,IAAI;QACJ,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;AACJ,CAAC;AA8RD;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAAiB;IAC7C,OAAO,OAAO,CAAC;QACb,GAAG,EAAE,iCAAiC;QACtC,MAAM,EAAE,MAAM;QACd,IAAI;QACJ,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAiB;IAC9C,OAAO,OAAO,CAAC;QACb,GAAG,EAAE,kCAAkC;QACvC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE;YACJ,GAAG,IAAI;YACP,WAAW;YACX,SAAS,EAAE,KAAK;SACjB;QACD,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,6 +3,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
3
3
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
4
|
import { authenticate } from './service/auth.js';
|
|
5
5
|
import { readTools as logicReadTools } from './tools/logic/read.js';
|
|
6
|
+
import { writeTools as logicWriteTools } from './tools/logic/write.js';
|
|
6
7
|
import { readTools as entityReadTools } from './tools/entity/read.js';
|
|
7
8
|
// 鉴权初始化(登录 -> 获取租户信息 -> 获取 IDE Token)
|
|
8
9
|
await authenticate();
|
|
@@ -14,6 +15,7 @@ const server = new McpServer({
|
|
|
14
15
|
// 注册工具:所有工具定义集中在 tools/ 下,按能力分类后在此统一注册
|
|
15
16
|
const allTools = [
|
|
16
17
|
...logicReadTools,
|
|
18
|
+
...logicWriteTools,
|
|
17
19
|
...entityReadTools,
|
|
18
20
|
];
|
|
19
21
|
for (const t of allTools) {
|
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,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;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;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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { saveModelLogic as saveModelLogicApi } from "../clients/logicClient.js";
|
|
2
|
+
import { formatDate } from "../utils/date.js";
|
|
3
|
+
/**
|
|
4
|
+
* service 层保存业务逻辑方法
|
|
5
|
+
*
|
|
6
|
+
* @param logic 完整的业务逻辑 JSON 对象
|
|
7
|
+
* @param commitMessage 提交信息
|
|
8
|
+
* @returns 操作结果消息
|
|
9
|
+
*/
|
|
10
|
+
export async function saveModelLogic(logic, commitMessage) {
|
|
11
|
+
// 提交类型是 saverecord 时,msgbody 固定填当前时间
|
|
12
|
+
if (commitMessage.committype === 'saverecord')
|
|
13
|
+
commitMessage.msgbody = formatDate(new Date(), 'YYYY-MM-DD HH:mm');
|
|
14
|
+
// 转成 JSON 文本保存到业务逻辑
|
|
15
|
+
logic.message = JSON.stringify(commitMessage);
|
|
16
|
+
try {
|
|
17
|
+
const result = await saveModelLogicApi(logic);
|
|
18
|
+
return result.resp_data;
|
|
19
|
+
}
|
|
20
|
+
catch (e) {
|
|
21
|
+
const err = e;
|
|
22
|
+
const body = err.response?.data ?? e;
|
|
23
|
+
return JSON.stringify(body);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=logic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logic.js","sourceRoot":"","sources":["../../src/service/logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,cAAc,IAAI,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAc7C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAkB,EAAE,aAA4B;IACnF,qCAAqC;IACrC,IAAI,aAAa,CAAC,UAAU,KAAK,YAAY;QAAE,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE,kBAAkB,CAAC,CAAA;IAEjH,oBAAoB;IACpB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;IAE7C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAA;QAC7C,OAAO,MAAM,CAAC,SAAS,CAAA;IACzB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,CAAsC,CAAA;QAClD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAA;QACpC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;AACH,CAAC"}
|
|
@@ -4,22 +4,27 @@ import { getEntity, pageEntityList } from '../../clients/entityClient.js';
|
|
|
4
4
|
* 实体的“属性”结构(EntityProperty):
|
|
5
5
|
* 实体详情中 properties 数组里每个对象携带的字段级属性。
|
|
6
6
|
* 字段类型严格依据 entityClient.ts 中的 EntityProperty 接口声明构建:
|
|
7
|
-
* string -> z.string(),number -> z.
|
|
7
|
+
* string -> z.string(),纯数字 -> z.coerce.number(),string|number -> z.union([z.string(), z.number()])。
|
|
8
8
|
*/
|
|
9
9
|
const entityPropertySchema = z.array(z.object({
|
|
10
10
|
columnname: z.string().describe('属性列的列名,即数据库表的字段的名字'),
|
|
11
|
-
idxtype: z.string().describe('索引方式:1-无;2-主键索引'),
|
|
12
|
-
ismaster: z.string().describe('保留字段,暂无特殊含义'),
|
|
11
|
+
idxtype: z.union([z.string(), z.number()]).describe('索引方式:1-无;2-主键索引'),
|
|
12
|
+
ismaster: z.string().optional().describe('保留字段,暂无特殊含义'),
|
|
13
13
|
marktype: z.string().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
14
14
|
propertycategorycode: z.string().describe('属性类别编码'),
|
|
15
15
|
propertycode: z.string().describe('属性编码,唯一标识一个属性'),
|
|
16
16
|
propertydescr: z.string().describe('属性描述'),
|
|
17
17
|
propertyname: z.string().describe('属性中文名,便于阅读'),
|
|
18
18
|
propertytypecode: z.string().describe('属性类型编码,编码和值的对应关系:1-主键(int8);2-名称(200);3-文本(200);4-长文本;5-整数(int4);6-长整数(int8);10-数字(numeric);7-日期时间(ts);30-时间范围;29-年月日(date);18-状态(int4);16-图片;26-附件;17-定位;19-选项集;200000000000-关联对象;100000000000-业务对象;10000000000-字典对象;300000000000-复杂关联对象;1000000000-本对象;8-创建人(int8);9-修改人(int8);11-创建时间(ts);12-修改时间(ts);31-拼音;100-是否默认;13-手机号;15-固定电话;14-邮箱;27-邮编;20-排序(int4)'),
|
|
19
|
-
publishstatus: z.
|
|
19
|
+
publishstatus: z.union([z.string(), z.number()]).describe('属性的发布状态,1-已发布;2-未发布'),
|
|
20
20
|
relationobjectcode: z.string().optional().describe('关联的实体编码,此属性关联了其他实体,则说明 SQL 查询的时候可以用此字段连其他实体对应的表的主键'),
|
|
21
|
-
relationpropertycode: z.string().describe('保留字段,一般为空字符串'),
|
|
22
|
-
status: z.string().describe('属性的状态,1-启用;2-停用')
|
|
21
|
+
relationpropertycode: z.string().optional().describe('保留字段,一般为空字符串'),
|
|
22
|
+
status: z.union([z.string(), z.number()]).describe('属性的状态,1-启用;2-停用'),
|
|
23
|
+
seq: z.coerce.number().optional().describe('属性序号'),
|
|
24
|
+
columnnameError: z.boolean().optional().describe('视图实体属性字段,标记列名是否错误'),
|
|
25
|
+
candelete: z.boolean().optional().describe('视图实体属性字段,标记是否可删除'),
|
|
26
|
+
parentpropertycode: z.string().optional().describe('数据字典属性字段,父属性编码'),
|
|
27
|
+
defaultvalue: z.string().optional().describe('数据字典属性字段,默认值')
|
|
23
28
|
}));
|
|
24
29
|
/** 只读类工具:查询、列表、读取等不会修改数据的操作。 */
|
|
25
30
|
export const readTools = [
|
|
@@ -51,7 +56,7 @@ export const readTools = [
|
|
|
51
56
|
metamodelcode: z.string().describe('领域模型编码,和 objectcode 共同构成复合主键'),
|
|
52
57
|
objectcatgory: z.coerce.number().describe('对象类别,表示是否为权限设置对象,1-是;2-否'),
|
|
53
58
|
objectcode: z.string().describe('实体的编码,和 metamodelcode 共同构成复合主键'),
|
|
54
|
-
objectdescr: z.string().describe('实体的描述'),
|
|
59
|
+
objectdescr: z.union([z.string(), z.null()]).describe('实体的描述'),
|
|
55
60
|
objectmark: z.string().describe('实体标记,一般和数据库表名同名,字典类型的实体有自己的标记'),
|
|
56
61
|
objectname: z.string().describe('实体的中文名,便于阅读'),
|
|
57
62
|
objecttemplatecode: z.union([z.string(), z.null()]).describe('实体的模板编码'),
|
|
@@ -127,22 +132,26 @@ export const readTools = [
|
|
|
127
132
|
objectcode: z.string().describe('要查详情的实体的编码')
|
|
128
133
|
},
|
|
129
134
|
outputSchema: {
|
|
130
|
-
confsource: z.coerce.number().describe('配置来源,含义:1-IDE配置;2
|
|
131
|
-
datapattern: z.string().describe('数据模式,含义:1-原生实体;2-衍生实体;3-视图;4
|
|
135
|
+
confsource: z.coerce.number().optional().describe('配置来源,含义:1-IDE配置;2-用户级配置。数据字典实体不返回'),
|
|
136
|
+
datapattern: z.union([z.string(), z.number()]).optional().describe('数据模式,含义:1-原生实体;2-衍生实体;3-视图;4-超级表单实体。注意:详情接口(getBizObject)多数实体类型不返回该字段(它是列表接口字段),故声明为可选;超级表单以数字返回'),
|
|
137
|
+
diclayer: z.union([z.string(), z.number()]).optional().describe('字典层级,原生/关联实体/数据字典以字符串返回,视图/超级表单以数字返回'),
|
|
132
138
|
directorytypecode: z.string().describe('实体所属目录分类的编码'),
|
|
133
139
|
marktype: z.string().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
134
|
-
message: z.string().describe('保存时编写的提交信息,作用类似 git
|
|
135
|
-
objectcatgory: z.string().describe('对象类别,表示是否为权限设置对象,1-是;2
|
|
140
|
+
message: z.string().optional().describe('保存时编写的提交信息,作用类似 git 提交信息。数据字典/超级表单实体不返回'),
|
|
141
|
+
objectcatgory: z.union([z.string(), z.number()]).describe('对象类别,表示是否为权限设置对象,1-是;2-否。数据字典/超级表单以数字返回'),
|
|
136
142
|
objectcode: z.string().describe('实体的编码,和 metamodelcode 共同构成复合主键'),
|
|
137
143
|
objectdescr: z.string().describe('实体的描述'),
|
|
138
144
|
objectmark: z.string().describe('实体标记,一般和数据库表名同名,字典类型的实体有自己的标记'),
|
|
139
145
|
objectname: z.string().describe('实体的中文名,便于阅读'),
|
|
140
|
-
|
|
141
|
-
|
|
146
|
+
objecttemplatecode: z.union([z.string(), z.null()]).optional().describe('实体的模板编码。仅数据字典实体返回'),
|
|
147
|
+
objecttypecode: z.union([z.string(), z.number()]).describe('实体分类,整数,含义:1-基本实体;2-树形实体;3-数据字典;4-关联实体。数据字典以数字返回'),
|
|
148
|
+
parentobjectcode: z.string().optional().describe('父实体的 objectcode。超级表单实体不返回'),
|
|
142
149
|
properties: entityPropertySchema.describe('实体的属性数组:每个属性定义实体的一个字段(列名、类型、关联实体、索引方式等)'),
|
|
143
150
|
publishstatus: z.coerce.number().describe('实体的发布状态,1-已发布;2-未发布'),
|
|
144
|
-
|
|
145
|
-
|
|
151
|
+
script: z.string().optional().describe('保留字段/定义脚本,原生/视图/关联实体返回,一般为空字符串'),
|
|
152
|
+
status: z.union([z.string(), z.number()]).optional().describe('实体的状态,1-启用;2-停用。数据字典/视图/超级表单以数字返回;详情接口对该字段返回不稳定(部分调用不返回),故声明为可选'),
|
|
153
|
+
storagelevel: z.coerce.number().optional().describe('存储等级。视图/数据字典/超级表单实体不返回'),
|
|
154
|
+
seq: z.coerce.number().optional().describe('实体序号。仅视图/超级表单实体返回'),
|
|
146
155
|
tablename: z.string().describe('数据库表名')
|
|
147
156
|
},
|
|
148
157
|
annotations: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/tools/entity/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAEzE;;;;;GAKG;AACH,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACrD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/tools/entity/read.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/logic/read.js
CHANGED
|
@@ -1,29 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { getModelLogic, pageModelLogicList } from '../../clients/logicClient.js';
|
|
3
|
-
|
|
4
|
-
* 业务逻辑的“属性”结构(LogicParameterProperties):
|
|
5
|
-
* input/output 参数数组中每个对象可能携带的字段级属性。
|
|
6
|
-
*/
|
|
7
|
-
const logicParameterPropertiesSchema = z.array(z.object({
|
|
8
|
-
marktype: z.string().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
9
|
-
name: z.string().describe('此字段的名称,代码中用此名字访问'),
|
|
10
|
-
objectcode: z.string().describe('此字段所属的实体的编码,如果是自定义参数则此编码为空字符串'),
|
|
11
|
-
propertycode: z.string().describe('此字段的编码,只有当此字段有所属实体时才有值,临时创建的自定义实体的字段则为空字符串'),
|
|
12
|
-
propertyname: z.string().describe('此字段的中文名,阅读友好'),
|
|
13
|
-
propertytypecode: z.string().describe('字段类型,整数字符串,含义:1-主键(int8);2-名称(200);3-文本(200);4-长文本;5-整数(int4);6-长整数(int8);10-数字(numeric);7-日期时间(ts);30-时间范围;29-年月日(date);18-状态(int4);16-图片;26-附件;17-定位;19-选项集;200000000000-关联对象;100000000000-业务对象;10000000000-字典对象;300000000000-复杂关联对象;1000000000-本对象;8-创建人(int8);9-修改人(int8);11-创建时间(ts);12-修改时间(ts);31-拼音;100-是否默认;13-手机号;15-固定电话;14-邮箱;27-邮编;20-排序(int4)')
|
|
14
|
-
}));
|
|
15
|
-
/**
|
|
16
|
-
* 业务逻辑的“输入/输出参数”结构(LogicParameters):
|
|
17
|
-
* input 定义 flycode 中内置对象 IN 可获取到的内容,output 定义赋值给 OUT 的内容。
|
|
18
|
-
*/
|
|
19
|
-
const logicParametersSchema = z.array(z.object({
|
|
20
|
-
datatype: z.string().describe('整数字符串:0-单实体;1-数组。0 表示 IN.name 或 OUT.xxx 是个对象;1 表示是个数组'),
|
|
21
|
-
marktype: z.string().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
22
|
-
name: z.string().describe('此参数对象/数组的名字,代码中用此名字访问'),
|
|
23
|
-
objectcode: z.string().describe('此参数关联的实体的编码,如果是自定义参数则此编码为空字符串'),
|
|
24
|
-
objectname: z.string().describe('此参数的中文名称,阅读友好'),
|
|
25
|
-
properties: logicParameterPropertiesSchema.describe('此参数的属性数组:单实体时是 IN.name 这个对象有的属性;数组时是 IN.name 这个数组中的元素对象的属性')
|
|
26
|
-
}));
|
|
3
|
+
import { logicResultShape } from './schemas.js';
|
|
27
4
|
/** 只读类工具:查询、列表、读取等不会修改数据的操作。 */
|
|
28
5
|
export const readTools = [
|
|
29
6
|
{
|
|
@@ -131,47 +108,7 @@ export const readTools = [
|
|
|
131
108
|
inputSchema: {
|
|
132
109
|
modellogiccode: z.string().describe('要查详情的业务逻辑的编码')
|
|
133
110
|
},
|
|
134
|
-
outputSchema:
|
|
135
|
-
actioncategory: z.string().describe('行为类型,整数,含义:1-flycode接口;2-微服务;3-内部函数;4-导入;5-导出;6-flycode导入;7-flycode导出'),
|
|
136
|
-
actiontype: z.string().describe('操作类型, 整数, 含义:1-列表查询;2-单个查询;3-数据提交;4-批量提交;5-导入;6-导出;7-离线数据获取;8-流程;9-业务调度;10-ipaas接口'),
|
|
137
|
-
description: z.string().describe('对此业务领域的描述说明'),
|
|
138
|
-
execmode: z.string().describe('执行方式,1-同步;2-异步'),
|
|
139
|
-
executionmode: z.string().describe('执行模式,standard-标准模式;strict-严格模式'),
|
|
140
|
-
functionname: z.string().describe('此业务逻辑的函数命名(A业务逻辑中调用B业务逻辑时要写函数名)'),
|
|
141
|
-
idempotenttype: z.string().describe('保留字段,空字符串'),
|
|
142
|
-
input: logicParametersSchema.describe('该字段定义了此业务逻辑的输入:flycode 中的内置对象 IN 中可获取到的内容'),
|
|
143
|
-
logicscript: z.string().describe('保留字段,空字符串'),
|
|
144
|
-
marktype: z.string().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
145
|
-
message: z.string().describe('提交信息,每次保存时填写的,类似 git 的提交信息'),
|
|
146
|
-
modelcode: z.string().describe('此业务逻辑所属的业务模型的唯一编码'),
|
|
147
|
-
modellogiccode: z.string().describe('此业务逻辑的编码'),
|
|
148
|
-
modellogicname: z.string().describe('此业务逻辑的标题'),
|
|
149
|
-
operations: z.array(z.object({
|
|
150
|
-
dynamic: z.object({
|
|
151
|
-
fieldblacklist: z.any().describe('字段黑名单'),
|
|
152
|
-
fieldmap: z.any().describe('字段映射')
|
|
153
|
-
}).describe('动态配置'),
|
|
154
|
-
marktype: z.string().describe('创建标记'),
|
|
155
|
-
modellogiccode: z.string().describe('业务逻辑编码'),
|
|
156
|
-
modellogicstepcode: z.string().describe('业务逻辑步骤编码'),
|
|
157
|
-
modellogicstepname: z.string().describe('业务逻辑步骤名称'),
|
|
158
|
-
seq: z.coerce.number().describe('顺序'),
|
|
159
|
-
status: z.string().describe('状态'),
|
|
160
|
-
templateparams: z.object({
|
|
161
|
-
flycode: z.string().describe('flycode 脚本代码字符串'),
|
|
162
|
-
sourcemap: z.string().describe('源映射'),
|
|
163
|
-
tempcompiledflycode: z.string().describe('编译后的 flycode')
|
|
164
|
-
}).describe('模板参数,内含具体的 flycode 代码'),
|
|
165
|
-
templateref: z.string().describe('模板引用')
|
|
166
|
-
})).describe('此业务逻辑的操作信息,具体的 flycode 代码就在其中;通常数组中只有单个元素,该元素对象中就有 flycode 代码字符串'),
|
|
167
|
-
output: logicParametersSchema.describe('该字段定义了此业务逻辑的输出:flycode 中将会赋值给内置对象 OUT 的内容'),
|
|
168
|
-
status: z.coerce.number().describe('状态,1-启用'),
|
|
169
|
-
tenantdbcode: z.string().describe('保留字段,租户数据库编码'),
|
|
170
|
-
tenantdbname: z.string().describe('保留字段,租户数据库操作权限,枚举值含义:只读-数据库只能查询不能增删改;读写-数据库可增删改查;报表-保留字段'),
|
|
171
|
-
tenantdbtype: z.string().describe('tenantdbname 对应的 key 值'),
|
|
172
|
-
uilogicscript: z.string().describe('离线脚本,仅用于 app 端离线数据提交'),
|
|
173
|
-
usedatarule: z.string().describe('1 代表使用数据权限')
|
|
174
|
-
},
|
|
111
|
+
outputSchema: logicResultShape,
|
|
175
112
|
annotations: {
|
|
176
113
|
readOnlyHint: true, // 此操作不会修改数据
|
|
177
114
|
destructiveHint: false, // 此操作不具有破坏性
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/tools/logic/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/tools/logic/read.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* 业务逻辑的“属性”结构(LogicParameterProperties):
|
|
4
|
+
* input/output 参数数组中每个对象可能携带的字段级属性。
|
|
5
|
+
* 字段类型严格依据 logicClient.ts 中的 LogicParameterProperties 接口声明构建。
|
|
6
|
+
*/
|
|
7
|
+
export const logicParameterPropertiesSchema = z.array(z.object({
|
|
8
|
+
marktype: z.string().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
9
|
+
name: z.string().describe('此字段的名称,代码中用此名字访问'),
|
|
10
|
+
objectcode: z.string().describe('此字段所属的实体的编码,如果是自定义参数则此编码为空字符串'),
|
|
11
|
+
propertycode: z.string().describe('此字段的编码,只有当此字段有所属实体时才有值,临时创建的自定义实体的字段则为空字符串'),
|
|
12
|
+
propertyname: z.string().describe('此字段的中文名,阅读友好'),
|
|
13
|
+
propertytypecode: z.string().describe('字段类型,整数字符串,含义:1-主键(int8);2-名称(200);3-文本(200);4-长文本;5-整数(int4);6-长整数(int8);10-数字(numeric);7-日期时间(ts);30-时间范围;29-年月日(date);18-状态(int4);16-图片;26-附件;17-定位;19-选项集;200000000000-关联对象;100000000000-业务对象;10000000000-字典对象;300000000000-复杂关联对象;1000000000-本对象;8-创建人(int8);9-修改人(int8);11-创建时间(ts);12-修改时间(ts);31-拼音;100-是否默认;13-手机号;15-固定电话;14-邮箱;27-邮编;20-排序(int4)')
|
|
14
|
+
}));
|
|
15
|
+
/**
|
|
16
|
+
* 业务逻辑的“输入/输出参数”结构(LogicParameters):
|
|
17
|
+
* input 定义 flycode 中内置对象 IN 可获取到的内容,output 定义赋值给 OUT 的内容。
|
|
18
|
+
*/
|
|
19
|
+
export const logicParametersSchema = z.array(z.object({
|
|
20
|
+
datatype: z.string().describe('整数字符串:0-单实体;1-数组。0 表示 IN.name 或 OUT.xxx 是个对象;1 表示是个数组'),
|
|
21
|
+
marktype: z.string().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
22
|
+
name: z.string().describe('此参数对象/数组的名字,代码中用此名字访问'),
|
|
23
|
+
objectcode: z.string().describe('此参数关联的实体的编码,如果是自定义参数则此编码为空字符串'),
|
|
24
|
+
objectname: z.string().describe('此参数的中文名称,阅读友好'),
|
|
25
|
+
properties: logicParameterPropertiesSchema.describe('此参数的属性数组:单实体时是 IN.name 这个对象有的属性;数组时是 IN.name 这个数组中的元素对象的属性'),
|
|
26
|
+
customcode: z.string().optional().describe('自定义输出对象的编码(仅自定义输出参数可能携带,如内部函数 output)')
|
|
27
|
+
}));
|
|
28
|
+
/**
|
|
29
|
+
* 业务逻辑的操作步骤结构(LogicOperations),flycode 脚本代码即在其中。
|
|
30
|
+
*/
|
|
31
|
+
export const logicOperationsSchema = z.array(z.object({
|
|
32
|
+
dynamic: z.object({
|
|
33
|
+
fieldblacklist: z.any().describe('字段黑名单'),
|
|
34
|
+
fieldmap: z.any().describe('字段映射')
|
|
35
|
+
}).describe('动态配置'),
|
|
36
|
+
marktype: z.string().describe('创建标记'),
|
|
37
|
+
modellogiccode: z.string().describe('业务逻辑编码'),
|
|
38
|
+
modellogicstepcode: z.string().describe('业务逻辑步骤编码'),
|
|
39
|
+
modellogicstepname: z.string().describe('业务逻辑步骤名称'),
|
|
40
|
+
seq: z.coerce.number().describe('顺序'),
|
|
41
|
+
status: z.string().describe('状态'),
|
|
42
|
+
templateparams: z.object({
|
|
43
|
+
flycode: z.string().describe('flycode 脚本代码字符串'),
|
|
44
|
+
sourcemap: z.string().optional().describe('源映射'),
|
|
45
|
+
tempcompiledflycode: z.string().optional().describe('编译后的 flycode')
|
|
46
|
+
}).describe('模板参数,内含具体的 flycode 代码(导出结构仅含 flycode)'),
|
|
47
|
+
templateref: z.string().describe('模板引用')
|
|
48
|
+
}));
|
|
49
|
+
/**
|
|
50
|
+
* 导出类业务逻辑的绑定配置(仅 actioncategory=5 导出 时存在)。
|
|
51
|
+
*/
|
|
52
|
+
export const logicBindJsonSchema = z.object({
|
|
53
|
+
bindcols: z.array(z.object({
|
|
54
|
+
field: z.string().describe('字段名(对应业务对象的属性名)'),
|
|
55
|
+
column: z.string().describe('导出后的列标题'),
|
|
56
|
+
width: z.string().describe('列宽'),
|
|
57
|
+
type: z.string().describe('字段类型,如 string'),
|
|
58
|
+
dynamictext: z.any().describe('动态文本配置')
|
|
59
|
+
})).describe('导出的列定义'),
|
|
60
|
+
modelcode: z.string().describe('业务模型编码'),
|
|
61
|
+
logiccode: z.string().describe('业务逻辑编码'),
|
|
62
|
+
logicname: z.string().describe('业务逻辑名称')
|
|
63
|
+
});
|
|
64
|
+
/**
|
|
65
|
+
* 完整的业务逻辑对象(LogicResult)的字段形状(ZodRawShape),
|
|
66
|
+
* 即 get_model_logic 的返回结构,也是 save_model_logic 入参所需的结构——
|
|
67
|
+
* 两者共用同一份字段定义,保证“查到什么就能原样存回”。
|
|
68
|
+
*
|
|
69
|
+
* 拆成两层导出,以分别匹配 MCP 工具的两种类型要求:
|
|
70
|
+
* - logicResultShape:纯字段形状(Record<string, ZodType>),可直接作为 outputSchema 使用;
|
|
71
|
+
* - logicResultSchema:由该形状构建的 z.looseObject(保留未声明字段,等价旧版 .passthrough()),
|
|
72
|
+
* 作为 write 侧 inputSchema.logic 的单个 ZodType 使用。
|
|
73
|
+
*
|
|
74
|
+
* 使用宽松 object 的原因:
|
|
75
|
+
* - 写侧:保存时必须把 get 返回的完整对象(含 schema 未枚举的字段)原样回传服务端,不能丢字段;
|
|
76
|
+
* - 读侧:服务端偶发返回 schema 未覆盖的额外字段时,宽松校验可避免 -32602 Output validation 报错。
|
|
77
|
+
*/
|
|
78
|
+
export const logicResultShape = {
|
|
79
|
+
actioncategory: z.string().describe('行为类型,整数,含义:1-flycode接口;2-微服务;3-内部函数;4-导入;5-导出;6-flycode导入;7-flycode导出'),
|
|
80
|
+
actiontype: z.string().describe('操作类型, 整数, 含义:1-列表查询;2-单个查询;3-数据提交;4-批量提交;5-导入;6-导出;7-离线数据获取;8-流程;9-业务调度;10-ipaas接口'),
|
|
81
|
+
description: z.string().optional().describe('对此业务领域的描述说明(微服务结构用 descr 代替)'),
|
|
82
|
+
descr: z.string().optional().describe('描述说明的替用字段,仅微服务(actioncategory=2)返回,等价于 description'),
|
|
83
|
+
execmode: z.string().describe('执行方式,1-同步;2-异步'),
|
|
84
|
+
executionmode: z.string().optional().describe('执行模式,standard-标准模式;strict-严格模式'),
|
|
85
|
+
functionname: z.string().describe('此业务逻辑的函数命名(A业务逻辑中调用B业务逻辑时要写函数名)'),
|
|
86
|
+
idempotenttype: z.string().optional().describe('保留字段,空字符串'),
|
|
87
|
+
input: logicParametersSchema.optional().describe('该字段定义了此业务逻辑的输入:flycode 中的内置对象 IN 中可获取到的内容(微服务结构无此字段)'),
|
|
88
|
+
logicscript: z.string().optional().describe('保留字段,空字符串'),
|
|
89
|
+
marktype: z.string().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
90
|
+
message: z.string().optional().describe('提交信息,每次保存时填写的,类似 git 的提交信息(导出类结构可能缺)'),
|
|
91
|
+
modelcode: z.string().describe('此业务逻辑所属的业务模型的唯一编码'),
|
|
92
|
+
modellogiccode: z.string().describe('此业务逻辑的编码'),
|
|
93
|
+
modellogicname: z.string().describe('此业务逻辑的标题'),
|
|
94
|
+
operations: logicOperationsSchema.optional().describe('此业务逻辑的操作信息(微服务结构无此字段);通常数组中只有单个元素,该元素对象中就有 flycode 代码字符串'),
|
|
95
|
+
output: logicParametersSchema.optional().describe('该字段定义了此业务逻辑的输出:flycode 中将会赋值给内置对象 OUT 的内容(微服务结构无此字段)'),
|
|
96
|
+
rest: z.object({ server: z.string().describe('微服务地址'), url: z.string().describe('微服务路径') }).optional().describe('微服务的 REST 配置,仅 actioncategory=2 微服务 时存在'),
|
|
97
|
+
bindjson: logicBindJsonSchema.optional().describe('导出绑定的 Excel 列配置,仅 actioncategory=5 导出 时存在'),
|
|
98
|
+
status: z.coerce.number().describe('状态,1-启用'),
|
|
99
|
+
tenantdbcode: z.string().optional().describe('保留字段,租户数据库编码'),
|
|
100
|
+
tenantdbname: z.string().optional().describe('保留字段,租户数据库操作权限,枚举值含义:只读-数据库只能查询不能增删改;读写-数据库可增删改查;报表-保留字段'),
|
|
101
|
+
tenantdbtype: z.string().optional().describe('tenantdbname 对应的 key 值'),
|
|
102
|
+
uilogicscript: z.string().optional().describe('离线脚本,仅用于 app 端离线数据提交'),
|
|
103
|
+
usedatarule: z.string().optional().describe('1 代表使用数据权限')
|
|
104
|
+
};
|
|
105
|
+
export const logicResultSchema = z.looseObject(logicResultShape);
|
|
106
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/tools/logic/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { saveModelLogic } from '../../service/logic.js';
|
|
3
|
+
import { logicResultSchema } from './schemas.js';
|
|
4
|
+
/**
|
|
5
|
+
* 提交信息结构(CommitMessage)。
|
|
6
|
+
*/
|
|
7
|
+
const commitMessageSchema = z.object({
|
|
8
|
+
committype: z.enum(['saverecord', 'feature', 'fix', 'stylefix', 'refactor', 'testfix']).describe('提交类型,类型 committype 和名称 committypetext 一一对应'),
|
|
9
|
+
committypetext: z.enum(['保存记录', '新功能添加', 'bug修改', '样式修改', '重构', '测试']).describe('提交类型名称,与 committype 一一对应'),
|
|
10
|
+
msgbody: z.string().optional().describe('消息内容。提交类型为 saverecord 时忽略(服务端自动填当前时间,格式 yyyy-MM-dd hh:mm);其他类型填写对应提交内容,按 git 提交规范写')
|
|
11
|
+
});
|
|
12
|
+
/** 写入类工具:新增、更新、保存等会修改数据的操作。 */
|
|
13
|
+
export const writeTools = [
|
|
14
|
+
{
|
|
15
|
+
name: 'save_model_logic',
|
|
16
|
+
config: {
|
|
17
|
+
title: '保存业务逻辑',
|
|
18
|
+
description: '保存(新增或更新)一条业务逻辑。传入从 get_model_logic 查询得到的完整 LogicResult 对象,按需修改其中的 flycode 脚本(operations[].templateparams.flycode)、输入输出参数(input/output)或标题后回传,并附带提交信息 commitMessage。服务端按 overwrite=false 保存(不覆盖他人最新版本)',
|
|
19
|
+
inputSchema: {
|
|
20
|
+
logic: logicResultSchema.describe('完整的业务逻辑 JSON 对象(LogicResult),通常来自 get_model_logic 的返回,修改后回传'),
|
|
21
|
+
commitMessage: commitMessageSchema.describe('提交信息,类型与名称需一一对应;msgbody 在非 saverecord 时必填')
|
|
22
|
+
},
|
|
23
|
+
outputSchema: {
|
|
24
|
+
result: z.string().describe('保存操作的结果消息(服务端返回的 resp_data 字符串;失败时返回错误体 JSON)')
|
|
25
|
+
},
|
|
26
|
+
annotations: {
|
|
27
|
+
readOnlyHint: false, // 此操作会修改数据
|
|
28
|
+
destructiveHint: false, // 保存为非破坏性写入
|
|
29
|
+
idempotentHint: false // 重复保存可能产生新的提交版本
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
handler: async (args) => {
|
|
33
|
+
const { logic, commitMessage } = args;
|
|
34
|
+
// 兜底 msgbody:service 仅在 committype==='saverecord' 时自动填当前时间,
|
|
35
|
+
// 其他类型若未传则给空字符串,避免把 undefined 透传给服务端。
|
|
36
|
+
const commit = {
|
|
37
|
+
committype: commitMessage.committype,
|
|
38
|
+
committypetext: commitMessage.committypetext,
|
|
39
|
+
msgbody: commitMessage.msgbody ?? ''
|
|
40
|
+
};
|
|
41
|
+
try {
|
|
42
|
+
const text = await saveModelLogic(logic, commit);
|
|
43
|
+
return {
|
|
44
|
+
content: [{
|
|
45
|
+
type: 'text',
|
|
46
|
+
text
|
|
47
|
+
}],
|
|
48
|
+
// outputSchema 已在工具上声明,SDK 1.30 要求调用结果必须携带
|
|
49
|
+
// structuredContent 与之匹配,否则会抛 -32602;这里同时返回
|
|
50
|
+
// 文本(给人/模型阅读)和结构化内容(供 schema 校验)。
|
|
51
|
+
structuredContent: { result: text }
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
// service 层已捕获业务/网络错误并转为字符串返回,理论上极少走到这里;
|
|
56
|
+
// 若 saveModelLogic 自身抛错(如入参非法),把原始错误体原样返回。
|
|
57
|
+
const err = e;
|
|
58
|
+
const body = err.response?.data ?? e;
|
|
59
|
+
const text = JSON.stringify(body);
|
|
60
|
+
return {
|
|
61
|
+
isError: true,
|
|
62
|
+
content: [{
|
|
63
|
+
type: 'text',
|
|
64
|
+
text
|
|
65
|
+
}],
|
|
66
|
+
structuredContent: { result: text }
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
];
|
|
72
|
+
//# sourceMappingURL=write.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../../src/tools/logic/write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,cAAc,EAAsB,MAAM,wBAAwB,CAAA;AAE3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEhD;;GAEG;AACH,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IAC9I,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IAC3G,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oFAAoF,CAAC;CAC9H,CAAC,CAAA;AAEF,+BAA+B;AAC/B,MAAM,CAAC,MAAM,UAAU,GAAc;IACnC;QACE,IAAI,EAAE,kBAAkB;QACxB,MAAM,EAAE;YACN,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,wMAAwM;YACrN,WAAW,EAAE;gBACX,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,6DAA6D,CAAC;gBAChG,aAAa,EAAE,mBAAmB,CAAC,QAAQ,CAAC,2CAA2C,CAAC;aACzF;YACD,YAAY,EAAE;gBACZ,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;aAC7E;YACD,WAAW,EAAE;gBACX,YAAY,EAAE,KAAK,EAAK,WAAW;gBACnC,eAAe,EAAE,KAAK,EAAE,YAAY;gBACpC,cAAc,EAAE,KAAK,CAAG,iBAAiB;aAC1C;SACF;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAGhC,CAAA;YACD,4DAA4D;YAC5D,sCAAsC;YACtC,MAAM,MAAM,GAAkB;gBAC5B,UAAU,EAAE,aAAa,CAAC,UAAU;gBACpC,cAAc,EAAE,aAAa,CAAC,cAAc;gBAC5C,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,EAAE;aACrC,CAAA;YACD,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;gBAChD,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI;yBACL,CAAC;oBACF,2CAA2C;oBAC3C,4CAA4C;oBAC5C,kCAAkC;oBAClC,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;iBACpC,CAAA;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,yCAAyC;gBACzC,2CAA2C;gBAC3C,MAAM,GAAG,GAAG,CAAsC,CAAA;gBAClD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAA;gBACpC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;gBACjC,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI;yBACL,CAAC;oBACF,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;iBACpC,CAAA;YACH,CAAC;QACH,CAAC;KACF;CACF,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 将 Date 对象按照给定的格式字符串进行格式化
|
|
3
|
+
* @param date - 要格式化的日期对象
|
|
4
|
+
* @param format - 格式字符串,支持以下占位符:
|
|
5
|
+
* - YYYY / YY : 四位 / 两位年份
|
|
6
|
+
* - MM / M : 两位 / 一位月份(1-12)
|
|
7
|
+
* - DD / D : 两位 / 一位日期(1-31)
|
|
8
|
+
* - HH / H : 两位 / 一位小时(0-23)
|
|
9
|
+
* - mm / m : 两位 / 一位分钟(0-59)
|
|
10
|
+
* - ss / s : 两位 / 一位秒数(0-59)
|
|
11
|
+
* - SSS : 三位毫秒(000-999)
|
|
12
|
+
* @returns 格式化后的日期字符串
|
|
13
|
+
* @throws 当 date 无效时抛出错误
|
|
14
|
+
*/
|
|
15
|
+
export function formatDate(date, format = 'YYYY-MM-DD HH:mm:ss') {
|
|
16
|
+
// 检查日期是否有效
|
|
17
|
+
if (isNaN(date.getTime())) {
|
|
18
|
+
throw new Error('Invalid date provided');
|
|
19
|
+
}
|
|
20
|
+
// 定义占位符与对应值的映射(值均为字符串)
|
|
21
|
+
const replacements = {
|
|
22
|
+
YYYY: date.getFullYear().toString(),
|
|
23
|
+
YY: date.getFullYear().toString().slice(-2),
|
|
24
|
+
MM: String(date.getMonth() + 1).padStart(2, '0'),
|
|
25
|
+
M: String(date.getMonth() + 1),
|
|
26
|
+
DD: String(date.getDate()).padStart(2, '0'),
|
|
27
|
+
D: String(date.getDate()),
|
|
28
|
+
HH: String(date.getHours()).padStart(2, '0'),
|
|
29
|
+
H: String(date.getHours()),
|
|
30
|
+
mm: String(date.getMinutes()).padStart(2, '0'),
|
|
31
|
+
m: String(date.getMinutes()),
|
|
32
|
+
ss: String(date.getSeconds()).padStart(2, '0'),
|
|
33
|
+
s: String(date.getSeconds()),
|
|
34
|
+
SSS: String(date.getMilliseconds()).padStart(3, '0'),
|
|
35
|
+
};
|
|
36
|
+
// 按占位符长度降序排列,确保优先替换较长的(如 YYYY 先于 YY)
|
|
37
|
+
const keys = Object.keys(replacements).sort((a, b) => b.length - a.length);
|
|
38
|
+
let result = format;
|
|
39
|
+
for (const key of keys) {
|
|
40
|
+
// 全局替换,注意转义正则特殊字符(本例中占位符均为字母,无需转义)
|
|
41
|
+
result = result.replace(new RegExp(key, 'g'), replacements[key]);
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=date.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,UAAU,CAAC,IAAU,EAAE,MAAM,GAAW,qBAAqB;IAC3E,WAAW;IACX,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IAED,uBAAuB;IACvB,MAAM,YAAY,GAA2B;QAC3C,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;QACnC,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3C,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QAChD,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC9B,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QAC3C,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACzB,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QAC5C,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1B,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QAC9C,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5B,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QAC9C,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5B,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;KACrD,CAAC;IAEF,qCAAqC;IACrC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAE3E,IAAI,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,mCAAmC;QACnC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|