intention-coding 0.4.8 → 0.5.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/index.cjs +60 -703
- package/dist/services/image-analysis/analyzer.d.ts +3 -31
- package/dist/services/image-analysis/analyzer.d.ts.map +1 -1
- package/dist/services/image-analysis/index.d.ts +7 -23
- package/dist/services/image-analysis/index.d.ts.map +1 -1
- package/dist/services/image-analysis/types.d.ts +1 -0
- package/dist/services/image-analysis/types.d.ts.map +1 -1
- package/dist/services/image-converter/index.d.ts.map +1 -1
- package/dist/services/image-recognition-agent/index.d.ts.map +1 -1
- package/dist/services/integrated-generator/index.d.ts +2 -2
- package/dist/services/pdf2md/index.d.ts.map +1 -1
- package/dist/services/world2md/index.d.ts.map +1 -1
- package/package.json +3 -1
package/dist/index.cjs
CHANGED
|
@@ -3938,12 +3938,13 @@ var __webpack_exports__ = {};
|
|
|
3938
3938
|
}).describe("\u8F6C\u6362\u9009\u9879")
|
|
3939
3939
|
});
|
|
3940
3940
|
const word2mdTool = {
|
|
3941
|
-
name: "
|
|
3941
|
+
name: "read_word",
|
|
3942
3942
|
description: "word\u6587\u6863\u5904\u7406\u667A\u80FD\u4F53 - \u5C06Word\u6587\u6863(.docx)\u8F6C\u6362\u4E3AMarkdown\u683C\u5F0F",
|
|
3943
3943
|
inputSchema: {
|
|
3944
3944
|
filePath: stringType().describe("\u9700\u8981\u89E3\u6790\u7684Word\u6587\u6863\u7684\u7EDD\u5BF9\u8DEF\u5F84")
|
|
3945
3945
|
},
|
|
3946
3946
|
handler: async (args)=>{
|
|
3947
|
+
initializeProjectRoot();
|
|
3947
3948
|
const { filePath } = args;
|
|
3948
3949
|
if (!filePath) throw new Error("\u6587\u4EF6\u8DEF\u5F84\u53C2\u6570\u7F3A\u5931\uFF0C\u8BF7\u63D0\u4F9B filePath \u53C2\u6570");
|
|
3949
3950
|
try {
|
|
@@ -4054,7 +4055,7 @@ var __webpack_exports__ = {};
|
|
|
4054
4055
|
}).describe("\u8F6C\u6362\u9009\u9879")
|
|
4055
4056
|
});
|
|
4056
4057
|
const pdf2mdTool = {
|
|
4057
|
-
name: "
|
|
4058
|
+
name: "read_pdf",
|
|
4058
4059
|
description: "pdf\u5904\u7406\u667A\u80FD\u4F53 - \u5C06PDF\u6587\u6863\u8F6C\u6362\u4E3AMarkdown\u683C\u5F0F\uFF0C\u652F\u6301\u6587\u672C\u63D0\u53D6\u548C\u683C\u5F0F\u4FDD\u7559",
|
|
4059
4060
|
inputSchema: {
|
|
4060
4061
|
file_path: stringType().describe("\u9700\u8981\u89E3\u6790\u7684PDF\u6587\u6863\u7684\u7EDD\u5BF9\u8DEF\u5F84"),
|
|
@@ -4072,6 +4073,7 @@ var __webpack_exports__ = {};
|
|
|
4072
4073
|
const { file_path, options = {} } = args;
|
|
4073
4074
|
const { preserve_formatting = true, extract_metadata = true } = options;
|
|
4074
4075
|
try {
|
|
4076
|
+
initializeProjectRoot();
|
|
4075
4077
|
const resolvedPath = await common_validateAndResolvePath(file_path);
|
|
4076
4078
|
if (!file_path.toLowerCase().endsWith('.pdf')) throw new Error("\u6587\u4EF6\u5FC5\u987B\u662FPDF\u683C\u5F0F\uFF08.pdf\u6269\u5C55\u540D\uFF09");
|
|
4077
4079
|
logger_logger.info("\u5F00\u59CB\u8BFB\u53D6PDF\u6587\u4EF6", {
|
|
@@ -4300,7 +4302,7 @@ var __webpack_exports__ = {};
|
|
|
4300
4302
|
});
|
|
4301
4303
|
const initProjectStandard = {
|
|
4302
4304
|
name: "\u9879\u76EE\u5F00\u53D1\u89C4\u8303\u751F\u6210\u667A\u80FD\u4F53",
|
|
4303
|
-
description: "\u5206\u6790\u9879\u76EE\u67B6\u6784\u5E76\u751F\u6210\u5F00\u53D1\u89C4\u8303",
|
|
4305
|
+
description: "\u9879\u76EE\u5F00\u53D1\u89C4\u8303\u751F\u6210\u667A\u80FD\u4F53-\u5206\u6790\u9879\u76EE\u67B6\u6784\u5E76\u751F\u6210\u5F00\u53D1\u89C4\u8303",
|
|
4304
4306
|
inputSchema: {
|
|
4305
4307
|
project_name: stringType().optional().describe("\u9879\u76EE\u540D\u79F0\uFF0C\u7528\u4E8E\u751F\u6210\u6587\u4EF6\u540D"),
|
|
4306
4308
|
project_path: stringType().optional().describe("\u9879\u76EE\u7EDD\u5BF9\u8DEF\u5F84\uFF0C\u7528\u4E8E\u6307\u5B9A\u8981\u5206\u6790\u7684\u9879\u76EE\u76EE\u5F55"),
|
|
@@ -4723,7 +4725,7 @@ ${customRules}` : '';
|
|
|
4723
4725
|
message: "\u5F53input_type\u4E3Atext\u65F6content\u5FC5\u586B\uFF0C\u5F53input_type\u4E3Amd_file\u65F6md_file_path\u5FC5\u586B"
|
|
4724
4726
|
});
|
|
4725
4727
|
const requirementAnalyzerTool = {
|
|
4726
|
-
name: "\u9700\u6C42\
|
|
4728
|
+
name: "\u9700\u6C42\u62A5\u544A\u751F\u6210\u667A\u80FD\u4F53",
|
|
4727
4729
|
description: "\u667A\u80FD\u5206\u6790\u9700\u6C42\u5E76\u751F\u6210\u7EDF\u4E00\u7684\u6280\u672F\u6587\u6863\uFF0C\u652F\u6301\u9879\u76EE\u60C5\u51B5\u611F\u77E5\u548C\u7CBE\u786E\u6A21\u677F\u5339\u914D",
|
|
4728
4730
|
inputSchema: {
|
|
4729
4731
|
input_type: enumType([
|
|
@@ -5005,7 +5007,7 @@ ${requirementSection}
|
|
|
5005
5007
|
'webp'
|
|
5006
5008
|
];
|
|
5007
5009
|
class ImageAnalyzer {
|
|
5008
|
-
async analyzeImage(imagePath) {
|
|
5010
|
+
async analyzeImage(imagePath, context) {
|
|
5009
5011
|
const startTime = Date.now();
|
|
5010
5012
|
try {
|
|
5011
5013
|
logger_logger.info("\u5F00\u59CB\u56FE\u7247\u5185\u5BB9\u5206\u6790", {
|
|
@@ -5013,7 +5015,7 @@ ${requirementSection}
|
|
|
5013
5015
|
});
|
|
5014
5016
|
await this.validateParams(imagePath);
|
|
5015
5017
|
const basicInfo = await this.getImageBasicInfo(imagePath);
|
|
5016
|
-
const analysisContent = await this.performAIAnalysis(imagePath, basicInfo);
|
|
5018
|
+
const analysisContent = await this.performAIAnalysis(imagePath, basicInfo, context);
|
|
5017
5019
|
const processingTime = Date.now() - startTime;
|
|
5018
5020
|
if (!analysisContent) throw new ImageAnalysisError("AI\u5206\u6790\u8FD4\u56DE\u7A7A\u7ED3\u679C", types_AnalysisErrorCodes.ANALYSIS_FAILED, {
|
|
5019
5021
|
params: {
|
|
@@ -5044,16 +5046,16 @@ ${requirementSection}
|
|
|
5044
5046
|
throw error;
|
|
5045
5047
|
}
|
|
5046
5048
|
}
|
|
5047
|
-
async performAIAnalysis(imagePath, basicInfo) {
|
|
5049
|
+
async performAIAnalysis(imagePath, basicInfo, context) {
|
|
5048
5050
|
try {
|
|
5049
5051
|
const imageBase64 = await this.imageToBase64(imagePath);
|
|
5050
|
-
const prompt = this.buildAnalysisPrompt(imagePath, basicInfo);
|
|
5052
|
+
const prompt = this.buildAnalysisPrompt(imagePath, basicInfo, context);
|
|
5051
5053
|
const aiResponse = await openai_openAIService.analyzeImage({
|
|
5052
5054
|
image_base64: imageBase64,
|
|
5053
5055
|
prompt: prompt,
|
|
5054
|
-
system_prompt: "\u4F60\u662F\u4E00\u4E2A\u4E13\u4E1A\u7684\u56FE\u7247\u5206\u6790\u4E13\u5BB6\uFF0C\u8BF7\
|
|
5056
|
+
system_prompt: "\u4F60\u662F\u4E00\u4E2A\u4E13\u4E1A\u7684\u56FE\u7247\u5206\u6790\u4E13\u5BB6\uFF0C\u8BF7\u4E25\u683C\u57FA\u4E8E\u4EFB\u52A1\u6307\u4EE4\u5206\u6790\u56FE\u7247\u5185\u5BB9\uFF0C\u4E0D\u504F\u79BB\u4EFB\u52A1\u8303\u56F4\uFF0C\u4E0D\u6DFB\u52A0\u65E0\u5173\u4FE1\u606F\u3002"
|
|
5055
5057
|
});
|
|
5056
|
-
const analysisContent = this.parseAIResponse(aiResponse
|
|
5058
|
+
const analysisContent = this.parseAIResponse(aiResponse);
|
|
5057
5059
|
return analysisContent;
|
|
5058
5060
|
} catch (error) {
|
|
5059
5061
|
logger_logger.error("AI\u5206\u6790\u5931\u8D25", {
|
|
@@ -5067,85 +5069,27 @@ ${requirementSection}
|
|
|
5067
5069
|
});
|
|
5068
5070
|
}
|
|
5069
5071
|
}
|
|
5070
|
-
buildAnalysisPrompt(imagePath, basicInfo) {
|
|
5071
|
-
const
|
|
5072
|
-
const isUIDesign = this.detectUIDesign(imagePath, basicInfo);
|
|
5073
|
-
const basePrompt = `\u{8BF7}\u{5BF9}\u{8FD9}\u{5F20}\u{56FE}\u{7247}\u{8FDB}\u{884C}\u{4E13}\u{4E1A}\u{7684}\u{5185}\u{5BB9}\u{5206}\u{6790}\u{3002}
|
|
5072
|
+
buildAnalysisPrompt(imagePath, basicInfo, context) {
|
|
5073
|
+
const basePrompt = `\u{8BF7}\u{5206}\u{6790}\u{8FD9}\u{5F20}\u{56FE}\u{7247}\u{3002}
|
|
5074
5074
|
|
|
5075
5075
|
\u{56FE}\u{7247}\u{4FE1}\u{606F}\u{FF1A}
|
|
5076
5076
|
- \u{6587}\u{4EF6}\u{540D}\u{FF1A}${external_path_namespaceObject.basename(imagePath)}
|
|
5077
5077
|
- \u{683C}\u{5F0F}\u{FF1A}${basicInfo.format.toUpperCase()}
|
|
5078
5078
|
- \u{5C3A}\u{5BF8}\u{FF1A}${basicInfo.dimensions.width} \xd7 ${basicInfo.dimensions.height} \u{50CF}\u{7D20}
|
|
5079
|
-
- \u{6587}\u{4EF6}\u{5927}\u{5C0F}\u{FF1A}${this.formatFileSize(basicInfo.file_size)}
|
|
5080
|
-
|
|
5081
|
-
|
|
5082
|
-
\u{
|
|
5083
|
-
|
|
5084
|
-
|
|
5085
|
-
|
|
5086
|
-
|
|
5087
|
-
|
|
5088
|
-
|
|
5089
|
-
|
|
5090
|
-
|
|
5091
|
-
${isLongImage ? `8. **\u{957F}\u{56FE}\u{7279}\u{5F81}**\u{FF1A}\u{5206}\u{6790}\u{957F}\u{56FE}\u{7684}\u{5185}\u{5BB9}\u{7ED3}\u{6784}\u{3001}\u{4FE1}\u{606F}\u{5C42}\u{6B21}\u{7B49}` : ''}
|
|
5092
|
-
|
|
5093
|
-
\u{8BF7}\u{63D0}\u{4F9B}\u{8BE6}\u{7EC6}\u{3001}\u{51C6}\u{786E}\u{3001}\u{4E13}\u{4E1A}\u{7684}\u{5206}\u{6790}\u{7ED3}\u{679C}\u{3002}`;
|
|
5094
|
-
const outputFormat = `
|
|
5095
|
-
\u{8F93}\u{51FA}\u{8981}\u{6C42}\u{FF1A}
|
|
5096
|
-
- \u{4F7F}\u{7528}\u{4E2D}\u{6587}\u{56DE}\u{7B54}
|
|
5097
|
-
- \u{5185}\u{5BB9}\u{8981}\u{51C6}\u{786E}\u{3001}\u{5BA2}\u{89C2}\u{3001}\u{4E13}\u{4E1A}
|
|
5098
|
-
- \u{91CD}\u{70B9}\u{7A81}\u{51FA}\u{56FE}\u{7247}\u{7684}\u{6838}\u{5FC3}\u{4FE1}\u{606F}
|
|
5099
|
-
- \u{5982}\u{679C}\u{662F}UI\u{8BBE}\u{8BA1}\u{7A3F}\u{FF0C}\u{91CD}\u{70B9}\u{5206}\u{6790}\u{754C}\u{9762}\u{7ED3}\u{6784}\u{548C}\u{529F}\u{80FD}
|
|
5100
|
-
- \u{5982}\u{679C}\u{5305}\u{542B}\u{6587}\u{5B57}\u{FF0C}\u{8BF7}\u{51C6}\u{786E}\u{63D0}\u{53D6}\u{6240}\u{6709}\u{53EF}\u{89C1}\u{6587}\u{5B57}
|
|
5101
|
-
- \u{63D0}\u{4F9B}\u{6709}\u{4EF7}\u{503C}\u{7684}\u{6D1E}\u{5BDF}\u{548C}\u{5206}\u{6790}`;
|
|
5102
|
-
return `${basePrompt}\n${analysisRequirements}\n${outputFormat}`.trim();
|
|
5103
|
-
}
|
|
5104
|
-
detectUIDesign(imagePath, basicInfo) {
|
|
5105
|
-
const fileName = external_path_namespaceObject.basename(imagePath).toLowerCase();
|
|
5106
|
-
const uiKeywords = [
|
|
5107
|
-
'ui',
|
|
5108
|
-
'design',
|
|
5109
|
-
'mockup',
|
|
5110
|
-
'wireframe',
|
|
5111
|
-
'prototype',
|
|
5112
|
-
'interface',
|
|
5113
|
-
'app',
|
|
5114
|
-
'web',
|
|
5115
|
-
'mobile'
|
|
5116
|
-
];
|
|
5117
|
-
const hasUIKeyword = uiKeywords.some((keyword)=>fileName.includes(keyword));
|
|
5118
|
-
const { width, height } = basicInfo.dimensions;
|
|
5119
|
-
const aspectRatio = width / height;
|
|
5120
|
-
const commonUIRatios = [
|
|
5121
|
-
{
|
|
5122
|
-
min: 0.4,
|
|
5123
|
-
max: 0.6
|
|
5124
|
-
},
|
|
5125
|
-
{
|
|
5126
|
-
min: 1.6,
|
|
5127
|
-
max: 2.0
|
|
5128
|
-
},
|
|
5129
|
-
{
|
|
5130
|
-
min: 0.9,
|
|
5131
|
-
max: 1.1
|
|
5132
|
-
}
|
|
5133
|
-
];
|
|
5134
|
-
const hasUIRatio = commonUIRatios.some((ratio)=>aspectRatio >= ratio.min && aspectRatio <= ratio.max);
|
|
5135
|
-
return hasUIKeyword || hasUIRatio && (width >= 300 || height >= 300);
|
|
5136
|
-
}
|
|
5137
|
-
getDetailInstruction(detailLevel) {
|
|
5138
|
-
switch(detailLevel){
|
|
5139
|
-
case types_DetailLevel.BRIEF:
|
|
5140
|
-
return "\u8BF7\u63D0\u4F9B\u7B80\u8981\u7684\u5206\u6790\u7ED3\u679C\uFF0C\u91CD\u70B9\u7A81\u51FA\u6700\u91CD\u8981\u7684\u4FE1\u606F\u3002";
|
|
5141
|
-
case types_DetailLevel.COMPREHENSIVE:
|
|
5142
|
-
return "\u8BF7\u63D0\u4F9B\u5168\u9762\u8BE6\u7EC6\u7684\u5206\u6790\u7ED3\u679C\uFF0C\u5305\u542B\u6240\u6709\u53EF\u80FD\u7684\u7EC6\u8282\u548C\u4E13\u4E1A\u89C1\u89E3\u3002";
|
|
5143
|
-
case types_DetailLevel.DETAILED:
|
|
5144
|
-
default:
|
|
5145
|
-
return "\u8BF7\u63D0\u4F9B\u8BE6\u7EC6\u7684\u5206\u6790\u7ED3\u679C\uFF0C\u5305\u542B\u4E3B\u8981\u7279\u5F81\u548C\u91CD\u8981\u7EC6\u8282\u3002";
|
|
5146
|
-
}
|
|
5079
|
+
- \u{6587}\u{4EF6}\u{5927}\u{5C0F}\u{FF1A}${this.formatFileSize(basicInfo.file_size)}`;
|
|
5080
|
+
const contextPrompt = context ? `
|
|
5081
|
+
|
|
5082
|
+
## \u{5206}\u{6790}\u{6307}\u{4EE4}
|
|
5083
|
+
${context}
|
|
5084
|
+
|
|
5085
|
+
\u{8BF7}\u{4E25}\u{683C}\u{6839}\u{636E}\u{4EE5}\u{4E0A}\u{6307}\u{4EE4}\u{8FDB}\u{884C}\u{56FE}\u{7247}\u{5206}\u{6790}\u{FF0C}\u{4E0D}\u{504F}\u{79BB}\u{4EFB}\u{52A1}\u{8303}\u{56F4}\u{FF0C}\u{4E0D}\u{6DFB}\u{52A0}\u{65E0}\u{5173}\u{4FE1}\u{606F}\u{3002}` : '';
|
|
5086
|
+
const strictPrompt = `
|
|
5087
|
+
|
|
5088
|
+
## \u{5206}\u{6790}\u{8981}\u{6C42}
|
|
5089
|
+
\u{4F60}\u{5FC5}\u{987B}\u{4E25}\u{683C}\u{6839}\u{636E}\u{4EFB}\u{52A1}\u{6307}\u{4EE4}\u{5206}\u{6790}\u{56FE}\u{7247}\u{5185}\u{5BB9}\u{FF0C}\u{4E0D}\u{504F}\u{79BB}\u{7528}\u{6237}\u{8981}\u{6C42}\u{7684}\u{8303}\u{56F4}\u{FF0C}\u{4E0D}\u{6DFB}\u{52A0}\u{65E0}\u{5173}\u{4FE1}\u{606F}\u{3002}\u{786E}\u{4FDD}\u{5206}\u{6790}\u{7ED3}\u{679C}\u{6E05}\u{6670}\u{51C6}\u{786E}\u{FF0C}\u{53EA}\u{5305}\u{542B}\u{4E0E}\u{4EFB}\u{52A1}\u{76F8}\u{5173}\u{7684}\u{4FE1}\u{606F}\u{3002}`;
|
|
5090
|
+
return `${basePrompt}${contextPrompt}${strictPrompt}`.trim();
|
|
5147
5091
|
}
|
|
5148
|
-
parseAIResponse(aiResponse
|
|
5092
|
+
parseAIResponse(aiResponse) {
|
|
5149
5093
|
if (!aiResponse || 'string' != typeof aiResponse) throw new ImageAnalysisError("AI\u670D\u52A1\u8FD4\u56DE\u65E0\u6548\u54CD\u5E94", types_AnalysisErrorCodes.AI_SERVICE_ERROR, {
|
|
5150
5094
|
aiResponse
|
|
5151
5095
|
});
|
|
@@ -5153,73 +5097,31 @@ ${isLongImage ? `8. **\u{957F}\u{56FE}\u{7279}\u{5F81}**\u{FF1A}\u{5206}\u{6790}
|
|
|
5153
5097
|
responseLength: aiResponse.length,
|
|
5154
5098
|
responsePreview: aiResponse.substring(0, 200) + (aiResponse.length > 200 ? '...' : '')
|
|
5155
5099
|
});
|
|
5100
|
+
const cleanedResponse = this.cleanAIResponse(aiResponse);
|
|
5156
5101
|
const content = {
|
|
5157
|
-
summary:
|
|
5158
|
-
details:
|
|
5159
|
-
|
|
5102
|
+
summary: cleanedResponse,
|
|
5103
|
+
details: {
|
|
5104
|
+
raw_response: aiResponse
|
|
5105
|
+
},
|
|
5106
|
+
tags: []
|
|
5160
5107
|
};
|
|
5161
|
-
content.objects = this.extractObjects(aiResponse);
|
|
5162
|
-
content.text_content = this.extractTextContent(aiResponse);
|
|
5163
|
-
content.scene_info = this.extractSceneInfo(aiResponse);
|
|
5164
|
-
content.people_info = this.extractPeopleInfo(aiResponse);
|
|
5165
|
-
content.technical_info = this.extractTechnicalInfo(aiResponse);
|
|
5166
|
-
content.ui_design_info = this.extractUIDesignInfo(aiResponse);
|
|
5167
|
-
content.requirement_info = this.extractRequirementInfo(aiResponse);
|
|
5168
5108
|
logger_logger.debug("\u5185\u5BB9\u89E3\u6790\u7ED3\u679C", {
|
|
5169
|
-
summaryLength: content.summary.length
|
|
5170
|
-
tagsCount: content.tags?.length || 0,
|
|
5171
|
-
objectsCount: content.objects?.length || 0,
|
|
5172
|
-
textContentCount: content.text_content?.length || 0,
|
|
5173
|
-
hasSceneInfo: !!content.scene_info,
|
|
5174
|
-
hasTechnicalInfo: !!content.technical_info,
|
|
5175
|
-
hasUIDesignInfo: !!content.ui_design_info
|
|
5109
|
+
summaryLength: content.summary.length
|
|
5176
5110
|
});
|
|
5177
5111
|
return content;
|
|
5178
5112
|
}
|
|
5179
|
-
|
|
5180
|
-
|
|
5181
|
-
|
|
5182
|
-
/^(
|
|
5113
|
+
cleanAIResponse(response) {
|
|
5114
|
+
let cleaned = response.trim();
|
|
5115
|
+
const patternsToRemove = [
|
|
5116
|
+
/^(?:好的|明白了|根据您的要求|根据分析|根据图片内容)[,,::]\s*/i,
|
|
5117
|
+
/(?:以下是|下面是对|分析结果如下|内容如下)[::]\s*/i,
|
|
5118
|
+
/\n(?:总结|结论|综上所述)[::]\s*/i
|
|
5183
5119
|
];
|
|
5184
|
-
|
|
5185
|
-
|
|
5186
|
-
if (match && match[1]) {
|
|
5187
|
-
const summary = match[1].trim();
|
|
5188
|
-
if (summary.length > 20) return summary;
|
|
5189
|
-
}
|
|
5190
|
-
}
|
|
5191
|
-
const firstParagraph = response.split('\n\n')[0] || response.split('\n')[0] || response;
|
|
5192
|
-
return firstParagraph.substring(0, 200).trim() + (firstParagraph.length > 200 ? '...' : '');
|
|
5193
|
-
}
|
|
5194
|
-
extractDetails(response) {
|
|
5195
|
-
const details = {};
|
|
5196
|
-
const sections = response.split(/\n(?=[0-9]+\.|[一二三四五六七八九十]+\.|[*-]|\*\*)/);
|
|
5197
|
-
sections.forEach((section, index)=>{
|
|
5198
|
-
const trimmedSection = section.trim();
|
|
5199
|
-
if (trimmedSection.length > 10) {
|
|
5200
|
-
const title = this.extractSectionTitle(trimmedSection);
|
|
5201
|
-
if (title) details[title] = trimmedSection;
|
|
5202
|
-
else details[`section_${index + 1}`] = trimmedSection;
|
|
5203
|
-
}
|
|
5120
|
+
patternsToRemove.forEach((pattern)=>{
|
|
5121
|
+
cleaned = cleaned.replace(pattern, '');
|
|
5204
5122
|
});
|
|
5205
|
-
|
|
5206
|
-
|
|
5207
|
-
extractSectionTitle(section) {
|
|
5208
|
-
const titlePatterns = [
|
|
5209
|
-
/^\*\*(.*?)\*\*/,
|
|
5210
|
-
/^[0-9]+\.\s*(.*?)[::]/,
|
|
5211
|
-
/^[一二三四五六七八九十]+\.\s*(.*?)[::]/,
|
|
5212
|
-
/^[*-]\s*(.*?)[::]/,
|
|
5213
|
-
/^(.*?)[::]/
|
|
5214
|
-
];
|
|
5215
|
-
for (const pattern of titlePatterns){
|
|
5216
|
-
const match = section.match(pattern);
|
|
5217
|
-
if (match && match[1]) {
|
|
5218
|
-
const title = match[1].trim();
|
|
5219
|
-
if (title.length > 0 && title.length < 50) return title;
|
|
5220
|
-
}
|
|
5221
|
-
}
|
|
5222
|
-
return null;
|
|
5123
|
+
cleaned = cleaned.replace(/\n{3,}/g, '\n\n').trim();
|
|
5124
|
+
return cleaned;
|
|
5223
5125
|
}
|
|
5224
5126
|
async getImageBasicInfo(imagePath) {
|
|
5225
5127
|
try {
|
|
@@ -5296,132 +5198,6 @@ ${isLongImage ? `8. **\u{957F}\u{56FE}\u{7279}\u{5F81}**\u{FF1A}\u{5206}\u{6790}
|
|
|
5296
5198
|
if (content.text_content && content.text_content.length > 0) score += 0.1;
|
|
5297
5199
|
return Math.min(score, 1.0);
|
|
5298
5200
|
}
|
|
5299
|
-
extractTags(text) {
|
|
5300
|
-
const tags = [];
|
|
5301
|
-
const tagPatterns = [
|
|
5302
|
-
/标签[::]\s*([^\n]+)/gi,
|
|
5303
|
-
/关键词[::]\s*([^\n]+)/gi,
|
|
5304
|
-
/tags[::]\s*([^\n]+)/gi
|
|
5305
|
-
];
|
|
5306
|
-
for (const pattern of tagPatterns){
|
|
5307
|
-
const matches = text.matchAll(pattern);
|
|
5308
|
-
for (const match of matches){
|
|
5309
|
-
const tagString = match[1];
|
|
5310
|
-
const extractedTags = tagString.split(/[,,、]/).map((tag)=>tag.trim()).filter(Boolean);
|
|
5311
|
-
tags.push(...extractedTags);
|
|
5312
|
-
}
|
|
5313
|
-
}
|
|
5314
|
-
const conceptPatterns = [
|
|
5315
|
-
/(?:这是|这张图片是|图片显示|可以看到).*?([\u4e00-\u9fff]{2,8})/g,
|
|
5316
|
-
/(?:主要|主要内容|核心|重点).*?([\u4e00-\u9fff]{2,8})/g,
|
|
5317
|
-
/(?:包含|含有|具有).*?([\u4e00-\u9fff]{2,8})/g
|
|
5318
|
-
];
|
|
5319
|
-
for (const pattern of conceptPatterns){
|
|
5320
|
-
const matches = text.matchAll(pattern);
|
|
5321
|
-
for (const match of matches){
|
|
5322
|
-
const concept = match[1].trim();
|
|
5323
|
-
if (concept && concept.length >= 2 && concept.length <= 8) tags.push(concept);
|
|
5324
|
-
}
|
|
5325
|
-
}
|
|
5326
|
-
const typeKeywords = [
|
|
5327
|
-
"\u7167\u7247",
|
|
5328
|
-
"\u56FE\u7247",
|
|
5329
|
-
"\u622A\u56FE",
|
|
5330
|
-
"\u8BBE\u8BA1\u7A3F",
|
|
5331
|
-
'UI',
|
|
5332
|
-
"\u754C\u9762",
|
|
5333
|
-
"\u7F51\u9875",
|
|
5334
|
-
"\u5E94\u7528",
|
|
5335
|
-
'APP',
|
|
5336
|
-
"\u98CE\u666F",
|
|
5337
|
-
"\u4EBA\u7269",
|
|
5338
|
-
"\u5EFA\u7B51",
|
|
5339
|
-
"\u52A8\u7269",
|
|
5340
|
-
"\u690D\u7269",
|
|
5341
|
-
"\u98DF\u7269",
|
|
5342
|
-
"\u8F66\u8F86",
|
|
5343
|
-
"\u6587\u6863",
|
|
5344
|
-
"\u56FE\u8868",
|
|
5345
|
-
"\u624B\u673A",
|
|
5346
|
-
"\u7535\u8111",
|
|
5347
|
-
"\u5E73\u677F",
|
|
5348
|
-
"\u5C4F\u5E55",
|
|
5349
|
-
"\u6309\u94AE",
|
|
5350
|
-
"\u83DC\u5355",
|
|
5351
|
-
"\u5BFC\u822A",
|
|
5352
|
-
"\u8868\u5355"
|
|
5353
|
-
];
|
|
5354
|
-
for (const keyword of typeKeywords)if (text.includes(keyword)) tags.push(keyword);
|
|
5355
|
-
const uniqueTags = [
|
|
5356
|
-
...new Set(tags)
|
|
5357
|
-
];
|
|
5358
|
-
return uniqueTags.slice(0, 10);
|
|
5359
|
-
}
|
|
5360
|
-
extractObjects(text) {
|
|
5361
|
-
return [];
|
|
5362
|
-
}
|
|
5363
|
-
extractTextContent(text) {
|
|
5364
|
-
const textContents = [];
|
|
5365
|
-
const textPatterns = [
|
|
5366
|
-
/(?:文字内容|文本内容|识别.*?文字|包含.*?文字)[::]\s*(.*?)(?=\n\n|\n[0-9]|\n[一二三四五六七八九十]|\n[*-]|$)/gs,
|
|
5367
|
-
/(?:标题|文字|文本).*?[""]([^""]+)[""].*?/g,
|
|
5368
|
-
/(?:写着|显示|标注|文字为)[::]?\s*[""]?([^""。\n]+)[""]?/g,
|
|
5369
|
-
/[""]([^""]{5,50})[""](?=.*?(?:文字|文本|标题|内容))/g
|
|
5370
|
-
];
|
|
5371
|
-
for (const pattern of textPatterns){
|
|
5372
|
-
let match;
|
|
5373
|
-
while(null !== (match = pattern.exec(text))){
|
|
5374
|
-
const extractedText = match[1]?.trim();
|
|
5375
|
-
if (extractedText && extractedText.length > 2) textContents.push({
|
|
5376
|
-
text: extractedText,
|
|
5377
|
-
confidence: 0.8,
|
|
5378
|
-
language: this.detectLanguage(extractedText)
|
|
5379
|
-
});
|
|
5380
|
-
}
|
|
5381
|
-
}
|
|
5382
|
-
const uniqueTexts = textContents.filter((item, index, self)=>index === self.findIndex((t)=>t.text === item.text));
|
|
5383
|
-
return uniqueTexts.slice(0, 10);
|
|
5384
|
-
}
|
|
5385
|
-
detectLanguage(text) {
|
|
5386
|
-
const chineseChars = (text.match(/[\u4e00-\u9fff]/g) || []).length;
|
|
5387
|
-
const totalChars = text.length;
|
|
5388
|
-
if (chineseChars / totalChars > 0.3) return "\u4E2D\u6587";
|
|
5389
|
-
if (/^[a-zA-Z\s\d.,!?;:'"()-]+$/.test(text)) return "\u82F1\u6587";
|
|
5390
|
-
return "\u6DF7\u5408";
|
|
5391
|
-
}
|
|
5392
|
-
extractSceneInfo(text) {
|
|
5393
|
-
return {};
|
|
5394
|
-
}
|
|
5395
|
-
extractPeopleInfo(text) {
|
|
5396
|
-
return [];
|
|
5397
|
-
}
|
|
5398
|
-
extractTechnicalInfo(text) {
|
|
5399
|
-
return {};
|
|
5400
|
-
}
|
|
5401
|
-
extractUIDesignInfo(text) {
|
|
5402
|
-
const uiInfo = {
|
|
5403
|
-
layout_type: this.extractValue(text, /布局类型[::]\s*([^\n]+)/i) || "\u672A\u8BC6\u522B",
|
|
5404
|
-
components: this.extractUIComponents(text),
|
|
5405
|
-
color_scheme: this.extractColorScheme(text),
|
|
5406
|
-
typography: this.extractTypography(text),
|
|
5407
|
-
navigation: this.extractNavigation(text),
|
|
5408
|
-
responsive_design: this.extractBoolean(text, /响应式|自适应/i),
|
|
5409
|
-
design_patterns: this.extractList(text, /设计模式[::]\s*([^\n]+)/i),
|
|
5410
|
-
accessibility_features: this.extractList(text, /可访问性[::]\s*([^\n]+)/i)
|
|
5411
|
-
};
|
|
5412
|
-
return uiInfo;
|
|
5413
|
-
}
|
|
5414
|
-
extractRequirementInfo(text) {
|
|
5415
|
-
const reqInfo = {
|
|
5416
|
-
functional_requirements: this.extractFunctionalRequirements(text),
|
|
5417
|
-
non_functional_requirements: this.extractNonFunctionalRequirements(text),
|
|
5418
|
-
user_stories: this.extractUserStories(text),
|
|
5419
|
-
business_rules: this.extractList(text, /业务规则[::]\s*([^\n]+)/i),
|
|
5420
|
-
constraints: this.extractList(text, /约束条件[::]\s*([^\n]+)/i),
|
|
5421
|
-
assumptions: this.extractList(text, /假设条件[::]\s*([^\n]+)/i)
|
|
5422
|
-
};
|
|
5423
|
-
return reqInfo;
|
|
5424
|
-
}
|
|
5425
5201
|
extractValue(text, pattern) {
|
|
5426
5202
|
const match = text.match(pattern);
|
|
5427
5203
|
return match ? match[1].trim() : null;
|
|
@@ -5558,77 +5334,41 @@ ${isLongImage ? `8. **\u{957F}\u{56FE}\u{7279}\u{5F81}**\u{FF1A}\u{5206}\u{6790}
|
|
|
5558
5334
|
}
|
|
5559
5335
|
const ImageAnalysisParamsSchema = objectType({
|
|
5560
5336
|
image_path: stringType().min(1).describe("\u56FE\u7247\u6587\u4EF6\u8DEF\u5F84"),
|
|
5561
|
-
|
|
5337
|
+
context: stringType().optional().describe("\u4E0A\u4E0B\u6587\u5185\u5BB9\uFF0C\u7528\u4E8E\u6307\u5BFC\u56FE\u7247\u5206\u6790\u7684\u65B9\u5411\u548C\u8303\u56F4")
|
|
5562
5338
|
});
|
|
5563
5339
|
const read_imageTool = {
|
|
5564
5340
|
name: "read_image",
|
|
5565
|
-
description: "\u4E13\u4E1A\u56FE\u7247\u5185\u5BB9\u5206\u6790\u5DE5\u5177\uFF0C\
|
|
5341
|
+
description: "\u4E13\u4E1A\u56FE\u7247\u5185\u5BB9\u5206\u6790\u5DE5\u5177\uFF0C\u63D0\u4F9B\u7CBE\u786E\u7684\u56FE\u7247\u5185\u5BB9\u8BC6\u522B\u3002\u6839\u636E\u7528\u6237\u8F93\u5165\u7684\u4E0A\u4E0B\u6587\u4FE1\u606F\u548C\u56FE\u7247\u5185\u5BB9\uFF0C\u8FDB\u884C\u4E25\u683C\u57FA\u4E8E\u4EFB\u52A1\u6307\u4EE4\u7684\u5206\u6790\uFF0C\u4E0D\u504F\u79BB\u4EFB\u52A1\u8303\u56F4\uFF0C\u8F93\u51FA\u6E05\u6670\u51C6\u786E\u7684\u5206\u6790\u7ED3\u679C\u3002",
|
|
5566
5342
|
inputSchema: {
|
|
5567
5343
|
image_path: stringType().min(1).describe("\u56FE\u7247\u6587\u4EF6\u8DEF\u5F84"),
|
|
5568
|
-
|
|
5344
|
+
context: stringType().optional().describe("\u4E0A\u4E0B\u6587\u5185\u5BB9\uFF0C\u7528\u4E8E\u6307\u5BFC\u56FE\u7247\u5206\u6790\u7684\u65B9\u5411\u548C\u8303\u56F4")
|
|
5569
5345
|
},
|
|
5570
5346
|
handler: async (args)=>{
|
|
5571
|
-
initializeProjectRoot();
|
|
5572
5347
|
const analyzer = new ImageAnalyzer();
|
|
5573
5348
|
try {
|
|
5574
5349
|
logger_logger.info("\u56FE\u7247\u5185\u5BB9\u7406\u89E3\u667A\u80FD\u4F53\u5F00\u59CB\u6267\u884C", {
|
|
5575
5350
|
imagePath: args.image_path
|
|
5576
5351
|
});
|
|
5577
5352
|
const validatedArgs = ImageAnalysisParamsSchema.parse(args);
|
|
5578
|
-
const result = await analyzer.analyzeImage(validatedArgs.image_path);
|
|
5579
|
-
const outputPath = await generateOutputFile(result, validatedArgs.image_path, validatedArgs.output_path);
|
|
5580
|
-
formatAnalysisResult(result, validatedArgs);
|
|
5581
|
-
logger_logger.info("\u56FE\u7247\u5185\u5BB9\u7406\u89E3\u667A\u80FD\u4F53\u6267\u884C\u5B8C\u6210", {
|
|
5582
|
-
imagePath: validatedArgs.image_path,
|
|
5583
|
-
outputPath,
|
|
5584
|
-
confidenceScore: result.confidence_score,
|
|
5585
|
-
processingTime: result.processing_time_ms
|
|
5586
|
-
});
|
|
5353
|
+
const result = await analyzer.analyzeImage(validatedArgs.image_path, validatedArgs.context);
|
|
5587
5354
|
return {
|
|
5588
5355
|
content: [
|
|
5589
5356
|
{
|
|
5590
5357
|
type: "text",
|
|
5591
|
-
text: `\u{
|
|
5592
|
-
|
|
5593
|
-
## \u{1F4CA} \u{5206}\u{6790}\u{7ED3}\u{679C}
|
|
5594
|
-
|
|
5595
|
-
- **\u{56FE}\u{7247}\u{6587}\u{4EF6}**: ${external_path_namespaceObject.basename(validatedArgs.image_path)}
|
|
5596
|
-
- **\u{56FE}\u{7247}\u{5C3A}\u{5BF8}**: ${result.basic_info.dimensions.width} \xd7 ${result.basic_info.dimensions.height} \u{50CF}\u{7D20}
|
|
5597
|
-
- **\u{6587}\u{4EF6}\u{5927}\u{5C0F}**: ${formatFileSize(result.basic_info.file_size)}
|
|
5598
|
-
- **\u{5206}\u{6790}\u{7C7B}\u{578B}**: ${getAnalysisTypeLabel(result.analysis_type)}
|
|
5599
|
-
- **\u{8BE6}\u{7EC6}\u{7A0B}\u{5EA6}**: ${getDetailLevelLabel(result.detail_level)}
|
|
5600
|
-
|
|
5601
|
-
## \u{1F4C1} \u{8F93}\u{51FA}\u{6587}\u{4EF6}
|
|
5602
|
-
|
|
5603
|
-
- **\u{5206}\u{6790}\u{62A5}\u{544A}**: ${outputPath}
|
|
5604
|
-
- **\u{6587}\u{4EF6}\u{5927}\u{5C0F}**: ${await getFileSize(outputPath)}
|
|
5358
|
+
text: `\u{56FE}\u{7247}\u{5185}\u{5BB9}\u{5206}\u{6790}\u{5B8C}\u{6210}
|
|
5605
5359
|
|
|
5606
|
-
|
|
5607
|
-
|
|
5608
|
-
-
|
|
5609
|
-
-
|
|
5610
|
-
|
|
5611
|
-
## \u{1F4CB} \u{5185}\u{5BB9}\u{6982}\u{8FF0}
|
|
5360
|
+
\u{5206}\u{6790}\u{7ED3}\u{679C}\u{FF1A}
|
|
5361
|
+
- \u{56FE}\u{7247}\u{6587}\u{4EF6}\u{FF1A}${external_path_namespaceObject.basename(validatedArgs.image_path)}
|
|
5362
|
+
- \u{56FE}\u{7247}\u{5C3A}\u{5BF8}\u{FF1A}${result.basic_info.dimensions.width} \xd7 ${result.basic_info.dimensions.height} \u{50CF}\u{7D20}
|
|
5363
|
+
- \u{6587}\u{4EF6}\u{5927}\u{5C0F}\u{FF1A}${formatFileSize(result.basic_info.file_size)}
|
|
5364
|
+
- \u{5904}\u{7406}\u{65F6}\u{95F4}\u{FF1A}${result.processing_time_ms}ms
|
|
5612
5365
|
|
|
5366
|
+
\u{56FE}\u{7247}\u{63CF}\u{8FF0}\u{FF1A}
|
|
5613
5367
|
${result.content.summary}
|
|
5614
5368
|
|
|
5615
|
-
${result.content.tags && result.content.tags.length > 0 ? `
|
|
5616
|
-
## \u{1F3F7}\u{FE0F} \u{5173}\u{952E}\u{6807}\u{7B7E}
|
|
5617
|
-
${result.content.tags.map((tag)=>`\`${tag}\``).join(' ')}
|
|
5618
|
-
` : ''}
|
|
5619
|
-
|
|
5620
|
-
\u{5206}\u{6790}\u{62A5}\u{544A}\u{5DF2}\u{4FDD}\u{5B58}\u{FF0C}\u{53EF}\u{4EE5}\u{67E5}\u{770B}\u{8BE6}\u{7EC6}\u{5185}\u{5BB9}\u{3002}`
|
|
5369
|
+
${result.content.tags && result.content.tags.length > 0 ? `\u{5173}\u{952E}\u{6807}\u{7B7E}\u{FF1A}${result.content.tags.map((tag)=>`\`${tag}\``).join(' ')}` : ''}`
|
|
5621
5370
|
}
|
|
5622
|
-
]
|
|
5623
|
-
metadata: {
|
|
5624
|
-
actions: [
|
|
5625
|
-
{
|
|
5626
|
-
type: "open_file",
|
|
5627
|
-
path: outputPath,
|
|
5628
|
-
description: "\u67E5\u770B\u5206\u6790\u62A5\u544A"
|
|
5629
|
-
}
|
|
5630
|
-
]
|
|
5631
|
-
}
|
|
5371
|
+
]
|
|
5632
5372
|
};
|
|
5633
5373
|
} catch (error) {
|
|
5634
5374
|
logger_logger.error("\u56FE\u7247\u5185\u5BB9\u7406\u89E3\u667A\u80FD\u4F53\u6267\u884C\u5931\u8D25", {
|
|
@@ -5656,369 +5396,6 @@ ${result.content.tags.map((tag)=>`\`${tag}\``).join(' ')}
|
|
|
5656
5396
|
}
|
|
5657
5397
|
}
|
|
5658
5398
|
};
|
|
5659
|
-
async function generateOutputFile(result, imagePath, outputPath) {
|
|
5660
|
-
try {
|
|
5661
|
-
let finalOutputPath;
|
|
5662
|
-
if (outputPath) {
|
|
5663
|
-
finalOutputPath = outputPath;
|
|
5664
|
-
const outputDir = external_path_namespaceObject.dirname(finalOutputPath);
|
|
5665
|
-
await promises_namespaceObject.mkdir(outputDir, {
|
|
5666
|
-
recursive: true
|
|
5667
|
-
});
|
|
5668
|
-
} else {
|
|
5669
|
-
const baseDir = config_getStorageDir();
|
|
5670
|
-
const dateDir = new Date().toISOString().split('T')[0];
|
|
5671
|
-
const outputDirectory = external_path_namespaceObject.join(baseDir, 'image-recognition', dateDir);
|
|
5672
|
-
await promises_namespaceObject.mkdir(outputDirectory, {
|
|
5673
|
-
recursive: true
|
|
5674
|
-
});
|
|
5675
|
-
const timestamp = new Date().toTimeString().slice(0, 8).replace(/:/g, '');
|
|
5676
|
-
const imageBaseName = external_path_namespaceObject.basename(imagePath, external_path_namespaceObject.extname(imagePath));
|
|
5677
|
-
const fileName = `${imageBaseName}_analysis_${timestamp}.md`;
|
|
5678
|
-
finalOutputPath = external_path_namespaceObject.join(outputDirectory, fileName);
|
|
5679
|
-
}
|
|
5680
|
-
const reportContent = generateAnalysisReport(result, imagePath);
|
|
5681
|
-
await promises_namespaceObject.writeFile(finalOutputPath, reportContent, 'utf8');
|
|
5682
|
-
logger_logger.info("\u5206\u6790\u62A5\u544A\u5DF2\u751F\u6210", {
|
|
5683
|
-
outputPath: finalOutputPath,
|
|
5684
|
-
fileSize: await getFileSize(finalOutputPath)
|
|
5685
|
-
});
|
|
5686
|
-
return finalOutputPath;
|
|
5687
|
-
} catch (error) {
|
|
5688
|
-
logger_logger.error("\u751F\u6210\u8F93\u51FA\u6587\u4EF6\u5931\u8D25", {
|
|
5689
|
-
error,
|
|
5690
|
-
imagePath,
|
|
5691
|
-
outputPath
|
|
5692
|
-
});
|
|
5693
|
-
throw new ImageAnalysisError(`\u{751F}\u{6210}\u{8F93}\u{51FA}\u{6587}\u{4EF6}\u{5931}\u{8D25}: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`, types_AnalysisErrorCodes.ANALYSIS_FAILED, {
|
|
5694
|
-
imagePath,
|
|
5695
|
-
outputPath,
|
|
5696
|
-
error
|
|
5697
|
-
});
|
|
5698
|
-
}
|
|
5699
|
-
}
|
|
5700
|
-
function generateAnalysisReport(result, imagePath) {
|
|
5701
|
-
const { basic_info, content, processing_time_ms, confidence_score, analysis_type, detail_level } = result;
|
|
5702
|
-
return `# \u{1F50D} \u{56FE}\u{7247}\u{5185}\u{5BB9}\u{7406}\u{89E3}\u{5206}\u{6790}\u{62A5}\u{544A}
|
|
5703
|
-
|
|
5704
|
-
## \u{1F4CA} \u{57FA}\u{672C}\u{4FE1}\u{606F}
|
|
5705
|
-
|
|
5706
|
-
- **\u{56FE}\u{7247}\u{8DEF}\u{5F84}**: \`${basic_info.path}\`
|
|
5707
|
-
- **\u{539F}\u{59CB}\u{6587}\u{4EF6}**: \`${external_path_namespaceObject.basename(imagePath)}\`
|
|
5708
|
-
- **\u{56FE}\u{7247}\u{683C}\u{5F0F}**: ${basic_info.format.toUpperCase()}
|
|
5709
|
-
- **\u{56FE}\u{7247}\u{5C3A}\u{5BF8}**: ${basic_info.dimensions.width} \xd7 ${basic_info.dimensions.height} \u{50CF}\u{7D20}
|
|
5710
|
-
- **\u{6587}\u{4EF6}\u{5927}\u{5C0F}**: ${formatFileSize(basic_info.file_size)}
|
|
5711
|
-
- **\u{989C}\u{8272}\u{7A7A}\u{95F4}**: ${basic_info.color_space || "\u672A\u77E5"}
|
|
5712
|
-
- **\u{900F}\u{660E}\u{901A}\u{9053}**: ${basic_info.has_alpha ? "\u662F" : "\u5426"}
|
|
5713
|
-
|
|
5714
|
-
## \u{1F3AF} \u{5206}\u{6790}\u{914D}\u{7F6E}
|
|
5715
|
-
|
|
5716
|
-
- **\u{5206}\u{6790}\u{7C7B}\u{578B}**: ${getAnalysisTypeLabel(analysis_type)}
|
|
5717
|
-
- **\u{8BE6}\u{7EC6}\u{7A0B}\u{5EA6}**: ${getDetailLevelLabel(detail_level)}
|
|
5718
|
-
- **\u{5206}\u{6790}\u{8BED}\u{8A00}**: \u{4E2D}\u{6587}
|
|
5719
|
-
- **\u{5904}\u{7406}\u{65F6}\u{95F4}**: ${processing_time_ms}ms
|
|
5720
|
-
- **\u{7F6E}\u{4FE1}\u{5EA6}**: ${confidence_score ? (100 * confidence_score).toFixed(1) + "%" : "\u672A\u8BC4\u4F30"}
|
|
5721
|
-
|
|
5722
|
-
## \u{1F4DD} \u{5206}\u{6790}\u{7ED3}\u{679C}
|
|
5723
|
-
|
|
5724
|
-
### \u{5185}\u{5BB9}\u{6982}\u{8FF0}
|
|
5725
|
-
${content.summary}
|
|
5726
|
-
|
|
5727
|
-
${content.tags && content.tags.length > 0 ? `
|
|
5728
|
-
### \u{1F3F7}\u{FE0F} \u{5173}\u{952E}\u{6807}\u{7B7E}
|
|
5729
|
-
${content.tags.map((tag)=>`\`${tag}\``).join(" ")}
|
|
5730
|
-
` : ""}
|
|
5731
|
-
|
|
5732
|
-
${content.objects && content.objects.length > 0 ? `
|
|
5733
|
-
### \u{1F3AF} \u{8BC6}\u{522B}\u{7269}\u{4F53}
|
|
5734
|
-
${content.objects.map((obj, index)=>`
|
|
5735
|
-
${index + 1}. **${obj.name}** (\u{7F6E}\u{4FE1}\u{5EA6}: ${(100 * obj.confidence).toFixed(1)}%)
|
|
5736
|
-
${obj.attributes ? Object.entries(obj.attributes).map(([key, value])=>`- ${key}: ${value}`).join("\n ") : ""}
|
|
5737
|
-
`).join("")}
|
|
5738
|
-
` : ""}
|
|
5739
|
-
|
|
5740
|
-
${content.text_content && content.text_content.length > 0 ? `
|
|
5741
|
-
### \u{1F4C4} \u{6587}\u{5B57}\u{5185}\u{5BB9}
|
|
5742
|
-
${content.text_content.map((text, index)=>`
|
|
5743
|
-
${index + 1}. "${text.text}" (\u{7F6E}\u{4FE1}\u{5EA6}: ${(100 * text.confidence).toFixed(1)}%)
|
|
5744
|
-
${text.language ? `- \u{8BED}\u{8A00}: ${text.language}` : ""}
|
|
5745
|
-
`).join("")}
|
|
5746
|
-
` : ""}
|
|
5747
|
-
|
|
5748
|
-
${content.scene_info ? `
|
|
5749
|
-
### \u{1F30D} \u{573A}\u{666F}\u{4FE1}\u{606F}
|
|
5750
|
-
- **\u{5730}\u{70B9}\u{7C7B}\u{578B}**: ${content.scene_info.location_type || "\u672A\u8BC6\u522B"}
|
|
5751
|
-
- **\u{73AF}\u{5883}**: ${content.scene_info.environment || "\u672A\u8BC6\u522B"}
|
|
5752
|
-
- **\u{5149}\u{7167}**: ${content.scene_info.lighting || "\u672A\u8BC6\u522B"}
|
|
5753
|
-
${content.scene_info.weather ? `- **\u{5929}\u{6C14}**: ${content.scene_info.weather}` : ""}
|
|
5754
|
-
${content.scene_info.time_of_day ? `- **\u{65F6}\u{95F4}**: ${content.scene_info.time_of_day}` : ""}
|
|
5755
|
-
${content.scene_info.mood ? `- **\u{6C1B}\u{56F4}**: ${content.scene_info.mood}` : ""}
|
|
5756
|
-
` : ""}
|
|
5757
|
-
|
|
5758
|
-
${content.people_info && content.people_info.length > 0 ? `
|
|
5759
|
-
### \u{1F465} \u{4EBA}\u{7269}\u{4FE1}\u{606F}
|
|
5760
|
-
${content.people_info.map((person, index)=>`
|
|
5761
|
-
${index + 1}. **\u{4EBA}\u{7269}${index + 1}**
|
|
5762
|
-
- \u{6570}\u{91CF}: ${person.count}
|
|
5763
|
-
${person.age_range ? `- \u{5E74}\u{9F84}: ${person.age_range}` : ""}
|
|
5764
|
-
${person.gender ? `- \u{6027}\u{522B}: ${person.gender}` : ""}
|
|
5765
|
-
${person.emotions ? `- \u{60C5}\u{7EEA}: ${person.emotions.join(", ")}` : ""}
|
|
5766
|
-
${person.activities ? `- \u{6D3B}\u{52A8}: ${person.activities.join(", ")}` : ""}
|
|
5767
|
-
${person.clothing ? `- \u{670D}\u{88C5}: ${person.clothing.join(", ")}` : ""}
|
|
5768
|
-
`).join("")}
|
|
5769
|
-
` : ""}
|
|
5770
|
-
|
|
5771
|
-
${content.technical_info ? `
|
|
5772
|
-
### \u{1F527} \u{6280}\u{672F}\u{5206}\u{6790}
|
|
5773
|
-
#### \u{8272}\u{5F69}\u{5206}\u{6790}
|
|
5774
|
-
- **\u{4E3B}\u{8272}\u{8C03}**: ${content.technical_info.color_analysis?.dominant_colors?.join(", ") || "\u672A\u5206\u6790"}
|
|
5775
|
-
- **\u{8272}\u{5F69}\u{642D}\u{914D}**: ${content.technical_info.color_analysis?.color_palette?.join(", ") || "\u672A\u5206\u6790"}
|
|
5776
|
-
- **\u{4EAE}\u{5EA6}**: ${content.technical_info.color_analysis?.brightness || "\u672A\u5206\u6790"}
|
|
5777
|
-
- **\u{5BF9}\u{6BD4}\u{5EA6}**: ${content.technical_info.color_analysis?.contrast || "\u672A\u5206\u6790"}
|
|
5778
|
-
|
|
5779
|
-
#### \u{6784}\u{56FE}\u{5206}\u{6790}
|
|
5780
|
-
- **\u{4E09}\u{5206}\u{6CD5}\u{5219}**: ${content.technical_info.composition?.rule_of_thirds ? "\u7B26\u5408" : "\u4E0D\u7B26\u5408"}
|
|
5781
|
-
- **\u{5BF9}\u{79F0}\u{6027}**: ${content.technical_info.composition?.symmetry ? "\u5BF9\u79F0" : "\u975E\u5BF9\u79F0"}
|
|
5782
|
-
- **\u{5F15}\u{5BFC}\u{7EBF}**: ${content.technical_info.composition?.leading_lines ? "\u5B58\u5728" : "\u4E0D\u5B58\u5728"}
|
|
5783
|
-
|
|
5784
|
-
#### \u{8D28}\u{91CF}\u{8BC4}\u{4F30}
|
|
5785
|
-
- **\u{6E05}\u{6670}\u{5EA6}**: ${content.technical_info.quality_metrics?.sharpness || "\u672A\u8BC4\u4F30"}
|
|
5786
|
-
- **\u{566A}\u{70B9}\u{6C34}\u{5E73}**: ${content.technical_info.quality_metrics?.noise_level || "\u672A\u8BC4\u4F30"}
|
|
5787
|
-
- **\u{66DD}\u{5149}**: ${content.technical_info.quality_metrics?.exposure || "\u672A\u8BC4\u4F30"}
|
|
5788
|
-
` : ""}
|
|
5789
|
-
|
|
5790
|
-
${content.ui_design_info ? `
|
|
5791
|
-
### \u{1F3A8} UI\u{8BBE}\u{8BA1}\u{5206}\u{6790}
|
|
5792
|
-
#### \u{5E03}\u{5C40}\u{7ED3}\u{6784}
|
|
5793
|
-
- **\u{5E03}\u{5C40}\u{7C7B}\u{578B}**: ${content.ui_design_info.layout_type}
|
|
5794
|
-
- **\u{54CD}\u{5E94}\u{5F0F}\u{8BBE}\u{8BA1}**: ${content.ui_design_info.responsive_design ? "\u652F\u6301" : "\u4E0D\u652F\u6301"}
|
|
5795
|
-
|
|
5796
|
-
#### \u{7EC4}\u{4EF6}\u{5206}\u{6790}
|
|
5797
|
-
${content.ui_design_info.components && content.ui_design_info.components.length > 0 ? content.ui_design_info.components.map((comp, index)=>`${index + 1}. **${comp.type}**: ${comp.name}`).join("\n") : "\u672A\u8BC6\u522B\u5230\u5177\u4F53\u7EC4\u4EF6"}
|
|
5798
|
-
|
|
5799
|
-
#### \u{8272}\u{5F69}\u{65B9}\u{6848}
|
|
5800
|
-
- **\u{4E3B}\u{8272}\u{8C03}**: ${content.ui_design_info.color_scheme?.primary_colors?.join(", ") || "\u672A\u8BC6\u522B"}
|
|
5801
|
-
- **\u{8F85}\u{52A9}\u{8272}**: ${content.ui_design_info.color_scheme?.secondary_colors?.join(", ") || "\u672A\u8BC6\u522B"}
|
|
5802
|
-
- **\u{80CC}\u{666F}\u{8272}**: ${content.ui_design_info.color_scheme?.background_colors?.join(", ") || "\u672A\u8BC6\u522B"}
|
|
5803
|
-
|
|
5804
|
-
#### \u{5BFC}\u{822A}\u{8BBE}\u{8BA1}
|
|
5805
|
-
- **\u{5BFC}\u{822A}\u{7C7B}\u{578B}**: ${content.ui_design_info.navigation?.type || "\u672A\u8BC6\u522B"}
|
|
5806
|
-
- **\u{5BFC}\u{822A}\u{5143}\u{7D20}**: ${content.ui_design_info.navigation?.elements?.join(", ") || "\u672A\u8BC6\u522B"}
|
|
5807
|
-
|
|
5808
|
-
#### \u{8BBE}\u{8BA1}\u{6A21}\u{5F0F}
|
|
5809
|
-
${content.ui_design_info.design_patterns && content.ui_design_info.design_patterns.length > 0 ? content.ui_design_info.design_patterns.map((pattern)=>`- ${pattern}`).join("\n") : "- \u672A\u8BC6\u522B\u5230\u7279\u5B9A\u8BBE\u8BA1\u6A21\u5F0F"}
|
|
5810
|
-
` : ""}
|
|
5811
|
-
|
|
5812
|
-
${content.requirement_info ? `
|
|
5813
|
-
### \u{1F4CB} \u{9700}\u{6C42}\u{5206}\u{6790}
|
|
5814
|
-
#### \u{529F}\u{80FD}\u{9700}\u{6C42}
|
|
5815
|
-
${content.requirement_info.functional_requirements && content.requirement_info.functional_requirements.length > 0 ? content.requirement_info.functional_requirements.map((req, index)=>`
|
|
5816
|
-
${index + 1}. **${req.title}** (\u{4F18}\u{5148}\u{7EA7}: ${req.priority})
|
|
5817
|
-
- \u{63CF}\u{8FF0}: ${req.description}
|
|
5818
|
-
- \u{7C7B}\u{522B}: ${req.category}`).join("") : "\u672A\u8BC6\u522B\u5230\u5177\u4F53\u529F\u80FD\u9700\u6C42"}
|
|
5819
|
-
|
|
5820
|
-
#### \u{975E}\u{529F}\u{80FD}\u{9700}\u{6C42}
|
|
5821
|
-
${content.requirement_info.non_functional_requirements && content.requirement_info.non_functional_requirements.length > 0 ? content.requirement_info.non_functional_requirements.map((req, index)=>`
|
|
5822
|
-
${index + 1}. **${req.type}**: ${req.description}`).join("") : "\u672A\u8BC6\u522B\u5230\u975E\u529F\u80FD\u9700\u6C42"}
|
|
5823
|
-
|
|
5824
|
-
#### \u{7528}\u{6237}\u{6545}\u{4E8B}
|
|
5825
|
-
${content.requirement_info.user_stories && content.requirement_info.user_stories.length > 0 ? content.requirement_info.user_stories.map((story, index)=>`
|
|
5826
|
-
${index + 1}. \u{4F5C}\u{4E3A} **${story.as_a}**\u{FF0C}\u{6211}\u{5E0C}\u{671B} **${story.i_want}**\u{FF0C}\u{4EE5}\u{4FBF} **${story.so_that}** (\u{4F18}\u{5148}\u{7EA7}: ${story.priority})`).join("") : "\u672A\u8BC6\u522B\u5230\u7528\u6237\u6545\u4E8B"}
|
|
5827
|
-
|
|
5828
|
-
#### \u{4E1A}\u{52A1}\u{89C4}\u{5219}
|
|
5829
|
-
${content.requirement_info.business_rules && content.requirement_info.business_rules.length > 0 ? content.requirement_info.business_rules.map((rule)=>`- ${rule}`).join("\n") : "- \u672A\u8BC6\u522B\u5230\u4E1A\u52A1\u89C4\u5219"}
|
|
5830
|
-
` : ""}
|
|
5831
|
-
|
|
5832
|
-
${Object.keys(content.details).length > 0 ? `
|
|
5833
|
-
### \u{1F4CB} \u{8BE6}\u{7EC6}\u{4FE1}\u{606F}
|
|
5834
|
-
${Object.entries(content.details).map(([key, value])=>`
|
|
5835
|
-
**${key}**: ${"object" == typeof value ? JSON.stringify(value, null, 2) : value}
|
|
5836
|
-
`).join("")}
|
|
5837
|
-
` : ""}
|
|
5838
|
-
|
|
5839
|
-
## \u{1F4A1} \u{5206}\u{6790}\u{603B}\u{7ED3}
|
|
5840
|
-
|
|
5841
|
-
\u{57FA}\u{4E8E}${getAnalysisTypeLabel(analysis_type)}\u{FF0C}\u{56FE}\u{7247}\u{5185}\u{5BB9}\u{7406}\u{89E3}\u{5B8C}\u{6210}\u{3002}
|
|
5842
|
-
${confidence_score && confidence_score > 0.8 ? "\u5206\u6790\u7ED3\u679C\u7F6E\u4FE1\u5EA6\u8F83\u9AD8\uFF0C\u53EF\u4FE1\u5EA6\u826F\u597D\u3002" : ""}
|
|
5843
|
-
|
|
5844
|
-
**\u{5206}\u{6790}\u{5B8C}\u{6210}\u{65F6}\u{95F4}**: ${new Date().toLocaleString('zh-CN')}
|
|
5845
|
-
**\u{62A5}\u{544A}\u{751F}\u{6210}\u{65F6}\u{95F4}**: ${new Date().toLocaleString('zh-CN')}
|
|
5846
|
-
|
|
5847
|
-
---
|
|
5848
|
-
|
|
5849
|
-
*\u{62A5}\u{544A}\u{7531}\u{56FE}\u{7247}\u{5185}\u{5BB9}\u{7406}\u{89E3}\u{667A}\u{80FD}\u{4F53}\u{81EA}\u{52A8}\u{751F}\u{6210}*
|
|
5850
|
-
`.trim();
|
|
5851
|
-
}
|
|
5852
|
-
async function getFileSize(filePath) {
|
|
5853
|
-
try {
|
|
5854
|
-
const stats = await promises_namespaceObject.stat(filePath);
|
|
5855
|
-
return formatFileSize(stats.size);
|
|
5856
|
-
} catch {
|
|
5857
|
-
return "\u672A\u77E5";
|
|
5858
|
-
}
|
|
5859
|
-
}
|
|
5860
|
-
function formatAnalysisResult(result, args) {
|
|
5861
|
-
const basic_info = result?.basic_info || {
|
|
5862
|
-
path: args.image_path,
|
|
5863
|
-
format: 'unknown',
|
|
5864
|
-
dimensions: {
|
|
5865
|
-
width: 0,
|
|
5866
|
-
height: 0
|
|
5867
|
-
},
|
|
5868
|
-
file_size: 0,
|
|
5869
|
-
color_space: 'unknown',
|
|
5870
|
-
has_alpha: false
|
|
5871
|
-
};
|
|
5872
|
-
const content = result?.content || {
|
|
5873
|
-
summary: "\u5206\u6790\u7ED3\u679C\u4E0D\u53EF\u7528",
|
|
5874
|
-
details: {},
|
|
5875
|
-
tags: []
|
|
5876
|
-
};
|
|
5877
|
-
const processing_time_ms = result?.processing_time_ms || 0;
|
|
5878
|
-
const confidence_score = result?.confidence_score || 0;
|
|
5879
|
-
return `
|
|
5880
|
-
# \u{1F50D} \u{56FE}\u{7247}\u{5185}\u{5BB9}\u{7406}\u{89E3}\u{5206}\u{6790}\u{62A5}\u{544A}
|
|
5881
|
-
|
|
5882
|
-
## \u{1F4CA} \u{57FA}\u{672C}\u{4FE1}\u{606F}
|
|
5883
|
-
- **\u{56FE}\u{7247}\u{8DEF}\u{5F84}**: \`${basic_info.path}\`
|
|
5884
|
-
- **\u{56FE}\u{7247}\u{683C}\u{5F0F}**: ${basic_info.format.toUpperCase()}
|
|
5885
|
-
- **\u{56FE}\u{7247}\u{5C3A}\u{5BF8}**: ${basic_info.dimensions.width} \xd7 ${basic_info.dimensions.height}
|
|
5886
|
-
- **\u{6587}\u{4EF6}\u{5927}\u{5C0F}**: ${formatFileSize(basic_info.file_size)}
|
|
5887
|
-
- **\u{989C}\u{8272}\u{7A7A}\u{95F4}**: ${basic_info.color_space || "\u672A\u77E5"}
|
|
5888
|
-
- **\u{900F}\u{660E}\u{901A}\u{9053}**: ${basic_info.has_alpha ? "\u662F" : "\u5426"}
|
|
5889
|
-
|
|
5890
|
-
## \u{1F3AF} \u{5206}\u{6790}\u{914D}\u{7F6E}
|
|
5891
|
-
- **\u{5206}\u{6790}\u{7C7B}\u{578B}**: \u{901A}\u{7528}\u{5206}\u{6790}
|
|
5892
|
-
- **\u{8BE6}\u{7EC6}\u{7A0B}\u{5EA6}**: \u{8BE6}\u{7EC6}
|
|
5893
|
-
- **\u{5206}\u{6790}\u{8BED}\u{8A00}**: \u{4E2D}\u{6587}
|
|
5894
|
-
- **\u{5904}\u{7406}\u{65F6}\u{95F4}**: ${processing_time_ms}ms
|
|
5895
|
-
- **\u{7F6E}\u{4FE1}\u{5EA6}**: ${confidence_score ? (100 * confidence_score).toFixed(1) + "%" : "\u672A\u77E5"}
|
|
5896
|
-
|
|
5897
|
-
## \u{1F4DD} \u{5206}\u{6790}\u{7ED3}\u{679C}
|
|
5898
|
-
|
|
5899
|
-
### \u{5185}\u{5BB9}\u{6982}\u{8FF0}
|
|
5900
|
-
${content.summary}
|
|
5901
|
-
|
|
5902
|
-
${content.tags && content.tags.length > 0 ? `
|
|
5903
|
-
### \u{1F3F7}\u{FE0F} \u{5173}\u{952E}\u{6807}\u{7B7E}
|
|
5904
|
-
${content.tags.map((tag)=>`\`${tag}\``).join(" ")}
|
|
5905
|
-
` : ""}
|
|
5906
|
-
|
|
5907
|
-
${content.objects && content.objects.length > 0 ? `
|
|
5908
|
-
### \u{1F3AF} \u{8BC6}\u{522B}\u{7269}\u{4F53}
|
|
5909
|
-
${content.objects.map((obj, index)=>`
|
|
5910
|
-
${index + 1}. **${obj.name}** (\u{7F6E}\u{4FE1}\u{5EA6}: ${(100 * obj.confidence).toFixed(1)}%)
|
|
5911
|
-
${obj.attributes ? Object.entries(obj.attributes).map(([key, value])=>`- ${key}: ${value}`).join("\n ") : ""}
|
|
5912
|
-
`).join("")}
|
|
5913
|
-
` : ""}
|
|
5914
|
-
|
|
5915
|
-
${content.text_content && content.text_content.length > 0 ? `
|
|
5916
|
-
### \u{1F4C4} \u{6587}\u{5B57}\u{5185}\u{5BB9}
|
|
5917
|
-
${content.text_content.map((text, index)=>`
|
|
5918
|
-
${index + 1}. "${text.text}" (\u{7F6E}\u{4FE1}\u{5EA6}: ${(100 * text.confidence).toFixed(1)}%)
|
|
5919
|
-
${text.language ? `- \u{8BED}\u{8A00}: ${text.language}` : ""}
|
|
5920
|
-
`).join("")}
|
|
5921
|
-
` : ""}
|
|
5922
|
-
|
|
5923
|
-
${content.scene_info ? `
|
|
5924
|
-
### \u{1F30D} \u{573A}\u{666F}\u{4FE1}\u{606F}
|
|
5925
|
-
- **\u{5730}\u{70B9}\u{7C7B}\u{578B}**: ${content.scene_info.location_type || "\u672A\u8BC6\u522B"}
|
|
5926
|
-
- **\u{73AF}\u{5883}**: ${content.scene_info.environment || "\u672A\u8BC6\u522B"}
|
|
5927
|
-
- **\u{5149}\u{7167}**: ${content.scene_info.lighting || "\u672A\u8BC6\u522B"}
|
|
5928
|
-
${content.scene_info.weather ? `- **\u{5929}\u{6C14}**: ${content.scene_info.weather}` : ""}
|
|
5929
|
-
${content.scene_info.time_of_day ? `- **\u{65F6}\u{95F4}**: ${content.scene_info.time_of_day}` : ""}
|
|
5930
|
-
${content.scene_info.mood ? `- **\u{6C1B}\u{56F4}**: ${content.scene_info.mood}` : ""}
|
|
5931
|
-
` : ""}
|
|
5932
|
-
|
|
5933
|
-
${content.people_info && content.people_info.length > 0 ? `
|
|
5934
|
-
### \u{1F465} \u{4EBA}\u{7269}\u{4FE1}\u{606F}
|
|
5935
|
-
${content.people_info.map((person, index)=>`
|
|
5936
|
-
${index + 1}. **\u{4EBA}\u{7269}${index + 1}**
|
|
5937
|
-
- \u{6570}\u{91CF}: ${person.count}
|
|
5938
|
-
${person.age_range ? `- \u{5E74}\u{9F84}: ${person.age_range}` : ""}
|
|
5939
|
-
${person.gender ? `- \u{6027}\u{522B}: ${person.gender}` : ""}
|
|
5940
|
-
${person.emotions ? `- \u{60C5}\u{7EEA}: ${person.emotions.join(", ")}` : ""}
|
|
5941
|
-
${person.activities ? `- \u{6D3B}\u{52A8}: ${person.activities.join(", ")}` : ""}
|
|
5942
|
-
${person.clothing ? `- \u{670D}\u{88C5}: ${person.clothing.join(", ")}` : ""}
|
|
5943
|
-
`).join("")}
|
|
5944
|
-
` : ""}
|
|
5945
|
-
|
|
5946
|
-
${content.technical_info ? `
|
|
5947
|
-
### \u{1F527} \u{6280}\u{672F}\u{5206}\u{6790}
|
|
5948
|
-
#### \u{8272}\u{5F69}\u{5206}\u{6790}
|
|
5949
|
-
- **\u{4E3B}\u{8272}\u{8C03}**: ${content.technical_info.color_analysis?.dominant_colors?.join(", ") || "\u672A\u5206\u6790"}
|
|
5950
|
-
- **\u{8272}\u{5F69}\u{642D}\u{914D}**: ${content.technical_info.color_analysis?.color_palette?.join(", ") || "\u672A\u5206\u6790"}
|
|
5951
|
-
- **\u{4EAE}\u{5EA6}**: ${content.technical_info.color_analysis?.brightness || "\u672A\u5206\u6790"}
|
|
5952
|
-
- **\u{5BF9}\u{6BD4}\u{5EA6}**: ${content.technical_info.color_analysis?.contrast || "\u672A\u5206\u6790"}
|
|
5953
|
-
|
|
5954
|
-
#### \u{6784}\u{56FE}\u{5206}\u{6790}
|
|
5955
|
-
- **\u{4E09}\u{5206}\u{6CD5}\u{5219}**: ${content.technical_info.composition?.rule_of_thirds ? "\u7B26\u5408" : "\u4E0D\u7B26\u5408"}
|
|
5956
|
-
- **\u{5BF9}\u{79F0}\u{6027}**: ${content.technical_info.composition?.symmetry ? "\u5BF9\u79F0" : "\u975E\u5BF9\u79F0"}
|
|
5957
|
-
- **\u{5F15}\u{5BFC}\u{7EBF}**: ${content.technical_info.composition?.leading_lines ? "\u5B58\u5728" : "\u4E0D\u5B58\u5728"}
|
|
5958
|
-
|
|
5959
|
-
#### \u{8D28}\u{91CF}\u{8BC4}\u{4F30}
|
|
5960
|
-
- **\u{6E05}\u{6670}\u{5EA6}**: ${content.technical_info.quality_metrics?.sharpness || "\u672A\u8BC4\u4F30"}
|
|
5961
|
-
- **\u{566A}\u{70B9}\u{6C34}\u{5E73}**: ${content.technical_info.quality_metrics?.noise_level || "\u672A\u8BC4\u4F30"}
|
|
5962
|
-
- **\u{66DD}\u{5149}**: ${content.technical_info.quality_metrics?.exposure || "\u672A\u8BC4\u4F30"}
|
|
5963
|
-
` : ""}
|
|
5964
|
-
|
|
5965
|
-
${content.ui_design_info ? `
|
|
5966
|
-
### \u{1F3A8} UI\u{8BBE}\u{8BA1}\u{5206}\u{6790}
|
|
5967
|
-
#### \u{5E03}\u{5C40}\u{7ED3}\u{6784}
|
|
5968
|
-
- **\u{5E03}\u{5C40}\u{7C7B}\u{578B}**: ${content.ui_design_info.layout_type}
|
|
5969
|
-
- **\u{54CD}\u{5E94}\u{5F0F}\u{8BBE}\u{8BA1}**: ${content.ui_design_info.responsive_design ? "\u652F\u6301" : "\u4E0D\u652F\u6301"}
|
|
5970
|
-
|
|
5971
|
-
#### \u{7EC4}\u{4EF6}\u{5206}\u{6790}
|
|
5972
|
-
${content.ui_design_info.components && content.ui_design_info.components.length > 0 ? content.ui_design_info.components.map((comp, index)=>`${index + 1}. **${comp.type}**: ${comp.name}`).join("\n") : "\u672A\u8BC6\u522B\u5230\u5177\u4F53\u7EC4\u4EF6"}
|
|
5973
|
-
|
|
5974
|
-
#### \u{8272}\u{5F69}\u{65B9}\u{6848}
|
|
5975
|
-
- **\u{4E3B}\u{8272}\u{8C03}**: ${content.ui_design_info.color_scheme?.primary_colors?.join(", ") || "\u672A\u8BC6\u522B"}
|
|
5976
|
-
- **\u{8F85}\u{52A9}\u{8272}**: ${content.ui_design_info.color_scheme?.secondary_colors?.join(", ") || "\u672A\u8BC6\u522B"}
|
|
5977
|
-
- **\u{80CC}\u{666F}\u{8272}**: ${content.ui_design_info.color_scheme?.background_colors?.join(", ") || "\u672A\u8BC6\u522B"}
|
|
5978
|
-
|
|
5979
|
-
#### \u{5BFC}\u{822A}\u{8BBE}\u{8BA1}
|
|
5980
|
-
- **\u{5BFC}\u{822A}\u{7C7B}\u{578B}**: ${content.ui_design_info.navigation?.type || "\u672A\u8BC6\u522B"}
|
|
5981
|
-
- **\u{5BFC}\u{822A}\u{5143}\u{7D20}**: ${content.ui_design_info.navigation?.elements?.join(", ") || "\u672A\u8BC6\u522B"}
|
|
5982
|
-
|
|
5983
|
-
#### \u{8BBE}\u{8BA1}\u{6A21}\u{5F0F}
|
|
5984
|
-
${content.ui_design_info.design_patterns && content.ui_design_info.design_patterns.length > 0 ? content.ui_design_info.design_patterns.map((pattern)=>`- ${pattern}`).join("\n") : "- \u672A\u8BC6\u522B\u5230\u7279\u5B9A\u8BBE\u8BA1\u6A21\u5F0F"}
|
|
5985
|
-
` : ""}
|
|
5986
|
-
|
|
5987
|
-
${content.requirement_info ? `
|
|
5988
|
-
### \u{1F4CB} \u{9700}\u{6C42}\u{5206}\u{6790}
|
|
5989
|
-
#### \u{529F}\u{80FD}\u{9700}\u{6C42}
|
|
5990
|
-
${content.requirement_info.functional_requirements && content.requirement_info.functional_requirements.length > 0 ? content.requirement_info.functional_requirements.map((req, index)=>`
|
|
5991
|
-
${index + 1}. **${req.title}** (\u{4F18}\u{5148}\u{7EA7}: ${req.priority})
|
|
5992
|
-
- \u{63CF}\u{8FF0}: ${req.description}
|
|
5993
|
-
- \u{7C7B}\u{522B}: ${req.category}`).join("") : "\u672A\u8BC6\u522B\u5230\u5177\u4F53\u529F\u80FD\u9700\u6C42"}
|
|
5994
|
-
|
|
5995
|
-
#### \u{975E}\u{529F}\u{80FD}\u{9700}\u{6C42}
|
|
5996
|
-
${content.requirement_info.non_functional_requirements && content.requirement_info.non_functional_requirements.length > 0 ? content.requirement_info.non_functional_requirements.map((req, index)=>`
|
|
5997
|
-
${index + 1}. **${req.type}**: ${req.description}`).join("") : "\u672A\u8BC6\u522B\u5230\u975E\u529F\u80FD\u9700\u6C42"}
|
|
5998
|
-
|
|
5999
|
-
#### \u{7528}\u{6237}\u{6545}\u{4E8B}
|
|
6000
|
-
${content.requirement_info.user_stories && content.requirement_info.user_stories.length > 0 ? content.requirement_info.user_stories.map((story, index)=>`
|
|
6001
|
-
${index + 1}. \u{4F5C}\u{4E3A} **${story.as_a}**\u{FF0C}\u{6211}\u{5E0C}\u{671B} **${story.i_want}**\u{FF0C}\u{4EE5}\u{4FBF} **${story.so_that}** (\u{4F18}\u{5148}\u{7EA7}: ${story.priority})`).join("") : "\u672A\u8BC6\u522B\u5230\u7528\u6237\u6545\u4E8B"}
|
|
6002
|
-
|
|
6003
|
-
#### \u{4E1A}\u{52A1}\u{89C4}\u{5219}
|
|
6004
|
-
${content.requirement_info.business_rules && content.requirement_info.business_rules.length > 0 ? content.requirement_info.business_rules.map((rule)=>`- ${rule}`).join("\n") : "- \u672A\u8BC6\u522B\u5230\u4E1A\u52A1\u89C4\u5219"}
|
|
6005
|
-
` : ""}
|
|
6006
|
-
|
|
6007
|
-
${Object.keys(content.details).length > 0 ? `
|
|
6008
|
-
### \u{1F4CB} \u{8BE6}\u{7EC6}\u{4FE1}\u{606F}
|
|
6009
|
-
${Object.entries(content.details).map(([key, value])=>`
|
|
6010
|
-
**${key}**: ${"object" == typeof value ? JSON.stringify(value, null, 2) : value}
|
|
6011
|
-
`).join("")}
|
|
6012
|
-
` : ""}
|
|
6013
|
-
|
|
6014
|
-
## \u{1F4A1} \u{5206}\u{6790}\u{603B}\u{7ED3}
|
|
6015
|
-
|
|
6016
|
-
\u{57FA}\u{4E8E}\u{901A}\u{7528}\u{5206}\u{6790}\u{FF0C}\u{56FE}\u{7247}\u{5185}\u{5BB9}\u{7406}\u{89E3}\u{5B8C}\u{6210}\u{3002}
|
|
6017
|
-
${confidence_score && confidence_score > 0.8 ? "\u5206\u6790\u7ED3\u679C\u7F6E\u4FE1\u5EA6\u8F83\u9AD8\uFF0C\u53EF\u4FE1\u5EA6\u826F\u597D\u3002" : ""}
|
|
6018
|
-
|
|
6019
|
-
**\u{5206}\u{6790}\u{5B8C}\u{6210}\u{65F6}\u{95F4}**: ${new Date().toISOString()}
|
|
6020
|
-
`.trim();
|
|
6021
|
-
}
|
|
6022
5399
|
function formatErrorResponse(error) {
|
|
6023
5400
|
const errorMessages = {
|
|
6024
5401
|
[types_AnalysisErrorCodes.INVALID_IMAGE_PATH]: "\u65E0\u6548\u7684\u56FE\u7247\u8DEF\u5F84",
|
|
@@ -6083,28 +5460,6 @@ ${getErrorSuggestion(error.code)}
|
|
|
6083
5460
|
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
6084
5461
|
return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}`;
|
|
6085
5462
|
}
|
|
6086
|
-
function getAnalysisTypeLabel(type) {
|
|
6087
|
-
const labels = {
|
|
6088
|
-
general: "\u901A\u7528\u5206\u6790",
|
|
6089
|
-
objects: "\u7269\u4F53\u8BC6\u522B",
|
|
6090
|
-
text: "\u6587\u5B57\u8BC6\u522B",
|
|
6091
|
-
scene: "\u573A\u666F\u5206\u6790",
|
|
6092
|
-
people: "\u4EBA\u7269\u5206\u6790",
|
|
6093
|
-
technical: "\u6280\u672F\u5206\u6790",
|
|
6094
|
-
ui_design: "UI\u8BBE\u8BA1\u7A3F\u5206\u6790",
|
|
6095
|
-
requirement: "\u9700\u6C42\u8BC6\u522B\u5206\u6790",
|
|
6096
|
-
custom: "\u81EA\u5B9A\u4E49\u5206\u6790"
|
|
6097
|
-
};
|
|
6098
|
-
return labels[type] || type;
|
|
6099
|
-
}
|
|
6100
|
-
function getDetailLevelLabel(level) {
|
|
6101
|
-
const labels = {
|
|
6102
|
-
brief: "\u7B80\u8981",
|
|
6103
|
-
detailed: "\u8BE6\u7EC6",
|
|
6104
|
-
comprehensive: "\u5168\u9762"
|
|
6105
|
-
};
|
|
6106
|
-
return labels[level] || level;
|
|
6107
|
-
}
|
|
6108
5463
|
function getErrorSuggestion(errorCode) {
|
|
6109
5464
|
const suggestions = {
|
|
6110
5465
|
[types_AnalysisErrorCodes.INVALID_IMAGE_PATH]: "\u8BF7\u68C0\u67E5\u56FE\u7247\u8DEF\u5F84\u662F\u5426\u6B63\u786E",
|
|
@@ -6406,6 +5761,7 @@ ${getErrorSuggestion(error.code)}
|
|
|
6406
5761
|
output_directory: stringType().optional().describe("\u8F93\u51FA\u76EE\u5F55\uFF0C\u4E0D\u6307\u5B9A\u5219\u5728\u539F\u6587\u4EF6\u76EE\u5F55\u751F\u6210")
|
|
6407
5762
|
},
|
|
6408
5763
|
handler: async (args)=>{
|
|
5764
|
+
initializeProjectRoot();
|
|
6409
5765
|
const converter = new ImageConverter();
|
|
6410
5766
|
try {
|
|
6411
5767
|
logger_logger.info("\u56FE\u7247\u683C\u5F0F\u8F6C\u6362\u667A\u80FD\u4F53\u5F00\u59CB\u6267\u884C", {
|
|
@@ -7907,12 +7263,13 @@ ${allTextContent || "\u672A\u8BC6\u522B\u5230\u6587\u5B57\u5185\u5BB9"}
|
|
|
7907
7263
|
}
|
|
7908
7264
|
}
|
|
7909
7265
|
const imageRecognitionAgentTool = {
|
|
7910
|
-
name: "
|
|
7266
|
+
name: "analyzeLongImage",
|
|
7911
7267
|
description: "\u4E13\u95E8\u5904\u7406\u957F\u56FE\u7684\u5185\u5BB9\u8BC6\u522B\u667A\u80FD\u4F53\uFF0C\u652F\u6301\u5206\u6BB5\u5904\u7406\u548C\u7EFC\u5408\u5185\u5BB9\u8BC6\u522B\uFF08\u6587\u5B57+\u56FE\u50CF\u63CF\u8FF0\uFF09\uFF0C\u4EE5\u4E2D\u6587Markdown\u683C\u5F0F\u8F93\u51FA\u3002\u53EA\u9700\u63D0\u4F9B\u56FE\u7247\u8DEF\u5F84\u5373\u53EF\uFF0C\u5176\u4ED6\u53C2\u6570\u81EA\u52A8\u4F18\u5316\u3002",
|
|
7912
7268
|
inputSchema: {
|
|
7913
7269
|
imagePath: stringType().min(1).describe("\u56FE\u7247\u6587\u4EF6\u8DEF\u5F84")
|
|
7914
7270
|
},
|
|
7915
7271
|
handler: async (args)=>{
|
|
7272
|
+
initializeProjectRoot();
|
|
7916
7273
|
logger_logger.info("\u56FE\u7247\u5185\u5BB9\u8BC6\u522B\u667A\u80FD\u4F53: \u5F00\u59CB\u5904\u7406", {
|
|
7917
7274
|
args
|
|
7918
7275
|
});
|
|
@@ -7,7 +7,7 @@ export declare class ImageAnalyzer {
|
|
|
7
7
|
/**
|
|
8
8
|
* 分析图片内容
|
|
9
9
|
*/
|
|
10
|
-
analyzeImage(imagePath: string): Promise<AnalysisResult>;
|
|
10
|
+
analyzeImage(imagePath: string, context?: string): Promise<AnalysisResult>;
|
|
11
11
|
/**
|
|
12
12
|
* 执行AI分析
|
|
13
13
|
*/
|
|
@@ -16,30 +16,14 @@ export declare class ImageAnalyzer {
|
|
|
16
16
|
* 构建分析prompt
|
|
17
17
|
*/
|
|
18
18
|
private buildAnalysisPrompt;
|
|
19
|
-
/**
|
|
20
|
-
* 检测是否为UI设计稿
|
|
21
|
-
*/
|
|
22
|
-
private detectUIDesign;
|
|
23
|
-
/**
|
|
24
|
-
* 获取详细程度指令
|
|
25
|
-
*/
|
|
26
|
-
private getDetailInstruction;
|
|
27
19
|
/**
|
|
28
20
|
* 解析AI响应
|
|
29
21
|
*/
|
|
30
22
|
private parseAIResponse;
|
|
31
23
|
/**
|
|
32
|
-
*
|
|
33
|
-
*/
|
|
34
|
-
private extractSummary;
|
|
35
|
-
/**
|
|
36
|
-
* 提取详细信息
|
|
37
|
-
*/
|
|
38
|
-
private extractDetails;
|
|
39
|
-
/**
|
|
40
|
-
* 提取章节标题
|
|
24
|
+
* 清理AI响应内容
|
|
41
25
|
*/
|
|
42
|
-
private
|
|
26
|
+
private cleanAIResponse;
|
|
43
27
|
/**
|
|
44
28
|
* 获取图片基本信息
|
|
45
29
|
*/
|
|
@@ -56,18 +40,6 @@ export declare class ImageAnalyzer {
|
|
|
56
40
|
* 计算置信度分数
|
|
57
41
|
*/
|
|
58
42
|
private calculateConfidenceScore;
|
|
59
|
-
private extractTags;
|
|
60
|
-
private extractObjects;
|
|
61
|
-
private extractTextContent;
|
|
62
|
-
/**
|
|
63
|
-
* 检测语言
|
|
64
|
-
*/
|
|
65
|
-
private detectLanguage;
|
|
66
|
-
private extractSceneInfo;
|
|
67
|
-
private extractPeopleInfo;
|
|
68
|
-
private extractTechnicalInfo;
|
|
69
|
-
private extractUIDesignInfo;
|
|
70
|
-
private extractRequirementInfo;
|
|
71
43
|
private extractValue;
|
|
72
44
|
private extractBoolean;
|
|
73
45
|
private extractList;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../../src/services/image-analysis/analyzer.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,cAAc,EAQf,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBAAa,aAAa;IACxB;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../../src/services/image-analysis/analyzer.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,cAAc,EAQf,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBAAa,aAAa;IACxB;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAmDhF;;OAEG;YACW,iBAAiB;IAkC/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAgCvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAqBvB;;OAEG;YACW,iBAAiB;IAyB/B;;OAEG;YACW,aAAa;IAsC3B;;OAEG;YACW,cAAc;IA0B5B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,mBAAmB;IA2B3B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,6BAA6B;IA2BrC,OAAO,CAAC,gCAAgC;IAqBxC,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,cAAc;CASvB"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
declare const ImageAnalysisParamsSchema: z.ZodObject<{
|
|
3
3
|
image_path: z.ZodString;
|
|
4
|
-
|
|
4
|
+
context: z.ZodOptional<z.ZodString>;
|
|
5
5
|
}, "strip", z.ZodTypeAny, {
|
|
6
6
|
image_path: string;
|
|
7
|
-
|
|
7
|
+
context?: string | undefined;
|
|
8
8
|
}, {
|
|
9
9
|
image_path: string;
|
|
10
|
-
|
|
10
|
+
context?: string | undefined;
|
|
11
11
|
}>;
|
|
12
12
|
export type ImageAnalysisToolParams = z.infer<typeof ImageAnalysisParamsSchema>;
|
|
13
13
|
/**
|
|
@@ -19,23 +19,16 @@ export declare const read_imageTool: {
|
|
|
19
19
|
description: string;
|
|
20
20
|
inputSchema: {
|
|
21
21
|
image_path: z.ZodString;
|
|
22
|
-
|
|
22
|
+
context: z.ZodOptional<z.ZodString>;
|
|
23
23
|
};
|
|
24
24
|
handler: (args: {
|
|
25
25
|
image_path: string;
|
|
26
|
-
|
|
26
|
+
context?: string;
|
|
27
27
|
}) => Promise<{
|
|
28
28
|
content: {
|
|
29
29
|
type: string;
|
|
30
30
|
text: string;
|
|
31
31
|
}[];
|
|
32
|
-
metadata: {
|
|
33
|
-
actions: {
|
|
34
|
-
type: string;
|
|
35
|
-
path: string;
|
|
36
|
-
description: string;
|
|
37
|
-
}[];
|
|
38
|
-
};
|
|
39
32
|
isError?: undefined;
|
|
40
33
|
} | {
|
|
41
34
|
content: {
|
|
@@ -43,7 +36,6 @@ export declare const read_imageTool: {
|
|
|
43
36
|
text: string;
|
|
44
37
|
}[];
|
|
45
38
|
isError: boolean;
|
|
46
|
-
metadata?: undefined;
|
|
47
39
|
}>;
|
|
48
40
|
};
|
|
49
41
|
export declare const imageAnalysisTool: {
|
|
@@ -51,23 +43,16 @@ export declare const imageAnalysisTool: {
|
|
|
51
43
|
description: string;
|
|
52
44
|
inputSchema: {
|
|
53
45
|
image_path: z.ZodString;
|
|
54
|
-
|
|
46
|
+
context: z.ZodOptional<z.ZodString>;
|
|
55
47
|
};
|
|
56
48
|
handler: (args: {
|
|
57
49
|
image_path: string;
|
|
58
|
-
|
|
50
|
+
context?: string;
|
|
59
51
|
}) => Promise<{
|
|
60
52
|
content: {
|
|
61
53
|
type: string;
|
|
62
54
|
text: string;
|
|
63
55
|
}[];
|
|
64
|
-
metadata: {
|
|
65
|
-
actions: {
|
|
66
|
-
type: string;
|
|
67
|
-
path: string;
|
|
68
|
-
description: string;
|
|
69
|
-
}[];
|
|
70
|
-
};
|
|
71
56
|
isError?: undefined;
|
|
72
57
|
} | {
|
|
73
58
|
content: {
|
|
@@ -75,7 +60,6 @@ export declare const imageAnalysisTool: {
|
|
|
75
60
|
text: string;
|
|
76
61
|
}[];
|
|
77
62
|
isError: boolean;
|
|
78
|
-
metadata?: undefined;
|
|
79
63
|
}>;
|
|
80
64
|
};
|
|
81
65
|
export { ImageAnalyzer } from "./analyzer";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/image-analysis/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,QAAA,MAAM,yBAAyB;;;;;;;;;EAI3B,CAAC;AAEL,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEhF;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;;;oBASH;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/image-analysis/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,QAAA,MAAM,yBAAyB;;;;;;;;;EAI3B,CAAC;AAEL,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEhF;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;;;oBASH;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;CAqD/D,CAAC;AAGF,eAAO,MAAM,iBAAiB;;;;;;;oBAxDN;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;CAwDjB,CAAC;AA4GhD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,WAAW,GACZ,MAAM,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/image-analysis/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/image-analysis/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,oBAAY,YAAY;IACtB,OAAO,YAAY,CAAY,OAAO;IACtC,OAAO,YAAY,CAAY,OAAO;IACtC,IAAI,SAAS,CAAkB,OAAO;IACtC,KAAK,UAAU,CAAgB,OAAO;IACtC,MAAM,WAAW,CAAc,OAAO;IACtC,SAAS,cAAc,CAAQ,OAAO;IACtC,SAAS,cAAc,CAAQ,UAAU;IACzC,WAAW,gBAAgB,CAAI,SAAS;IACxC,MAAM,WAAW;CAClB;AAED,oBAAY,WAAW;IACrB,KAAK,UAAU,CAAgB,KAAK;IACpC,QAAQ,aAAa,CAAU,KAAK;IACpC,aAAa,kBAAkB;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,cAAc,CAAC;IAC3B,aAAa,EAAE,YAAY,CAAC;IAC5B,YAAY,EAAE,WAAW,CAAC;IAC1B,OAAO,EAAE,eAAe,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,aAAa,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,gBAAgB,CAAC,EAAE,eAAe,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE;QACd,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,WAAW,EAAE;QACX,cAAc,EAAE,OAAO,CAAC;QACxB,QAAQ,EAAE,OAAO,CAAC;QAClB,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,eAAe,EAAE;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,qBAAa,kBAAmB,SAAQ,KAAK;aAGzB,IAAI,EAAE,MAAM;aACZ,OAAO,CAAC,EAAE,GAAG;gBAF7B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,GAAG,YAAA;CAKhC;AAED,oBAAY,kBAAkB;IAC5B,kBAAkB,uBAAuB;IACzC,kBAAkB,uBAAuB;IACzC,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IACnC,eAAe,oBAAoB;IACnC,gBAAgB,qBAAqB;IACrC,qBAAqB,0BAA0B;CAChD;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,YAAY,EAAE;QACZ,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,iBAAiB,EAAE,MAAM,EAAE,CAAC;KAC7B,CAAC;IACF,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,cAAc,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;IACF,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,sBAAsB,EAAE,MAAM,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QACR,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,uBAAuB,EAAE,qBAAqB,EAAE,CAAC;IACjD,2BAA2B,EAAE,wBAAwB,EAAE,CAAC;IACxD,YAAY,EAAE,SAAS,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACrC;AAED,eAAO,MAAM,uBAAuB,sEAE1B,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,OAAO,uBAAuB,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/image-converter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/image-converter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,QAAA,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;EAuB/B,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC7C,OAAO,2BAA2B,CACnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;oBA6BP,GAAG;;;;;;;;;;;;;CAwD1B,CAAC;AAoMF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EACV,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/image-recognition-agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/image-recognition-agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;;GAGG;AACH,eAAO,MAAM,yBAAyB;;;;;;oBAMd,GAAG;;;;;;;;;;;;;CA2D1B,CAAC"}
|
|
@@ -22,10 +22,10 @@ export declare const IntegratedGeneratorParams: z.ZodObject<{
|
|
|
22
22
|
programming_language: string;
|
|
23
23
|
generation_type: "full_project" | "module_only" | "feature_only";
|
|
24
24
|
include_examples: boolean;
|
|
25
|
-
business_rules?: string[] | undefined;
|
|
26
25
|
framework?: string | undefined;
|
|
27
26
|
architecture_pattern?: "microservices" | "monolithic" | "layered" | "event-driven" | undefined;
|
|
28
27
|
custom_context?: string | undefined;
|
|
28
|
+
business_rules?: string[] | undefined;
|
|
29
29
|
technical_requirements?: string | undefined;
|
|
30
30
|
}, {
|
|
31
31
|
project_name: string;
|
|
@@ -33,13 +33,13 @@ export declare const IntegratedGeneratorParams: z.ZodObject<{
|
|
|
33
33
|
user_story: string;
|
|
34
34
|
acceptance_criteria: string[];
|
|
35
35
|
programming_language: string;
|
|
36
|
-
business_rules?: string[] | undefined;
|
|
37
36
|
include_tests?: boolean | undefined;
|
|
38
37
|
framework?: string | undefined;
|
|
39
38
|
architecture_pattern?: "microservices" | "monolithic" | "layered" | "event-driven" | undefined;
|
|
40
39
|
generation_type?: "full_project" | "module_only" | "feature_only" | undefined;
|
|
41
40
|
include_examples?: boolean | undefined;
|
|
42
41
|
custom_context?: string | undefined;
|
|
42
|
+
business_rules?: string[] | undefined;
|
|
43
43
|
technical_requirements?: string | undefined;
|
|
44
44
|
}>;
|
|
45
45
|
export interface IntegratedGeneratorParams {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/pdf2md/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;oBAWG,GAAG;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/pdf2md/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;oBAWG,GAAG;;;;;;;;;;;;;CAsJ5B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/world2md/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO9B,CAAC;AAEH,MAAM,WAAW,aAAa;IAC1B,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,WAAW;;;;;;oBAME,GAAG;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/world2md/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO9B,CAAC;AAEH,MAAM,WAAW,aAAa;IAC1B,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,WAAW;;;;;;oBAME,GAAG;;;;;;;;;;;;;CA8H5B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "intention-coding",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "软件工程化的需求分析,功能设计,代码编写,测试运行和发布部署",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "pnpm@10.11.0",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@antfu/eslint-config": "^4.13.0",
|
|
50
|
+
"@biomejs/biome": "2.2.4",
|
|
50
51
|
"@esbuild-plugins/tsconfig-paths": "^0.1.2",
|
|
51
52
|
"@eslint-react/eslint-plugin": "^1.49.0",
|
|
52
53
|
"@eslint/js": "^9.26.0",
|
|
@@ -71,6 +72,7 @@
|
|
|
71
72
|
"tsx": "^4.19.4",
|
|
72
73
|
"typescript": "^5.8.3",
|
|
73
74
|
"typescript-eslint": "^8.32.1",
|
|
75
|
+
"ultracite": "5.4.4",
|
|
74
76
|
"vitest": "3.2.3",
|
|
75
77
|
"zod": "^3.25.76"
|
|
76
78
|
}
|