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.
Files changed (54) hide show
  1. package/dist/core/cache/unified-cache-manager.d.ts.map +1 -1
  2. package/dist/core/cache/unified-cache-manager.js +25 -3
  3. package/dist/core/cache/unified-cache-manager.js.map +1 -1
  4. package/dist/core/index.d.ts +0 -2
  5. package/dist/core/index.d.ts.map +1 -1
  6. package/dist/core/index.js +0 -2
  7. package/dist/core/index.js.map +1 -1
  8. package/dist/lib/project-root.d.ts.map +1 -1
  9. package/dist/lib/project-root.js +8 -5
  10. package/dist/lib/project-root.js.map +1 -1
  11. package/dist/server/handlers/error-handler.d.ts.map +1 -1
  12. package/dist/server/handlers/error-handler.js +27 -18
  13. package/dist/server/handlers/error-handler.js.map +1 -1
  14. package/dist/server/handlers/generate-artifacts.d.ts.map +1 -1
  15. package/dist/server/handlers/generate-artifacts.js +49 -4
  16. package/dist/server/handlers/generate-artifacts.js.map +1 -1
  17. package/dist/server/handlers/get-interface-detail.d.ts.map +1 -1
  18. package/dist/server/handlers/get-interface-detail.js +5 -1
  19. package/dist/server/handlers/get-interface-detail.js.map +1 -1
  20. package/dist/server/handlers/index.d.ts +0 -1
  21. package/dist/server/handlers/index.d.ts.map +1 -1
  22. package/dist/server/handlers/index.js +0 -1
  23. package/dist/server/handlers/index.js.map +1 -1
  24. package/dist/server/handlers/list-project-interfaces.d.ts.map +1 -1
  25. package/dist/server/handlers/list-project-interfaces.js +12 -6
  26. package/dist/server/handlers/list-project-interfaces.js.map +1 -1
  27. package/dist/server/handlers/list-projects.d.ts.map +1 -1
  28. package/dist/server/handlers/list-projects.js +9 -2
  29. package/dist/server/handlers/list-projects.js.map +1 -1
  30. package/dist/server/handlers/parse-and-add-project.d.ts.map +1 -1
  31. package/dist/server/handlers/parse-and-add-project.js +11 -3
  32. package/dist/server/handlers/parse-and-add-project.js.map +1 -1
  33. package/dist/server/handlers/query-interfaces.d.ts.map +1 -1
  34. package/dist/server/handlers/query-interfaces.js +15 -13
  35. package/dist/server/handlers/query-interfaces.js.map +1 -1
  36. package/dist/server/handlers/select-interfaces.d.ts +13 -1
  37. package/dist/server/handlers/select-interfaces.d.ts.map +1 -1
  38. package/dist/server/handlers/select-interfaces.js +13 -4
  39. package/dist/server/handlers/select-interfaces.js.map +1 -1
  40. package/dist/server/index.js +29 -43
  41. package/dist/server/index.js.map +1 -1
  42. package/package.json +1 -1
  43. package/dist/__tests__/intent.test.d.ts +0 -2
  44. package/dist/__tests__/intent.test.d.ts.map +0 -1
  45. package/dist/__tests__/intent.test.js +0 -58
  46. package/dist/__tests__/intent.test.js.map +0 -1
  47. package/dist/core/intent.d.ts +0 -28
  48. package/dist/core/intent.d.ts.map +0 -1
  49. package/dist/core/intent.js +0 -307
  50. package/dist/core/intent.js.map +0 -1
  51. package/dist/server/handlers/assistant.d.ts +0 -20
  52. package/dist/server/handlers/assistant.d.ts.map +0 -1
  53. package/dist/server/handlers/assistant.js +0 -308
  54. package/dist/server/handlers/assistant.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "apifox-workspace-mcp",
3
- "version": "1.2.0",
3
+ "version": "2.0.1",
4
4
  "description": "Workspace-level Apifox MCP Server for intelligent API documentation integration in Cursor AI",
5
5
  "type": "module",
6
6
  "main": "dist/server/index.js",
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=intent.test.d.ts.map
@@ -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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"}
@@ -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"}
@@ -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
@@ -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"}