apifox-workspace-mcp 1.1.6 → 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/__tests__/url-parser.test.js +3 -1
- package/dist/__tests__/url-parser.test.js.map +1 -1
- package/dist/core/cache/index.d.ts +2 -2
- package/dist/core/cache/index.d.ts.map +1 -1
- package/dist/core/cache/index.js +2 -2
- package/dist/core/cache/index.js.map +1 -1
- package/dist/core/cache/unified-cache-manager.d.ts +2 -1
- package/dist/core/cache/unified-cache-manager.d.ts.map +1 -1
- package/dist/core/cache/unified-cache-manager.js +36 -9
- package/dist/core/cache/unified-cache-manager.js.map +1 -1
- package/dist/core/client/mcp-bridge.d.ts +1 -1
- package/dist/core/client/mcp-bridge.d.ts.map +1 -1
- package/dist/core/client/mcp-bridge.js +10 -6
- package/dist/core/client/mcp-bridge.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/core/parser/md-parser.js +294 -85
- package/dist/core/parser/md-parser.js.map +1 -1
- package/dist/core/parser/url.d.ts.map +1 -1
- package/dist/core/parser/url.js +90 -22
- package/dist/core/parser/url.js.map +1 -1
- package/dist/server/handlers/error-handler.d.ts +26 -0
- package/dist/server/handlers/error-handler.d.ts.map +1 -0
- package/dist/server/handlers/error-handler.js +87 -0
- package/dist/server/handlers/error-handler.js.map +1 -0
- package/dist/server/handlers/generate-artifacts.d.ts.map +1 -1
- package/dist/server/handlers/generate-artifacts.js +40 -6
- 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 +11 -3
- 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 +74 -7
- 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 +13 -5
- 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/handlers/utils.d.ts.map +1 -1
- package/dist/server/handlers/utils.js +10 -2
- package/dist/server/handlers/utils.js.map +1 -1
- package/dist/server/index.js +29 -43
- package/dist/server/index.js.map +1 -1
- package/package.json +7 -5
- 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/cache/interface-cache-manager.d.ts +0 -118
- package/dist/core/cache/interface-cache-manager.d.ts.map +0 -1
- package/dist/core/cache/interface-cache-manager.js +0 -236
- package/dist/core/cache/interface-cache-manager.js.map +0 -1
- package/dist/core/intent.d.ts +0 -27
- package/dist/core/intent.d.ts.map +0 -1
- package/dist/core/intent.js +0 -214
- 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 -98
- package/dist/server/handlers/assistant.js.map +0 -1
package/dist/core/parser/url.js
CHANGED
|
@@ -32,15 +32,14 @@ export async function extractRealProjectIdFromApiDoc(apiDocUrl) {
|
|
|
32
32
|
// 格式: x-run-in-apifox: https://apifox.advai.net/web/project/{realProjectId}/apis/api-{interfaceId}-run
|
|
33
33
|
const runInApifoxMatch = apiDocContent.match(/x-run-in-apifox:\s*https:\/\/[^\/]+\/web\/project\/(\d+)\//);
|
|
34
34
|
if (!runInApifoxMatch) {
|
|
35
|
-
|
|
35
|
+
// 使用 logger 替代 console.error
|
|
36
36
|
return null;
|
|
37
37
|
}
|
|
38
38
|
const realProjectId = runInApifoxMatch[1];
|
|
39
|
-
console.error(`✅ 从 API 文档中提取到真正的 projectId: ${realProjectId}`);
|
|
40
39
|
return realProjectId;
|
|
41
40
|
}
|
|
42
|
-
catch
|
|
43
|
-
|
|
41
|
+
catch {
|
|
42
|
+
// 使用 logger 替代 console.error
|
|
44
43
|
return null;
|
|
45
44
|
}
|
|
46
45
|
}
|
|
@@ -61,14 +60,14 @@ export async function extractRealProjectIdFromLlms(llmsUrl) {
|
|
|
61
60
|
// 格式: https://apifox.advai.net/apidoc/shared/{shareId}/api-{interfaceId}.md
|
|
62
61
|
const apiDocMatch = llmsContent.match(/https:\/\/[^\s]+\/api-(\d+)\.md/);
|
|
63
62
|
if (!apiDocMatch) {
|
|
64
|
-
|
|
63
|
+
// 无法从 LLM 文档中找到 API 文档链接,静默处理
|
|
65
64
|
return null;
|
|
66
65
|
}
|
|
67
66
|
// 3. 构建 API 文档 URL
|
|
68
67
|
const urlObj = new URL(llmsUrl);
|
|
69
68
|
const shareId = urlObj.pathname.match(/\/apidoc\/shared\/([^\/]+)/)?.[1];
|
|
70
69
|
if (!shareId) {
|
|
71
|
-
|
|
70
|
+
// 无法从 LLM URL 中提取分享 ID,静默处理
|
|
72
71
|
return null;
|
|
73
72
|
}
|
|
74
73
|
const apiDocUrl = `${urlObj.protocol}//${urlObj.host}/apidoc/shared/${shareId}/api-${apiDocMatch[1]}.md`;
|
|
@@ -82,8 +81,8 @@ export async function extractRealProjectIdFromLlms(llmsUrl) {
|
|
|
82
81
|
firstApiDocUrl: apiDocUrl,
|
|
83
82
|
};
|
|
84
83
|
}
|
|
85
|
-
catch
|
|
86
|
-
|
|
84
|
+
catch {
|
|
85
|
+
// 从 LLM 文档提取 projectId 失败,静默处理
|
|
87
86
|
return null;
|
|
88
87
|
}
|
|
89
88
|
}
|
|
@@ -94,26 +93,84 @@ export async function extractRealProjectIdFromLlms(llmsUrl) {
|
|
|
94
93
|
*/
|
|
95
94
|
async function extractProjectNameFromHtml(pageUrl) {
|
|
96
95
|
try {
|
|
97
|
-
|
|
98
|
-
const
|
|
99
|
-
|
|
96
|
+
// 添加 Accept 头,确保获取 HTML 内容而不是 Markdown
|
|
97
|
+
const response = await axios.get(pageUrl, {
|
|
98
|
+
timeout: 10000,
|
|
99
|
+
headers: {
|
|
100
|
+
Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
|
|
101
|
+
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
const html = typeof response.data === 'string' ? response.data : String(response.data);
|
|
105
|
+
// 改进的正则表达式:支持 title 标签可能有属性,处理换行和空格
|
|
106
|
+
// 尝试多种匹配模式
|
|
107
|
+
let titleMatch = html.match(/<title[^>]*>([\s\S]*?)<\/title>/i);
|
|
108
|
+
// 如果第一种模式失败,尝试更宽松的匹配(处理可能的 HTML 转义或格式问题)
|
|
109
|
+
if (!titleMatch) {
|
|
110
|
+
titleMatch = html.match(/<title[^>]*>([^<]+)<\/title>/i);
|
|
111
|
+
}
|
|
112
|
+
// 如果还是失败,尝试查找 title 标签(可能跨多行)
|
|
100
113
|
if (!titleMatch) {
|
|
114
|
+
// 使用更宽松的匹配,允许 title 标签内有任意内容
|
|
115
|
+
const titleStart = html.indexOf('<title');
|
|
116
|
+
if (titleStart !== -1) {
|
|
117
|
+
const titleEnd = html.indexOf('</title>', titleStart);
|
|
118
|
+
if (titleEnd !== -1) {
|
|
119
|
+
const titleTag = html.substring(titleStart, titleEnd);
|
|
120
|
+
const contentMatch = titleTag.match(/>([\s\S]+)$/);
|
|
121
|
+
if (contentMatch) {
|
|
122
|
+
titleMatch = [titleTag, contentMatch[1]];
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (!titleMatch || !titleMatch[1]) {
|
|
128
|
+
// 无法从 HTML 中提取 title 标签内容,静默处理
|
|
129
|
+
return { projectName: null, pageTitle: null };
|
|
130
|
+
}
|
|
131
|
+
// 清理提取的标题内容:去除 HTML 实体、多余空白
|
|
132
|
+
const title = titleMatch[1]
|
|
133
|
+
.replace(/ /g, ' ')
|
|
134
|
+
.replace(/&/g, '&')
|
|
135
|
+
.replace(/</g, '<')
|
|
136
|
+
.replace(/>/g, '>')
|
|
137
|
+
.replace(/"/g, '"')
|
|
138
|
+
.replace(/'/g, "'")
|
|
139
|
+
.replace(/\s+/g, ' ') // 将多个空白字符替换为单个空格
|
|
140
|
+
.trim();
|
|
141
|
+
if (!title) {
|
|
101
142
|
return { projectName: null, pageTitle: null };
|
|
102
143
|
}
|
|
103
|
-
|
|
144
|
+
// 提取项目名称:查找最后一个 " - " 分隔符
|
|
104
145
|
const delimiterIndex = title.lastIndexOf(' - ');
|
|
105
146
|
let projectName = null;
|
|
106
147
|
if (delimiterIndex !== -1) {
|
|
148
|
+
// 找到分隔符,提取后面的部分作为项目名称
|
|
107
149
|
projectName = title.substring(delimiterIndex + 3).trim();
|
|
108
150
|
}
|
|
109
151
|
else {
|
|
110
|
-
//
|
|
111
|
-
|
|
152
|
+
// 如果没有分隔符,尝试其他常见的分隔符
|
|
153
|
+
const altDelimiters = [' | ', ' |', '| ', ' – ', ' — '];
|
|
154
|
+
for (const delimiter of altDelimiters) {
|
|
155
|
+
const altIndex = title.lastIndexOf(delimiter);
|
|
156
|
+
if (altIndex !== -1) {
|
|
157
|
+
projectName = title.substring(altIndex + delimiter.length).trim();
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// 如果仍然没有找到分隔符,使用整个标题作为项目名称
|
|
162
|
+
if (!projectName) {
|
|
163
|
+
projectName = title;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
// 如果项目名称为空,使用整个标题
|
|
167
|
+
if (!projectName || projectName.length === 0) {
|
|
168
|
+
projectName = title;
|
|
112
169
|
}
|
|
113
170
|
return { projectName, pageTitle: title };
|
|
114
171
|
}
|
|
115
|
-
catch
|
|
116
|
-
|
|
172
|
+
catch {
|
|
173
|
+
// 从分享页面解析项目名称失败,静默处理
|
|
117
174
|
return { projectName: null, pageTitle: null };
|
|
118
175
|
}
|
|
119
176
|
}
|
|
@@ -128,6 +185,10 @@ async function extractProjectNameFromHtml(pageUrl) {
|
|
|
128
185
|
*/
|
|
129
186
|
export async function parseApifoxUrl(url) {
|
|
130
187
|
try {
|
|
188
|
+
// 首先验证是否是 Apifox 链接
|
|
189
|
+
if (!isValidApifoxUrl(url)) {
|
|
190
|
+
throw new Error('不是有效的 Apifox 分享链接');
|
|
191
|
+
}
|
|
131
192
|
const urlObj = new URL(url);
|
|
132
193
|
const pathname = urlObj.pathname;
|
|
133
194
|
const baseUrl = `${urlObj.protocol}//${urlObj.host}`;
|
|
@@ -141,7 +202,7 @@ export async function parseApifoxUrl(url) {
|
|
|
141
202
|
// 从 LLM 文档中提取真正的 projectId
|
|
142
203
|
const result = await extractRealProjectIdFromLlms(url);
|
|
143
204
|
if (!result) {
|
|
144
|
-
|
|
205
|
+
// 无法从 LLM 文档中提取真正的 projectId,使用分享 ID 作为后备
|
|
145
206
|
return {
|
|
146
207
|
projectId: shareId,
|
|
147
208
|
shareId,
|
|
@@ -192,7 +253,7 @@ export async function parseApifoxUrl(url) {
|
|
|
192
253
|
}
|
|
193
254
|
}
|
|
194
255
|
if (!projectId) {
|
|
195
|
-
|
|
256
|
+
// 无法从分享链接解析到真实 projectId,使用分享 ID 作为后备
|
|
196
257
|
projectId = shareId;
|
|
197
258
|
}
|
|
198
259
|
return {
|
|
@@ -208,8 +269,8 @@ export async function parseApifoxUrl(url) {
|
|
|
208
269
|
firstApiDocUrl,
|
|
209
270
|
};
|
|
210
271
|
}
|
|
211
|
-
catch
|
|
212
|
-
|
|
272
|
+
catch {
|
|
273
|
+
// 解析 URL 失败,错误已在上层处理
|
|
213
274
|
return null;
|
|
214
275
|
}
|
|
215
276
|
}
|
|
@@ -221,9 +282,16 @@ export async function parseApifoxUrl(url) {
|
|
|
221
282
|
export function isValidApifoxUrl(url) {
|
|
222
283
|
try {
|
|
223
284
|
const urlObj = new URL(url);
|
|
285
|
+
const hostname = urlObj.hostname.toLowerCase();
|
|
224
286
|
const pathname = urlObj.pathname;
|
|
225
|
-
//
|
|
226
|
-
|
|
287
|
+
// 检查域名是否以 apifox 开头(支持 apifox.com, apifox.advai.net 等)
|
|
288
|
+
// 或者包含 .apifox. 或 .apifox(支持 example.apifox.com 等)
|
|
289
|
+
const isApifoxDomain = hostname.startsWith('apifox') ||
|
|
290
|
+
hostname.includes('.apifox.') ||
|
|
291
|
+
hostname.endsWith('.apifox');
|
|
292
|
+
// 检查路径是否是 /apidoc/shared/ 格式
|
|
293
|
+
const isValidPath = /\/apidoc\/shared\//.test(pathname);
|
|
294
|
+
return isApifoxDomain && isValidPath;
|
|
227
295
|
}
|
|
228
296
|
catch {
|
|
229
297
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../../src/core/parser/url.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;GAGG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,uCAAuC;IACvC,oCAAmB,CAAA;IACnB,yDAAyD;IACzD,wCAAuB,CAAA;AACzB,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB;AA4BD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,SAAiB;IACpE,IAAI,CAAC;QACH,kBAAkB;QAClB,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,KAAK,CAAC;QAEhF,cAAc;QACd,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1E,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC;QAE1C,iCAAiC;QACjC,uGAAuG;QACvG,MAAM,gBAAgB,GAAG,aAAa,CAAC,KAAK,CAC1C,4DAA4D,CAC7D,CAAC;QACF,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,
|
|
1
|
+
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../../src/core/parser/url.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 统一的错误处理工具
|
|
3
|
+
*/
|
|
4
|
+
import { ContextStore } from '../../core/index.js';
|
|
5
|
+
import { buildTextResponse } from './utils.js';
|
|
6
|
+
export interface ErrorContext {
|
|
7
|
+
lastProject?: {
|
|
8
|
+
projectName?: string;
|
|
9
|
+
projectId?: string;
|
|
10
|
+
} | null;
|
|
11
|
+
projectRoot: string;
|
|
12
|
+
contextStore: ContextStore;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 处理项目信息缺失的错误,尝试从上下文推断
|
|
16
|
+
*/
|
|
17
|
+
export declare function handleMissingProjectError(context: ErrorContext): ReturnType<typeof buildTextResponse>;
|
|
18
|
+
/**
|
|
19
|
+
* 处理接口信息缺失的错误
|
|
20
|
+
*/
|
|
21
|
+
export declare function handleMissingInterfaceError(context: ErrorContext, interfaceNameOrId?: string): ReturnType<typeof buildTextResponse>;
|
|
22
|
+
/**
|
|
23
|
+
* 处理缓存未找到的错误
|
|
24
|
+
*/
|
|
25
|
+
export declare function handleCacheNotFoundError(projectNameOrId: string, context: ErrorContext): ReturnType<typeof buildTextResponse>;
|
|
26
|
+
//# sourceMappingURL=error-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/error-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAClE,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,YAAY,GACpB,UAAU,CAAC,OAAO,iBAAiB,CAAC,CA8CtC;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,YAAY,EACrB,iBAAiB,CAAC,EAAE,MAAM,GACzB,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAyBtC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,YAAY,GACpB,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAqBtC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { buildTextResponse } from './utils.js';
|
|
2
|
+
import { UnifiedCacheManager } from '../../core/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* 处理项目信息缺失的错误,尝试从上下文推断
|
|
5
|
+
*/
|
|
6
|
+
export function handleMissingProjectError(context) {
|
|
7
|
+
const { lastProject, projectRoot } = context;
|
|
8
|
+
// 尝试从上下文获取项目信息
|
|
9
|
+
if (lastProject?.projectName || lastProject?.projectId) {
|
|
10
|
+
return buildTextResponse(`无法确定项目信息。\n\n` +
|
|
11
|
+
`当前上下文中的项目:${lastProject.projectName || lastProject.projectId}\n\n` +
|
|
12
|
+
`**建议操作:**\n` +
|
|
13
|
+
`- 使用 \`parse_and_add_project\` 工具添加项目(参数:url: "Apifox 项目分享链接")\n` +
|
|
14
|
+
`- 使用 \`list_project_interfaces\` 工具查看接口列表(参数:projectName: "${lastProject.projectName || lastProject.projectId}")`);
|
|
15
|
+
}
|
|
16
|
+
// 尝试从缓存中查找
|
|
17
|
+
const cacheManager = new UnifiedCacheManager(projectRoot);
|
|
18
|
+
const projects = cacheManager.listProjects();
|
|
19
|
+
if (projects.length === 1) {
|
|
20
|
+
return buildTextResponse(`检测到缓存中有项目:${projects[0].name}\n\n` +
|
|
21
|
+
`**建议操作:**\n` +
|
|
22
|
+
`- 使用 \`list_project_interfaces\` 工具查看所有接口(参数:projectName: "${projects[0].name}")\n` +
|
|
23
|
+
`- 使用 \`query_interfaces\` 工具搜索接口(参数:projectName: "${projects[0].name}", keyword: "关键词")\n` +
|
|
24
|
+
`- 使用 \`parse_and_add_project\` 工具更新项目信息(参数:url: "Apifox 项目链接")`);
|
|
25
|
+
}
|
|
26
|
+
if (projects.length > 1) {
|
|
27
|
+
const projectList = projects.map((p) => `- ${p.name} (ID: ${p.id})`).join('\n');
|
|
28
|
+
return buildTextResponse(`检测到缓存中有多个项目:\n\n${projectList}\n\n` +
|
|
29
|
+
`**建议操作:**\n` +
|
|
30
|
+
`- 使用 \`list_project_interfaces\` 工具查看指定项目的接口(参数:projectName: "项目名称")\n` +
|
|
31
|
+
`- 使用 \`query_interfaces\` 工具搜索接口(参数:projectName: "项目名称", keyword: "关键词")\n` +
|
|
32
|
+
`- 使用 \`parse_and_add_project\` 工具添加新项目(参数:url: "Apifox 项目链接")`);
|
|
33
|
+
}
|
|
34
|
+
// 确实没有项目信息
|
|
35
|
+
return buildTextResponse(`无法确定项目信息。\n\n` +
|
|
36
|
+
`**建议操作:**\n` +
|
|
37
|
+
`- 使用 \`parse_and_add_project\` 工具添加项目(参数:url: "Apifox 项目分享链接")\n` +
|
|
38
|
+
`- 或使用 \`list_projects\` 工具查看已集成的项目列表`);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* 处理接口信息缺失的错误
|
|
42
|
+
*/
|
|
43
|
+
export function handleMissingInterfaceError(context, interfaceNameOrId) {
|
|
44
|
+
const { lastProject } = context;
|
|
45
|
+
let message = '无法确定要查询的接口。\n\n';
|
|
46
|
+
if (interfaceNameOrId) {
|
|
47
|
+
message += `你提到的接口:${interfaceNameOrId}\n\n`;
|
|
48
|
+
}
|
|
49
|
+
if (lastProject?.projectName || lastProject?.projectId) {
|
|
50
|
+
message +=
|
|
51
|
+
`当前项目:${lastProject.projectName || lastProject.projectId}\n\n` +
|
|
52
|
+
`**建议操作:**\n` +
|
|
53
|
+
`- 使用 \`query_interfaces\` 工具搜索接口(参数:projectName: "${lastProject.projectName || lastProject.projectId}", keyword: "接口名称或路径")\n` +
|
|
54
|
+
`- 从搜索结果中获取 interfaceId,然后使用 \`get_interface_detail\` 工具查看详情\n` +
|
|
55
|
+
`- 或使用 \`parse_and_add_project\` 工具添加包含接口的 Apifox 链接`;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
message +=
|
|
59
|
+
`**建议操作:**\n` +
|
|
60
|
+
`- 使用 \`parse_and_add_project\` 工具添加项目(参数:url: "Apifox 项目链接")\n` +
|
|
61
|
+
`- 然后使用 \`query_interfaces\` 工具搜索接口\n` +
|
|
62
|
+
`- 或使用 \`parse_and_add_project\` 工具直接添加包含接口的 Apifox 链接`;
|
|
63
|
+
}
|
|
64
|
+
return buildTextResponse(message);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 处理缓存未找到的错误
|
|
68
|
+
*/
|
|
69
|
+
export function handleCacheNotFoundError(projectNameOrId, context) {
|
|
70
|
+
const { projectRoot } = context;
|
|
71
|
+
const cacheManager = new UnifiedCacheManager(projectRoot);
|
|
72
|
+
const projects = cacheManager.listProjects();
|
|
73
|
+
let message = `项目 ${projectNameOrId} 不在缓存中。\n\n`;
|
|
74
|
+
if (projects.length > 0) {
|
|
75
|
+
message += `缓存中的项目:\n`;
|
|
76
|
+
projects.forEach((p) => {
|
|
77
|
+
message += `- ${p.name} (ID: ${p.id})\n`;
|
|
78
|
+
});
|
|
79
|
+
message += `\n`;
|
|
80
|
+
}
|
|
81
|
+
message +=
|
|
82
|
+
`**建议操作:**\\n` +
|
|
83
|
+
`- 使用 \`parse_and_add_project\` 工具添加项目(参数:url: "Apifox 项目分享链接")\\n` +
|
|
84
|
+
`- 或使用 \`list_projects\` 工具查看已集成的项目列表`;
|
|
85
|
+
return buildTextResponse(message);
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=error-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../../src/server/handlers/error-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-artifacts.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/generate-artifacts.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,EACb,SAAS,EACT,YAAY,EAEZ,YAAY,EACb,MAAM,qBAAqB,CAAC;AAG7B,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;CAC5B;AAYD;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,qBAAqB,EAC3B,GAAG,EAAE,wBAAwB;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"generate-artifacts.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/generate-artifacts.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,EACb,SAAS,EACT,YAAY,EAEZ,YAAY,EACb,MAAM,qBAAqB,CAAC;AAG7B,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;CAC5B;AAYD;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,qBAAqB,EAC3B,GAAG,EAAE,wBAAwB;;;;;;;;;;;GAyH9B"}
|
|
@@ -42,14 +42,43 @@ export async function handleGenerateArtifacts(args, ctx) {
|
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
if (interfaceIds.length === 0) {
|
|
45
|
-
return buildTextResponse(
|
|
45
|
+
return buildTextResponse(`无法确定要生成哪个接口的代码。\n\n**建议操作:**\n` +
|
|
46
|
+
`1. 使用 \`query_interfaces\` 工具搜索接口(参数:projectName: "${projectInfo.projectName}", keyword: "接口名称或路径")\n` +
|
|
47
|
+
`2. 从搜索结果中获取 interfaceId,然后调用 \`generate_artifacts\` 工具(参数:interfaceIds: ["接口ID"], artifactType: "${args.artifactType ?? 'ts_types'}")\n` +
|
|
48
|
+
`3. 或者使用 \`parse_and_add_project\` 工具添加包含接口的 Apifox 链接,然后调用 \`get_interface_detail\` 获取接口 ID\n`);
|
|
46
49
|
}
|
|
47
50
|
const artifacts = [];
|
|
51
|
+
const errors = [];
|
|
48
52
|
for (const id of interfaceIds) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
+
try {
|
|
54
|
+
const detail = await mcpBridge.getInterfaceDetailViaMcp(accessToken, projectInfo.projectName, projectInfo.projectId, id);
|
|
55
|
+
artifacts.push(generateArtifact(args.artifactType ?? 'ts_types', {
|
|
56
|
+
interfaceDetail: detail,
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
errors.push(`接口 ${id}: ${error instanceof Error ? error.message : String(error)}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (errors.length > 0) {
|
|
64
|
+
if (artifacts.length === 0) {
|
|
65
|
+
return buildTextResponse(`❌ 无法获取接口详情:\n${errors.join('\n')}`, true);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
// 部分成功,返回成功的结果和错误信息
|
|
69
|
+
const fence = pickCodeFence(args.artifactType ?? 'ts_types');
|
|
70
|
+
const combined = artifacts
|
|
71
|
+
.map((item) => `### ${item.title}\n\`\`\`${fence}\n${item.content}\n\`\`\``)
|
|
72
|
+
.join('\n\n');
|
|
73
|
+
return {
|
|
74
|
+
content: [
|
|
75
|
+
{
|
|
76
|
+
type: 'text',
|
|
77
|
+
text: `${combined}\n\n⚠️ 部分接口获取失败:\n${errors.join('\n')}`,
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
};
|
|
81
|
+
}
|
|
53
82
|
}
|
|
54
83
|
// 如果指定了输出路径,写入文件
|
|
55
84
|
if (args.outputPath) {
|
|
@@ -63,11 +92,16 @@ export async function handleGenerateArtifacts(args, ctx) {
|
|
|
63
92
|
const combined = artifacts
|
|
64
93
|
.map((item) => `### ${item.title}\n\`\`\`${fence}\n${item.content}\n\`\`\``)
|
|
65
94
|
.join('\n\n');
|
|
95
|
+
// 添加工具诱导提示(方式 2)
|
|
96
|
+
const toolHints = `\n\n---\n**💡 接下来你可以:**\n` +
|
|
97
|
+
`- 如果需要保存到文件,可以再次调用 \`generate_artifacts\` 工具并指定 outputPath 参数(例如:outputPath: "src/api/types.ts")\n` +
|
|
98
|
+
`- 使用 \`generate_artifacts\` 工具生成其他类型的代码(参数:artifactType: "mock_data" 或 "request_wrappers" 或 "test_scripts")\n` +
|
|
99
|
+
`- 使用 \`get_interface_detail\` 工具查看其他接口的详情\n`;
|
|
66
100
|
return {
|
|
67
101
|
content: [
|
|
68
102
|
{
|
|
69
103
|
type: 'text',
|
|
70
|
-
text: `${combined}
|
|
104
|
+
text: `${combined}${toolHints}`,
|
|
71
105
|
},
|
|
72
106
|
],
|
|
73
107
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-artifacts.js","sourceRoot":"","sources":["../../../src/server/handlers/generate-artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAIL,gBAAgB,GAEjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAkB9F;;GAEG;AACH,SAAS,aAAa,CAAC,IAAkB;IACvC,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,IAA2B,EAC3B,GAA6B;IAE7B,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC;IAEpE,MAAM,WAAW,GAAG,kBAAkB,CACpC,WAAW,EACX,YAAY,EACZ,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,SAAS,CACf,CAAC;IAEF,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,WAAW,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC;IACnD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,yBAAyB,EAAE,CAAC;IACrC,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAE7D,gBAAgB;IAChB,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,EAAE,CAAC;QAC/C,IAAI,SAAS,IAAI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC5C,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;gBAC1E,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,YAAY,CAAC,oBAAoB,EAAE,CAAC;QACrD,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;YAC7D,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,iBAAiB,CACtB,
|
|
1
|
+
{"version":3,"file":"generate-artifacts.js","sourceRoot":"","sources":["../../../src/server/handlers/generate-artifacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-interface-detail.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/get-interface-detail.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,SAAS,EACT,YAAY,
|
|
1
|
+
{"version":3,"file":"get-interface-detail.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/get-interface-detail.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,SAAS,EACT,YAAY,EAOb,MAAM,qBAAqB,CAAC;AAS7B,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,sBAAsB,EAC5B,GAAG,EAAE,yBAAyB;;;;;;;;;;;;GAuQ/B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { generateArtifact, UnifiedCacheManager, parseApifoxUrl, parseInterfaceFromMd, fetchAndParseLlms, } from '../../core/index.js';
|
|
1
|
+
import { generateArtifact, UnifiedCacheManager, parseApifoxUrl, isValidApifoxUrl, parseInterfaceFromMd, fetchAndParseLlms, } from '../../core/index.js';
|
|
2
2
|
import { resolveProjectInfo, buildTextResponse, buildMissingTokenResponse, buildCurlSnippet, buildFetchSnippet, } from './utils.js';
|
|
3
3
|
/**
|
|
4
4
|
* 处理获取接口详情请求
|
|
@@ -9,6 +9,10 @@ export async function handleGetInterfaceDetail(args, ctx) {
|
|
|
9
9
|
let projectInfo = resolveProjectInfo(projectRoot, contextStore, args.projectName, args.projectId, args.shareId);
|
|
10
10
|
// 如果提供了 URL,尝试从 URL 解析项目信息
|
|
11
11
|
if (!projectInfo && args.url) {
|
|
12
|
+
// 先验证 URL 是否是 Apifox 链接
|
|
13
|
+
if (!isValidApifoxUrl(args.url)) {
|
|
14
|
+
return buildTextResponse(`❌ 检测到非 Apifox 链接: ${args.url}\n\n请提供有效的 Apifox 分享链接。`);
|
|
15
|
+
}
|
|
12
16
|
const parsed = await parseApifoxUrl(args.url);
|
|
13
17
|
if (parsed && parsed.interfaceId === args.interfaceId) {
|
|
14
18
|
// 检查缓存中是否有该 shareId 对应的项目
|
|
@@ -50,7 +54,7 @@ export async function handleGetInterfaceDetail(args, ctx) {
|
|
|
50
54
|
return buildTextResponse('我需要知道项目名称或 ID 才能查看接口详情。');
|
|
51
55
|
}
|
|
52
56
|
// 优先从缓存的 md 文件读取接口详情
|
|
53
|
-
const cachedInterface = cacheManager.findInterface(projectInfo.projectName, args.interfaceId);
|
|
57
|
+
const cachedInterface = cacheManager.findInterface(projectInfo.projectName, args.interfaceId, projectInfo.projectId);
|
|
54
58
|
if (cachedInterface && cachedInterface.docUrl) {
|
|
55
59
|
try {
|
|
56
60
|
const detail = await parseInterfaceFromMd(cachedInterface.docUrl);
|
|
@@ -165,7 +169,11 @@ export async function handleGetInterfaceDetail(args, ctx) {
|
|
|
165
169
|
`### curl 示例\n\`\`\`bash\n${curlSnippet}\n\`\`\`\n\n` +
|
|
166
170
|
`### fetch 示例\n\`\`\`ts\n${fetchSnippet}\n\`\`\`\n\n` +
|
|
167
171
|
`### TypeScript 类型草稿\n\`\`\`ts\n${tsArtifact.content}\n\`\`\`\n\n` +
|
|
168
|
-
|
|
172
|
+
`---\n**💡 接下来你可以:**\n` +
|
|
173
|
+
`- 使用 \`generate_artifacts\` 工具生成此接口的类型文件(参数:projectName: "${projectInfo.projectName}", interfaceIds: ["${detail.id}"], artifactType: "ts_types")\n` +
|
|
174
|
+
`- 使用 \`generate_artifacts\` 工具生成 Mock 数据(参数:artifactType: "mock_data")\n` +
|
|
175
|
+
`- 使用 \`generate_artifacts\` 工具生成请求封装函数(参数:artifactType: "request_wrappers")\n` +
|
|
176
|
+
`- 使用 \`generate_artifacts\` 工具生成测试脚本(参数:artifactType: "test_scripts")\n`;
|
|
169
177
|
return {
|
|
170
178
|
content: [
|
|
171
179
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-interface-detail.js","sourceRoot":"","sources":["../../../src/server/handlers/get-interface-detail.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"get-interface-detail.js","sourceRoot":"","sources":["../../../src/server/handlers/get-interface-detail.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,5 @@ export { handleParseAndAddProject, type ParseAndAddProjectArgs, type ParseAndAdd
|
|
|
8
8
|
export { handleQueryInterfaces, type QueryInterfacesArgs, type QueryInterfacesContext, } from './query-interfaces.js';
|
|
9
9
|
export { handleGetInterfaceDetail, type GetInterfaceDetailArgs, type GetInterfaceDetailContext, } from './get-interface-detail.js';
|
|
10
10
|
export { handleGenerateArtifacts, type GenerateArtifactsArgs, type GenerateArtifactsContext, } from './generate-artifacts.js';
|
|
11
|
-
export { handleAssistant, type AssistantArgs, type AssistantContext } from './assistant.js';
|
|
12
11
|
export { handleSelectInterfaces, type SelectInterfacesArgs, type SelectInterfacesContext, } from './select-interfaces.js';
|
|
13
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,2BAA2B,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,4BAA4B,GAClC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,wBAAwB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,GAC/B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,qBAAqB,EACrB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,wBAAwB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,GAC/B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,uBAAuB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,GAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,2BAA2B,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,4BAA4B,GAClC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,wBAAwB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,GAC/B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,qBAAqB,EACrB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,wBAAwB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,GAC/B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,uBAAuB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,GAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,GAC7B,MAAM,wBAAwB,CAAC"}
|
|
@@ -10,6 +10,5 @@ export { handleParseAndAddProject, } from './parse-and-add-project.js';
|
|
|
10
10
|
export { handleQueryInterfaces, } from './query-interfaces.js';
|
|
11
11
|
export { handleGetInterfaceDetail, } from './get-interface-detail.js';
|
|
12
12
|
export { handleGenerateArtifacts, } from './generate-artifacts.js';
|
|
13
|
-
export { handleAssistant } from './assistant.js';
|
|
14
13
|
export { handleSelectInterfaces, } from './select-interfaces.js';
|
|
15
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/handlers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO;AACP,cAAc,YAAY,CAAC;AAE3B,aAAa;AACb,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,2BAA2B,GAG5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,wBAAwB,GAGzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,qBAAqB,GAGtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,wBAAwB,GAGzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,uBAAuB,GAGxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/handlers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO;AACP,cAAc,YAAY,CAAC;AAE3B,aAAa;AACb,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,2BAA2B,GAG5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,wBAAwB,GAGzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,qBAAqB,GAGtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,wBAAwB,GAGzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,uBAAuB,GAGxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,GAGvB,MAAM,wBAAwB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-project-interfaces.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/list-project-interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,SAAS,EACT,YAAY,
|
|
1
|
+
{"version":3,"file":"list-project-interfaces.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/list-project-interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,SAAS,EACT,YAAY,EAMb,MAAM,qBAAqB,CAAC;AAI7B,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,4BAA4B;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,yBAAyB,EAC/B,GAAG,EAAE,4BAA4B;;;;;;;;;;;GA4OlC"}
|