apifox-workspace-mcp 1.2.0 → 2.0.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/core/index.d.ts +0 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +0 -2
- package/dist/core/index.js.map +1 -1
- package/dist/server/handlers/error-handler.d.ts.map +1 -1
- package/dist/server/handlers/error-handler.js +27 -18
- package/dist/server/handlers/error-handler.js.map +1 -1
- package/dist/server/handlers/generate-artifacts.d.ts.map +1 -1
- package/dist/server/handlers/generate-artifacts.js +10 -2
- package/dist/server/handlers/generate-artifacts.js.map +1 -1
- package/dist/server/handlers/get-interface-detail.d.ts.map +1 -1
- package/dist/server/handlers/get-interface-detail.js +5 -1
- package/dist/server/handlers/get-interface-detail.js.map +1 -1
- package/dist/server/handlers/index.d.ts +0 -1
- package/dist/server/handlers/index.d.ts.map +1 -1
- package/dist/server/handlers/index.js +0 -1
- package/dist/server/handlers/index.js.map +1 -1
- package/dist/server/handlers/list-project-interfaces.d.ts.map +1 -1
- package/dist/server/handlers/list-project-interfaces.js +12 -6
- package/dist/server/handlers/list-project-interfaces.js.map +1 -1
- package/dist/server/handlers/list-projects.d.ts.map +1 -1
- package/dist/server/handlers/list-projects.js +9 -2
- package/dist/server/handlers/list-projects.js.map +1 -1
- package/dist/server/handlers/parse-and-add-project.d.ts.map +1 -1
- package/dist/server/handlers/parse-and-add-project.js +11 -3
- package/dist/server/handlers/parse-and-add-project.js.map +1 -1
- package/dist/server/handlers/query-interfaces.d.ts.map +1 -1
- package/dist/server/handlers/query-interfaces.js +15 -13
- package/dist/server/handlers/query-interfaces.js.map +1 -1
- package/dist/server/handlers/select-interfaces.d.ts +13 -1
- package/dist/server/handlers/select-interfaces.d.ts.map +1 -1
- package/dist/server/handlers/select-interfaces.js +13 -4
- package/dist/server/handlers/select-interfaces.js.map +1 -1
- package/dist/server/index.js +29 -43
- package/dist/server/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/__tests__/intent.test.d.ts +0 -2
- package/dist/__tests__/intent.test.d.ts.map +0 -1
- package/dist/__tests__/intent.test.js +0 -58
- package/dist/__tests__/intent.test.js.map +0 -1
- package/dist/core/intent.d.ts +0 -28
- package/dist/core/intent.d.ts.map +0 -1
- package/dist/core/intent.js +0 -307
- package/dist/core/intent.js.map +0 -1
- package/dist/server/handlers/assistant.d.ts +0 -20
- package/dist/server/handlers/assistant.d.ts.map +0 -1
- package/dist/server/handlers/assistant.js +0 -308
- package/dist/server/handlers/assistant.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-interfaces.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/select-interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"select-interfaces.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/select-interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGlE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,oBAAoB,EAC1B,GAAG,EAAE,uBAAuB;;;;;;GAwE7B"}
|
|
@@ -6,12 +6,16 @@ export async function handleSelectInterfaces(args, ctx) {
|
|
|
6
6
|
const { projectRoot, contextStore } = ctx;
|
|
7
7
|
const projectInfo = resolveProjectInfo(projectRoot, contextStore, args.projectName, args.projectId);
|
|
8
8
|
if (!projectInfo) {
|
|
9
|
-
return buildTextResponse(
|
|
9
|
+
return buildTextResponse(`无法确定项目信息。\n\n**建议操作:**\n` +
|
|
10
|
+
`- 使用 \`parse_and_add_project\` 工具添加项目(参数:url: "Apifox 项目链接")\n` +
|
|
11
|
+
`- 或使用 \`list_projects\` 工具查看已集成的项目列表`);
|
|
10
12
|
}
|
|
11
13
|
// 获取上次查询的接口列表
|
|
12
14
|
const lastList = contextStore.getLastInterfaceList();
|
|
13
15
|
if (!lastList || lastList.projectId !== projectInfo.projectId) {
|
|
14
|
-
return buildTextResponse(
|
|
16
|
+
return buildTextResponse(`请先查询接口列表。\n\n**建议操作:**\n` +
|
|
17
|
+
`- 使用 \`query_interfaces\` 工具搜索接口(参数:projectName: "${projectInfo.projectName}", keyword: "关键词")\n` +
|
|
18
|
+
`- 然后使用 \`select_interfaces\` 工具选择接口(参数:interfaceIds: ["接口ID"])`);
|
|
15
19
|
}
|
|
16
20
|
const allInterfaces = lastList.list;
|
|
17
21
|
let selectedInterfaces = [];
|
|
@@ -24,7 +28,9 @@ export async function handleSelectInterfaces(args, ctx) {
|
|
|
24
28
|
selectedInterfaces = applySelectionCriteria(allInterfaces, args.selectionCriteria);
|
|
25
29
|
}
|
|
26
30
|
else {
|
|
27
|
-
return buildTextResponse(
|
|
31
|
+
return buildTextResponse(`请提供选择条件。\n\n**建议操作:**\n` +
|
|
32
|
+
`- 使用 \`select_interfaces\` 工具选择接口(参数:interfaceIds: ["接口ID1", "接口ID2"])\n` +
|
|
33
|
+
`- 接口 ID 可以从 \`query_interfaces\` 工具的返回结果中获取`);
|
|
28
34
|
}
|
|
29
35
|
if (selectedInterfaces.length === 0) {
|
|
30
36
|
return buildTextResponse('没有找到匹配的接口,请检查选择条件。');
|
|
@@ -41,7 +47,10 @@ export async function handleSelectInterfaces(args, ctx) {
|
|
|
41
47
|
const selectedNames = selectedInterfaces
|
|
42
48
|
.map((item, index) => `${index + 1}. ${item.name}`)
|
|
43
49
|
.join('\n');
|
|
44
|
-
|
|
50
|
+
// 添加工具诱导提示(方式 2)
|
|
51
|
+
const toolHints = `\n\n---\n**💡 接下来你可以:**\n` +
|
|
52
|
+
`- 使用 \`generate_artifacts\` 工具生成这些接口的类型或代码(参数:projectName: "${projectInfo.projectName}", interfaceIds: [${selectedInterfaces.map((i) => `"${i.id}"`).join(', ')}], artifactType: "ts_types")\n`;
|
|
53
|
+
return buildTextResponse(`✅ 已选择 ${selectedInterfaces.length} 个接口:\n\n${selectedNames}${toolHints}`);
|
|
45
54
|
}
|
|
46
55
|
/**
|
|
47
56
|
* 应用选择条件到接口列表
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-interfaces.js","sourceRoot":"","sources":["../../../src/server/handlers/select-interfaces.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"select-interfaces.js","sourceRoot":"","sources":["../../../src/server/handlers/select-interfaces.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
|
|
|
5
5
|
import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
6
6
|
import { ConfigManager, McpBridge, ContextStore } from '../core/index.js';
|
|
7
7
|
import { loadEnvFromMcpConfig, DEFAULT_SERVER_NAME, findProjectRoot } from '../lib/index.js';
|
|
8
|
-
import { handleListProjects, handleParseAndAddProject, handleQueryInterfaces, handleGetInterfaceDetail, handleGenerateArtifacts,
|
|
8
|
+
import { handleListProjects, handleParseAndAddProject, handleQueryInterfaces, handleGetInterfaceDetail, handleGenerateArtifacts, handleSelectInterfaces, } from './handlers/index.js';
|
|
9
9
|
/**
|
|
10
10
|
* Apifox Workspace MCP Server 主入口
|
|
11
11
|
* 提供工作空间级别的 Apifox 项目管理功能
|
|
@@ -43,7 +43,7 @@ class ApifoxMcpServer {
|
|
|
43
43
|
tools: [
|
|
44
44
|
{
|
|
45
45
|
name: 'list_projects',
|
|
46
|
-
description: '
|
|
46
|
+
description: '列出当前工作空间中已集成的所有 Apifox 项目。使用场景:当用户询问"有哪些项目"、"列出所有项目"、"项目列表"时调用此工具。返回项目名称、ID 和接口数量,帮助用户了解当前可用的项目。',
|
|
47
47
|
inputSchema: {
|
|
48
48
|
type: 'object',
|
|
49
49
|
properties: {},
|
|
@@ -51,13 +51,13 @@ class ApifoxMcpServer {
|
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
53
|
name: 'parse_and_add_project',
|
|
54
|
-
description: '解析 Apifox
|
|
54
|
+
description: '解析 Apifox 分享链接并添加到项目配置中。使用场景:当用户提供 Apifox 分享链接(项目链接或接口链接)时,自动解析项目信息、接口列表并缓存到本地。这是使用其他工具的前提步骤,必须先添加项目才能查询接口。支持项目级链接和接口级链接两种格式。',
|
|
55
55
|
inputSchema: {
|
|
56
56
|
type: 'object',
|
|
57
57
|
properties: {
|
|
58
58
|
url: {
|
|
59
59
|
type: 'string',
|
|
60
|
-
description: 'Apifox
|
|
60
|
+
description: 'Apifox 分享链接(必需)。支持两种格式:\n1. 项目分享链接: https://{apifox域名}/apidoc/shared/{shareId} - 用于添加整个项目\n2. 接口分享链接: https://{apifox域名}/apidoc/shared/{shareId}/api-{interfaceId} - 用于添加项目并获取特定接口详情\n\nApifox 域名通常以 "apifox" 开头(如 apifox.com、apifox.advai.net 等)。如果用户提供了链接,直接使用此工具解析。',
|
|
61
61
|
},
|
|
62
62
|
},
|
|
63
63
|
required: ['url'],
|
|
@@ -65,29 +65,29 @@ class ApifoxMcpServer {
|
|
|
65
65
|
},
|
|
66
66
|
{
|
|
67
67
|
name: 'query_interfaces',
|
|
68
|
-
description: '
|
|
68
|
+
description: '在指定项目中搜索和查询接口,支持关键词、路径、标签等多种过滤方式。使用场景:当用户询问"查询XX接口"、"搜索XX"、"找XX接口"、"有哪些XX接口"时调用此工具。返回匹配的接口列表,包含接口 ID、名称、路径、方法等信息,每个接口都有编号便于后续选择。如果用户提到接口路径(如 /api/login),使用 keyword 参数传入路径进行搜索。',
|
|
69
69
|
inputSchema: {
|
|
70
70
|
type: 'object',
|
|
71
71
|
properties: {
|
|
72
72
|
projectName: {
|
|
73
73
|
type: 'string',
|
|
74
|
-
description: '
|
|
74
|
+
description: '项目名称(可选)。如果用户明确提到项目名称,或之前已查询过项目,使用此参数。如果未提供,系统会尝试从上下文或缓存中获取。',
|
|
75
75
|
},
|
|
76
76
|
projectId: {
|
|
77
77
|
type: 'string',
|
|
78
|
-
description: '项目 ID
|
|
78
|
+
description: '项目 ID(可选)。如果知道项目 ID 但不知道项目名称,可以使用此参数。通常 projectName 和 projectId 只需提供一个即可。',
|
|
79
79
|
},
|
|
80
80
|
keyword: {
|
|
81
81
|
type: 'string',
|
|
82
|
-
description: '
|
|
82
|
+
description: '搜索关键词(推荐使用)。用于在接口名称、路径、描述中搜索匹配的接口。例如:用户说"查询登录接口"时,keyword 可以是 "login" 或 "登录";用户提到接口路径 "/api/user/info" 时,keyword 可以是 "/api/user/info"。支持中英文关键词和接口路径。',
|
|
83
83
|
},
|
|
84
84
|
tag: {
|
|
85
85
|
type: 'string',
|
|
86
|
-
description: '
|
|
86
|
+
description: '按标签或模块筛选接口(可选)。如果用户提到特定的模块、标签或分类,使用此参数。例如:"查询支付模块的接口" 时,tag 可以是 "支付"。',
|
|
87
87
|
},
|
|
88
88
|
limit: {
|
|
89
89
|
type: 'number',
|
|
90
|
-
description: '
|
|
90
|
+
description: '限制返回的接口数量(可选,默认 20)。如果用户要求"显示前10个"或"只显示5个",使用此参数。',
|
|
91
91
|
},
|
|
92
92
|
},
|
|
93
93
|
required: [],
|
|
@@ -95,17 +95,17 @@ class ApifoxMcpServer {
|
|
|
95
95
|
},
|
|
96
96
|
{
|
|
97
97
|
name: 'get_interface_detail',
|
|
98
|
-
description: '
|
|
98
|
+
description: '获取指定接口的完整详细信息,包括请求参数(headers、cookies、query、path、body)、响应结构、curl 示例、fetch 示例和 TypeScript 类型。使用场景:当用户询问"XX接口的详情"、"告诉我XX接口的信息"、"查看XX接口"、或提供了包含 interfaceId 的 Apifox 接口链接时调用此工具。返回的接口详情可用于代码生成、API 调用等场景。',
|
|
99
99
|
inputSchema: {
|
|
100
100
|
type: 'object',
|
|
101
101
|
properties: {
|
|
102
102
|
projectName: {
|
|
103
103
|
type: 'string',
|
|
104
|
-
description: '
|
|
104
|
+
description: '项目名称(必需)。如果用户明确提到项目名称,使用该名称;如果未提到,可以从上下文或缓存中获取最近使用的项目名称。',
|
|
105
105
|
},
|
|
106
106
|
interfaceId: {
|
|
107
107
|
type: 'string',
|
|
108
|
-
description: '接口 ID',
|
|
108
|
+
description: '接口 ID(必需)。可以从以下来源获取:1) 用户提供的 Apifox 接口链接中的 api-{interfaceId} 部分;2) 调用 query_interfaces 返回的接口列表中的 id 字段;3) 用户明确提到的接口 ID(如 "接口 2382")。',
|
|
109
109
|
},
|
|
110
110
|
},
|
|
111
111
|
required: ['projectName', 'interfaceId'],
|
|
@@ -113,28 +113,35 @@ class ApifoxMcpServer {
|
|
|
113
113
|
},
|
|
114
114
|
{
|
|
115
115
|
name: 'generate_artifacts',
|
|
116
|
-
description: '
|
|
116
|
+
description: '根据接口详情生成代码产物,包括 TypeScript 类型、Mock 数据、请求封装函数或测试脚本。使用场景:当用户要求"生成XX接口的类型"、"生成XX的 Mock 数据"、"生成XX的请求封装"、"生成XX的测试脚本"时调用此工具。支持批量生成多个接口的代码。通常需要先调用 query_interfaces 或 get_interface_detail 获取 interfaceId,然后调用此工具生成代码。',
|
|
117
117
|
inputSchema: {
|
|
118
118
|
type: 'object',
|
|
119
119
|
properties: {
|
|
120
|
-
projectName: {
|
|
121
|
-
|
|
120
|
+
projectName: {
|
|
121
|
+
type: 'string',
|
|
122
|
+
description: '项目名称(可选)。如果用户明确提到项目名称,使用该名称;如果未提到,可以从上下文或缓存中获取。',
|
|
123
|
+
},
|
|
124
|
+
projectId: {
|
|
125
|
+
type: 'string',
|
|
126
|
+
description: '项目 ID(可选)。如果知道项目 ID,可以使用此参数。通常 projectName 和 projectId 只需提供一个即可。',
|
|
127
|
+
},
|
|
122
128
|
interfaceIds: {
|
|
123
129
|
type: 'array',
|
|
124
130
|
items: { type: 'string' },
|
|
125
|
-
description: '
|
|
131
|
+
description: '要生成代码的接口 ID 列表(推荐使用)。可以从以下来源获取:1) 调用 query_interfaces 返回的接口列表中的 id 字段;2) 调用 get_interface_detail 返回的接口 id;3) 用户明确提到的接口 ID(如 "接口 2382 和 2392");4) 用户提供的 Apifox 接口链接中的 interfaceId。支持单个或多个接口 ID。如果未提供,系统会尝试从上下文中选择的接口中获取。',
|
|
126
132
|
},
|
|
127
133
|
artifactType: {
|
|
128
134
|
type: 'string',
|
|
129
135
|
enum: ['ts_types', 'mock_data', 'request_wrappers', 'test_scripts'],
|
|
136
|
+
description: '生成的代码类型(必需)。根据用户需求选择:\n- "ts_types": 当用户提到"类型"、"TypeScript 类型"、"type"时使用\n- "mock_data": 当用户提到"Mock"、"mock 数据"、"测试数据"时使用\n- "request_wrappers": 当用户提到"封装"、"请求封装"、"request"时使用\n- "test_scripts": 当用户提到"测试"、"测试脚本"、"test"时使用',
|
|
130
137
|
},
|
|
131
138
|
outputPath: {
|
|
132
139
|
type: 'string',
|
|
133
|
-
description: '
|
|
140
|
+
description: '将生成的代码写入文件的相对路径(可选)。如果用户要求"保存到XX文件"或"写入XX路径",使用此参数。例如:"src/api/types.ts"。如果不提供,代码会直接返回给用户。',
|
|
134
141
|
},
|
|
135
142
|
inline: {
|
|
136
143
|
type: 'boolean',
|
|
137
|
-
description: '
|
|
144
|
+
description: '是否直接返回内容(可选,默认 true)。如果为 true,生成的代码会直接返回;如果为 false,可能需要配合 outputPath 使用。通常保持默认值 true 即可。',
|
|
138
145
|
},
|
|
139
146
|
},
|
|
140
147
|
required: ['artifactType'],
|
|
@@ -142,37 +149,23 @@ class ApifoxMcpServer {
|
|
|
142
149
|
},
|
|
143
150
|
{
|
|
144
151
|
name: 'select_interfaces',
|
|
145
|
-
description: '
|
|
152
|
+
description: '从上次查询的接口列表中选择多个接口,用于批量操作(如批量生成代码)。使用场景:当用户说"选择接口 1, 3, 5"、"选择接口 1-5"、"选择包含支付的接口"时调用此工具。选择后的接口会保存在上下文中,后续可以调用 generate_artifacts 批量生成代码。注意:必须先调用 query_interfaces 获取接口列表,然后才能选择。',
|
|
146
153
|
inputSchema: {
|
|
147
154
|
type: 'object',
|
|
148
155
|
properties: {
|
|
149
156
|
projectName: {
|
|
150
157
|
type: 'string',
|
|
151
|
-
description: '
|
|
158
|
+
description: '项目名称(可选)。如果用户明确提到项目名称,使用该名称;如果已查询过接口,系统会自动从上下文中获取项目信息,通常不需要此参数。',
|
|
152
159
|
},
|
|
153
160
|
interfaceIds: {
|
|
154
161
|
type: 'array',
|
|
155
162
|
items: { type: 'string' },
|
|
156
|
-
description: '直接指定接口 ID
|
|
163
|
+
description: '直接指定接口 ID 列表(推荐使用)。如果用户明确提到接口 ID(如 "接口 2382 和 2392"),或从 query_interfaces 返回的列表中选择,使用此参数直接传入接口 ID 数组。这是最直接的选择方式。',
|
|
157
164
|
},
|
|
158
165
|
},
|
|
159
166
|
required: [],
|
|
160
167
|
},
|
|
161
168
|
},
|
|
162
|
-
{
|
|
163
|
-
name: 'apifox_assistant',
|
|
164
|
-
description: '使用自然语言与 Apifox 助手对话,例如"/apifox 搜索支付接口"',
|
|
165
|
-
inputSchema: {
|
|
166
|
-
type: 'object',
|
|
167
|
-
properties: {
|
|
168
|
-
prompt: {
|
|
169
|
-
type: 'string',
|
|
170
|
-
description: '你的自然语言指令,例如"帮我生成退款接口类型"',
|
|
171
|
-
},
|
|
172
|
-
},
|
|
173
|
-
required: ['prompt'],
|
|
174
|
-
},
|
|
175
|
-
},
|
|
176
169
|
],
|
|
177
170
|
}));
|
|
178
171
|
// 处理工具调用
|
|
@@ -202,13 +195,6 @@ class ApifoxMcpServer {
|
|
|
202
195
|
configManager: this.configManager,
|
|
203
196
|
contextStore: this.contextStore,
|
|
204
197
|
});
|
|
205
|
-
case 'apifox_assistant':
|
|
206
|
-
return await handleAssistant(args, {
|
|
207
|
-
projectRoot: this.projectRoot,
|
|
208
|
-
configManager: this.configManager,
|
|
209
|
-
mcpBridge: this.mcpBridge,
|
|
210
|
-
contextStore: this.contextStore,
|
|
211
|
-
});
|
|
212
198
|
default:
|
|
213
199
|
throw new Error(`未知工具: ${name}`);
|
|
214
200
|
}
|
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAEnG,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAgB,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"intent.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/intent.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { parseIntent } from '../core/intent.js';
|
|
3
|
-
describe('intent parser', () => {
|
|
4
|
-
describe('parseIntent - 选择功能', () => {
|
|
5
|
-
it('应该识别编号选择意图', () => {
|
|
6
|
-
const result = parseIntent('选择接口 1, 3, 5');
|
|
7
|
-
expect(result.action).toBe('selectInterfaces');
|
|
8
|
-
expect(result.selectionCriteria?.indices).toEqual([1, 3, 5]);
|
|
9
|
-
});
|
|
10
|
-
it('应该识别范围选择意图', () => {
|
|
11
|
-
const result = parseIntent('选择接口 1-5');
|
|
12
|
-
expect(result.action).toBe('selectInterfaces');
|
|
13
|
-
expect(result.selectionCriteria?.ranges).toEqual([{ start: 1, end: 5 }]);
|
|
14
|
-
});
|
|
15
|
-
it('应该识别混合选择意图', () => {
|
|
16
|
-
const result = parseIntent('选择接口 1, 3, 5-10');
|
|
17
|
-
expect(result.action).toBe('selectInterfaces');
|
|
18
|
-
expect(result.selectionCriteria?.indices).toEqual([1, 3]);
|
|
19
|
-
expect(result.selectionCriteria?.ranges).toEqual([{ start: 5, end: 10 }]);
|
|
20
|
-
});
|
|
21
|
-
it('应该识别关键词选择意图', () => {
|
|
22
|
-
const result = parseIntent('选择包含"支付"的接口');
|
|
23
|
-
expect(result.action).toBe('selectInterfaces');
|
|
24
|
-
expect(result.selectionCriteria?.keywords).toContain('支付');
|
|
25
|
-
});
|
|
26
|
-
it('应该识别多个关键词选择意图', () => {
|
|
27
|
-
const result = parseIntent('选择包含"支付"和"退款"的接口');
|
|
28
|
-
expect(result.action).toBe('selectInterfaces');
|
|
29
|
-
expect(result.selectionCriteria?.keywords).toContain('支付');
|
|
30
|
-
});
|
|
31
|
-
it('应该识别接口名称选择意图', () => {
|
|
32
|
-
const candidates = ['退款接口', '支付接口', '查询接口'];
|
|
33
|
-
const result = parseIntent('选择"退款接口"和"支付接口"', {
|
|
34
|
-
lastInterfaceListNames: candidates,
|
|
35
|
-
});
|
|
36
|
-
expect(result.action).toBe('selectInterfaces');
|
|
37
|
-
expect(result.selectionCriteria?.names).toContain('退款接口');
|
|
38
|
-
expect(result.selectionCriteria?.names).toContain('支付接口');
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
describe('parseIntent - 其他功能', () => {
|
|
42
|
-
it('应该识别查询意图', () => {
|
|
43
|
-
const result = parseIntent('查询支付接口');
|
|
44
|
-
expect(result.action).toBe('searchInterfaces');
|
|
45
|
-
expect(result.keyword).toBe('支付接口');
|
|
46
|
-
});
|
|
47
|
-
it('应该识别生成意图', () => {
|
|
48
|
-
const result = parseIntent('生成退款接口的类型');
|
|
49
|
-
expect(result.action).toBe('generateArtifacts');
|
|
50
|
-
expect(result.artifactType).toBe('ts_types');
|
|
51
|
-
});
|
|
52
|
-
it('应该识别列表项目意图', () => {
|
|
53
|
-
const result = parseIntent('项目');
|
|
54
|
-
expect(result.action).toBe('listProjects');
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
//# sourceMappingURL=intent.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"intent.test.js","sourceRoot":"","sources":["../../src/__tests__/intent.test.ts"],"names":[],"mappings":"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"}
|
package/dist/core/intent.d.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
export type IntentAction = 'listProjects' | 'listProjectInterfaces' | 'countInterfaces' | 'searchInterfaces' | 'getInterfaceDetail' | 'generateArtifacts' | 'selectInterfaces' | 'getVersion' | 'help' | 'unknown';
|
|
2
|
-
export interface IntentResult {
|
|
3
|
-
action: IntentAction;
|
|
4
|
-
keyword?: string;
|
|
5
|
-
projectName?: string;
|
|
6
|
-
projectId?: string;
|
|
7
|
-
shareId?: string;
|
|
8
|
-
interfaceId?: string;
|
|
9
|
-
interfaceIds?: string[];
|
|
10
|
-
artifactType?: 'ts_types' | 'mock_data' | 'request_wrappers' | 'test_scripts';
|
|
11
|
-
targetName?: string;
|
|
12
|
-
selectionCriteria?: SelectionCriteria;
|
|
13
|
-
url?: string;
|
|
14
|
-
}
|
|
15
|
-
export interface SelectionCriteria {
|
|
16
|
-
indices?: number[];
|
|
17
|
-
ranges?: Array<{
|
|
18
|
-
start: number;
|
|
19
|
-
end: number;
|
|
20
|
-
}>;
|
|
21
|
-
keywords?: string[];
|
|
22
|
-
names?: string[];
|
|
23
|
-
}
|
|
24
|
-
export declare function parseIntent(promptRaw: string, context?: {
|
|
25
|
-
lastProjectName?: string;
|
|
26
|
-
lastInterfaceListNames?: string[];
|
|
27
|
-
}): IntentResult;
|
|
28
|
-
//# sourceMappingURL=intent.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"intent.d.ts","sourceRoot":"","sources":["../../src/core/intent.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GACpB,cAAc,GACd,uBAAuB,GACvB,iBAAiB,GACjB,kBAAkB,GAClB,oBAAoB,GACpB,mBAAmB,GACnB,kBAAkB,GAClB,YAAY,GACZ,MAAM,GACN,SAAS,CAAC;AAEd,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,kBAAkB,GAAG,cAAc,CAAC;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAOD,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IAAE,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GACxE,YAAY,CAkMd"}
|