@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,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input Router - 输入路由系统
|
|
3
|
+
*
|
|
4
|
+
* 负责将用户输入路由到不同的处理器
|
|
5
|
+
* 参考 Gemini CLI 的处理器架构设计
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* 处理器上下文
|
|
9
|
+
* 包含处理器执行所需的所有依赖
|
|
10
|
+
*/
|
|
11
|
+
export interface ProcessorContext {
|
|
12
|
+
/** 清空消息历史 */
|
|
13
|
+
clearMessages?: () => void;
|
|
14
|
+
/** 日志记录器 */
|
|
15
|
+
logger: {
|
|
16
|
+
info: (message: string) => void;
|
|
17
|
+
warn: (message: string) => void;
|
|
18
|
+
error: (message: string, error?: any) => void;
|
|
19
|
+
};
|
|
20
|
+
/** 读取文件内容(通过 Kotlin) */
|
|
21
|
+
readFile?: (path: string) => Promise<string>;
|
|
22
|
+
/** 添加消息到历史 */
|
|
23
|
+
addMessage?: (role: string, content: string) => void;
|
|
24
|
+
/** 设置加载状态 */
|
|
25
|
+
setLoading?: (loading: boolean) => void;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 处理器结果类型
|
|
29
|
+
*/
|
|
30
|
+
export type ProcessorResult = {
|
|
31
|
+
type: 'handled';
|
|
32
|
+
output?: string;
|
|
33
|
+
} | {
|
|
34
|
+
type: 'compile';
|
|
35
|
+
devins: string;
|
|
36
|
+
} | {
|
|
37
|
+
type: 'llm-query';
|
|
38
|
+
query: string;
|
|
39
|
+
} | {
|
|
40
|
+
type: 'error';
|
|
41
|
+
message: string;
|
|
42
|
+
} | {
|
|
43
|
+
type: 'skip';
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* 输入处理器接口
|
|
47
|
+
*/
|
|
48
|
+
export interface InputProcessor {
|
|
49
|
+
/** 处理器名称 */
|
|
50
|
+
name: string;
|
|
51
|
+
/** 判断是否可以处理该输入 */
|
|
52
|
+
canHandle(input: string): boolean;
|
|
53
|
+
/** 处理输入 */
|
|
54
|
+
process(input: string, context: ProcessorContext): Promise<ProcessorResult>;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* 输入路由器
|
|
58
|
+
* 管理和调度所有输入处理器
|
|
59
|
+
*/
|
|
60
|
+
export declare class InputRouter {
|
|
61
|
+
private processors;
|
|
62
|
+
/**
|
|
63
|
+
* 注册处理器
|
|
64
|
+
* @param processor 处理器实例
|
|
65
|
+
* @param priority 优先级(数字越大优先级越高,默认 0)
|
|
66
|
+
*/
|
|
67
|
+
register(processor: InputProcessor, priority?: number): void;
|
|
68
|
+
/**
|
|
69
|
+
* 路由输入到合适的处理器
|
|
70
|
+
* @param input 用户输入
|
|
71
|
+
* @param context 处理器上下文
|
|
72
|
+
* @returns 处理结果
|
|
73
|
+
*/
|
|
74
|
+
route(input: string, context: ProcessorContext): Promise<ProcessorResult>;
|
|
75
|
+
/**
|
|
76
|
+
* 获取所有已注册的处理器
|
|
77
|
+
*/
|
|
78
|
+
getProcessors(): InputProcessor[];
|
|
79
|
+
/**
|
|
80
|
+
* 清除所有处理器
|
|
81
|
+
*/
|
|
82
|
+
clear(): void;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=InputRouter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputRouter.d.ts","sourceRoot":"","sources":["../../../../src/jsMain/typescript/processors/InputRouter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,aAAa;IACb,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAE3B,YAAY;IACZ,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QAChC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QAChC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;KAC/C,CAAC;IAEF,wBAAwB;IACxB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7C,cAAc;IACd,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAErD,aAAa;IACb,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,YAAY;IACZ,IAAI,EAAE,MAAM,CAAC;IAEb,kBAAkB;IAClB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAElC,WAAW;IACX,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAC7E;AAUD;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAwB;IAE1C;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,cAAc,EAAE,QAAQ,GAAE,MAAU,GAAG,IAAI;IAM/D;;;;;OAKG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IA2C/E;;OAEG;IACH,aAAa,IAAI,cAAc,EAAE;IAIjC;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input Router - 输入路由系统
|
|
3
|
+
*
|
|
4
|
+
* 负责将用户输入路由到不同的处理器
|
|
5
|
+
* 参考 Gemini CLI 的处理器架构设计
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* 输入路由器
|
|
9
|
+
* 管理和调度所有输入处理器
|
|
10
|
+
*/
|
|
11
|
+
export class InputRouter {
|
|
12
|
+
processors = [];
|
|
13
|
+
/**
|
|
14
|
+
* 注册处理器
|
|
15
|
+
* @param processor 处理器实例
|
|
16
|
+
* @param priority 优先级(数字越大优先级越高,默认 0)
|
|
17
|
+
*/
|
|
18
|
+
register(processor, priority = 0) {
|
|
19
|
+
this.processors.push({ processor, priority });
|
|
20
|
+
// 按优先级排序(高 → 低)
|
|
21
|
+
this.processors.sort((a, b) => b.priority - a.priority);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 路由输入到合适的处理器
|
|
25
|
+
* @param input 用户输入
|
|
26
|
+
* @param context 处理器上下文
|
|
27
|
+
* @returns 处理结果
|
|
28
|
+
*/
|
|
29
|
+
async route(input, context) {
|
|
30
|
+
// 去除首尾空白
|
|
31
|
+
const trimmedInput = input.trim();
|
|
32
|
+
if (!trimmedInput) {
|
|
33
|
+
return { type: 'error', message: 'Input cannot be empty' };
|
|
34
|
+
}
|
|
35
|
+
// 遍历所有处理器
|
|
36
|
+
for (const entry of this.processors) {
|
|
37
|
+
const { processor } = entry;
|
|
38
|
+
try {
|
|
39
|
+
// 检查处理器是否可以处理该输入
|
|
40
|
+
if (processor.canHandle(trimmedInput)) {
|
|
41
|
+
context.logger.info(`[InputRouter] Routing to ${processor.name}`);
|
|
42
|
+
// 处理输入
|
|
43
|
+
const result = await processor.process(trimmedInput, context);
|
|
44
|
+
// 如果不是 skip,直接返回结果
|
|
45
|
+
if (result.type !== 'skip') {
|
|
46
|
+
context.logger.info(`[InputRouter] ${processor.name} handled: ${result.type}`);
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
// skip 则继续尝试下一个处理器
|
|
50
|
+
context.logger.info(`[InputRouter] ${processor.name} skipped, trying next`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
context.logger.error(`[InputRouter] Error in ${processor.name}:`, error);
|
|
55
|
+
return {
|
|
56
|
+
type: 'error',
|
|
57
|
+
message: `Processor error: ${error instanceof Error ? error.message : String(error)}`
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// 没有处理器处理,默认发送给 LLM
|
|
62
|
+
context.logger.info('[InputRouter] No processor handled, routing to LLM');
|
|
63
|
+
return { type: 'llm-query', query: trimmedInput };
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* 获取所有已注册的处理器
|
|
67
|
+
*/
|
|
68
|
+
getProcessors() {
|
|
69
|
+
return this.processors.map(e => e.processor);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* 清除所有处理器
|
|
73
|
+
*/
|
|
74
|
+
clear() {
|
|
75
|
+
this.processors = [];
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=InputRouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputRouter.js","sourceRoot":"","sources":["../../../../src/jsMain/typescript/processors/InputRouter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2DH;;;GAGG;AACH,MAAM,OAAO,WAAW;IACd,UAAU,GAAqB,EAAE,CAAC;IAE1C;;;;OAIG;IACH,QAAQ,CAAC,SAAyB,EAAE,WAAmB,CAAC;QACtD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9C,gBAAgB;QAChB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAK,CAAC,KAAa,EAAE,OAAyB;QAClD,SAAS;QACT,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAElC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;QAC7D,CAAC;QAED,UAAU;QACV,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpC,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;YAE5B,IAAI,CAAC;gBACH,iBAAiB;gBACjB,IAAI,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;oBACtC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;oBAElE,OAAO;oBACP,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;oBAE9D,mBAAmB;oBACnB,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBAC3B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,SAAS,CAAC,IAAI,aAAa,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;wBAC/E,OAAO,MAAM,CAAC;oBAChB,CAAC;oBAED,mBAAmB;oBACnB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,SAAS,CAAC,IAAI,uBAAuB,CAAC,CAAC;gBAC9E,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,SAAS,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;gBACzE,OAAO;oBACL,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,oBAAoB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBACtF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QAC1E,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mode Command Processor
|
|
3
|
+
*
|
|
4
|
+
* 处理模式切换命令,如 /chat, /agent 等
|
|
5
|
+
*/
|
|
6
|
+
import type { InputProcessor, ProcessorContext, ProcessorResult } from './InputRouter.js';
|
|
7
|
+
import type { ModeManager } from '../modes/ModeManager.js';
|
|
8
|
+
/**
|
|
9
|
+
* 模式切换命令处理器
|
|
10
|
+
*/
|
|
11
|
+
export declare class ModeCommandProcessor implements InputProcessor {
|
|
12
|
+
name: string;
|
|
13
|
+
private modeManager;
|
|
14
|
+
private modeContext;
|
|
15
|
+
constructor(modeManager: ModeManager, modeContext: any);
|
|
16
|
+
/**
|
|
17
|
+
* 判断是否可以处理
|
|
18
|
+
*/
|
|
19
|
+
canHandle(input: string): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* 处理模式切换命令
|
|
22
|
+
*/
|
|
23
|
+
process(input: string, context: ProcessorContext): Promise<ProcessorResult>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=ModeCommandProcessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModeCommandProcessor.d.ts","sourceRoot":"","sources":["../../../../src/jsMain/typescript/processors/ModeCommandProcessor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;GAEG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IACzD,IAAI,SAA0B;IAE9B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,WAAW,CAAM;gBAEb,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG;IAKtD;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAQjC;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;CAwGlF"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mode Command Processor
|
|
3
|
+
*
|
|
4
|
+
* 处理模式切换命令,如 /chat, /agent 等
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* 模式切换命令处理器
|
|
8
|
+
*/
|
|
9
|
+
export class ModeCommandProcessor {
|
|
10
|
+
name = 'ModeCommandProcessor';
|
|
11
|
+
modeManager;
|
|
12
|
+
modeContext; // ModeContext 类型
|
|
13
|
+
constructor(modeManager, modeContext) {
|
|
14
|
+
this.modeManager = modeManager;
|
|
15
|
+
this.modeContext = modeContext;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 判断是否可以处理
|
|
19
|
+
*/
|
|
20
|
+
canHandle(input) {
|
|
21
|
+
const trimmed = input.trim().toLowerCase();
|
|
22
|
+
return trimmed === '/chat' ||
|
|
23
|
+
trimmed === '/agent' ||
|
|
24
|
+
trimmed.startsWith('/mode ') ||
|
|
25
|
+
trimmed === '/mode';
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 处理模式切换命令
|
|
29
|
+
*/
|
|
30
|
+
async process(input, context) {
|
|
31
|
+
const trimmed = input.trim().toLowerCase();
|
|
32
|
+
try {
|
|
33
|
+
if (trimmed === '/chat') {
|
|
34
|
+
// 切换到聊天模式
|
|
35
|
+
const success = await this.modeManager.switchToMode('chat', this.modeContext);
|
|
36
|
+
if (success) {
|
|
37
|
+
return {
|
|
38
|
+
type: 'handled',
|
|
39
|
+
output: '💬 Switched to **Chat Mode**\n\nYou can now have conversations with the AI assistant.'
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
return {
|
|
44
|
+
type: 'error',
|
|
45
|
+
message: 'Failed to switch to chat mode'
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (trimmed === '/agent') {
|
|
50
|
+
// 切换到代理模式
|
|
51
|
+
const success = await this.modeManager.switchToMode('agent', this.modeContext);
|
|
52
|
+
if (success) {
|
|
53
|
+
return {
|
|
54
|
+
type: 'handled',
|
|
55
|
+
output: '🤖 Switched to **Agent Mode**\n\nDescribe development tasks and I\'ll complete them autonomously.'
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
return {
|
|
60
|
+
type: 'error',
|
|
61
|
+
message: 'Failed to switch to agent mode'
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (trimmed === '/mode') {
|
|
66
|
+
// 显示当前模式和可用模式
|
|
67
|
+
const currentMode = this.modeManager.getCurrentMode();
|
|
68
|
+
const availableModes = this.modeManager.getAvailableModes();
|
|
69
|
+
let output = '🔄 **Mode Information**\n\n';
|
|
70
|
+
if (currentMode) {
|
|
71
|
+
const modeInfo = this.modeManager.getModeInfo(currentMode.type);
|
|
72
|
+
output += `**Current Mode**: ${modeInfo?.icon} ${modeInfo?.displayName} (\`${currentMode.type}\`)\n`;
|
|
73
|
+
output += `**Status**: ${currentMode.mode.getStatus()}\n\n`;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
output += '**Current Mode**: None\n\n';
|
|
77
|
+
}
|
|
78
|
+
output += '**Available Modes**:\n';
|
|
79
|
+
for (const modeType of availableModes) {
|
|
80
|
+
const modeInfo = this.modeManager.getModeInfo(modeType);
|
|
81
|
+
if (modeInfo) {
|
|
82
|
+
output += `- ${modeInfo.icon} **${modeInfo.displayName}** (\`/${modeType}\`) - ${modeInfo.description}\n`;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
output += '\n**Usage**: Type `/chat` or `/agent` to switch modes.';
|
|
86
|
+
return {
|
|
87
|
+
type: 'handled',
|
|
88
|
+
output
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
if (trimmed.startsWith('/mode ')) {
|
|
92
|
+
// 切换到指定模式
|
|
93
|
+
const modeType = trimmed.substring(6).trim();
|
|
94
|
+
const availableModes = this.modeManager.getAvailableModes();
|
|
95
|
+
if (!availableModes.includes(modeType)) {
|
|
96
|
+
return {
|
|
97
|
+
type: 'error',
|
|
98
|
+
message: `Unknown mode: ${modeType}. Available modes: ${availableModes.join(', ')}`
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
const success = await this.modeManager.switchToMode(modeType, this.modeContext);
|
|
102
|
+
if (success) {
|
|
103
|
+
const modeInfo = this.modeManager.getModeInfo(modeType);
|
|
104
|
+
return {
|
|
105
|
+
type: 'handled',
|
|
106
|
+
output: `${modeInfo?.icon} Switched to **${modeInfo?.displayName}**\n\n${modeInfo?.description}`
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
return {
|
|
111
|
+
type: 'error',
|
|
112
|
+
message: `Failed to switch to ${modeType} mode`
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return { type: 'skip' };
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
context.logger.error('[ModeCommandProcessor] Error processing mode command:', error);
|
|
120
|
+
return {
|
|
121
|
+
type: 'error',
|
|
122
|
+
message: `Mode switch error: ${error instanceof Error ? error.message : String(error)}`
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=ModeCommandProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModeCommandProcessor.js","sourceRoot":"","sources":["../../../../src/jsMain/typescript/processors/ModeCommandProcessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slash Command Processor
|
|
3
|
+
*
|
|
4
|
+
* 处理以 / 开头的命令,如 /help, /clear, /exit 等
|
|
5
|
+
* 参考 Gemini CLI 的 slashCommandProcessor.ts
|
|
6
|
+
*/
|
|
7
|
+
import type { InputProcessor, ProcessorContext, ProcessorResult } from './InputRouter.js';
|
|
8
|
+
/**
|
|
9
|
+
* 命令定义
|
|
10
|
+
*/
|
|
11
|
+
export interface SlashCommand {
|
|
12
|
+
/** 命令描述 */
|
|
13
|
+
description: string;
|
|
14
|
+
/** 命令别名 */
|
|
15
|
+
aliases?: string[];
|
|
16
|
+
/** 命令执行函数 */
|
|
17
|
+
action: (context: ProcessorContext, args: string) => Promise<ProcessorResult>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Slash 命令处理器
|
|
21
|
+
*/
|
|
22
|
+
export declare class SlashCommandProcessor implements InputProcessor {
|
|
23
|
+
name: string;
|
|
24
|
+
private commands;
|
|
25
|
+
constructor();
|
|
26
|
+
/**
|
|
27
|
+
* 初始化内置命令
|
|
28
|
+
*/
|
|
29
|
+
private initializeBuiltinCommands;
|
|
30
|
+
/**
|
|
31
|
+
* 注册命令
|
|
32
|
+
*/
|
|
33
|
+
registerCommand(name: string, command: SlashCommand): void;
|
|
34
|
+
/**
|
|
35
|
+
* 获取所有命令
|
|
36
|
+
*/
|
|
37
|
+
getCommands(): Map<string, SlashCommand>;
|
|
38
|
+
/**
|
|
39
|
+
* 判断是否可以处理
|
|
40
|
+
*/
|
|
41
|
+
canHandle(input: string): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* 处理命令
|
|
44
|
+
*/
|
|
45
|
+
process(input: string, context: ProcessorContext): Promise<ProcessorResult>;
|
|
46
|
+
/**
|
|
47
|
+
* Handle /init command for domain dictionary generation
|
|
48
|
+
*/
|
|
49
|
+
private handleInitCommand;
|
|
50
|
+
/**
|
|
51
|
+
* Handle /enhance command for prompt enhancement
|
|
52
|
+
*/
|
|
53
|
+
private handleEnhanceCommand;
|
|
54
|
+
/**
|
|
55
|
+
* Handle /deep-research command for domain dictionary optimization
|
|
56
|
+
*
|
|
57
|
+
* Implements a 7-step Deep Research methodology:
|
|
58
|
+
* 1. Clarify - Problem Definition
|
|
59
|
+
* 2. Decompose - Research Dimensions
|
|
60
|
+
* 3. Information Map - Planning
|
|
61
|
+
* 4. Iterative Deep Research Loop
|
|
62
|
+
* 5. Second-Order Insights
|
|
63
|
+
* 6. Synthesis - Research Narrative
|
|
64
|
+
* 7. Actionization - Final Deliverables
|
|
65
|
+
*/
|
|
66
|
+
private handleDeepResearchCommand;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=SlashCommandProcessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SlashCommandProcessor.d.ts","sourceRoot":"","sources":["../../../../src/jsMain/typescript/processors/SlashCommandProcessor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAO1F;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IAEpB,WAAW;IACX,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,aAAa;IACb,MAAM,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;CAC/E;AAED;;GAEG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,IAAI,SAA2B;IAE/B,OAAO,CAAC,QAAQ,CAAmC;;IAMnD;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAwEjC;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAW1D;;OAEG;IACH,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;IAIxC;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIjC;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IA4CjF;;OAEG;YACW,iBAAiB;IAmE/B;;OAEG;YACW,oBAAoB;IA2FlC;;;;;;;;;;;OAWG;YACW,yBAAyB;CAwHxC"}
|