tabby-ai-assistant 1.0.10 → 1.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +3 -3
  3. package/src/components/chat/ai-sidebar.component.scss +43 -0
  4. package/src/components/chat/ai-sidebar.component.ts +43 -1
  5. package/src/components/settings/ai-settings-tab.component.html +13 -5
  6. package/src/components/settings/ai-settings-tab.component.scss +164 -33
  7. package/src/components/settings/ai-settings-tab.component.ts +1 -0
  8. package/src/components/settings/context-settings.component.html +87 -0
  9. package/src/components/settings/context-settings.component.scss +133 -0
  10. package/src/components/settings/context-settings.component.ts +91 -0
  11. package/src/components/settings/provider-config.component.ts +12 -6
  12. package/src/i18n/translations/en-US.ts +27 -1
  13. package/src/i18n/translations/ja-JP.ts +27 -1
  14. package/src/i18n/translations/zh-CN.ts +27 -1
  15. package/src/i18n/types.ts +28 -0
  16. package/src/index.ts +6 -0
  17. package/src/services/chat/chat-session.service.ts +91 -2
  18. package/src/services/context/manager.ts +33 -2
  19. package/src/services/core/ai-assistant.service.ts +35 -11
  20. package/src/services/core/config-provider.service.ts +66 -0
  21. package/src/services/providers/anthropic-provider.service.ts +12 -4
  22. package/src/services/providers/glm-provider.service.ts +12 -4
  23. package/src/services/providers/minimax-provider.service.ts +12 -4
  24. package/src/types/ai.types.ts +3 -3
  25. package/src/types/provider.types.ts +1 -0
  26. package/dist/components/chat/ai-sidebar.component.d.ts +0 -160
  27. package/dist/components/chat/chat-input.component.d.ts +0 -69
  28. package/dist/components/chat/chat-interface.component.d.ts +0 -124
  29. package/dist/components/chat/chat-message.component.d.ts +0 -53
  30. package/dist/components/chat/chat-settings.component.d.ts +0 -72
  31. package/dist/components/common/error-message.component.d.ts +0 -11
  32. package/dist/components/common/loading-spinner.component.d.ts +0 -4
  33. package/dist/components/security/consent-dialog.component.d.ts +0 -11
  34. package/dist/components/security/password-prompt.component.d.ts +0 -10
  35. package/dist/components/security/risk-confirm-dialog.component.d.ts +0 -36
  36. package/dist/components/settings/ai-settings-tab.component.d.ts +0 -82
  37. package/dist/components/settings/general-settings.component.d.ts +0 -94
  38. package/dist/components/settings/provider-config.component.d.ts +0 -300
  39. package/dist/components/settings/security-settings.component.d.ts +0 -33
  40. package/dist/components/terminal/ai-toolbar-button.component.d.ts +0 -10
  41. package/dist/components/terminal/command-preview.component.d.ts +0 -53
  42. package/dist/components/terminal/command-suggestion.component.d.ts +0 -16
  43. package/dist/i18n/index.d.ts +0 -48
  44. package/dist/i18n/translations/en-US.d.ts +0 -5
  45. package/dist/i18n/translations/ja-JP.d.ts +0 -5
  46. package/dist/i18n/translations/zh-CN.d.ts +0 -5
  47. package/dist/i18n/types.d.ts +0 -198
  48. package/dist/index-full.d.ts +0 -8
  49. package/dist/index-minimal.d.ts +0 -3
  50. package/dist/index.d.ts +0 -12
  51. package/dist/main.d.ts +0 -8
  52. package/dist/providers/tabby/ai-config.provider.d.ts +0 -70
  53. package/dist/providers/tabby/ai-hotkey.provider.d.ts +0 -15
  54. package/dist/providers/tabby/ai-settings-tab.provider.d.ts +0 -11
  55. package/dist/providers/tabby/ai-toolbar-button.provider.d.ts +0 -16
  56. package/dist/services/chat/ai-sidebar.service.d.ts +0 -111
  57. package/dist/services/chat/chat-history.service.d.ts +0 -145
  58. package/dist/services/chat/chat-session.service.d.ts +0 -113
  59. package/dist/services/chat/command-generator.service.d.ts +0 -49
  60. package/dist/services/context/compaction.d.ts +0 -90
  61. package/dist/services/context/manager.d.ts +0 -69
  62. package/dist/services/context/memory.d.ts +0 -116
  63. package/dist/services/context/token-budget.d.ts +0 -105
  64. package/dist/services/core/ai-assistant.service.d.ts +0 -127
  65. package/dist/services/core/ai-provider-manager.service.d.ts +0 -119
  66. package/dist/services/core/checkpoint.service.d.ts +0 -130
  67. package/dist/services/core/config-provider.service.d.ts +0 -137
  68. package/dist/services/core/logger.service.d.ts +0 -21
  69. package/dist/services/core/theme.service.d.ts +0 -53
  70. package/dist/services/core/toast.service.d.ts +0 -15
  71. package/dist/services/platform/escape-sequence.service.d.ts +0 -132
  72. package/dist/services/platform/platform-detection.service.d.ts +0 -146
  73. package/dist/services/providers/anthropic-provider.service.d.ts +0 -44
  74. package/dist/services/providers/base-provider.service.d.ts +0 -142
  75. package/dist/services/providers/glm-provider.service.d.ts +0 -96
  76. package/dist/services/providers/minimax-provider.service.d.ts +0 -102
  77. package/dist/services/providers/ollama-provider.service.d.ts +0 -76
  78. package/dist/services/providers/openai-compatible.service.d.ts +0 -44
  79. package/dist/services/providers/openai-provider.service.d.ts +0 -43
  80. package/dist/services/providers/vllm-provider.service.d.ts +0 -82
  81. package/dist/services/security/consent-manager.service.d.ts +0 -65
  82. package/dist/services/security/password-manager.service.d.ts +0 -67
  83. package/dist/services/security/risk-assessment.service.d.ts +0 -65
  84. package/dist/services/security/security-validator.service.d.ts +0 -36
  85. package/dist/services/terminal/buffer-analyzer.service.d.ts +0 -128
  86. package/dist/services/terminal/command-analyzer.service.d.ts +0 -20
  87. package/dist/services/terminal/context-menu.service.d.ts +0 -24
  88. package/dist/services/terminal/hotkey.service.d.ts +0 -28
  89. package/dist/services/terminal/terminal-context.service.d.ts +0 -100
  90. package/dist/services/terminal/terminal-manager.service.d.ts +0 -185
  91. package/dist/services/terminal/terminal-tools.service.d.ts +0 -79
  92. package/dist/types/ai.types.d.ts +0 -199
  93. package/dist/types/provider.types.d.ts +0 -105
  94. package/dist/types/security.types.d.ts +0 -85
  95. package/dist/types/terminal.types.d.ts +0 -150
  96. package/dist/utils/encryption.utils.d.ts +0 -83
  97. package/dist/utils/formatting.utils.d.ts +0 -106
  98. package/dist/utils/validation.utils.d.ts +0 -83
  99. package/jest.config.js +0 -47
  100. package/webpack-docker.config.js +0 -42
  101. package/webpack.config.js +0 -81
