@opensumi/ide-ai-native 3.8.3-next-1741848368.0 → 3.8.3-next-1741917543.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/lib/browser/chat/chat-agent.service.d.ts +1 -1
- package/lib/browser/chat/chat-agent.service.d.ts.map +1 -1
- package/lib/browser/chat/chat-agent.service.js +7 -7
- package/lib/browser/chat/chat-agent.service.js.map +1 -1
- package/lib/browser/chat/chat.view.d.ts.map +1 -1
- package/lib/browser/chat/chat.view.js +31 -69
- package/lib/browser/chat/chat.view.js.map +1 -1
- package/lib/browser/components/{chat-context/context-selector.d.ts → ChatContext/ContextSelector.d.ts} +1 -1
- package/lib/browser/components/ChatContext/ContextSelector.d.ts.map +1 -0
- package/lib/browser/components/{chat-context/context-selector.js → ChatContext/ContextSelector.js} +1 -1
- package/lib/browser/components/ChatContext/ContextSelector.js.map +1 -0
- package/lib/browser/components/ChatContext/index.d.ts.map +1 -0
- package/lib/browser/components/{chat-context → ChatContext}/index.js +2 -2
- package/lib/browser/components/ChatContext/index.js.map +1 -0
- package/lib/browser/components/ChatEditor.d.ts +2 -11
- package/lib/browser/components/ChatEditor.d.ts.map +1 -1
- package/lib/browser/components/ChatEditor.js +6 -66
- package/lib/browser/components/ChatEditor.js.map +1 -1
- package/lib/browser/components/ChatHistory.d.ts.map +1 -1
- package/lib/browser/components/ChatHistory.js +15 -15
- package/lib/browser/components/ChatHistory.js.map +1 -1
- package/lib/browser/components/ChatThinking.d.ts +1 -1
- package/lib/browser/components/ChatThinking.d.ts.map +1 -1
- package/lib/browser/components/ChatThinking.js +2 -8
- package/lib/browser/components/ChatThinking.js.map +1 -1
- package/lib/browser/components/change-list.module.less +0 -2
- package/lib/browser/components/chat-history.module.less +16 -33
- package/lib/browser/components/components.module.less +2 -32
- package/lib/browser/context/llm-context.service.d.ts +2 -10
- package/lib/browser/context/llm-context.service.d.ts.map +1 -1
- package/lib/browser/context/llm-context.service.js +2 -71
- package/lib/browser/context/llm-context.service.js.map +1 -1
- package/lib/browser/mcp/base-apply.service.d.ts +1 -1
- package/lib/browser/mcp/base-apply.service.d.ts.map +1 -1
- package/lib/browser/mcp/base-apply.service.js +9 -2
- package/lib/browser/mcp/base-apply.service.js.map +1 -1
- package/lib/common/llm-context.d.ts +1 -15
- package/lib/common/llm-context.d.ts.map +1 -1
- package/lib/common/llm-context.js.map +1 -1
- package/lib/common/prompts/context-prompt-provider.d.ts +2 -12
- package/lib/common/prompts/context-prompt-provider.d.ts.map +1 -1
- package/lib/common/prompts/context-prompt-provider.js +30 -95
- package/lib/common/prompts/context-prompt-provider.js.map +1 -1
- package/lib/common/utils.d.ts +0 -1
- package/lib/common/utils.d.ts.map +1 -1
- package/lib/common/utils.js +1 -9
- package/lib/common/utils.js.map +1 -1
- package/lib/node/mcp-server.sse.d.ts.map +1 -1
- package/lib/node/mcp-server.sse.js +2 -2
- package/lib/node/mcp-server.sse.js.map +1 -1
- package/package.json +23 -23
- package/src/browser/chat/chat-agent.service.ts +7 -7
- package/src/browser/chat/chat.view.tsx +24 -81
- package/src/browser/components/{chat-context → ChatContext}/index.tsx +1 -1
- package/src/browser/components/ChatEditor.tsx +9 -126
- package/src/browser/components/ChatHistory.tsx +30 -16
- package/src/browser/components/ChatThinking.tsx +4 -10
- package/src/browser/components/change-list.module.less +0 -2
- package/src/browser/components/chat-history.module.less +16 -33
- package/src/browser/components/components.module.less +2 -32
- package/src/browser/context/llm-context.service.ts +3 -81
- package/src/browser/mcp/base-apply.service.ts +9 -2
- package/src/common/llm-context.ts +1 -16
- package/src/common/prompts/context-prompt-provider.ts +36 -130
- package/src/common/utils.ts +0 -8
- package/src/node/mcp-server.sse.ts +2 -1
- package/lib/browser/components/ChatMentionInput.d.ts +0 -25
- package/lib/browser/components/ChatMentionInput.d.ts.map +0 -1
- package/lib/browser/components/ChatMentionInput.js +0 -229
- package/lib/browser/components/ChatMentionInput.js.map +0 -1
- package/lib/browser/components/chat-context/context-selector.d.ts.map +0 -1
- package/lib/browser/components/chat-context/context-selector.js.map +0 -1
- package/lib/browser/components/chat-context/index.d.ts.map +0 -1
- package/lib/browser/components/chat-context/index.js.map +0 -1
- package/lib/browser/components/mention-input/mention-input.d.ts +0 -5
- package/lib/browser/components/mention-input/mention-input.d.ts.map +0 -1
- package/lib/browser/components/mention-input/mention-input.js +0 -763
- package/lib/browser/components/mention-input/mention-input.js.map +0 -1
- package/lib/browser/components/mention-input/mention-input.module.less +0 -333
- package/lib/browser/components/mention-input/mention-item.d.ts +0 -10
- package/lib/browser/components/mention-input/mention-item.d.ts.map +0 -1
- package/lib/browser/components/mention-input/mention-item.js +0 -16
- package/lib/browser/components/mention-input/mention-item.js.map +0 -1
- package/lib/browser/components/mention-input/mention-panel.d.ts +0 -15
- package/lib/browser/components/mention-input/mention-panel.d.ts.map +0 -1
- package/lib/browser/components/mention-input/mention-panel.js +0 -49
- package/lib/browser/components/mention-input/mention-panel.js.map +0 -1
- package/lib/browser/components/mention-input/types.d.ts +0 -78
- package/lib/browser/components/mention-input/types.d.ts.map +0 -1
- package/lib/browser/components/mention-input/types.js +0 -16
- package/lib/browser/components/mention-input/types.js.map +0 -1
- package/src/browser/components/ChatMentionInput.tsx +0 -276
- package/src/browser/components/mention-input/mention-input.module.less +0 -333
- package/src/browser/components/mention-input/mention-input.tsx +0 -952
- package/src/browser/components/mention-input/mention-item.tsx +0 -24
- package/src/browser/components/mention-input/mention-panel.tsx +0 -89
- package/src/browser/components/mention-input/types.ts +0 -84
- /package/lib/browser/components/{chat-context → ChatContext}/index.d.ts +0 -0
- /package/lib/browser/components/{chat-context → ChatContext}/style.module.less +0 -0
- /package/src/browser/components/{chat-context/context-selector.tsx → ChatContext/ContextSelector.tsx} +0 -0
- /package/src/browser/components/{chat-context → ChatContext}/style.module.less +0 -0
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import cls from 'classnames';
|
|
2
|
-
import * as React from 'react';
|
|
3
|
-
|
|
4
|
-
import { Icon, getIcon } from '@opensumi/ide-core-browser/lib/components';
|
|
5
|
-
|
|
6
|
-
import styles from './mention-input.module.less';
|
|
7
|
-
import { MentionItem as MentionItemType } from './types';
|
|
8
|
-
|
|
9
|
-
interface MentionItemProps {
|
|
10
|
-
item: MentionItemType;
|
|
11
|
-
isActive: boolean;
|
|
12
|
-
onClick: (item: MentionItemType) => void;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export const MentionItem: React.FC<MentionItemProps> = ({ item, isActive, onClick }) => (
|
|
16
|
-
<div className={`${styles.mention_item} ${isActive ? styles.active : ''}`} onClick={() => onClick(item)}>
|
|
17
|
-
<div className={styles.mention_item_left}>
|
|
18
|
-
<Icon className={cls(styles.mention_item_icon, item.icon)} />
|
|
19
|
-
<span className={styles.mention_item_text}>{item.text}</span>
|
|
20
|
-
<span className={styles.mention_item_description}>{item.description}</span>
|
|
21
|
-
</div>
|
|
22
|
-
{item.getItems && <Icon className={cls(styles.mention_item_right, getIcon('arrowright'))} />}
|
|
23
|
-
</div>
|
|
24
|
-
);
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
|
|
3
|
-
import styles from './mention-input.module.less';
|
|
4
|
-
import { MentionItem } from './mention-item';
|
|
5
|
-
import { MentionItem as MentionItemType, MentionPosition } from './types';
|
|
6
|
-
|
|
7
|
-
interface MentionPanelProps {
|
|
8
|
-
items: MentionItemType[];
|
|
9
|
-
activeIndex: number;
|
|
10
|
-
onSelectItem: (item: MentionItemType, isTriggerByClick?: boolean) => void;
|
|
11
|
-
position: MentionPosition;
|
|
12
|
-
filter: string;
|
|
13
|
-
visible: boolean;
|
|
14
|
-
level: number;
|
|
15
|
-
loading?: boolean;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export const MentionPanel: React.FC<MentionPanelProps> = ({
|
|
19
|
-
items,
|
|
20
|
-
activeIndex,
|
|
21
|
-
onSelectItem,
|
|
22
|
-
position,
|
|
23
|
-
filter,
|
|
24
|
-
visible,
|
|
25
|
-
level,
|
|
26
|
-
loading = false,
|
|
27
|
-
}) => {
|
|
28
|
-
const panelRef = React.useRef<HTMLDivElement>(null);
|
|
29
|
-
|
|
30
|
-
// 当活动项改变时滚动到可见区域
|
|
31
|
-
React.useEffect(() => {
|
|
32
|
-
if (visible && panelRef.current) {
|
|
33
|
-
const activeItem = panelRef.current.querySelector(`.${styles.mention_item}.${styles.active}`);
|
|
34
|
-
if (activeItem) {
|
|
35
|
-
activeItem.scrollIntoView({ block: 'nearest' });
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}, [activeIndex, visible]);
|
|
39
|
-
|
|
40
|
-
if (!visible) {
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// 根据过滤条件筛选项目
|
|
45
|
-
const getFilteredItems = () => {
|
|
46
|
-
let filteredItems = items;
|
|
47
|
-
|
|
48
|
-
if (level === 0) {
|
|
49
|
-
// 一级菜单根据 @ 后面的文本过滤
|
|
50
|
-
if (filter && filter.length > 1) {
|
|
51
|
-
const searchText = filter.substring(1).toLowerCase();
|
|
52
|
-
filteredItems = items.filter((item) => item.text.toLowerCase().includes(searchText));
|
|
53
|
-
}
|
|
54
|
-
} else {
|
|
55
|
-
// 二级菜单根据 @file: 后面的文本过滤
|
|
56
|
-
if (filter && filter.length > 0) {
|
|
57
|
-
filteredItems = items.filter((item) => item.text.toLowerCase().includes(filter.toLowerCase()));
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
return filteredItems;
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
const filteredItems = getFilteredItems();
|
|
65
|
-
|
|
66
|
-
if (level === 0 && filteredItems.length === 0) {
|
|
67
|
-
return null;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return (
|
|
71
|
-
<div ref={panelRef} className={styles.mention_panel} style={{ top: position.top, left: position.left }}>
|
|
72
|
-
{loading && <div className={styles.loading_bar}></div>}
|
|
73
|
-
{items.length > 0 ? (
|
|
74
|
-
<ul className={styles.mention_list}>
|
|
75
|
-
{items.map((item, index) => (
|
|
76
|
-
<MentionItem
|
|
77
|
-
key={item.id}
|
|
78
|
-
item={item}
|
|
79
|
-
isActive={index === activeIndex}
|
|
80
|
-
onClick={() => onSelectItem(item, true)}
|
|
81
|
-
/>
|
|
82
|
-
))}
|
|
83
|
-
</ul>
|
|
84
|
-
) : (
|
|
85
|
-
<div className={styles.no_results}>{loading ? '正在搜索...' : '无匹配结果'}</div>
|
|
86
|
-
)}
|
|
87
|
-
</div>
|
|
88
|
-
);
|
|
89
|
-
};
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import type { LabelService } from '@opensumi/ide-core-browser';
|
|
2
|
-
import type { IWorkspaceService } from '@opensumi/ide-workspace';
|
|
3
|
-
|
|
4
|
-
export interface MentionItem {
|
|
5
|
-
id: string;
|
|
6
|
-
type: string;
|
|
7
|
-
text: string;
|
|
8
|
-
value?: string;
|
|
9
|
-
description?: string;
|
|
10
|
-
contextId?: string;
|
|
11
|
-
icon?: string;
|
|
12
|
-
getHighestLevelItems?: () => MentionItem[];
|
|
13
|
-
getItems?: (searchText: string) => Promise<MentionItem[]>;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export interface SecondLevelMenuConfig {
|
|
17
|
-
getDefaultItems: () => MentionItem[];
|
|
18
|
-
getHighestLevelItems: () => MentionItem[];
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export interface MentionPosition {
|
|
22
|
-
top: number;
|
|
23
|
-
left: number;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export interface MentionState {
|
|
27
|
-
active: boolean;
|
|
28
|
-
startPos: number | null;
|
|
29
|
-
filter: string;
|
|
30
|
-
position: MentionPosition;
|
|
31
|
-
activeIndex: number;
|
|
32
|
-
level: number; // 0: 一级菜单, 1: 二级菜单
|
|
33
|
-
parentType: string | null; // 二级菜单的父类型
|
|
34
|
-
secondLevelFilter: string; // 二级菜单的筛选文本
|
|
35
|
-
inlineSearchActive: boolean; // 是否在输入框中进行二级搜索
|
|
36
|
-
inlineSearchStartPos: number | null; // 内联搜索的起始位置
|
|
37
|
-
loading: boolean; // 加载状态
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
interface ModelOption {
|
|
41
|
-
label: string;
|
|
42
|
-
value: string;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export enum FooterButtonPosition {
|
|
46
|
-
LEFT = 'left',
|
|
47
|
-
RIGHT = 'right',
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export enum MentionType {
|
|
51
|
-
FILE = 'file',
|
|
52
|
-
FOLDER = 'folder',
|
|
53
|
-
CODE = 'code',
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
interface FooterButton {
|
|
57
|
-
id: string;
|
|
58
|
-
icon: string;
|
|
59
|
-
title: string;
|
|
60
|
-
onClick?: () => void;
|
|
61
|
-
position: FooterButtonPosition;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
export interface FooterConfig {
|
|
65
|
-
modelOptions?: ModelOption[];
|
|
66
|
-
defaultModel?: string;
|
|
67
|
-
buttons?: FooterButton[];
|
|
68
|
-
showModelSelector?: boolean;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
export interface MentionInputProps {
|
|
72
|
-
mentionItems?: MentionItem[]; // 简化为单一菜单项配置
|
|
73
|
-
onSend?: (content: string, config?: { model: string; [key: string]: any }) => void;
|
|
74
|
-
onStop?: () => void;
|
|
75
|
-
placeholder?: string;
|
|
76
|
-
loading?: boolean;
|
|
77
|
-
onSelectionChange?: (value: string) => void;
|
|
78
|
-
footerConfig?: FooterConfig; // 新增配置项
|
|
79
|
-
mentionKeyword?: string;
|
|
80
|
-
labelService?: LabelService;
|
|
81
|
-
workspaceService?: IWorkspaceService;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
export const MENTION_KEYWORD = '@';
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|