@ahggg/dsh-side-chat 0.3.0 → 0.4.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 +18 -15
- package/README.zh-CN.md +18 -15
- package/lib/client/apply.d.ts.map +1 -1
- package/lib/client/apply.js +7 -1
- package/lib/client/apply.js.map +1 -1
- package/lib/client/panel/SelectionQuote.d.ts +6 -4
- package/lib/client/panel/SelectionQuote.d.ts.map +1 -1
- package/lib/client/panel/SelectionQuote.js +32 -9
- package/lib/client/panel/SelectionQuote.js.map +1 -1
- package/lib/client/panel/SideChatPanel.d.ts +1 -2
- package/lib/client/panel/SideChatPanel.d.ts.map +1 -1
- package/lib/client/panel/SideChatPanel.js +2 -2
- package/lib/client/panel/SideChatPanel.js.map +1 -1
- package/lib/client/panel/messages.d.ts +2 -2
- package/lib/client/panel/messages.d.ts.map +1 -1
- package/lib/client/panel/messages.js +4 -4
- package/lib/client/panel/messages.js.map +1 -1
- package/lib/client/parent-composer/ParentConversationAnnotations.d.ts +27 -0
- package/lib/client/parent-composer/ParentConversationAnnotations.d.ts.map +1 -0
- package/lib/client/parent-composer/ParentConversationAnnotations.js +97 -0
- package/lib/client/parent-composer/ParentConversationAnnotations.js.map +1 -0
- package/lib/client/parent-composer/add-to-conversation.d.ts +64 -0
- package/lib/client/parent-composer/add-to-conversation.d.ts.map +1 -1
- package/lib/client/parent-composer/add-to-conversation.js +182 -0
- package/lib/client/parent-composer/add-to-conversation.js.map +1 -1
- package/lib/client/rc6/ArchivedConversation.d.ts +1 -2
- package/lib/client/rc6/ArchivedConversation.d.ts.map +1 -1
- package/lib/client/rc6/ArchivedConversation.js +97 -8
- package/lib/client/rc6/ArchivedConversation.js.map +1 -1
- package/lib/client/rc6/Rc6SideChatOverlay.d.ts.map +1 -1
- package/lib/client/rc6/Rc6SideChatOverlay.js +48 -10
- package/lib/client/rc6/Rc6SideChatOverlay.js.map +1 -1
- package/lib/client/rc6/context.d.ts +6 -1
- package/lib/client/rc6/context.d.ts.map +1 -1
- package/lib/client/rc6/sessions-adapter.d.ts +6 -0
- package/lib/client/rc6/sessions-adapter.d.ts.map +1 -1
- package/lib/client/rc6/sessions-adapter.js +30 -0
- package/lib/client/rc6/sessions-adapter.js.map +1 -1
- package/lib/client/selection/SelectionActions.d.ts +4 -1
- package/lib/client/selection/SelectionActions.d.ts.map +1 -1
- package/lib/client/selection/SelectionActions.js +62 -3
- package/lib/client/selection/SelectionActions.js.map +1 -1
- package/lib/client.js +758 -202
- package/lib/client.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -6,15 +6,16 @@ Ask a focused follow-up about selected text without leaving your current DeepSee
|
|
|
6
6
|
|
|
7
7
|
[简体中文](README.zh-CN.md)
|
|
8
8
|
|
|
9
|
-

