apifox-workspace-mcp 1.2.0 → 2.0.1
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/cache/unified-cache-manager.d.ts.map +1 -1
- package/dist/core/cache/unified-cache-manager.js +25 -3
- package/dist/core/cache/unified-cache-manager.js.map +1 -1
- 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/lib/project-root.d.ts.map +1 -1
- package/dist/lib/project-root.js +8 -5
- package/dist/lib/project-root.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 +49 -4
- 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
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"}
|
package/dist/core/intent.js
DELETED
|
@@ -1,307 +0,0 @@
|
|
|
1
|
-
const GENERATE_KEYWORDS = ['生成', '导出', '输出', 'mock', '类型', '封装', '代码'];
|
|
2
|
-
const DETAIL_KEYWORDS = ['详情', '具体', '字段', '参数', '文档'];
|
|
3
|
-
const SEARCH_KEYWORDS = ['查询', '搜索', '找', '接口列表', '有哪些', '列出'];
|
|
4
|
-
const SELECT_KEYWORDS = ['选择', '勾选', '要这些', '要这些接口', '选中', '标记'];
|
|
5
|
-
export function parseIntent(promptRaw, context) {
|
|
6
|
-
// 移除 @apifox 前缀(如果存在)
|
|
7
|
-
const prompt = promptRaw
|
|
8
|
-
.trim()
|
|
9
|
-
.replace(/^@apifox\s+/i, '')
|
|
10
|
-
.trim();
|
|
11
|
-
if (!prompt) {
|
|
12
|
-
return { action: 'help' };
|
|
13
|
-
}
|
|
14
|
-
// 优先检测 URL(如果 prompt 中包含 URL)
|
|
15
|
-
const urlMatch = prompt.match(/https?:\/\/[^\s]+/);
|
|
16
|
-
if (urlMatch) {
|
|
17
|
-
const url = urlMatch[0];
|
|
18
|
-
// 检查是否是 Apifox 分享链接格式
|
|
19
|
-
const isApifoxUrl = /\/apidoc\/shared\//.test(url);
|
|
20
|
-
if (!isApifoxUrl) {
|
|
21
|
-
// 不是 Apifox 链接,返回错误提示
|
|
22
|
-
return {
|
|
23
|
-
action: 'unknown',
|
|
24
|
-
url,
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
// 提取 shareId 和 interfaceId
|
|
28
|
-
const shareMatch = url.match(/\/apidoc\/shared\/([^\/]+)(?:\/api-([^\/]+))?/);
|
|
29
|
-
if (shareMatch) {
|
|
30
|
-
const shareId = shareMatch[1];
|
|
31
|
-
const interfaceId = shareMatch[2];
|
|
32
|
-
// 如果包含接口ID,识别为获取接口详情
|
|
33
|
-
if (interfaceId) {
|
|
34
|
-
return {
|
|
35
|
-
action: 'getInterfaceDetail',
|
|
36
|
-
interfaceId,
|
|
37
|
-
shareId,
|
|
38
|
-
url,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
// 否则是项目整体链接,列出所有接口
|
|
42
|
-
return {
|
|
43
|
-
action: 'listProjectInterfaces',
|
|
44
|
-
shareId,
|
|
45
|
-
url,
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
// Detect select interfaces (natural language selection)
|
|
50
|
-
if (SELECT_KEYWORDS.some((kw) => prompt.includes(kw))) {
|
|
51
|
-
const criteria = parseSelectionCriteria(prompt, context?.lastInterfaceListNames);
|
|
52
|
-
if (criteria) {
|
|
53
|
-
return { action: 'selectInterfaces', selectionCriteria: criteria };
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
// Detect generate artifacts
|
|
57
|
-
// 检查是否包含生成关键词
|
|
58
|
-
const hasGenerateKeyword = GENERATE_KEYWORDS.some((kw) => prompt.includes(kw));
|
|
59
|
-
// 检查是否包含类型相关关键词
|
|
60
|
-
const hasTypeKeyword = prompt.includes('类型') ||
|
|
61
|
-
prompt.toLowerCase().includes('type') ||
|
|
62
|
-
prompt.includes('mock') ||
|
|
63
|
-
prompt.toLowerCase().includes('mock') ||
|
|
64
|
-
prompt.includes('封装') ||
|
|
65
|
-
prompt.toLowerCase().includes('request') ||
|
|
66
|
-
prompt.includes('测试') ||
|
|
67
|
-
prompt.toLowerCase().includes('test');
|
|
68
|
-
if (hasGenerateKeyword && hasTypeKeyword) {
|
|
69
|
-
const type = detectArtifactType(prompt);
|
|
70
|
-
// 尝试提取多个接口 ID(如"给我2386 和 2392的接口类型")
|
|
71
|
-
const interfaceIds = extractMultipleInterfaceIds(prompt);
|
|
72
|
-
return {
|
|
73
|
-
action: 'generateArtifacts',
|
|
74
|
-
artifactType: type,
|
|
75
|
-
targetName: extractInterfaceName(prompt, context?.lastInterfaceListNames),
|
|
76
|
-
interfaceIds: interfaceIds.length > 0 ? interfaceIds : undefined,
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
// Detect get detail by ID or name
|
|
80
|
-
// 先检查是否有接口ID(api-xxx格式),优先级更高
|
|
81
|
-
const interfaceId = extractInterfaceId(prompt);
|
|
82
|
-
if (interfaceId) {
|
|
83
|
-
return {
|
|
84
|
-
action: 'getInterfaceDetail',
|
|
85
|
-
interfaceId,
|
|
86
|
-
targetName: undefined,
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
if (DETAIL_KEYWORDS.some((kw) => prompt.includes(kw))) {
|
|
90
|
-
return {
|
|
91
|
-
action: 'getInterfaceDetail',
|
|
92
|
-
interfaceId: undefined,
|
|
93
|
-
targetName: extractInterfaceName(prompt, context?.lastInterfaceListNames),
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
// 检测接口数量查询(如"几个接口"、"接口数量"、"接口总数")
|
|
97
|
-
const countKeywords = [
|
|
98
|
-
'几个接口',
|
|
99
|
-
'接口数量',
|
|
100
|
-
'接口总数',
|
|
101
|
-
'有多少接口',
|
|
102
|
-
'接口个数',
|
|
103
|
-
'共几个接口',
|
|
104
|
-
'一共几个接口',
|
|
105
|
-
];
|
|
106
|
-
const hasCountKeyword = countKeywords.some((kw) => prompt.includes(kw));
|
|
107
|
-
// 放宽项目上下文检查:如果有上下文项目信息,也认为有项目上下文
|
|
108
|
-
const hasProjectContext = prompt.includes('这个项目') ||
|
|
109
|
-
prompt.includes('当前项目') ||
|
|
110
|
-
prompt.includes('项目') ||
|
|
111
|
-
!!context?.lastProjectName;
|
|
112
|
-
// 检测"列出所有接口"或"查看所有接口"(优先级最高,在搜索之前)
|
|
113
|
-
// 使用更灵活的匹配,支持"我想查看所有接口信息"等表达
|
|
114
|
-
const listInterfacesPatterns = [
|
|
115
|
-
/列出所有接口/i,
|
|
116
|
-
/显示所有接口/i,
|
|
117
|
-
/查看所有接口/i,
|
|
118
|
-
/所有接口信息/i,
|
|
119
|
-
/查看所有接口信息/i,
|
|
120
|
-
/显示接口列表/i,
|
|
121
|
-
/(?:我想|我要|帮我).*查看.*所有接口/i,
|
|
122
|
-
/(?:我想|我要|帮我).*列出.*所有接口/i,
|
|
123
|
-
/(?:我想|我要|帮我).*显示.*所有接口/i,
|
|
124
|
-
/(?:我想|我要|帮我).*所有接口.*信息/i, // 匹配"我想查看所有接口信息"
|
|
125
|
-
/查看.*所有接口.*信息/i, // 匹配"查看所有接口信息"
|
|
126
|
-
];
|
|
127
|
-
// 也检查简单的关键词匹配(向后兼容)
|
|
128
|
-
const listInterfacesKeywords = ['所有接口', '全部接口', '接口列表'];
|
|
129
|
-
// 先检查正则表达式(更精确)
|
|
130
|
-
if (listInterfacesPatterns.some((pattern) => pattern.test(prompt))) {
|
|
131
|
-
return {
|
|
132
|
-
action: 'listProjectInterfaces',
|
|
133
|
-
projectName: context?.lastProjectName,
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
// 再检查关键词(但排除包含"查询"、"搜索"的情况,避免误判)
|
|
137
|
-
if (listInterfacesKeywords.some((kw) => prompt.includes(kw)) &&
|
|
138
|
-
!SEARCH_KEYWORDS.some((kw) => prompt.includes(kw))) {
|
|
139
|
-
return {
|
|
140
|
-
action: 'listProjectInterfaces',
|
|
141
|
-
projectName: context?.lastProjectName,
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
if (hasCountKeyword && hasProjectContext) {
|
|
145
|
-
// 查询项目接口数量,使用专门的 countInterfaces 动作
|
|
146
|
-
return {
|
|
147
|
-
action: 'countInterfaces',
|
|
148
|
-
projectName: context?.lastProjectName,
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
// Default search/list(在列出所有接口之后)
|
|
152
|
-
if (SEARCH_KEYWORDS.some((kw) => prompt.includes(kw)) || prompt.startsWith('接口')) {
|
|
153
|
-
return {
|
|
154
|
-
action: 'searchInterfaces',
|
|
155
|
-
keyword: extractKeyword(prompt),
|
|
156
|
-
};
|
|
157
|
-
}
|
|
158
|
-
// 检测"列出项目"(明确要求列出所有项目)
|
|
159
|
-
const listProjectKeywords = ['列出项目', '所有项目', '项目列表', '有哪些项目', '项目有哪些'];
|
|
160
|
-
if (listProjectKeywords.some((kw) => prompt.includes(kw))) {
|
|
161
|
-
return { action: 'listProjects' };
|
|
162
|
-
}
|
|
163
|
-
// 如果只是提到"项目"但没有其他上下文,且没有接口相关关键词,才列出项目
|
|
164
|
-
if (prompt.includes('项目') && !prompt.includes('接口') && !hasCountKeyword) {
|
|
165
|
-
return { action: 'listProjects' };
|
|
166
|
-
}
|
|
167
|
-
// 检测版本查询
|
|
168
|
-
const versionKeywords = ['版本', 'version', '版本号', '当前版本', '什么版本'];
|
|
169
|
-
if (versionKeywords.some((kw) => prompt.toLowerCase().includes(kw.toLowerCase()))) {
|
|
170
|
-
return { action: 'getVersion' };
|
|
171
|
-
}
|
|
172
|
-
return { action: 'unknown' };
|
|
173
|
-
}
|
|
174
|
-
function detectArtifactType(prompt) {
|
|
175
|
-
if (prompt.includes('mock')) {
|
|
176
|
-
return 'mock_data';
|
|
177
|
-
}
|
|
178
|
-
if (prompt.includes('封装') || prompt.toLowerCase().includes('request')) {
|
|
179
|
-
return 'request_wrappers';
|
|
180
|
-
}
|
|
181
|
-
if (prompt.includes('测试')) {
|
|
182
|
-
return 'test_scripts';
|
|
183
|
-
}
|
|
184
|
-
return 'ts_types';
|
|
185
|
-
}
|
|
186
|
-
function extractInterfaceId(prompt) {
|
|
187
|
-
// 匹配 api-12345 或 接口12345 或 12345 格式
|
|
188
|
-
const match = prompt.match(/(?:api-|接口)?(\d{4,})/);
|
|
189
|
-
return match ? match[1] : undefined;
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* 提取多个接口 ID(如"给我2386 和 2392的接口类型")
|
|
193
|
-
*/
|
|
194
|
-
function extractMultipleInterfaceIds(prompt) {
|
|
195
|
-
// 匹配所有4位或以上的数字(接口 ID 通常是4位以上)
|
|
196
|
-
// 排除明显不是接口 ID 的数字(如年份、版本号等)
|
|
197
|
-
const matches = prompt.matchAll(/\b(\d{4,})\b/g);
|
|
198
|
-
const ids = [];
|
|
199
|
-
for (const match of matches) {
|
|
200
|
-
const id = match[1];
|
|
201
|
-
// 排除一些明显不是接口 ID 的数字
|
|
202
|
-
// 例如:年份(2020-2099)、版本号(如 2.28)、过长的数字(可能是其他标识符)
|
|
203
|
-
if (id.length >= 4 && id.length <= 6) {
|
|
204
|
-
// 接口 ID 通常在 4-6 位之间
|
|
205
|
-
ids.push(id);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
return ids;
|
|
209
|
-
}
|
|
210
|
-
function extractKeyword(prompt) {
|
|
211
|
-
const trimmed = prompt
|
|
212
|
-
.replace(/\/?apifox/gi, '')
|
|
213
|
-
.replace(/接口列表|有哪些|搜索|查询|找|帮我|一下/g, '')
|
|
214
|
-
.trim();
|
|
215
|
-
return trimmed || undefined;
|
|
216
|
-
}
|
|
217
|
-
function extractInterfaceName(prompt, candidates) {
|
|
218
|
-
if (!candidates || candidates.length === 0) {
|
|
219
|
-
return undefined;
|
|
220
|
-
}
|
|
221
|
-
return (candidates.find((name) => prompt.includes(name)) ||
|
|
222
|
-
candidates.find((name) => prompt.toLowerCase().includes(name.toLowerCase())));
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* 解析选择条件
|
|
226
|
-
* 支持多种表达方式:
|
|
227
|
-
* - 编号:1, 3, 5 或 1-5 或 1,3,5-10
|
|
228
|
-
* - 关键词:包含"支付"和"退款"的接口
|
|
229
|
-
* - 名称:选择"退款接口"和"支付接口"
|
|
230
|
-
*/
|
|
231
|
-
function parseSelectionCriteria(prompt, candidates) {
|
|
232
|
-
const criteria = {};
|
|
233
|
-
// 1. 解析编号选择(如:1, 3, 5 或 1-5 或 1,3,5-10)
|
|
234
|
-
const numberPattern = /(\d+)(?:-(\d+))?/g;
|
|
235
|
-
const numberMatches = Array.from(prompt.matchAll(numberPattern));
|
|
236
|
-
if (numberMatches.length > 0) {
|
|
237
|
-
const indices = [];
|
|
238
|
-
const ranges = [];
|
|
239
|
-
for (const match of numberMatches) {
|
|
240
|
-
const start = parseInt(match[1], 10);
|
|
241
|
-
const end = match[2] ? parseInt(match[2], 10) : null;
|
|
242
|
-
if (end !== null) {
|
|
243
|
-
// 范围选择
|
|
244
|
-
ranges.push({ start, end: Math.max(start, end) });
|
|
245
|
-
}
|
|
246
|
-
else {
|
|
247
|
-
// 单个编号
|
|
248
|
-
indices.push(start);
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
if (indices.length > 0) {
|
|
252
|
-
criteria.indices = indices;
|
|
253
|
-
}
|
|
254
|
-
if (ranges.length > 0) {
|
|
255
|
-
criteria.ranges = ranges;
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
// 2. 解析关键词选择(如:包含"支付"和"退款")
|
|
259
|
-
const keywordPatterns = [
|
|
260
|
-
/包含["']?([^"']+)["']?/g,
|
|
261
|
-
/["']([^"']+)["']/g,
|
|
262
|
-
/(?:包含|选择|要)(?:.*?)(?:和|与|、)(.*?)(?:的|接口)/g,
|
|
263
|
-
];
|
|
264
|
-
const keywords = [];
|
|
265
|
-
for (const pattern of keywordPatterns) {
|
|
266
|
-
const matches = Array.from(prompt.matchAll(pattern));
|
|
267
|
-
for (const match of matches) {
|
|
268
|
-
const keyword = match[1]?.trim();
|
|
269
|
-
if (keyword && keyword.length > 1 && !keyword.match(/^\d+$/)) {
|
|
270
|
-
keywords.push(keyword);
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
// 如果没有通过模式匹配到,尝试提取引号内的内容
|
|
275
|
-
if (keywords.length === 0) {
|
|
276
|
-
const quotedMatches = prompt.match(/["']([^"']+)["']/g);
|
|
277
|
-
if (quotedMatches) {
|
|
278
|
-
for (const quoted of quotedMatches) {
|
|
279
|
-
const keyword = quoted.replace(/["']/g, '').trim();
|
|
280
|
-
if (keyword.length > 1) {
|
|
281
|
-
keywords.push(keyword);
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
if (keywords.length > 0) {
|
|
287
|
-
criteria.keywords = keywords;
|
|
288
|
-
}
|
|
289
|
-
// 3. 解析接口名称选择(从候选列表中匹配)
|
|
290
|
-
if (candidates && candidates.length > 0) {
|
|
291
|
-
const names = [];
|
|
292
|
-
for (const candidate of candidates) {
|
|
293
|
-
if (prompt.includes(candidate) || prompt.toLowerCase().includes(candidate.toLowerCase())) {
|
|
294
|
-
names.push(candidate);
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
if (names.length > 0) {
|
|
298
|
-
criteria.names = names;
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
// 如果没有任何选择条件,返回 null
|
|
302
|
-
if (Object.keys(criteria).length === 0) {
|
|
303
|
-
return null;
|
|
304
|
-
}
|
|
305
|
-
return criteria;
|
|
306
|
-
}
|
|
307
|
-
//# sourceMappingURL=intent.js.map
|
package/dist/core/intent.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"intent.js","sourceRoot":"","sources":["../../src/core/intent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { ConfigManager, McpBridge, ContextStore } from '../../core/index.js';
|
|
2
|
-
export interface AssistantArgs {
|
|
3
|
-
prompt: string;
|
|
4
|
-
}
|
|
5
|
-
export interface AssistantContext {
|
|
6
|
-
projectRoot: string;
|
|
7
|
-
configManager: ConfigManager;
|
|
8
|
-
mcpBridge: McpBridge;
|
|
9
|
-
contextStore: ContextStore;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* 处理自然语言助手请求
|
|
13
|
-
*/
|
|
14
|
-
export declare function handleAssistant(args: AssistantArgs, ctx: AssistantContext): Promise<{
|
|
15
|
-
content: {
|
|
16
|
-
type: string;
|
|
17
|
-
text: string;
|
|
18
|
-
}[];
|
|
19
|
-
}>;
|
|
20
|
-
//# sourceMappingURL=assistant.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"assistant.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/assistant.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,SAAS,EACT,YAAY,EAIb,MAAM,qBAAqB,CAAC;AAsD7B,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,gBAAgB;;;;;GAuV/E"}
|