@@ -1,185 +0,0 @@
1
- import { NgZone } from '@angular/core';
2
- import { Observable, Subscription } from 'rxjs';
3
- import { AppService } from 'tabby-core';
4
- import { BaseTerminalTabComponent } from 'tabby-terminal';
5
- import { LoggerService } from '../core/logger.service';
6
- type TerminalTab = BaseTerminalTabComponent<any>;
7
- /**
8
- * 终端信息接口
9
- */
10
- export interface TerminalInfo {
11
- id: string;
12
- title: string;
13
- isActive: boolean;
14
- cwd?: string;
15
- }
16
- /**
17
- * AI感知的终端上下文信息
18
- */
19
- export interface TerminalContext {
20
- terminalId: string;
21
- currentDirectory: string;
22
- activeShell: string;
23
- prompt: string;
24
- lastCommand?: string;
25
- processes: ProcessInfo[];
26
- environment: Record<string, string>;
27
- timestamp: number;
28
- }
29
- /**
30
- * 进程信息
31
- */
32
- export interface ProcessInfo {
33
- pid: number;
34
- name: string;
35
- command: string;
36
- status: 'running' | 'sleeping' | 'stopped';
37
- cpu?: number;
38
- memory?: number;
39
- }
40
- /**
41
- * 终端输出事件
42
- */
43
- export interface TerminalOutputEvent {
44
- terminalId: string;
45
- data: string;
46
- timestamp: number;
47
- type: 'output' | 'command' | 'error' | 'prompt';
48
- }
49
- /**
50
- * 终端管理服务
51
- * 封装 Tabby 终端 API,提供读取、写入和管理终端的能力
52
- */
53
- export declare class TerminalManagerService {
54
- private app;
55
- private logger;
56
- private zone;
57
- private outputSubscriptions;
58
- private outputSubject;
59
- private terminalChangeSubject;
60
- private contextCache;
61
- private outputEventSubject;
62
- private processMonitoringSubject;
63
- private promptDetectionSubject;
64
- private monitoringIntervals;
65
- outputEvent$: Observable<TerminalOutputEvent>;
66
- processMonitoring$: Observable<{
67
- terminalId: string;
68
- processes: ProcessInfo[];
69
- }>;
70
- promptDetection$: Observable<{
71
- terminalId: string;
72
- prompt: string;
73
- }>;
74
- constructor(app: AppService, logger: LoggerService, zone: NgZone);
75
- /**
76
- * 获取当前活动终端
77
- * 注意:Tabby 将终端包装在 SplitTabComponent 中
78
- */
79
- getActiveTerminal(): TerminalTab | null;
80
- /**
81
- * 获取所有终端标签
82
- * 注意:Tabby 将终端包装在 SplitTabComponent 中
83
- */
84
- getAllTerminals(): TerminalTab[];
85
- /**
86
- * 获取所有终端信息
87
- */
88
- getAllTerminalInfo(): TerminalInfo[];
89
- /**
90
- * 向当前终端发送命令
91
- */
92
- sendCommand(command: string, execute?: boolean): boolean;
93
- /**
94
- * 向指定终端发送命令
95
- */
96
- sendCommandToTerminal(terminal: TerminalTab, command: string, execute?: boolean): boolean;
97
- /**
98
- * 向指定索引的终端发送命令
99
- */
100
- sendCommandToIndex(index: number, command: string, execute?: boolean): boolean;
101
- /**
102
- * 获取当前终端的选中文本
103
- */
104
- getSelection(): string;
105
- /**
106
- * 获取终端工作目录
107
- */
108
- getTerminalCwd(terminal?: TerminalTab): string | undefined;
109
- /**
110
- * 切换到指定终端
111
- * 修复:需要选择顶层 Tab (SplitTabComponent),而非内部终端
112
- */
113
- focusTerminal(index: number): boolean;
114
- /**
115
- * 订阅当前终端输出
116
- */
117
- subscribeToActiveTerminalOutput(callback: (data: string) => void): Subscription | null;
118
- /**
119
- * 订阅指定终端输出
120
- */
121
- subscribeToTerminalOutput(terminal: TerminalTab, callback: (data: string) => void): Subscription;
122
- /**
123
- * 获取终端变化事件流
124
- */
125
- onTerminalChange(): Observable<void>;
126
- /**
127
- * 获取终端数量
128
- */
129
- getTerminalCount(): number;
130
- /**
131
- * 检查是否有可用终端
132
- */
133
- hasTerminal(): boolean;
134
- /**
135
- * 检查标签页是否是终端
136
- * 使用特征检测避免 instanceof 在 webpack 打包后失效
137
- */
138
- private isTerminalTab;
139
- /**
140
- * 清理资源
141
- */
142
- dispose(): void;
143
- /**
144
- * 检测当前目录
145
- */
146
- detectCurrentDirectory(terminal?: TerminalTab): Promise<string>;
147
- /**
148
- * 获取活跃Shell
149
- */
150
- getActiveShell(terminal?: TerminalTab): Promise<string>;
151
- /**
152
- * 监控输出流
153
- */
154
- monitorOutput(terminal?: TerminalTab): Observable<TerminalOutputEvent>;
155
- /**
156
- * 检测提示符
157
- */
158
- getPrompt(terminal?: TerminalTab): Promise<string>;
159
- /**
160
- * 追踪进程
161
- */
162
- trackProcesses(terminal?: TerminalTab): Promise<ProcessInfo[]>;
163
- /**
164
- * 获取终端AI上下文
165
- */
166
- getTerminalContext(terminal?: TerminalTab): Promise<TerminalContext>;
167
- /**
168
- * 清理终端上下文缓存
169
- */
170
- clearContextCache(terminalId?: string): void;
171
- /**
172
- * 开始持续监控终端
173
- */
174
- startContinuousMonitoring(intervalMs?: number): void;
175
- /**
176
- * 停止持续监控
177
- */
178
- stopContinuousMonitoring(terminalId?: string): void;
179
- private getTerminalId;
180
- private detectOutputType;
181
- private formatPrompt;
182
- private extractCommandOutput;
183
- private filterEnvVariables;
184
- }
185
- export {};
@@ -1,79 +0,0 @@
1
- import { TerminalManagerService } from './terminal-manager.service';
2
- import { LoggerService } from '../core/logger.service';
3
- /**
4
- * 终端工具定义
5
- */
6
- export interface ToolDefinition {
7
- name: string;
8
- description: string;
9
- input_schema: {
10
- type: string;
11
- properties: Record<string, any>;
12
- required?: string[];
13
- };
14
- }
15
- /**
16
- * 工具调用请求
17
- */
18
- export interface ToolCall {
19
- id: string;
20
- name: string;
21
- input: Record<string, any>;
22
- }
23
- /**
24
- * 工具调用结果
25
- */
26
- export interface ToolResult {
27
- tool_use_id: string;
28
- content: string;
29
- is_error?: boolean;
30
- }
31
- /**
32
- * 终端工具服务
33
- * 定义 AI 可调用的终端相关工具
34
- */
35
- export declare class TerminalToolsService {
36
- private terminalManager;
37
- private logger;
38
- private tools;
39
- private outputBuffer;
40
- private maxBufferLines;
41
- constructor(terminalManager: TerminalManagerService, logger: LoggerService);
42
- /**
43
- * 获取所有工具定义
44
- */
45
- getToolDefinitions(): ToolDefinition[];
46
- /**
47
- * 执行工具调用
48
- */
49
- executeToolCall(toolCall: ToolCall): Promise<ToolResult>;
50
- /**
51
- * 从 xterm buffer 读取内容
52
- * 包含详细调试日志以定位白屏问题
53
- */
54
- private readFromXtermBuffer;
55
- /**
56
- * 读取终端输出
57
- */
58
- private readTerminalOutput;
59
- /**
60
- * 写入终端 - 带执行反馈
61
- */
62
- private writeToTerminal;
63
- /**
64
- * 获取终端列表
65
- */
66
- private getTerminalList;
67
- /**
68
- * 获取终端工作目录
69
- */
70
- private getTerminalCwd;
71
- /**
72
- * 获取终端选中文本
73
- */
74
- private getTerminalSelection;
75
- /**
76
- * 切换终端焦点
77
- */
78
- private focusTerminal;
79
- }
@@ -1,199 +0,0 @@
1
- /**
2
- * AI相关类型定义
3
- */
4
- export declare enum MessageRole {
5
- USER = "user",
6
- ASSISTANT = "assistant",
7
- SYSTEM = "system"
8
- }
9
- export interface ChatMessage {
10
- id: string;
11
- role: MessageRole;
12
- content: string;
13
- timestamp: Date;
14
- metadata?: Record<string, any>;
15
- }
16
- export interface ChatRequest {
17
- messages: ChatMessage[];
18
- systemPrompt?: string;
19
- maxTokens?: number;
20
- temperature?: number;
21
- stream?: boolean;
22
- model?: string;
23
- tools?: any[];
24
- enableTools?: boolean;
25
- }
26
- export interface ChatResponse {
27
- message: ChatMessage;
28
- usage?: {
29
- promptTokens: number;
30
- completionTokens: number;
31
- totalTokens: number;
32
- };
33
- }
34
- export interface CommandRequest {
35
- naturalLanguage: string;
36
- context?: {
37
- currentDirectory?: string;
38
- operatingSystem?: string;
39
- shell?: string;
40
- environment?: Record<string, string>;
41
- };
42
- constraints?: {
43
- maxLength?: number;
44
- allowedCommands?: string[];
45
- forbiddenCommands?: string[];
46
- };
47
- }
48
- export interface CommandResponse {
49
- command: string;
50
- explanation: string;
51
- confidence: number;
52
- alternatives?: {
53
- command: string;
54
- explanation: string;
55
- confidence: number;
56
- }[];
57
- }
58
- export interface ExplainRequest {
59
- command: string;
60
- context?: {
61
- currentDirectory?: string;
62
- operatingSystem?: string;
63
- };
64
- }
65
- export interface ExplainResponse {
66
- explanation: string;
67
- breakdown: {
68
- part: string;
69
- description: string;
70
- }[];
71
- examples?: string[];
72
- }
73
- export interface AnalysisRequest {
74
- output: string;
75
- command: string;
76
- exitCode?: number;
77
- context?: {
78
- timestamp?: Date;
79
- workingDirectory?: string;
80
- };
81
- }
82
- export interface AnalysisResponse {
83
- summary: string;
84
- insights: string[];
85
- issues?: {
86
- severity: 'warning' | 'error' | 'info';
87
- message: string;
88
- suggestion?: string;
89
- }[];
90
- success: boolean;
91
- }
92
- export declare enum ProviderCapability {
93
- CHAT = "chat",
94
- COMMAND_GENERATION = "command_generation",
95
- COMMAND_EXPLANATION = "command_explanation",
96
- REASONING = "reasoning",
97
- FUNCTION_CALL = "function_call",
98
- STREAMING = "streaming"
99
- }
100
- export declare enum HealthStatus {
101
- HEALTHY = "healthy",
102
- DEGRADED = "degraded",
103
- UNHEALTHY = "unhealthy"
104
- }
105
- export interface ValidationResult {
106
- valid: boolean;
107
- errors?: string[];
108
- warnings?: string[];
109
- }
110
- export interface ApiMessage {
111
- role: 'user' | 'assistant' | 'system';
112
- content: string | ContentBlock[];
113
- ts: number;
114
- isSummary?: boolean;
115
- condenseId?: string;
116
- condenseParent?: string;
117
- isTruncationMarker?: boolean;
118
- truncationId?: string;
119
- truncationParent?: string;
120
- }
121
- export interface ContentBlock {
122
- type: 'text' | 'tool_use' | 'tool_result';
123
- text?: string;
124
- id?: string;
125
- name?: string;
126
- input?: Record<string, any>;
127
- tool_use_id?: string;
128
- content?: string;
129
- }
130
- export interface TokenUsage {
131
- input: number;
132
- output: number;
133
- cacheRead: number;
134
- cacheWrite: number;
135
- }
136
- export interface SessionState {
137
- id: string;
138
- messages: ApiMessage[];
139
- tokens: TokenUsage;
140
- createdAt: number;
141
- updatedAt: number;
142
- checkpoints: string[];
143
- }
144
- export interface ContextConfig {
145
- maxContextTokens: number;
146
- reservedOutputTokens: number;
147
- compactThreshold: number;
148
- pruneThreshold: number;
149
- messagesToKeep: number;
150
- bufferPercentage: number;
151
- }
152
- export declare const DEFAULT_CONTEXT_CONFIG: ContextConfig;
153
- export interface CompactionResult {
154
- success: boolean;
155
- messages: ApiMessage[];
156
- summary?: string;
157
- condenseId?: string;
158
- tokensSaved: number;
159
- cost: number;
160
- error?: string;
161
- }
162
- export interface PruneResult {
163
- pruned: boolean;
164
- tokensSaved: number;
165
- partsCompacted: number;
166
- }
167
- export interface TruncationResult {
168
- messages: ApiMessage[];
169
- truncationId: string;
170
- messagesRemoved: number;
171
- }
172
- export interface ExtendedChatMessage extends ChatMessage {
173
- isSummary?: boolean;
174
- condenseId?: string;
175
- condenseParent?: string;
176
- isTruncationMarker?: boolean;
177
- truncationId?: string;
178
- truncationParent?: string;
179
- tokenUsage?: TokenUsage;
180
- }
181
- export interface Checkpoint {
182
- id: string;
183
- sessionId: string;
184
- messages: ApiMessage[];
185
- summary: string;
186
- createdAt: number;
187
- tokenUsage: TokenUsage;
188
- }
189
- export interface StreamEvent {
190
- type: 'text_delta' | 'tool_use_start' | 'tool_use_delta' | 'tool_use_end' | 'message_end' | 'error';
191
- textDelta?: string;
192
- toolCall?: {
193
- id: string;
194
- name: string;
195
- input: any;
196
- };
197
- error?: string;
198
- message?: ChatMessage;
199
- }
@@ -1,105 +0,0 @@
1
- /**
2
- * AI提供商相关类型定义
3
- */
4
- import { ProviderCapability, HealthStatus, ValidationResult } from './ai.types';
5
- import { ChatRequest, ChatResponse, CommandRequest, CommandResponse, ExplainRequest, ExplainResponse, AnalysisRequest, AnalysisResponse } from './ai.types';
6
- export { ProviderCapability, HealthStatus, ValidationResult };
7
- export { ChatRequest, ChatResponse, CommandRequest, CommandResponse, ExplainRequest, ExplainResponse, AnalysisRequest, AnalysisResponse };
8
- export interface AuthConfig {
9
- type: 'apiKey' | 'bearer' | 'basic' | 'oauth' | 'none';
10
- credentials: Record<string, string>;
11
- requiresEncryption?: boolean;
12
- }
13
- export interface ProviderConfig {
14
- name: string;
15
- displayName: string;
16
- apiKey?: string;
17
- baseURL?: string;
18
- model?: string;
19
- maxTokens?: number;
20
- temperature?: number;
21
- timeout?: number;
22
- retries?: number;
23
- authConfig?: AuthConfig;
24
- enabled?: boolean;
25
- }
26
- export interface ProviderInfo {
27
- name: string;
28
- displayName: string;
29
- version: string;
30
- description: string;
31
- capabilities: ProviderCapability[];
32
- authConfig: AuthConfig;
33
- supportedModels: string[];
34
- pricing?: {
35
- type: 'free' | 'paid' | 'freemium';
36
- currency: string;
37
- unit: string;
38
- costPerUnit?: number;
39
- };
40
- documentation?: string;
41
- }
42
- export declare abstract class BaseAiProvider {
43
- abstract readonly name: string;
44
- abstract readonly displayName: string;
45
- abstract readonly capabilities: ProviderCapability[];
46
- abstract readonly authConfig: AuthConfig;
47
- protected config: ProviderConfig | null;
48
- /**
49
- * 配置提供商
50
- */
51
- abstract configure(config: ProviderConfig): void;
52
- /**
53
- * 聊天功能
54
- */
55
- abstract chat(request: ChatRequest): Promise<ChatResponse>;
56
- /**
57
- * 生成命令
58
- */
59
- abstract generateCommand(request: CommandRequest): Promise<CommandResponse>;
60
- /**
61
- * 解释命令
62
- */
63
- abstract explainCommand(request: ExplainRequest): Promise<ExplainResponse>;
64
- /**
65
- * 分析结果
66
- */
67
- abstract analyzeResult(request: AnalysisRequest): Promise<AnalysisResponse>;
68
- /**
69
- * 健康检查
70
- */
71
- abstract healthCheck(): Promise<HealthStatus>;
72
- /**
73
- * 验证配置
74
- */
75
- abstract validateConfig(): ValidationResult;
76
- /**
77
- * 获取提供商信息
78
- */
79
- getInfo(): ProviderInfo;
80
- /**
81
- * 检查是否支持指定能力
82
- */
83
- supportsCapability(capability: ProviderCapability): boolean;
84
- /**
85
- * 获取当前配置
86
- */
87
- getConfig(): ProviderConfig | null;
88
- }
89
- export interface ProviderManager {
90
- registerProvider(provider: BaseAiProvider): void;
91
- unregisterProvider(name: string): void;
92
- getProvider(name: string): BaseAiProvider | undefined;
93
- getAllProviders(): BaseAiProvider[];
94
- getActiveProvider(): BaseAiProvider | undefined;
95
- setActiveProvider(name: string): boolean;
96
- getProviderInfo(name: string): ProviderInfo | undefined;
97
- getAllProviderInfo(): ProviderInfo[];
98
- }
99
- export interface ProviderEvent {
100
- type: 'connected' | 'disconnected' | 'error' | 'config_changed' | 'health_changed';
101
- provider: string;
102
- timestamp: Date;
103
- data?: any;
104
- }
105
- export type ProviderEventListener = (event: ProviderEvent) => void;
@@ -1,85 +0,0 @@
1
- /**
2
- * 安全相关类型定义
3
- */
4
- export declare enum RiskLevel {
5
- LOW = "low",
6
- MEDIUM = "medium",
7
- HIGH = "high",
8
- CRITICAL = "critical"
9
- }
10
- export interface RiskAssessment {
11
- level: RiskLevel;
12
- score: number;
13
- reasons: string[];
14
- patterns: {
15
- pattern: string;
16
- match: string;
17
- severity: RiskLevel;
18
- }[];
19
- suggestions?: string[];
20
- }
21
- export interface ValidationResult {
22
- approved: boolean;
23
- riskLevel: RiskLevel;
24
- skipConfirmation?: boolean;
25
- reason?: string;
26
- timestamp?: Date;
27
- }
28
- export interface StoredConsent {
29
- commandHash: string;
30
- riskLevel: RiskLevel;
31
- timestamp: number;
32
- expiry: number;
33
- userId?: string;
34
- }
35
- export interface PasswordValidationResult {
36
- valid: boolean;
37
- attempts: number;
38
- locked: boolean;
39
- lockExpiry?: number;
40
- }
41
- export interface SecurityConfig {
42
- enablePasswordProtection: boolean;
43
- passwordHash?: string;
44
- consentExpiryDays: number;
45
- maxConsentAge: number;
46
- enableRiskAssessment: boolean;
47
- autoApproveLowRisk: boolean;
48
- promptForMediumRisk: boolean;
49
- requirePasswordForHighRisk: boolean;
50
- dangerousPatterns: string[];
51
- allowedCommands: string[];
52
- forbiddenCommands: string[];
53
- }
54
- export interface SecurityEvent {
55
- type: 'risk_assessed' | 'consent_given' | 'consent_rejected' | 'password_verified' | 'password_failed' | 'command_blocked' | 'command_allowed';
56
- timestamp: Date;
57
- command?: string;
58
- riskLevel?: RiskLevel;
59
- details?: Record<string, any>;
60
- }
61
- export interface SecurityStats {
62
- totalCommandsEvaluated: number;
63
- totalCommandsBlocked: number;
64
- totalConsentsGiven: number;
65
- totalConsentsRejected: number;
66
- totalPasswordAttempts: number;
67
- failedPasswordAttempts: number;
68
- averageRiskScore: number;
69
- riskLevelDistribution: {
70
- low: number;
71
- medium: number;
72
- high: number;
73
- critical: number;
74
- };
75
- }
76
- export interface PasswordPolicy {
77
- minLength: number;
78
- maxLength: number;
79
- requireUppercase: boolean;
80
- requireLowercase: boolean;
81
- requireNumbers: boolean;
82
- requireSpecialChars: boolean;
83
- prohibitCommonPasswords: boolean;
84
- prohibitReuse: number;
85
- }