|
|
10
10
|
|
|
11
11
|
## Install
|
|
12
12
|
|
|
13
|
-
Install DSH rc.6 if it is not already available,
|
|
13
|
+
Install DSH rc.6 if it is not already available. Refresh only this package's registry metadata before adding it, so pnpm cannot reuse an older `latest` value immediately after a release:
|
|
14
14
|
|
|
15
15
|
```powershell
|
|
16
16
|
npm install --global @deepseek-ai/dsh@0.1.0-rc.6
|
|
17
|
-
|
|
17
|
+
pnpm cache delete "@ahggg/dsh-side-chat"
|
|
18
|
+
dsh plugin --profile web add @ahggg/dsh-side-chat@latest
|
|
18
19
|
```
|
|
19
20
|
|
|
20
21
|
Start DSH from the project you want the agent to work in:
|
|
@@ -30,18 +31,20 @@ Open the URL printed by DSH. The plugin loads automatically in the Web client.
|
|
|
30
31
|
|
|
31
32
|
1. Complete at least one turn in the main conversation.
|
|
32
33
|
2. Select text inside one completed user or assistant message.
|
|
33
|
-
3. Click `More details` to send an explanation request immediately, or
|
|
34
|
-
4. When writing your own question, press `Enter` to send it.
|
|
34
|
+
3. Click `Add to chat` to add an optional comment before attaching the passage to the main composer, `More details` to send an explanation request immediately, or `Ask in side chat` to write a focused question.
|
|
35
|
+
4. When writing your own message or question, press `Enter` to send it.
|
|
35
36
|
5. Press `Esc` or click `×` when you are done.
|
|
36
37
|
|
|
37
38
|
Useful details:
|
|
38
39
|
|
|
39
40
|
- `Shift+Enter` inserts a newline.
|
|
41
|
+
- After clicking `Add to chat`, press `Enter` or click `Save` to keep the annotation. Click outside the comment box or click `Cancel` to discard it.
|
|
42
|
+
- `Add to chat` keeps any existing draft text and can collect multiple numbered passages, each with its own optional comment, in one annotation capsule.
|
|
40
43
|
- The input grows with its content and becomes scrollable at its maximum height.
|
|
41
44
|
- While a reply is running, the send icon becomes a stop button.
|
|
42
45
|
- Assistant replies use DSH's native Markdown rendering.
|
|
43
|
-
- Hover over `
|
|
44
|
-
- Before
|
|
46
|
+
- Hover over `N annotations` to preview every selected passage and its comment.
|
|
47
|
+
- Before sending, hover over the annotation capsule and click `×` to remove it; after sending, the same capsule appears above the user message.
|
|
45
48
|
- The main conversation stays visible and is never switched to the child Session.
|
|
46
49
|
|
|
47
50
|
## What happens to the conversation
|
|
@@ -55,20 +58,14 @@ The parent and child share the same workspace. File changes, commands, and other
|
|
|
55
58
|
## Current limitations
|
|
56
59
|
|
|
57
60
|
- A selection must stay inside one completed message.
|
|
58
|
-
- Attachments
|
|
61
|
+
- Attachments and `/side` are not supported yet.
|
|
59
62
|
- Closed Side Chats cannot be reopened from the panel.
|
|
60
63
|
- There is no automatic history cleanup or “keep as normal chat” action.
|
|
61
64
|
- An archived child may briefly appear in normal Session lists.
|
|
62
65
|
|
|
63
66
|
## Upgrade or remove
|
|
64
67
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
```powershell
|
|
68
|
-
dsh plugin --profile web update @ahggg/dsh-side-chat --latest
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
Immediately after a release, pnpm may reuse stale registry metadata and leave an existing installation on an older version. Clear only this package's metadata cache, then retry the update:
|
|
68
|
+
Refresh this package's registry metadata, update to the latest stable version, and restart DSH:
|
|
72
69
|
|
|
73
70
|
```powershell
|
|
74
71
|
pnpm cache delete "@ahggg/dsh-side-chat"
|
|
@@ -84,3 +81,9 @@ dsh plugin --profile web remove @ahggg/dsh-side-chat
|
|
|
84
81
|
## License
|
|
85
82
|
|
|
86
83
|
MIT
|
|
84
|
+
|
|
85
|
+
## References
|
|
86
|
+
|
|
87
|
+
- https://www.v2ex.com
|
|
88
|
+
- https://linux.do
|
|
89
|
+
- https://linux.sb
|
package/README.zh-CN.md
CHANGED
|
@@ -6,15 +6,16 @@
|
|
|
6
6
|
|
|
7
7
|
[English](README.md)
|
|
8
8
|
|
|
9
|
-

|
|
10
10
|
|
|
11
11
|
## 安装
|
|
12
12
|
|
|
13
|
-
如果尚未安装 DSH rc.6
|
|
13
|
+
如果尚未安装 DSH rc.6,先安装它。添加插件前只刷新这个包的 registry metadata,避免刚发布新版本时 pnpm 仍复用旧的 `latest`:
|
|
14
14
|
|
|
15
15
|
```powershell
|
|
16
16
|
npm install --global @deepseek-ai/dsh@0.1.0-rc.6
|
|
17
|
-
|
|
17
|
+
pnpm cache delete "@ahggg/dsh-side-chat"
|
|
18
|
+
dsh plugin --profile web add @ahggg/dsh-side-chat@latest
|
|
18
19
|
```
|
|
19
20
|
|
|
20
21
|
从希望 Agent 操作的真实工程目录启动 DSH:
|
|
@@ -30,18 +31,20 @@ dsh web --port 3080
|
|
|
30
31
|
|
|
31
32
|
1. 在主会话中至少完成一轮对话。
|
|
32
33
|
2. 在一条已完成的用户或助手消息内选中文字。
|
|
33
|
-
3. 点击 `More details` 可以立即发送详细解释请求;点击 `Ask in side chat`
|
|
34
|
-
4.
|
|
34
|
+
3. 点击 `Add to chat` 可以先填写一条可选批注,再把引用加入主会话输入框;点击 `More details` 可以立即发送详细解释请求;点击 `Ask in side chat` 可以自己输入聚焦问题。
|
|
35
|
+
4. 自己输入消息或问题时,按 `Enter` 发送。
|
|
35
36
|
5. 完成后按 `Esc`,或者点击 `×` 关闭。
|
|
36
37
|
|
|
37
38
|
常用操作:
|
|
38
39
|
|
|
39
40
|
- `Shift+Enter` 换行。
|
|
41
|
+
- 点击 `Add to chat` 后,按 `Enter` 或点击 `Save` 保存 annotation;点击批注框外部或点击 `Cancel` 则直接取消。
|
|
42
|
+
- `Add to chat` 会保留输入框中已有的草稿,并可把多段带序号的文本及各自的可选批注汇总到同一个 annotation 胶囊中。
|
|
40
43
|
- 输入框会随内容自动增高,达到最大高度后在内部滚动。
|
|
41
44
|
- 回复生成期间,发送图标会替换为停止按钮。
|
|
42
45
|
- Assistant 回复使用 DSH 原生 Markdown 渲染。
|
|
43
|
-
- hover `
|
|
44
|
-
-
|
|
46
|
+
- hover `N annotations` 可以预览每一段所选文本及对应批注。
|
|
47
|
+
- 发送前可以 hover annotation 胶囊并点击 `×` 移除;发送后,同一个胶囊会显示在用户消息上方。
|
|
45
48
|
- 主会话会一直保留在页面中,不会自动切换到 child Session。
|
|
46
49
|
|
|
47
50
|
## 会话和数据如何处理
|
|
@@ -55,20 +58,14 @@ dsh web --port 3080
|
|
|
55
58
|
## 当前限制
|
|
56
59
|
|
|
57
60
|
- 选区必须位于同一条已完成消息内。
|
|
58
|
-
-
|
|
61
|
+
- 暂不支持附件和 `/side`。
|
|
59
62
|
- 关闭后不能从面板重新打开原 Side Chat。
|
|
60
63
|
- 暂无自动历史清理或“保留为普通会话”操作。
|
|
61
64
|
- 已归档的 child 可能短暂出现在普通会话列表中。
|
|
62
65
|
|
|
63
66
|
## 升级或卸载
|
|
64
67
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
```powershell
|
|
68
|
-
dsh plugin --profile web update @ahggg/dsh-side-chat --latest
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
刚发布新版本时,pnpm 可能复用旧的 registry metadata,导致已有安装仍停留在旧版。只清理这个包的 metadata 缓存,然后重试升级:
|
|
68
|
+
刷新这个包的 registry metadata,升级到最新稳定版,然后重启 DSH:
|
|
72
69
|
|
|
73
70
|
```powershell
|
|
74
71
|
pnpm cache delete "@ahggg/dsh-side-chat"
|
|
@@ -84,3 +81,9 @@ dsh plugin --profile web remove @ahggg/dsh-side-chat
|
|
|
84
81
|
## 许可证
|
|
85
82
|
|
|
86
83
|
MIT
|
|
84
|
+
|
|
85
|
+
## References
|
|
86
|
+
|
|
87
|
+
- https://www.v2ex.com
|
|
88
|
+
- https://linux.do
|
|
89
|
+
- https://linux.sb
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/client/apply.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/client/apply.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAalD,eAAO,MAAM,IAAI,qBAAqB,CAAA;AACtC,eAAO,MAAM,MAAM,UAAmE,CAAA;AAEtF,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCvD"}
|
package/lib/client/apply.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { createElement } from 'react';
|
|
2
2
|
import sideChatCss from './panel/side-chat.css';
|
|
3
|
+
import { selectionReferenceSource } from './parent-composer/add-to-conversation.js';
|
|
4
|
+
import { mountParentConversationAnnotations } from './parent-composer/ParentConversationAnnotations.js';
|
|
3
5
|
import { SideChatController } from './side-chat-controller.js';
|
|
4
6
|
import { mountArchivedRemote } from './rc6/remote-adapter.js';
|
|
5
7
|
import { Rc6SideChatOverlay } from './rc6/Rc6SideChatOverlay.js';
|
|
6
8
|
import { Rc6SideChatSessions } from './rc6/sessions-adapter.js';
|
|
7
9
|
export const name = 'side-chat-client';
|
|
8
|
-
export const inject = ['remote', 'sessions', 'slots'];
|
|
10
|
+
export const inject = ['conversation', 'inputTriggers', 'remote', 'sessions', 'slots'];
|
|
9
11
|
export async function apply(ctx) {
|
|
10
12
|
const stylesheet = document.createElement('style');
|
|
11
13
|
stylesheet.textContent = sideChatCss;
|
|
@@ -14,7 +16,9 @@ export async function apply(ctx) {
|
|
|
14
16
|
document.head.append(stylesheet);
|
|
15
17
|
const clientCtx = ctx;
|
|
16
18
|
const mounted = await mountArchivedRemote(clientCtx);
|
|
19
|
+
const removeSelectionReferenceSource = clientCtx.inputTriggers.registerSource(selectionReferenceSource);
|
|
17
20
|
const sessions = new Rc6SideChatSessions(clientCtx);
|
|
21
|
+
const removeParentAnnotations = mountParentConversationAnnotations(clientCtx, () => { sessions.removeConversationAnnotations(); });
|
|
18
22
|
const controller = new SideChatController(mounted.remote, sessions);
|
|
19
23
|
const removeOverlay = clientCtx.slots.inject('shell.overlay', () => clientCtx.slots.register({
|
|
20
24
|
name: 'shell.overlay',
|
|
@@ -26,6 +30,8 @@ export async function apply(ctx) {
|
|
|
26
30
|
await controller.dispose();
|
|
27
31
|
}
|
|
28
32
|
finally {
|
|
33
|
+
removeParentAnnotations();
|
|
34
|
+
removeSelectionReferenceSource();
|
|
29
35
|
removeOverlay();
|
|
30
36
|
await mounted.dispose();
|
|
31
37
|
stylesheet.remove();
|
package/lib/client/apply.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/client/apply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAKrC,OAAO,WAAW,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAG/D,MAAM,CAAC,MAAM,IAAI,GAAG,kBAAkB,CAAA;AACtC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/client/apply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAKrC,OAAO,WAAW,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAA;AACnF,OAAO,EAAE,kCAAkC,EAAE,MAAM,oDAAoD,CAAA;AACvG,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAG/D,MAAM,CAAC,MAAM,IAAI,GAAG,kBAAkB,CAAA;AACtC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,cAAc,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;AAEtF,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,GAAY;IACtC,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IAClD,UAAU,CAAC,WAAW,GAAG,WAAW,CAAA;IACpC,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,eAAe,CAAA;IAC3C,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAA;IAC5C,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAEhC,MAAM,SAAS,GAAG,GAAkC,CAAA;IACpD,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,SAAS,CAAC,CAAA;IACpD,MAAM,8BAA8B,GAAG,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAA;IACvG,MAAM,QAAQ,GAAG,IAAI,mBAAmB,CAAC,SAAS,CAAC,CAAA;IACnD,MAAM,uBAAuB,GAAG,kCAAkC,CAChE,SAAS,EACT,GAAG,EAAE,GAAG,QAAQ,CAAC,6BAA6B,EAAE,CAAA,CAAC,CAAC,CACnD,CAAA;IACD,MAAM,UAAU,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACnE,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC3F,IAAI,EAAE,eAAe;QACrB,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,EAAE;KACV,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,kBAAkB,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAA;IAEtE,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,OAAO,EAAE,CAAA;QAC5B,CAAC;gBAAS,CAAC;YACT,uBAAuB,EAAE,CAAA;YACzB,8BAA8B,EAAE,CAAA;YAChC,aAAa,EAAE,CAAA;YACf,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;YACvB,UAAU,CAAC,MAAM,EAAE,CAAA;QACrB,CAAC;IACH,CAAC,EAAE,+BAA+B,CAAC,CAAA;AACrC,CAAC"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import type { ConversationSelection } from '../../shared/contracts.js';
|
|
2
1
|
import type { SideChatMessages } from './messages.js';
|
|
2
|
+
export interface SelectionQuoteItem {
|
|
3
|
+
readonly text: string;
|
|
4
|
+
readonly comment?: string;
|
|
5
|
+
}
|
|
3
6
|
/** Selected passage displayed separately from the user's first question. */
|
|
4
|
-
export declare function SelectionQuote({
|
|
5
|
-
readonly
|
|
7
|
+
export declare function SelectionQuote({ selections, messages, onRemove, }: {
|
|
8
|
+
readonly selections: readonly SelectionQuoteItem[];
|
|
6
9
|
readonly messages: SideChatMessages;
|
|
7
|
-
readonly onCopy?: (text: string) => void;
|
|
8
10
|
readonly onRemove?: () => void;
|
|
9
11
|
}): import("react/jsx-runtime").JSX.Element;
|
|
10
12
|
//# sourceMappingURL=SelectionQuote.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectionQuote.d.ts","sourceRoot":"","sources":["../../../src/client/panel/SelectionQuote.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"SelectionQuote.d.ts","sourceRoot":"","sources":["../../../src/client/panel/SelectionQuote.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,EAC7B,UAAU,EACV,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAA;IAClD,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAA;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CAC/B,2CAiGA"}
|
|
@@ -1,25 +1,48 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useRef, useState } from 'react';
|
|
2
|
+
import { useEffect, useRef, useState } from 'react';
|
|
3
3
|
/** Selected passage displayed separately from the user's first question. */
|
|
4
|
-
export function SelectionQuote({
|
|
4
|
+
export function SelectionQuote({ selections, messages, onRemove, }) {
|
|
5
5
|
const [expanded, setExpanded] = useState(false);
|
|
6
|
+
const [hovered, setHovered] = useState(false);
|
|
6
7
|
const quoteRef = useRef(null);
|
|
7
8
|
const detailsRef = useRef(null);
|
|
8
|
-
const
|
|
9
|
+
const leaveTimerRef = useRef();
|
|
10
|
+
const keepHoverOpen = () => {
|
|
11
|
+
if (leaveTimerRef.current !== undefined)
|
|
12
|
+
window.clearTimeout(leaveTimerRef.current);
|
|
13
|
+
leaveTimerRef.current = undefined;
|
|
14
|
+
setHovered(true);
|
|
15
|
+
};
|
|
16
|
+
const closeHoverAfterGrace = () => {
|
|
17
|
+
if (leaveTimerRef.current !== undefined)
|
|
18
|
+
window.clearTimeout(leaveTimerRef.current);
|
|
19
|
+
leaveTimerRef.current = window.setTimeout(() => {
|
|
20
|
+
leaveTimerRef.current = undefined;
|
|
21
|
+
setHovered(false);
|
|
22
|
+
}, 220);
|
|
23
|
+
};
|
|
24
|
+
useEffect(() => () => {
|
|
25
|
+
if (leaveTimerRef.current !== undefined)
|
|
26
|
+
window.clearTimeout(leaveTimerRef.current);
|
|
27
|
+
}, []);
|
|
28
|
+
const constrainDetailsToBoundary = () => {
|
|
9
29
|
const details = detailsRef.current;
|
|
10
|
-
const
|
|
11
|
-
if (details === null
|
|
30
|
+
const boundary = quoteRef.current?.closest('.dsh-side-chat-panel, [data-composer-seat], [data-chat-flow-kind]');
|
|
31
|
+
if (details === null)
|
|
12
32
|
return;
|
|
13
33
|
details.style.setProperty('--dsh-side-chat-quote-offset-x', '0px');
|
|
14
34
|
const detailsRect = details.getBoundingClientRect();
|
|
15
|
-
const
|
|
16
|
-
const leftEdge =
|
|
17
|
-
const rightEdge =
|
|
35
|
+
const boundaryRect = boundary?.getBoundingClientRect();
|
|
36
|
+
const leftEdge = (boundaryRect?.left ?? 0) + 16;
|
|
37
|
+
const rightEdge = (boundaryRect?.right ?? window.innerWidth) - 16;
|
|
18
38
|
const offset = detailsRect.left < leftEdge
|
|
19
39
|
? leftEdge - detailsRect.left
|
|
20
40
|
: detailsRect.right > rightEdge ? rightEdge - detailsRect.right : 0;
|
|
21
41
|
details.style.setProperty('--dsh-side-chat-quote-offset-x', `${String(offset)}px`);
|
|
22
42
|
};
|
|
23
|
-
return (_jsxs("section", { ref: quoteRef, className: "dsh-side-chat-quote", "aria-label": messages.selectedPassage, "data-expanded": expanded || undefined,
|
|
43
|
+
return (_jsxs("section", { ref: quoteRef, className: "dsh-side-chat-quote", "aria-label": messages.selectedPassage, "data-expanded": expanded || undefined, "data-hovered": hovered || undefined, onMouseEnter: () => {
|
|
44
|
+
keepHoverOpen();
|
|
45
|
+
constrainDetailsToBoundary();
|
|
46
|
+
}, onMouseLeave: closeHoverAfterGrace, onFocusCapture: constrainDetailsToBoundary, children: [_jsxs("div", { className: "dsh-side-chat-quote-chip", children: [_jsxs("button", { type: "button", className: "dsh-side-chat-quote-trigger", "aria-expanded": expanded, "aria-label": `${expanded ? messages.collapse : messages.expand}: ${messages.selectedPassage}`, onClick: () => { setExpanded(value => !value); }, children: [_jsxs("svg", { className: "dsh-side-chat-quote-icon", viewBox: "0 0 24 24", "aria-hidden": "true", children: [_jsx("path", { d: "M21 15a4 4 0 0 1-4 4H7l-4 4V7a4 4 0 0 1 4-4h10a4 4 0 0 1 4 4Z" }), _jsx("path", { d: "M8 8h8M8 12h5" })] }), _jsx("strong", { children: messages.selectionAttachments(selections.length) })] }), onRemove !== undefined && (_jsx("button", { type: "button", className: "dsh-side-chat-quote-remove", "aria-label": messages.removeSelection, onClick: onRemove, children: "\u00D7" }))] }), _jsx("div", { ref: detailsRef, className: "dsh-side-chat-quote-details", role: "tooltip", children: selections.map((selection, index) => (_jsxs("div", { className: "dsh-side-chat-quote-detail", children: [_jsx("div", { className: "dsh-side-chat-quote-details-header", children: _jsxs("strong", { children: [String(index + 1), ". ", messages.selectionPreviewLabel, ":"] }) }), _jsx("pre", { children: selection.text }), selection.comment !== undefined && (_jsxs("div", { className: "dsh-side-chat-quote-comment", children: [_jsxs("strong", { children: [messages.selectionCommentLabel, ":"] }), _jsx("pre", { children: selection.comment })] }))] }, `${String(index)}-${selection.text}`))) })] }));
|
|
24
47
|
}
|
|
25
48
|
//# sourceMappingURL=SelectionQuote.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectionQuote.js","sourceRoot":"","sources":["../../../src/client/panel/SelectionQuote.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"SelectionQuote.js","sourceRoot":"","sources":["../../../src/client/panel/SelectionQuote.tsx"],"names":[],"mappings":"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"}
|
|
@@ -10,8 +10,7 @@ export interface SideChatPanelProps {
|
|
|
10
10
|
readonly onClose: () => Promise<SideChatActionResult<void>>;
|
|
11
11
|
readonly onRetry: () => Promise<SideChatActionResult<unknown>>;
|
|
12
12
|
readonly onFocusParent: () => void;
|
|
13
|
-
readonly onCopySelection?: (text: string) => void;
|
|
14
13
|
readonly onRemoveSelection?: () => void;
|
|
15
14
|
}
|
|
16
|
-
export declare function SideChatPanel({ state, locale, embeddedConversation, onDraftChange, onFirstSend, onClose, onRetry, onFocusParent,
|
|
15
|
+
export declare function SideChatPanel({ state, locale, embeddedConversation, onDraftChange, onFirstSend, onClose, onRetry, onFocusParent, onRemoveSelection, }: SideChatPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
17
16
|
//# sourceMappingURL=SideChatPanel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideChatPanel.d.ts","sourceRoot":"","sources":["../../../src/client/panel/SideChatPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAS3D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,OAAO,CAAA;IAChC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,CAAA;IACzC,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/C,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAA;IAC/E,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAA;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAA;IAC9D,QAAQ,CAAC,aAAa,EAAE,MAAM,IAAI,CAAA;IAClC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"SideChatPanel.d.ts","sourceRoot":"","sources":["../../../src/client/panel/SideChatPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAS3D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,OAAO,CAAA;IAChC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,CAAA;IACzC,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/C,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAA;IAC/E,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAA;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAA;IAC9D,QAAQ,CAAC,aAAa,EAAE,MAAM,IAAI,CAAA;IAClC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAA;CACxC;AAED,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,MAAa,EACb,oBAAoB,EACpB,aAAa,EACb,WAAW,EACX,OAAO,EACP,OAAO,EACP,aAAa,EACb,iBAAiB,GAClB,EAAE,kBAAkB,2CAmFpB"}
|
|
@@ -7,7 +7,7 @@ import { SideChatBody } from './SideChatBody.js';
|
|
|
7
7
|
import { SideChatErrorState } from './SideChatErrorState.js';
|
|
8
8
|
import { SideChatHeader } from './SideChatHeader.js';
|
|
9
9
|
import { useAutoGrowingTextarea } from './use-auto-growing-textarea.js';
|
|
10
|
-
export function SideChatPanel({ state, locale = 'en', embeddedConversation, onDraftChange, onFirstSend, onClose, onRetry, onFocusParent,
|
|
10
|
+
export function SideChatPanel({ state, locale = 'en', embeddedConversation, onDraftChange, onFirstSend, onClose, onRetry, onFocusParent, onRemoveSelection, }) {
|
|
11
11
|
const messages = SIDE_CHAT_MESSAGES[locale];
|
|
12
12
|
const [submitting, setSubmitting] = useState(false);
|
|
13
13
|
const draftRef = useAutoGrowingTextarea(state.draft);
|
|
@@ -25,7 +25,7 @@ export function SideChatPanel({ state, locale = 'en', embeddedConversation, onDr
|
|
|
25
25
|
};
|
|
26
26
|
return (_jsxs("aside", { className: "dsh-side-chat-panel", "data-side-chat-panel": "", "aria-label": messages.title, "aria-busy": ['creating', 'opening', 'closing'].includes(state.phase) || undefined, children: [_jsx(SideChatHeader, { phase: state.phase, messages: messages, onFocusParent: onFocusParent, onClose: () => { void onClose(); } }), state.error !== undefined && (_jsx(SideChatErrorState, { error: state.error, messages: messages, onRetry: () => { void onRetry(); } })), state.childSessionId !== undefined && embeddedConversation !== undefined
|
|
27
27
|
? _jsx(SideChatBody, { children: embeddedConversation })
|
|
28
|
-
: (_jsxs("form", { className: "dsh-side-chat-draft", onSubmit: (event) => { void submit(event); }, children: [state.selection !== undefined && (_jsx(SelectionQuote, {
|
|
28
|
+
: (_jsxs("form", { className: "dsh-side-chat-draft", onSubmit: (event) => { void submit(event); }, children: [state.selection !== undefined && (_jsx(SelectionQuote, { selections: [state.selection], messages: messages, ...onRemoveSelection === undefined ? {} : { onRemove: onRemoveSelection } })), _jsx("label", { htmlFor: "dsh-side-chat-draft-input", children: messages.placeholder }), _jsx("textarea", { id: "dsh-side-chat-draft-input", ref: draftRef, autoFocus: true, rows: 1, value: state.draft, disabled: ['creating', 'opening', 'closing'].includes(state.phase), placeholder: messages.placeholder, onChange: (event) => { onDraftChange(event.target.value); }, onKeyDown: (event) => {
|
|
29
29
|
if (event.key === 'Enter' && !event.shiftKey) {
|
|
30
30
|
event.preventDefault();
|
|
31
31
|
event.currentTarget.form?.requestSubmit();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideChatPanel.js","sourceRoot":"","sources":["../../../src/client/panel/SideChatPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAkC,MAAM,OAAO,CAAA;AAGhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"SideChatPanel.js","sourceRoot":"","sources":["../../../src/client/panel/SideChatPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -4,12 +4,12 @@ export interface SideChatMessages {
|
|
|
4
4
|
readonly placeholder: string;
|
|
5
5
|
readonly send: string;
|
|
6
6
|
readonly selectedPassage: string;
|
|
7
|
-
readonly
|
|
7
|
+
readonly selectionAttachments: (count: number) => string;
|
|
8
8
|
readonly selectionPreviewLabel: string;
|
|
9
|
+
readonly selectionCommentLabel: string;
|
|
9
10
|
readonly removeSelection: string;
|
|
10
11
|
readonly expand: string;
|
|
11
12
|
readonly collapse: string;
|
|
12
|
-
readonly copy: string;
|
|
13
13
|
readonly temporary: string;
|
|
14
14
|
readonly referenceOnly: string;
|
|
15
15
|
readonly cannotReopen: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/client/panel/messages.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/client/panel/messages.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACxD,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAA;IACtC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAA;IACtC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAED,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,OAAO,EAAE,gBAAgB,CAAC,CAyChF,CAAA"}
|
|
@@ -5,12 +5,12 @@ export const SIDE_CHAT_MESSAGES = Object.freeze({
|
|
|
5
5
|
placeholder: 'Ask about this in a Side Chat',
|
|
6
6
|
send: 'Send',
|
|
7
7
|
selectedPassage: 'Selected passage',
|
|
8
|
-
|
|
8
|
+
selectionAttachments: (count) => `${String(count)} ${count === 1 ? 'annotation' : 'annotations'}`,
|
|
9
9
|
selectionPreviewLabel: 'Selected text',
|
|
10
|
+
selectionCommentLabel: 'User comment',
|
|
10
11
|
removeSelection: 'Remove annotation',
|
|
11
12
|
expand: 'Expand',
|
|
12
13
|
collapse: 'Collapse',
|
|
13
|
-
copy: 'Copy',
|
|
14
14
|
temporary: 'Archived when closed; history remains on disk',
|
|
15
15
|
referenceOnly: 'Inherits the complete parent conversation prefix',
|
|
16
16
|
cannotReopen: 'No reopen action',
|
|
@@ -25,12 +25,12 @@ export const SIDE_CHAT_MESSAGES = Object.freeze({
|
|
|
25
25
|
placeholder: '在侧边对话中询问这段内容',
|
|
26
26
|
send: '发送',
|
|
27
27
|
selectedPassage: '所选段落',
|
|
28
|
-
|
|
28
|
+
selectionAttachments: (count) => `${String(count)} 条引用`,
|
|
29
29
|
selectionPreviewLabel: '所选文本',
|
|
30
|
+
selectionCommentLabel: '用户批注',
|
|
30
31
|
removeSelection: '移除引用',
|
|
31
32
|
expand: '展开',
|
|
32
33
|
collapse: '收起',
|
|
33
|
-
copy: '复制',
|
|
34
34
|
temporary: '关闭时归档;历史仍保存在磁盘上',
|
|
35
35
|
referenceOnly: '完整继承父会话对话前缀',
|
|
36
36
|
cannotReopen: '不提供重新打开操作',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/client/panel/messages.ts"],"names":[],"mappings":"AAqBA,MAAM,CAAC,MAAM,kBAAkB,GAAuD,MAAM,CAAC,MAAM,CAAC;IAClG,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC;QAChB,KAAK,EAAE,WAAW;QAClB,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,MAAM;QACZ,eAAe,EAAE,kBAAkB;QACnC,
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/client/panel/messages.ts"],"names":[],"mappings":"AAqBA,MAAM,CAAC,MAAM,kBAAkB,GAAuD,MAAM,CAAC,MAAM,CAAC;IAClG,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC;QAChB,KAAK,EAAE,WAAW;QAClB,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,MAAM;QACZ,eAAe,EAAE,kBAAkB;QACnC,oBAAoB,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,EAAE;QACzG,qBAAqB,EAAE,eAAe;QACtC,qBAAqB,EAAE,cAAc;QACrC,eAAe,EAAE,mBAAmB;QACpC,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,+CAA+C;QAC1D,aAAa,EAAE,kDAAkD;QACjE,YAAY,EAAE,kBAAkB;QAChC,eAAe,EAAE,6BAA6B;QAC9C,KAAK,EAAE,OAAO;QACd,YAAY,EAAE,iBAAiB;QAC/B,UAAU,EAAE,+BAA+B;KAC5C,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,cAAc;QAC3B,IAAI,EAAE,IAAI;QACV,eAAe,EAAE,MAAM;QACvB,oBAAoB,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;QAC/D,qBAAqB,EAAE,MAAM;QAC7B,qBAAqB,EAAE,MAAM;QAC7B,eAAe,EAAE,MAAM;QACvB,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,iBAAiB;QAC5B,aAAa,EAAE,aAAa;QAC5B,YAAY,EAAE,WAAW;QACzB,eAAe,EAAE,WAAW;QAC5B,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,QAAQ;QACtB,UAAU,EAAE,UAAU;KACvB,CAAC;CACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type ElementType, type ReactNode } from 'react';
|
|
2
|
+
import type { Rc6ClientContext } from '../rc6/context.js';
|
|
3
|
+
import { SIDE_CHAT_MESSAGES } from '../panel/messages.js';
|
|
4
|
+
import { type ParentComposerInputSnapshot } from './add-to-conversation.js';
|
|
5
|
+
type Locale = keyof typeof SIDE_CHAT_MESSAGES;
|
|
6
|
+
interface UserNodeProps {
|
|
7
|
+
readonly node: {
|
|
8
|
+
readonly data: {
|
|
9
|
+
readonly content: readonly unknown[];
|
|
10
|
+
};
|
|
11
|
+
readonly [key: string]: unknown;
|
|
12
|
+
};
|
|
13
|
+
readonly [key: string]: unknown;
|
|
14
|
+
}
|
|
15
|
+
type UserNodeRenderer = ElementType<UserNodeProps>;
|
|
16
|
+
/** The interactive annotation capsule occupying the reserved first composer row. */
|
|
17
|
+
export declare function ParentComposerAnnotations({ input, onRemove, locale, }: {
|
|
18
|
+
readonly input: ParentComposerInputSnapshot;
|
|
19
|
+
readonly onRemove: () => void;
|
|
20
|
+
readonly locale?: Locale;
|
|
21
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|
|
22
|
+
/** Wrap DSH's own user renderer only when this plugin's durable prefix exists. */
|
|
23
|
+
export declare function annotatedUserMessageRenderer(Original: UserNodeRenderer): (props: UserNodeProps) => ReactNode;
|
|
24
|
+
/** Mount the composer capsule and a thin wrapper around DSH's user renderers. */
|
|
25
|
+
export declare function mountParentConversationAnnotations(ctx: Rc6ClientContext, removeAnnotations: () => void): () => void;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=ParentConversationAnnotations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParentConversationAnnotations.d.ts","sourceRoot":"","sources":["../../../src/client/parent-composer/ParentConversationAnnotations.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEzD,OAAO,EAGL,KAAK,2BAA2B,EACjC,MAAM,0BAA0B,CAAA;AAEjC,KAAK,MAAM,GAAG,MAAM,OAAO,kBAAkB,CAAA;AAC7C,UAAU,aAAa;IACrB,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,IAAI,EAAE;YAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,CAAA;SAAE,CAAA;QACvD,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAChC,CAAA;IACD,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAChC;AACD,KAAK,gBAAgB,GAAG,WAAW,CAAC,aAAa,CAAC,CAAA;AAyBlD,oFAAoF;AACpF,wBAAgB,yBAAyB,CAAC,EACxC,KAAK,EACL,QAAQ,EACR,MAAwB,GACzB,EAAE;IACD,QAAQ,CAAC,KAAK,EAAE,2BAA2B,CAAA;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAA;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB,kDAYA;AA4BD,kFAAkF;AAClF,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,SAAS,CAqB5G;AAED,iFAAiF;AACjF,wBAAgB,kCAAkC,CAChD,GAAG,EAAE,gBAAgB,EACrB,iBAAiB,EAAE,MAAM,IAAI,GAC5B,MAAM,IAAI,CAyCZ"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { createElement } from 'react';
|
|
3
|
+
import { SIDE_CHAT_MESSAGES } from '../panel/messages.js';
|
|
4
|
+
import { SelectionQuote } from '../panel/SelectionQuote.js';
|
|
5
|
+
import { conversationAnnotations, parseAnnotatedConversationPrompt, } from './add-to-conversation.js';
|
|
6
|
+
function currentLocale() {
|
|
7
|
+
return navigator.language.toLowerCase().startsWith('zh') ? 'zh-CN' : 'en';
|
|
8
|
+
}
|
|
9
|
+
/** The interactive annotation capsule occupying the reserved first composer row. */
|
|
10
|
+
export function ParentComposerAnnotations({ input, onRemove, locale = currentLocale(), }) {
|
|
11
|
+
const annotations = conversationAnnotations(input);
|
|
12
|
+
if (annotations.length === 0)
|
|
13
|
+
return null;
|
|
14
|
+
return (_jsx("div", { className: "dsh-side-chat-parent-annotation-dock", children: _jsx(SelectionQuote, { selections: annotations, messages: SIDE_CHAT_MESSAGES[locale], onRemove: onRemove }) }));
|
|
15
|
+
}
|
|
16
|
+
function contentText(content) {
|
|
17
|
+
return content.map((block) => {
|
|
18
|
+
if (typeof block !== 'object' || block === null)
|
|
19
|
+
return '';
|
|
20
|
+
const value = block;
|
|
21
|
+
return value.type === 'text' && typeof value.text === 'string' ? value.text : '';
|
|
22
|
+
}).join('');
|
|
23
|
+
}
|
|
24
|
+
function visibleMessage(message) {
|
|
25
|
+
const wrapped = /^<user_question>\n?([\s\S]*?)\n?<\/user_question>$/u.exec(message);
|
|
26
|
+
return wrapped?.[1]?.trim() ?? message;
|
|
27
|
+
}
|
|
28
|
+
function replaceTextContent(content, message) {
|
|
29
|
+
let replaced = false;
|
|
30
|
+
const next = content.flatMap((block) => {
|
|
31
|
+
if (typeof block !== 'object' || block === null)
|
|
32
|
+
return [block];
|
|
33
|
+
const value = block;
|
|
34
|
+
if (value.type !== 'text' || typeof value.text !== 'string')
|
|
35
|
+
return [block];
|
|
36
|
+
if (replaced)
|
|
37
|
+
return [];
|
|
38
|
+
replaced = true;
|
|
39
|
+
return [{ ...value, text: message }];
|
|
40
|
+
});
|
|
41
|
+
return replaced ? next : [{ type: 'text', text: message }, ...next];
|
|
42
|
+
}
|
|
43
|
+
/** Wrap DSH's own user renderer only when this plugin's durable prefix exists. */
|
|
44
|
+
export function annotatedUserMessageRenderer(Original) {
|
|
45
|
+
return function AnnotatedUserMessageRenderer(props) {
|
|
46
|
+
const parsed = parseAnnotatedConversationPrompt(contentText(props.node.data.content));
|
|
47
|
+
if (parsed === undefined)
|
|
48
|
+
return createElement(Original, props);
|
|
49
|
+
const node = {
|
|
50
|
+
...props.node,
|
|
51
|
+
data: {
|
|
52
|
+
...props.node.data,
|
|
53
|
+
content: replaceTextContent(props.node.data.content, visibleMessage(parsed.message)),
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
return (_jsxs("div", { className: "dsh-side-chat-parent-user-message", children: [_jsx(SelectionQuote, { selections: parsed.annotations, messages: SIDE_CHAT_MESSAGES[currentLocale()] }), createElement(Original, { ...props, node })] }));
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/** Mount the composer capsule and a thin wrapper around DSH's user renderers. */
|
|
60
|
+
export function mountParentConversationAnnotations(ctx, removeAnnotations) {
|
|
61
|
+
const slots = ctx.slots;
|
|
62
|
+
const removeDock = slots.inject('conversation.input.dock', () => slots.register({
|
|
63
|
+
name: 'conversation.input.dock',
|
|
64
|
+
id: 'dsh-side-chat-annotations',
|
|
65
|
+
order: -100,
|
|
66
|
+
}, ({ input }) => (_jsx(ParentComposerAnnotations, { input: input, onRemove: removeAnnotations }))));
|
|
67
|
+
const shadow = (key) => slots.inject('conversation.chat.node', () => {
|
|
68
|
+
const ShadowedUserMessage = (props) => {
|
|
69
|
+
// Built-in keyed renderers can register after this declaration callback.
|
|
70
|
+
// Resolve the next-priority renderer at render time so load order does
|
|
71
|
+
// not decide whether annotations are projected.
|
|
72
|
+
const original = slots.entries('conversation.chat.node')
|
|
73
|
+
.find(entry => entry.options.key === key
|
|
74
|
+
&& entry.component !== ShadowedUserMessage
|
|
75
|
+
&& (entry.options.priority ?? 0) >= 0)
|
|
76
|
+
?.component;
|
|
77
|
+
if (original === undefined)
|
|
78
|
+
return null;
|
|
79
|
+
const Renderer = annotatedUserMessageRenderer(original);
|
|
80
|
+
return createElement(Renderer, props);
|
|
81
|
+
};
|
|
82
|
+
return slots.register({
|
|
83
|
+
name: 'conversation.chat.node',
|
|
84
|
+
key,
|
|
85
|
+
priority: -100,
|
|
86
|
+
locale: 'conversation',
|
|
87
|
+
}, ShadowedUserMessage);
|
|
88
|
+
});
|
|
89
|
+
const removeUser = shadow('user');
|
|
90
|
+
const removeSteering = shadow('steering');
|
|
91
|
+
return () => {
|
|
92
|
+
removeSteering();
|
|
93
|
+
removeUser();
|
|
94
|
+
removeDock();
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=ParentConversationAnnotations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParentConversationAnnotations.js","sourceRoot":"","sources":["../../../src/client/parent-composer/ParentConversationAnnotations.tsx"],"names":[],"mappings":"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"}
|