@xiuper/cli 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +180 -0
- package/dist/jsMain/typescript/agents/LLMService.d.ts +40 -0
- package/dist/jsMain/typescript/agents/LLMService.d.ts.map +1 -0
- package/dist/jsMain/typescript/agents/LLMService.js +156 -0
- package/dist/jsMain/typescript/agents/LLMService.js.map +1 -0
- package/dist/jsMain/typescript/agents/ServerAgentClient.d.ts +103 -0
- package/dist/jsMain/typescript/agents/ServerAgentClient.d.ts.map +1 -0
- package/dist/jsMain/typescript/agents/ServerAgentClient.js +142 -0
- package/dist/jsMain/typescript/agents/ServerAgentClient.js.map +1 -0
- package/dist/jsMain/typescript/agents/render/BaseRenderer.d.ts +87 -0
- package/dist/jsMain/typescript/agents/render/BaseRenderer.d.ts.map +1 -0
- package/dist/jsMain/typescript/agents/render/BaseRenderer.js +128 -0
- package/dist/jsMain/typescript/agents/render/BaseRenderer.js.map +1 -0
- package/dist/jsMain/typescript/agents/render/CliRenderer.d.ts +51 -0
- package/dist/jsMain/typescript/agents/render/CliRenderer.d.ts.map +1 -0
- package/dist/jsMain/typescript/agents/render/CliRenderer.js +564 -0
- package/dist/jsMain/typescript/agents/render/CliRenderer.js.map +1 -0
- package/dist/jsMain/typescript/agents/render/ServerRenderer.d.ts +55 -0
- package/dist/jsMain/typescript/agents/render/ServerRenderer.d.ts.map +1 -0
- package/dist/jsMain/typescript/agents/render/ServerRenderer.js +503 -0
- package/dist/jsMain/typescript/agents/render/ServerRenderer.js.map +1 -0
- package/dist/jsMain/typescript/agents/render/TuiRenderer.d.ts +104 -0
- package/dist/jsMain/typescript/agents/render/TuiRenderer.d.ts.map +1 -0
- package/dist/jsMain/typescript/agents/render/TuiRenderer.js +279 -0
- package/dist/jsMain/typescript/agents/render/TuiRenderer.js.map +1 -0
- package/dist/jsMain/typescript/config/ConfigManager.d.ts +146 -0
- package/dist/jsMain/typescript/config/ConfigManager.d.ts.map +1 -0
- package/dist/jsMain/typescript/config/ConfigManager.js +257 -0
- package/dist/jsMain/typescript/config/ConfigManager.js.map +1 -0
- package/dist/jsMain/typescript/constants/asciiArt.d.ts +9 -0
- package/dist/jsMain/typescript/constants/asciiArt.d.ts.map +1 -0
- package/dist/jsMain/typescript/constants/asciiArt.js +47 -0
- package/dist/jsMain/typescript/constants/asciiArt.js.map +1 -0
- package/dist/jsMain/typescript/design-system/colors.d.ts +492 -0
- package/dist/jsMain/typescript/design-system/colors.d.ts.map +1 -0
- package/dist/jsMain/typescript/design-system/colors.js +333 -0
- package/dist/jsMain/typescript/design-system/colors.js.map +1 -0
- package/dist/jsMain/typescript/design-system/index.d.ts +31 -0
- package/dist/jsMain/typescript/design-system/index.d.ts.map +1 -0
- package/dist/jsMain/typescript/design-system/index.js +195 -0
- package/dist/jsMain/typescript/design-system/index.js.map +1 -0
- package/dist/jsMain/typescript/design-system/theme-helpers.d.ts +161 -0
- package/dist/jsMain/typescript/design-system/theme-helpers.d.ts.map +1 -0
- package/dist/jsMain/typescript/design-system/theme-helpers.js +153 -0
- package/dist/jsMain/typescript/design-system/theme-helpers.js.map +1 -0
- package/dist/jsMain/typescript/i18n/index.d.ts +37 -0
- package/dist/jsMain/typescript/i18n/index.d.ts.map +1 -0
- package/dist/jsMain/typescript/i18n/index.js +139 -0
- package/dist/jsMain/typescript/i18n/index.js.map +1 -0
- package/dist/jsMain/typescript/i18n/locales/en.d.ts +6 -0
- package/dist/jsMain/typescript/i18n/locales/en.d.ts.map +1 -0
- package/dist/jsMain/typescript/i18n/locales/en.js +120 -0
- package/dist/jsMain/typescript/i18n/locales/en.js.map +1 -0
- package/dist/jsMain/typescript/i18n/locales/zh.d.ts +6 -0
- package/dist/jsMain/typescript/i18n/locales/zh.d.ts.map +1 -0
- package/dist/jsMain/typescript/i18n/locales/zh.js +120 -0
- package/dist/jsMain/typescript/i18n/locales/zh.js.map +1 -0
- package/dist/jsMain/typescript/i18n/types.d.ts +124 -0
- package/dist/jsMain/typescript/i18n/types.d.ts.map +1 -0
- package/dist/jsMain/typescript/i18n/types.js +7 -0
- package/dist/jsMain/typescript/i18n/types.js.map +1 -0
- package/dist/jsMain/typescript/index.d.ts +9 -0
- package/dist/jsMain/typescript/index.d.ts.map +1 -0
- package/dist/jsMain/typescript/index.js +380 -0
- package/dist/jsMain/typescript/index.js.map +1 -0
- package/dist/jsMain/typescript/modes/AgentMode.d.ts +33 -0
- package/dist/jsMain/typescript/modes/AgentMode.d.ts.map +1 -0
- package/dist/jsMain/typescript/modes/AgentMode.js +243 -0
- package/dist/jsMain/typescript/modes/AgentMode.js.map +1 -0
- package/dist/jsMain/typescript/modes/ChatMode.d.ts +30 -0
- package/dist/jsMain/typescript/modes/ChatMode.d.ts.map +1 -0
- package/dist/jsMain/typescript/modes/ChatMode.js +260 -0
- package/dist/jsMain/typescript/modes/ChatMode.js.map +1 -0
- package/dist/jsMain/typescript/modes/DocumentMode.d.ts +26 -0
- package/dist/jsMain/typescript/modes/DocumentMode.d.ts.map +1 -0
- package/dist/jsMain/typescript/modes/DocumentMode.js +217 -0
- package/dist/jsMain/typescript/modes/DocumentMode.js.map +1 -0
- package/dist/jsMain/typescript/modes/Mode.d.ts +72 -0
- package/dist/jsMain/typescript/modes/Mode.d.ts.map +1 -0
- package/dist/jsMain/typescript/modes/Mode.js +7 -0
- package/dist/jsMain/typescript/modes/Mode.js.map +1 -0
- package/dist/jsMain/typescript/modes/ModeManager.d.ts +76 -0
- package/dist/jsMain/typescript/modes/ModeManager.d.ts.map +1 -0
- package/dist/jsMain/typescript/modes/ModeManager.js +156 -0
- package/dist/jsMain/typescript/modes/ModeManager.js.map +1 -0
- package/dist/jsMain/typescript/modes/ReviewMode.d.ts +52 -0
- package/dist/jsMain/typescript/modes/ReviewMode.d.ts.map +1 -0
- package/dist/jsMain/typescript/modes/ReviewMode.js +435 -0
- package/dist/jsMain/typescript/modes/ReviewMode.js.map +1 -0
- package/dist/jsMain/typescript/modes/index.d.ts +9 -0
- package/dist/jsMain/typescript/modes/index.d.ts.map +1 -0
- package/dist/jsMain/typescript/modes/index.js +7 -0
- package/dist/jsMain/typescript/modes/index.js.map +1 -0
- package/dist/jsMain/typescript/processors/AtCommandProcessor.d.ts +34 -0
- package/dist/jsMain/typescript/processors/AtCommandProcessor.d.ts.map +1 -0
- package/dist/jsMain/typescript/processors/AtCommandProcessor.js +118 -0
- package/dist/jsMain/typescript/processors/AtCommandProcessor.js.map +1 -0
- package/dist/jsMain/typescript/processors/InputRouter.d.ts +84 -0
- package/dist/jsMain/typescript/processors/InputRouter.d.ts.map +1 -0
- package/dist/jsMain/typescript/processors/InputRouter.js +78 -0
- package/dist/jsMain/typescript/processors/InputRouter.js.map +1 -0
- package/dist/jsMain/typescript/processors/ModeCommandProcessor.d.ts +25 -0
- package/dist/jsMain/typescript/processors/ModeCommandProcessor.d.ts.map +1 -0
- package/dist/jsMain/typescript/processors/ModeCommandProcessor.js +127 -0
- package/dist/jsMain/typescript/processors/ModeCommandProcessor.js.map +1 -0
- package/dist/jsMain/typescript/processors/SlashCommandProcessor.d.ts +68 -0
- package/dist/jsMain/typescript/processors/SlashCommandProcessor.d.ts.map +1 -0
- package/dist/jsMain/typescript/processors/SlashCommandProcessor.js +391 -0
- package/dist/jsMain/typescript/processors/SlashCommandProcessor.js.map +1 -0
- package/dist/jsMain/typescript/processors/VariableProcessor.d.ts +44 -0
- package/dist/jsMain/typescript/processors/VariableProcessor.d.ts.map +1 -0
- package/dist/jsMain/typescript/processors/VariableProcessor.js +105 -0
- package/dist/jsMain/typescript/processors/VariableProcessor.js.map +1 -0
- package/dist/jsMain/typescript/ui/App.d.ts +16 -0
- package/dist/jsMain/typescript/ui/App.d.ts.map +1 -0
- package/dist/jsMain/typescript/ui/App.js +208 -0
- package/dist/jsMain/typescript/ui/App.js.map +1 -0
- package/dist/jsMain/typescript/ui/Banner.d.ts +6 -0
- package/dist/jsMain/typescript/ui/Banner.d.ts.map +1 -0
- package/dist/jsMain/typescript/ui/Banner.js +13 -0
- package/dist/jsMain/typescript/ui/Banner.js.map +1 -0
- package/dist/jsMain/typescript/ui/ChatInterface.d.ts +19 -0
- package/dist/jsMain/typescript/ui/ChatInterface.d.ts.map +1 -0
- package/dist/jsMain/typescript/ui/ChatInterface.js +223 -0
- package/dist/jsMain/typescript/ui/ChatInterface.js.map +1 -0
- package/dist/jsMain/typescript/ui/CommandSuggestions.d.ts +21 -0
- package/dist/jsMain/typescript/ui/CommandSuggestions.d.ts.map +1 -0
- package/dist/jsMain/typescript/ui/CommandSuggestions.js +43 -0
- package/dist/jsMain/typescript/ui/CommandSuggestions.js.map +1 -0
- package/dist/jsMain/typescript/ui/LanguageSwitcher.d.ts +11 -0
- package/dist/jsMain/typescript/ui/LanguageSwitcher.d.ts.map +1 -0
- package/dist/jsMain/typescript/ui/LanguageSwitcher.js +37 -0
- package/dist/jsMain/typescript/ui/LanguageSwitcher.js.map +1 -0
- package/dist/jsMain/typescript/ui/MessageRenderer.d.ts +70 -0
- package/dist/jsMain/typescript/ui/MessageRenderer.d.ts.map +1 -0
- package/dist/jsMain/typescript/ui/MessageRenderer.js +255 -0
- package/dist/jsMain/typescript/ui/MessageRenderer.js.map +1 -0
- package/dist/jsMain/typescript/ui/ModelConfigForm.d.ts +19 -0
- package/dist/jsMain/typescript/ui/ModelConfigForm.d.ts.map +1 -0
- package/dist/jsMain/typescript/ui/ModelConfigForm.js +257 -0
- package/dist/jsMain/typescript/ui/ModelConfigForm.js.map +1 -0
- package/dist/jsMain/typescript/ui/WelcomeScreen.d.ts +12 -0
- package/dist/jsMain/typescript/ui/WelcomeScreen.d.ts.map +1 -0
- package/dist/jsMain/typescript/ui/WelcomeScreen.js +93 -0
- package/dist/jsMain/typescript/ui/WelcomeScreen.js.map +1 -0
- package/dist/jsMain/typescript/utils/commandUtils.d.ts +64 -0
- package/dist/jsMain/typescript/utils/commandUtils.d.ts.map +1 -0
- package/dist/jsMain/typescript/utils/commandUtils.js +195 -0
- package/dist/jsMain/typescript/utils/commandUtils.js.map +1 -0
- package/dist/jsMain/typescript/utils/domainDictUtils.d.ts +53 -0
- package/dist/jsMain/typescript/utils/domainDictUtils.d.ts.map +1 -0
- package/dist/jsMain/typescript/utils/domainDictUtils.js +130 -0
- package/dist/jsMain/typescript/utils/domainDictUtils.js.map +1 -0
- package/dist/jsMain/typescript/utils/markdownSplitter.d.ts +23 -0
- package/dist/jsMain/typescript/utils/markdownSplitter.d.ts.map +1 -0
- package/dist/jsMain/typescript/utils/markdownSplitter.js +90 -0
- package/dist/jsMain/typescript/utils/markdownSplitter.js.map +1 -0
- package/dist/jsMain/typescript/utils/outputFormatter.d.ts +70 -0
- package/dist/jsMain/typescript/utils/outputFormatter.d.ts.map +1 -0
- package/dist/jsMain/typescript/utils/outputFormatter.js +140 -0
- package/dist/jsMain/typescript/utils/outputFormatter.js.map +1 -0
- package/dist/jsMain/typescript/utils/renderUtils.d.ts +17 -0
- package/dist/jsMain/typescript/utils/renderUtils.d.ts.map +1 -0
- package/dist/jsMain/typescript/utils/renderUtils.js +128 -0
- package/dist/jsMain/typescript/utils/renderUtils.js.map +1 -0
- package/dist/test/framework/analyzers/CodeChangeAnalyzer.d.ts +87 -0
- package/dist/test/framework/analyzers/CodeChangeAnalyzer.d.ts.map +1 -0
- package/dist/test/framework/analyzers/CodeChangeAnalyzer.js +412 -0
- package/dist/test/framework/analyzers/CodeChangeAnalyzer.js.map +1 -0
- package/dist/test/framework/analyzers/PromptAnalyzer.d.ts +46 -0
- package/dist/test/framework/analyzers/PromptAnalyzer.d.ts.map +1 -0
- package/dist/test/framework/analyzers/PromptAnalyzer.js +185 -0
- package/dist/test/framework/analyzers/PromptAnalyzer.js.map +1 -0
- package/dist/test/framework/analyzers/ToolCallAnalyzer.d.ts +45 -0
- package/dist/test/framework/analyzers/ToolCallAnalyzer.d.ts.map +1 -0
- package/dist/test/framework/analyzers/ToolCallAnalyzer.js +215 -0
- package/dist/test/framework/analyzers/ToolCallAnalyzer.js.map +1 -0
- package/dist/test/framework/cli.d.ts +8 -0
- package/dist/test/framework/cli.d.ts.map +1 -0
- package/dist/test/framework/cli.js +175 -0
- package/dist/test/framework/cli.js.map +1 -0
- package/dist/test/framework/core/TestCase.d.ts +100 -0
- package/dist/test/framework/core/TestCase.d.ts.map +1 -0
- package/dist/test/framework/core/TestCase.js +101 -0
- package/dist/test/framework/core/TestCase.js.map +1 -0
- package/dist/test/framework/core/TestEngine.d.ts +89 -0
- package/dist/test/framework/core/TestEngine.d.ts.map +1 -0
- package/dist/test/framework/core/TestEngine.js +552 -0
- package/dist/test/framework/core/TestEngine.js.map +1 -0
- package/dist/test/framework/core/TestResult.d.ts +143 -0
- package/dist/test/framework/core/TestResult.d.ts.map +1 -0
- package/dist/test/framework/core/TestResult.js +76 -0
- package/dist/test/framework/core/TestResult.js.map +1 -0
- package/dist/test/framework/examples/BasicRobustnessTest.d.ts +19 -0
- package/dist/test/framework/examples/BasicRobustnessTest.d.ts.map +1 -0
- package/dist/test/framework/examples/BasicRobustnessTest.js +116 -0
- package/dist/test/framework/examples/BasicRobustnessTest.js.map +1 -0
- package/dist/test/framework/index.d.ts +30 -0
- package/dist/test/framework/index.d.ts.map +1 -0
- package/dist/test/framework/index.js +38 -0
- package/dist/test/framework/index.js.map +1 -0
- package/dist/test/framework/loaders/JsonScenarioLoader.d.ts +99 -0
- package/dist/test/framework/loaders/JsonScenarioLoader.d.ts.map +1 -0
- package/dist/test/framework/loaders/JsonScenarioLoader.js +197 -0
- package/dist/test/framework/loaders/JsonScenarioLoader.js.map +1 -0
- package/dist/test/framework/reporters/ConsoleReporter.d.ts +25 -0
- package/dist/test/framework/reporters/ConsoleReporter.d.ts.map +1 -0
- package/dist/test/framework/reporters/ConsoleReporter.js +196 -0
- package/dist/test/framework/reporters/ConsoleReporter.js.map +1 -0
- package/dist/test/framework/scenarios/ScenarioBuilder.d.ts +62 -0
- package/dist/test/framework/scenarios/ScenarioBuilder.d.ts.map +1 -0
- package/dist/test/framework/scenarios/ScenarioBuilder.js +285 -0
- package/dist/test/framework/scenarios/ScenarioBuilder.js.map +1 -0
- package/dist/test/framework/validate-framework.d.ts +9 -0
- package/dist/test/framework/validate-framework.d.ts.map +1 -0
- package/dist/test/framework/validate-framework.js +187 -0
- package/dist/test/framework/validate-framework.js.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown-aware message splitter for streaming performance optimization.
|
|
3
|
+
*
|
|
4
|
+
* This utility helps prevent flickering during streaming by intelligently
|
|
5
|
+
* splitting long messages at safe boundaries (paragraph breaks, code block edges).
|
|
6
|
+
* Completed portions can be moved to Static rendering while only the latest
|
|
7
|
+
* fragment continues to update.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Checks if a given character index is inside a fenced code block.
|
|
11
|
+
*/
|
|
12
|
+
const isIndexInsideCodeBlock = (content, indexToTest) => {
|
|
13
|
+
let fenceCount = 0;
|
|
14
|
+
let searchPos = 0;
|
|
15
|
+
while (searchPos < content.length) {
|
|
16
|
+
const nextFence = content.indexOf('```', searchPos);
|
|
17
|
+
if (nextFence === -1 || nextFence >= indexToTest) {
|
|
18
|
+
break;
|
|
19
|
+
}
|
|
20
|
+
fenceCount++;
|
|
21
|
+
searchPos = nextFence + 3;
|
|
22
|
+
}
|
|
23
|
+
return fenceCount % 2 === 1;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Finds the starting index of the code block that encloses the given index.
|
|
27
|
+
* Returns -1 if the index is not inside a code block.
|
|
28
|
+
*/
|
|
29
|
+
const findEnclosingCodeBlockStart = (content, index) => {
|
|
30
|
+
if (!isIndexInsideCodeBlock(content, index)) {
|
|
31
|
+
return -1;
|
|
32
|
+
}
|
|
33
|
+
let currentSearchPos = 0;
|
|
34
|
+
while (currentSearchPos < index) {
|
|
35
|
+
const blockStartIndex = content.indexOf('```', currentSearchPos);
|
|
36
|
+
if (blockStartIndex === -1 || blockStartIndex >= index) {
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
const blockEndIndex = content.indexOf('```', blockStartIndex + 3);
|
|
40
|
+
if (blockStartIndex < index) {
|
|
41
|
+
if (blockEndIndex === -1 || index < blockEndIndex + 3) {
|
|
42
|
+
return blockStartIndex;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (blockEndIndex === -1)
|
|
46
|
+
break;
|
|
47
|
+
currentSearchPos = blockEndIndex + 3;
|
|
48
|
+
}
|
|
49
|
+
return -1;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Finds the last safe split point in the content.
|
|
53
|
+
*
|
|
54
|
+
* This function looks for natural boundaries (double newlines, code block edges)
|
|
55
|
+
* where a message can be safely split without breaking Markdown formatting.
|
|
56
|
+
*
|
|
57
|
+
* If a safe split point is found, content can be divided into:
|
|
58
|
+
* - Before split: Move to history (Static rendering)
|
|
59
|
+
* - After split: Keep in pending (dynamic rendering)
|
|
60
|
+
*
|
|
61
|
+
* @param content The markdown content to analyze
|
|
62
|
+
* @returns Index where content can be safely split, or content.length if no split needed
|
|
63
|
+
*/
|
|
64
|
+
export const findLastSafeSplitPoint = (content) => {
|
|
65
|
+
// Check if the end of content is inside a code block
|
|
66
|
+
const enclosingBlockStart = findEnclosingCodeBlockStart(content, content.length);
|
|
67
|
+
if (enclosingBlockStart !== -1) {
|
|
68
|
+
// The end is in a code block, split right before it
|
|
69
|
+
return enclosingBlockStart;
|
|
70
|
+
}
|
|
71
|
+
// Search for the last double newline (\n\n) not in a code block
|
|
72
|
+
let searchStartIndex = content.length;
|
|
73
|
+
while (searchStartIndex >= 0) {
|
|
74
|
+
const dnlIndex = content.lastIndexOf('\n\n', searchStartIndex);
|
|
75
|
+
if (dnlIndex === -1) {
|
|
76
|
+
// No more double newlines found
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
const potentialSplitPoint = dnlIndex + 2;
|
|
80
|
+
if (!isIndexInsideCodeBlock(content, potentialSplitPoint)) {
|
|
81
|
+
return potentialSplitPoint;
|
|
82
|
+
}
|
|
83
|
+
// If potentialSplitPoint was inside a code block,
|
|
84
|
+
// search before this \n\n
|
|
85
|
+
searchStartIndex = dnlIndex - 1;
|
|
86
|
+
}
|
|
87
|
+
// No safe split point found, keep entire content as one piece
|
|
88
|
+
return content.length;
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=markdownSplitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdownSplitter.js","sourceRoot":"","sources":["../../../../src/jsMain/typescript/utils/markdownSplitter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,sBAAsB,GAAG,CAC7B,OAAe,EACf,WAAmB,EACV,EAAE;IACX,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,OAAO,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACpD,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,SAAS,IAAI,WAAW,EAAE,CAAC;YACjD,MAAM;QACR,CAAC;QACD,UAAU,EAAE,CAAC;QACb,SAAS,GAAG,SAAS,GAAG,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,2BAA2B,GAAG,CAClC,OAAe,EACf,KAAa,EACL,EAAE;IACV,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IACD,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,OAAO,gBAAgB,GAAG,KAAK,EAAE,CAAC;QAChC,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QACjE,IAAI,eAAe,KAAK,CAAC,CAAC,IAAI,eAAe,IAAI,KAAK,EAAE,CAAC;YACvD,MAAM;QACR,CAAC;QACD,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,eAAe,GAAG,CAAC,CAAC,CAAC;QAClE,IAAI,eAAe,GAAG,KAAK,EAAE,CAAC;YAC5B,IAAI,aAAa,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,aAAa,GAAG,CAAC,EAAE,CAAC;gBACtD,OAAO,eAAe,CAAC;YACzB,CAAC;QACH,CAAC;QACD,IAAI,aAAa,KAAK,CAAC,CAAC;YAAE,MAAM;QAChC,gBAAgB,GAAG,aAAa,GAAG,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,OAAe,EAAU,EAAE;IAChE,qDAAqD;IACrD,MAAM,mBAAmB,GAAG,2BAA2B,CACrD,OAAO,EACP,OAAO,CAAC,MAAM,CACf,CAAC;IACF,IAAI,mBAAmB,KAAK,CAAC,CAAC,EAAE,CAAC;QAC/B,oDAAoD;QACpD,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,gEAAgE;IAChE,IAAI,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IACtC,OAAO,gBAAgB,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAC/D,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,gCAAgC;YAChC,MAAM;QACR,CAAC;QAED,MAAM,mBAAmB,GAAG,QAAQ,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,CAAC,EAAE,CAAC;YAC1D,OAAO,mBAAmB,CAAC;QAC7B,CAAC;QAED,kDAAkD;QAClD,0BAA0B;QAC1B,gBAAgB,GAAG,QAAQ,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,8DAA8D;IAC9D,OAAO,OAAO,CAAC,MAAM,CAAC;AACxB,CAAC,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Output formatting utilities for CLI
|
|
3
|
+
* Provides pretty-printing, code highlighting, and diff display
|
|
4
|
+
*/
|
|
5
|
+
export interface FileChange {
|
|
6
|
+
file: string;
|
|
7
|
+
operation: 'create' | 'update' | 'delete';
|
|
8
|
+
oldContent?: string;
|
|
9
|
+
newContent?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare class OutputFormatter {
|
|
12
|
+
private quiet;
|
|
13
|
+
constructor(quiet?: boolean);
|
|
14
|
+
/**
|
|
15
|
+
* Print section header
|
|
16
|
+
*/
|
|
17
|
+
header(title: string): void;
|
|
18
|
+
/**
|
|
19
|
+
* Print subsection
|
|
20
|
+
*/
|
|
21
|
+
section(title: string): void;
|
|
22
|
+
/**
|
|
23
|
+
* Print success message
|
|
24
|
+
*/
|
|
25
|
+
success(message: string): void;
|
|
26
|
+
/**
|
|
27
|
+
* Print error message
|
|
28
|
+
*/
|
|
29
|
+
error(message: string): void;
|
|
30
|
+
/**
|
|
31
|
+
* Print warning message
|
|
32
|
+
*/
|
|
33
|
+
warn(message: string): void;
|
|
34
|
+
/**
|
|
35
|
+
* Print info message
|
|
36
|
+
*/
|
|
37
|
+
info(message: string): void;
|
|
38
|
+
/**
|
|
39
|
+
* Print debug message (only if not quiet)
|
|
40
|
+
*/
|
|
41
|
+
debug(message: string): void;
|
|
42
|
+
/**
|
|
43
|
+
* Print step progress
|
|
44
|
+
*/
|
|
45
|
+
step(current: number, total: number, action: string): void;
|
|
46
|
+
/**
|
|
47
|
+
* Display file change with diff
|
|
48
|
+
*/
|
|
49
|
+
displayFileChange(change: FileChange): void;
|
|
50
|
+
/**
|
|
51
|
+
* Display unified diff
|
|
52
|
+
*/
|
|
53
|
+
private displayDiff;
|
|
54
|
+
/**
|
|
55
|
+
* Display summary statistics
|
|
56
|
+
*/
|
|
57
|
+
displaySummary(stats: {
|
|
58
|
+
iterations: number;
|
|
59
|
+
edits: number;
|
|
60
|
+
creates: number;
|
|
61
|
+
updates: number;
|
|
62
|
+
deletes: number;
|
|
63
|
+
duration: number;
|
|
64
|
+
}): void;
|
|
65
|
+
/**
|
|
66
|
+
* Display progress bar
|
|
67
|
+
*/
|
|
68
|
+
progressBar(current: number, total: number, label?: string): void;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=outputFormatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outputFormatter.d.ts","sourceRoot":"","sources":["../../../../src/jsMain/typescript/utils/outputFormatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAU;gBAEX,KAAK,GAAE,OAAe;IAIlC;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM3B;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI5B;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9B;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5B;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM5B;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAK1D;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IA2B3C;;OAEG;IACH,OAAO,CAAC,WAAW;IAmBnB;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,IAAI;IAWR;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,IAAI;CAYtE"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Output formatting utilities for CLI
|
|
3
|
+
* Provides pretty-printing, code highlighting, and diff display
|
|
4
|
+
*/
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import { semanticChalk } from '../design-system/theme-helpers.js';
|
|
7
|
+
import * as diff from 'diff';
|
|
8
|
+
export class OutputFormatter {
|
|
9
|
+
quiet;
|
|
10
|
+
constructor(quiet = false) {
|
|
11
|
+
this.quiet = quiet;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Print section header
|
|
15
|
+
*/
|
|
16
|
+
header(title) {
|
|
17
|
+
console.log('\n' + chalk.bold.cyan('═'.repeat(60)));
|
|
18
|
+
console.log(chalk.bold.cyan(` ${title}`));
|
|
19
|
+
console.log(chalk.bold.cyan('═'.repeat(60)));
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Print subsection
|
|
23
|
+
*/
|
|
24
|
+
section(title) {
|
|
25
|
+
console.log('\n' + chalk.bold(`▶ ${title}`));
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Print success message
|
|
29
|
+
*/
|
|
30
|
+
success(message) {
|
|
31
|
+
console.log(chalk.green('✓') + ' ' + message);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Print error message
|
|
35
|
+
*/
|
|
36
|
+
error(message) {
|
|
37
|
+
console.log(chalk.red('✗') + ' ' + chalk.red(message));
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Print warning message
|
|
41
|
+
*/
|
|
42
|
+
warn(message) {
|
|
43
|
+
console.log(chalk.yellow('⚠') + ' ' + chalk.yellow(message));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Print info message
|
|
47
|
+
*/
|
|
48
|
+
info(message) {
|
|
49
|
+
console.log(chalk.blue('ℹ') + ' ' + message);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Print debug message (only if not quiet)
|
|
53
|
+
*/
|
|
54
|
+
debug(message) {
|
|
55
|
+
if (!this.quiet) {
|
|
56
|
+
console.log(chalk.gray(`[DEBUG] ${message}`));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Print step progress
|
|
61
|
+
*/
|
|
62
|
+
step(current, total, action) {
|
|
63
|
+
const progress = `[${current}/${total}]`;
|
|
64
|
+
console.log(chalk.bold.blue(progress) + ' ' + action);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Display file change with diff
|
|
68
|
+
*/
|
|
69
|
+
displayFileChange(change) {
|
|
70
|
+
console.log('\n' + chalk.bold('─'.repeat(60)));
|
|
71
|
+
// File header with operation type
|
|
72
|
+
const opIcon = change.operation === 'create' ? '✨' :
|
|
73
|
+
change.operation === 'update' ? '📝' : '🗑️';
|
|
74
|
+
const opColor = change.operation === 'create' ? semanticChalk.success :
|
|
75
|
+
change.operation === 'update' ? semanticChalk.warning : semanticChalk.error;
|
|
76
|
+
console.log(opColor(opIcon + ' ' + change.operation.toUpperCase()) + ' ' +
|
|
77
|
+
chalk.bold(change.file));
|
|
78
|
+
// Show diff for updates
|
|
79
|
+
if (change.operation === 'update' && change.oldContent && change.newContent) {
|
|
80
|
+
this.displayDiff(change.oldContent, change.newContent);
|
|
81
|
+
}
|
|
82
|
+
// Show content for creates
|
|
83
|
+
else if (change.operation === 'create' && change.newContent) {
|
|
84
|
+
console.log(chalk.gray('─'.repeat(60)));
|
|
85
|
+
console.log(chalk.green(change.newContent));
|
|
86
|
+
}
|
|
87
|
+
// Show deletion message
|
|
88
|
+
else if (change.operation === 'delete') {
|
|
89
|
+
console.log(chalk.gray(' (file will be deleted)'));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Display unified diff
|
|
94
|
+
*/
|
|
95
|
+
displayDiff(oldContent, newContent) {
|
|
96
|
+
const patches = diff.createPatch('file', oldContent, newContent, '', '');
|
|
97
|
+
const lines = patches.split('\n').slice(4); // Skip patch header
|
|
98
|
+
console.log(chalk.gray('─'.repeat(60)));
|
|
99
|
+
for (const line of lines) {
|
|
100
|
+
if (line.startsWith('+')) {
|
|
101
|
+
console.log(chalk.green(line));
|
|
102
|
+
}
|
|
103
|
+
else if (line.startsWith('-')) {
|
|
104
|
+
console.log(chalk.red(line));
|
|
105
|
+
}
|
|
106
|
+
else if (line.startsWith('@@')) {
|
|
107
|
+
console.log(chalk.cyan(line));
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
console.log(chalk.gray(line));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Display summary statistics
|
|
116
|
+
*/
|
|
117
|
+
displaySummary(stats) {
|
|
118
|
+
this.header('Summary');
|
|
119
|
+
console.log(chalk.bold('Iterations: ') + semanticChalk.accent(stats.iterations.toString()));
|
|
120
|
+
console.log(chalk.bold('Total Edits: ') + semanticChalk.accent(stats.edits.toString()));
|
|
121
|
+
console.log(' ' + semanticChalk.success('✨ Creates: ') + stats.creates);
|
|
122
|
+
console.log(' ' + semanticChalk.warning('📝 Updates: ') + stats.updates);
|
|
123
|
+
console.log(' ' + semanticChalk.error('🗑️ Deletes: ') + stats.deletes);
|
|
124
|
+
console.log(chalk.bold('Duration: ') + semanticChalk.accent(`${(stats.duration / 1000).toFixed(2)}s`));
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Display progress bar
|
|
128
|
+
*/
|
|
129
|
+
progressBar(current, total, label = '') {
|
|
130
|
+
const percentage = Math.floor((current / total) * 100);
|
|
131
|
+
const barLength = 40;
|
|
132
|
+
const filledLength = Math.floor((barLength * current) / total);
|
|
133
|
+
const bar = '█'.repeat(filledLength) + '░'.repeat(barLength - filledLength);
|
|
134
|
+
process.stdout.write('\r' + semanticChalk.accent(`[${bar}]`) + ` ${percentage}% ${label}`);
|
|
135
|
+
if (current === total) {
|
|
136
|
+
console.log(); // New line when complete
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=outputFormatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outputFormatter.js","sourceRoot":"","sources":["../../../../src/jsMain/typescript/utils/outputFormatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content rendering utilities
|
|
3
|
+
* Uses Kotlin's CodeFence.parseAll to parse different content blocks
|
|
4
|
+
*/
|
|
5
|
+
interface CodeBlock {
|
|
6
|
+
languageId: string;
|
|
7
|
+
text: string;
|
|
8
|
+
isComplete: boolean;
|
|
9
|
+
extension: string | null;
|
|
10
|
+
}
|
|
11
|
+
export declare function parseContentBlocks(content: string): Promise<CodeBlock[]>;
|
|
12
|
+
/**
|
|
13
|
+
* Simple synchronous parser for code blocks (fallback)
|
|
14
|
+
*/
|
|
15
|
+
export declare function parseCodeBlocksSync(content: string): CodeBlock[];
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=renderUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderUtils.d.ts","sourceRoot":"","sources":["../../../../src/jsMain/typescript/utils/renderUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,UAAU,SAAS;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAeD,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAuC9E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,CA0EhE"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content rendering utilities
|
|
3
|
+
* Uses Kotlin's CodeFence.parseAll to parse different content blocks
|
|
4
|
+
*/
|
|
5
|
+
let codeFenceParser = null;
|
|
6
|
+
async function getCodeFenceParser() {
|
|
7
|
+
if (!codeFenceParser) {
|
|
8
|
+
const mppCore = await import('@xiuper/mpp-core/xiuper-mpp-core.js');
|
|
9
|
+
const exports = mppCore['module.exports'] || mppCore.default || mppCore;
|
|
10
|
+
if (exports?.cc?.unitmesh?.devins?.parser?.CodeFence) {
|
|
11
|
+
codeFenceParser = exports.cc.unitmesh.devins.parser.CodeFence;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return codeFenceParser;
|
|
15
|
+
}
|
|
16
|
+
export async function parseContentBlocks(content) {
|
|
17
|
+
try {
|
|
18
|
+
const parser = await getCodeFenceParser();
|
|
19
|
+
if (!parser || !parser.Companion || !parser.Companion.parseAll) {
|
|
20
|
+
// Fallback: treat as single text block
|
|
21
|
+
return [{
|
|
22
|
+
languageId: '',
|
|
23
|
+
text: content,
|
|
24
|
+
isComplete: true,
|
|
25
|
+
extension: null
|
|
26
|
+
}];
|
|
27
|
+
}
|
|
28
|
+
// Call Kotlin's parseAll method
|
|
29
|
+
const kotlinBlocks = parser.Companion.parseAll(content);
|
|
30
|
+
// Convert Kotlin objects to JavaScript objects
|
|
31
|
+
const blocks = [];
|
|
32
|
+
for (let i = 0; i < kotlinBlocks.size; i++) {
|
|
33
|
+
const block = kotlinBlocks.get(i);
|
|
34
|
+
blocks.push({
|
|
35
|
+
languageId: block.languageId || '',
|
|
36
|
+
text: block.text || '',
|
|
37
|
+
isComplete: block.isComplete || false,
|
|
38
|
+
extension: block.extension || null
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
return blocks;
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
console.error('Error parsing content blocks:', error);
|
|
45
|
+
// Fallback: treat as single text block
|
|
46
|
+
return [{
|
|
47
|
+
languageId: '',
|
|
48
|
+
text: content,
|
|
49
|
+
isComplete: true,
|
|
50
|
+
extension: null
|
|
51
|
+
}];
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Simple synchronous parser for code blocks (fallback)
|
|
56
|
+
*/
|
|
57
|
+
export function parseCodeBlocksSync(content) {
|
|
58
|
+
const blocks = [];
|
|
59
|
+
const lines = content.split('\n');
|
|
60
|
+
let currentBlock = null;
|
|
61
|
+
let textLines = [];
|
|
62
|
+
for (let i = 0; i < lines.length; i++) {
|
|
63
|
+
const line = lines[i];
|
|
64
|
+
const trimmed = line.trim();
|
|
65
|
+
if (trimmed.startsWith('```')) {
|
|
66
|
+
// Code fence start or end
|
|
67
|
+
if (!currentBlock) {
|
|
68
|
+
// Start of code block
|
|
69
|
+
if (textLines.length > 0) {
|
|
70
|
+
// Save accumulated text
|
|
71
|
+
blocks.push({
|
|
72
|
+
languageId: '',
|
|
73
|
+
text: textLines.join('\n'),
|
|
74
|
+
isComplete: true,
|
|
75
|
+
extension: null
|
|
76
|
+
});
|
|
77
|
+
textLines = [];
|
|
78
|
+
}
|
|
79
|
+
const lang = trimmed.substring(3).trim();
|
|
80
|
+
currentBlock = { lang, lines: [] };
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
// End of code block
|
|
84
|
+
blocks.push({
|
|
85
|
+
languageId: currentBlock.lang,
|
|
86
|
+
text: currentBlock.lines.join('\n'),
|
|
87
|
+
isComplete: true,
|
|
88
|
+
extension: null
|
|
89
|
+
});
|
|
90
|
+
currentBlock = null;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
// Regular line
|
|
95
|
+
if (currentBlock) {
|
|
96
|
+
currentBlock.lines.push(line);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
textLines.push(line);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Add remaining text
|
|
104
|
+
if (textLines.length > 0) {
|
|
105
|
+
blocks.push({
|
|
106
|
+
languageId: '',
|
|
107
|
+
text: textLines.join('\n'),
|
|
108
|
+
isComplete: true,
|
|
109
|
+
extension: null
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
// Add unclosed code block
|
|
113
|
+
if (currentBlock) {
|
|
114
|
+
blocks.push({
|
|
115
|
+
languageId: currentBlock.lang,
|
|
116
|
+
text: currentBlock.lines.join('\n'),
|
|
117
|
+
isComplete: false,
|
|
118
|
+
extension: null
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
return blocks.length > 0 ? blocks : [{
|
|
122
|
+
languageId: '',
|
|
123
|
+
text: content,
|
|
124
|
+
isComplete: true,
|
|
125
|
+
extension: null
|
|
126
|
+
}];
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=renderUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderUtils.js","sourceRoot":"","sources":["../../../../src/jsMain/typescript/utils/renderUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 代码变更分析器
|
|
3
|
+
*
|
|
4
|
+
* 分析和评估 AI Agent 产生的文件变更、代码质量、功能完整性等
|
|
5
|
+
*/
|
|
6
|
+
import { FileChangeInfo, CodeQualityResult, TaskCompletionResult } from '../core/TestResult';
|
|
7
|
+
import { TestCase } from '../core/TestCase';
|
|
8
|
+
export interface CodeMetrics {
|
|
9
|
+
linesOfCode: number;
|
|
10
|
+
complexity: number;
|
|
11
|
+
maintainabilityIndex: number;
|
|
12
|
+
duplicateLines: number;
|
|
13
|
+
}
|
|
14
|
+
export interface FileSnapshot {
|
|
15
|
+
path: string;
|
|
16
|
+
content: string;
|
|
17
|
+
size: number;
|
|
18
|
+
lastModified: Date;
|
|
19
|
+
hash: string;
|
|
20
|
+
}
|
|
21
|
+
export declare class CodeChangeAnalyzer {
|
|
22
|
+
/**
|
|
23
|
+
* 分析项目文件变更
|
|
24
|
+
*/
|
|
25
|
+
static analyzeFileChanges(projectPath: string, beforeSnapshot: Map<string, FileSnapshot>, afterSnapshot: Map<string, FileSnapshot>): Promise<FileChangeInfo[]>;
|
|
26
|
+
/**
|
|
27
|
+
* 分析代码质量
|
|
28
|
+
*/
|
|
29
|
+
static analyzeCodeQuality(projectPath: string, fileChanges: FileChangeInfo[]): Promise<CodeQualityResult>;
|
|
30
|
+
/**
|
|
31
|
+
* 分析任务完成情况
|
|
32
|
+
*/
|
|
33
|
+
static analyzeTaskCompletion(testCase: TestCase, projectPath: string, fileChanges: FileChangeInfo[]): Promise<TaskCompletionResult>;
|
|
34
|
+
/**
|
|
35
|
+
* 分析单个文件的代码质量
|
|
36
|
+
*/
|
|
37
|
+
private static analyzeFileQuality;
|
|
38
|
+
/**
|
|
39
|
+
* 分析 Java 文件
|
|
40
|
+
*/
|
|
41
|
+
private static analyzeJavaFile;
|
|
42
|
+
/**
|
|
43
|
+
* 分析 TypeScript 文件
|
|
44
|
+
*/
|
|
45
|
+
private static analyzeTypeScriptFile;
|
|
46
|
+
/**
|
|
47
|
+
* 分析 Kotlin 文件
|
|
48
|
+
*/
|
|
49
|
+
private static analyzeKotlinFile;
|
|
50
|
+
/**
|
|
51
|
+
* 分析配置文件
|
|
52
|
+
*/
|
|
53
|
+
private static analyzeConfigFile;
|
|
54
|
+
/**
|
|
55
|
+
* 检查期望的变更是否实现
|
|
56
|
+
*/
|
|
57
|
+
private static checkExpectedChanges;
|
|
58
|
+
/**
|
|
59
|
+
* 检查依赖是否已添加
|
|
60
|
+
*/
|
|
61
|
+
private static checkDependencyAdded;
|
|
62
|
+
/**
|
|
63
|
+
* 检查向后兼容性
|
|
64
|
+
*/
|
|
65
|
+
private static checkBackwardCompatibility;
|
|
66
|
+
/**
|
|
67
|
+
* 计算代码质量得分
|
|
68
|
+
*/
|
|
69
|
+
private static calculateQualityScore;
|
|
70
|
+
/**
|
|
71
|
+
* 获取内容预览
|
|
72
|
+
*/
|
|
73
|
+
private static getContentPreview;
|
|
74
|
+
/**
|
|
75
|
+
* 创建文件快照
|
|
76
|
+
*/
|
|
77
|
+
static createSnapshot(projectPath: string): Promise<Map<string, FileSnapshot>>;
|
|
78
|
+
/**
|
|
79
|
+
* 遍历目录
|
|
80
|
+
*/
|
|
81
|
+
private static walkDirectory;
|
|
82
|
+
/**
|
|
83
|
+
* 简单哈希函数
|
|
84
|
+
*/
|
|
85
|
+
private static simpleHash;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=CodeChangeAnalyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeChangeAnalyzer.d.ts","sourceRoot":"","sources":["../../../../src/test/framework/analyzers/CodeChangeAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,QAAQ,EAAqB,MAAM,kBAAkB,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,IAAI,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,kBAAkB;IAC7B;;OAEG;WACU,kBAAkB,CAC7B,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACzC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GACvC,OAAO,CAAC,cAAc,EAAE,CAAC;IA8C5B;;OAEG;WACU,kBAAkB,CAC7B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,cAAc,EAAE,GAC5B,OAAO,CAAC,iBAAiB,CAAC;IAyC7B;;OAEG;WACU,qBAAqB,CAChC,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,cAAc,EAAE,GAC5B,OAAO,CAAC,oBAAoB,CAAC;IA+BhC;;OAEG;mBACkB,kBAAkB;IA2BvC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAkD9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAmCpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAiBhC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA8BhC;;OAEG;mBACkB,oBAAoB;IA+CzC;;OAEG;mBACkB,oBAAoB;IA0BzC;;OAEG;mBACkB,0BAA0B;IAe/C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAapC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAKhC;;OAEG;WACU,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAwBpF;;OAEG;mBACkB,aAAa;IAiBlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;CAS1B"}
|