@monaco-ai-editor/core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1074 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +295 -0
- package/dist/index.d.ts +295 -0
- package/dist/index.js +1032 -0
- package/dist/index.js.map +1 -0
- package/package.json +36 -0
- package/src/ai/aiCompletion.ts +310 -0
- package/src/bus/EditorBus.ts +102 -0
- package/src/bus/EventEmitter.ts +33 -0
- package/src/completion/sqlCompletion.ts +151 -0
- package/src/constants.ts +71 -0
- package/src/controllers/AiChatController.ts +198 -0
- package/src/controllers/EditorController.ts +231 -0
- package/src/index.ts +47 -0
- package/src/types.ts +70 -0
package/src/types.ts
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type * as MonacoType from 'monaco-editor';
|
|
2
|
+
|
|
3
|
+
/** AI API 配置(OpenAI 兼容协议) */
|
|
4
|
+
export interface ApiConfig {
|
|
5
|
+
baseUrl: string;
|
|
6
|
+
apiKey: string;
|
|
7
|
+
model: string;
|
|
8
|
+
/** true = 流式输出(默认),false = 一次性返回 */
|
|
9
|
+
streamMode?: boolean;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/** SQL 表结构 Schema:{ 表名: [列名, ...] } */
|
|
13
|
+
export type SqlSchema = Record<string, string[]>;
|
|
14
|
+
|
|
15
|
+
/** 待显示的内联补全(用于 AI 幽灵文本) */
|
|
16
|
+
export interface PendingCompletion {
|
|
17
|
+
lineNumber: number;
|
|
18
|
+
column: number;
|
|
19
|
+
insertText: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** 一条聊天消息 */
|
|
23
|
+
export interface ChatMessage {
|
|
24
|
+
id: string;
|
|
25
|
+
role: 'user' | 'assistant';
|
|
26
|
+
content: string;
|
|
27
|
+
isStreaming?: boolean;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** 编辑器状态快照 */
|
|
31
|
+
export interface EditorSnapshot {
|
|
32
|
+
value: string;
|
|
33
|
+
language: string;
|
|
34
|
+
theme: string;
|
|
35
|
+
cursorLine: number;
|
|
36
|
+
cursorColumn: number;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** 补全上下文,传给自定义 CompletionProvider */
|
|
40
|
+
export interface CompletionContext {
|
|
41
|
+
monaco: typeof MonacoType;
|
|
42
|
+
model: MonacoType.editor.ITextModel;
|
|
43
|
+
position: MonacoType.Position;
|
|
44
|
+
lineText: string;
|
|
45
|
+
/** 光标前的单词 */
|
|
46
|
+
currentWord: string;
|
|
47
|
+
fullText: string;
|
|
48
|
+
/** Monaco 自带的 triggerKind / triggerCharacter */
|
|
49
|
+
triggerCharacter?: string;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* 扩展点:自定义补全提供者。
|
|
54
|
+
* 用户通过 EditorController 注册,运行时被聚合调度。
|
|
55
|
+
*/
|
|
56
|
+
export interface CompletionProvider {
|
|
57
|
+
id: string;
|
|
58
|
+
/** 适用的语言(不传则全部语言) */
|
|
59
|
+
languages?: string[];
|
|
60
|
+
/** 触发字符(默认无) */
|
|
61
|
+
triggerCharacters?: string[];
|
|
62
|
+
/** 判断是否触发(同步) */
|
|
63
|
+
shouldTrigger?: (ctx: CompletionContext) => boolean;
|
|
64
|
+
/** 提供建议(可异步) */
|
|
65
|
+
provide: (
|
|
66
|
+
ctx: CompletionContext,
|
|
67
|
+
) =>
|
|
68
|
+
| Promise<MonacoType.languages.CompletionItem[]>
|
|
69
|
+
| MonacoType.languages.CompletionItem[];
|
|
70
|
+
}
|