@ahggg/dsh-side-chat 0.6.2 → 0.7.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 +4 -4
- package/README.zh-CN.md +4 -4
- package/lib/client/apply.d.ts.map +1 -1
- package/lib/client/apply.js +3 -0
- package/lib/client/apply.js.map +1 -1
- package/lib/client/panel/SideChatHeader.d.ts +3 -1
- package/lib/client/panel/SideChatHeader.d.ts.map +1 -1
- package/lib/client/panel/SideChatHeader.js +5 -2
- package/lib/client/panel/SideChatHeader.js.map +1 -1
- package/lib/client/panel/SideChatPanel.d.ts +3 -1
- 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 +1 -0
- package/lib/client/panel/messages.d.ts.map +1 -1
- package/lib/client/panel/messages.js +2 -0
- package/lib/client/panel/messages.js.map +1 -1
- package/lib/client/parent-composer/ParentConversationAnnotations.d.ts +2 -0
- package/lib/client/parent-composer/ParentConversationAnnotations.d.ts.map +1 -1
- package/lib/client/parent-composer/ParentConversationAnnotations.js +42 -3
- package/lib/client/parent-composer/ParentConversationAnnotations.js.map +1 -1
- package/lib/client/parent-composer/add-to-conversation.d.ts +7 -2
- package/lib/client/parent-composer/add-to-conversation.d.ts.map +1 -1
- package/lib/client/parent-composer/add-to-conversation.js +57 -16
- package/lib/client/parent-composer/add-to-conversation.js.map +1 -1
- package/lib/client/parent-composer/annotation-persistence.d.ts +1 -1
- package/lib/client/parent-composer/annotation-persistence.d.ts.map +1 -1
- package/lib/client/parent-composer/annotation-persistence.js +40 -5
- package/lib/client/parent-composer/annotation-persistence.js.map +1 -1
- package/lib/client/parent-composer/referenced-conversation.d.ts +35 -0
- package/lib/client/parent-composer/referenced-conversation.d.ts.map +1 -0
- package/lib/client/parent-composer/referenced-conversation.js +207 -0
- package/lib/client/parent-composer/referenced-conversation.js.map +1 -0
- package/lib/client/rc6/Rc6SideChatOverlay.d.ts.map +1 -1
- package/lib/client/rc6/Rc6SideChatOverlay.js +41 -1
- package/lib/client/rc6/Rc6SideChatOverlay.js.map +1 -1
- package/lib/client/rc6/sessions-adapter.d.ts +3 -0
- package/lib/client/rc6/sessions-adapter.d.ts.map +1 -1
- package/lib/client/rc6/sessions-adapter.js +10 -0
- package/lib/client/rc6/sessions-adapter.js.map +1 -1
- package/lib/client.js +352 -32
- package/lib/client.js.map +1 -1
- package/lib/shared/constants.d.ts +1 -1
- package/lib/shared/constants.d.ts.map +1 -1
- package/lib/shared/constants.js +1 -1
- package/lib/shared/constants.js.map +1 -1
- package/package.json +36 -29
package/README.md
CHANGED
|
@@ -2,11 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Ask a focused follow-up about selected text without leaving your current DeepSeek Harness conversation.
|
|
4
4
|
|
|
5
|
-
> Compatibility: this release targets `@deepseek-ai/dsh@0.1.0-rc.7` exactly.
|
|
6
|
-
|
|
7
5
|
[简体中文](README.zh-CN.md)
|
|
8
6
|
|
|
9
|
-

|
|
10
8
|
|
|
11
9
|
## Install
|
|
12
10
|
|
|
@@ -44,7 +42,8 @@ On phones and tablets, long-press text in a completed message to select it. The
|
|
|
44
42
|
2. Select text inside one completed user or assistant message.
|
|
45
43
|
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.
|
|
46
44
|
4. When writing your own message or question, press `Enter` to send it.
|
|
47
|
-
5.
|
|
45
|
+
5. After a Side Chat reply settles, click `Add to conversation` to attach that focused discussion to the main composer as one conversation reference.
|
|
46
|
+
6. Press `Esc` or click `×` when you are done.
|
|
48
47
|
|
|
49
48
|
Useful details:
|
|
50
49
|
|
|
@@ -52,6 +51,7 @@ Useful details:
|
|
|
52
51
|
- Use the model control beside Send to choose a provider/model and its available reasoning effort. The choice belongs to Side Chat, does not change the main conversation, and becomes the global default for the next Side Chat.
|
|
53
52
|
- 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.
|
|
54
53
|
- `Add to chat` keeps any existing draft text and can collect multiple numbered passages, each with its own optional comment, in one annotation capsule.
|
|
54
|
+
- `Add to conversation` captures the Side Chat's user/assistant history, preserves the main draft, and refreshes the existing reference instead of duplicating it when clicked again.
|
|
55
55
|
- The input grows with its content and becomes scrollable at its maximum height.
|
|
56
56
|
- While a reply is running, the send icon becomes a stop button.
|
|
57
57
|
- Assistant replies use DSH's native Markdown rendering.
|
package/README.zh-CN.md
CHANGED
|
@@ -2,11 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
在不离开当前 DeepSeek Harness 主会话的情况下,针对选中的文本发起一个独立的侧边对话。
|
|
4
4
|
|
|
5
|
-
> 兼容性:当前版本仅适配 `@deepseek-ai/dsh@0.1.0-rc.7`。
|
|
6
|
-
|
|
7
5
|
[English](README.md)
|
|
8
6
|
|
|
9
|
-

|
|
10
8
|
|
|
11
9
|
## 安装
|
|
12
10
|
|
|
@@ -44,7 +42,8 @@ pnpm build
|
|
|
44
42
|
2. 在一条已完成的用户或助手消息内选中文字。
|
|
45
43
|
3. 点击 `Add to chat` 可以先填写一条可选批注,再把引用加入主会话输入框;点击 `More details` 可以立即发送详细解释请求;点击 `Ask in side chat` 可以自己输入聚焦问题。
|
|
46
44
|
4. 自己输入消息或问题时,按 `Enter` 发送。
|
|
47
|
-
5.
|
|
45
|
+
5. Side Chat 回复完成后,点击 `Add to conversation`,即可把这段聚焦讨论作为一个会话引用加入主会话输入框。
|
|
46
|
+
6. 完成后按 `Esc`,或者点击 `×` 关闭。
|
|
48
47
|
|
|
49
48
|
常用操作:
|
|
50
49
|
|
|
@@ -52,6 +51,7 @@ pnpm build
|
|
|
52
51
|
- 使用发送按钮旁的模型控件可以选择 provider/model 及其可用的推理等级;该选择只属于 Side Chat,不会修改主会话,并会成为下次打开 Side Chat 时使用的全局默认值。
|
|
53
52
|
- 点击 `Add to chat` 后,按 `Enter` 或点击 `Save` 保存 annotation;点击批注框外部或点击 `Cancel` 则直接取消。
|
|
54
53
|
- `Add to chat` 会保留输入框中已有的草稿,并可把多段带序号的文本及各自的可选批注汇总到同一个 annotation 胶囊中。
|
|
54
|
+
- `Add to conversation` 会捕获 Side Chat 中的用户/助手历史、保留主会话草稿;再次点击时会刷新已有引用,而不是重复添加。
|
|
55
55
|
- 输入框会随内容自动增高,达到最大高度后在内部滚动。
|
|
56
56
|
- 回复生成期间,发送图标会替换为停止按钮。
|
|
57
57
|
- Assistant 回复使用 DSH 原生 Markdown 渲染。
|
|
@@ -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;AAclD,eAAO,MAAM,IAAI,qBAAqB,CAAA;AACtC,eAAO,MAAM,MAAM,UAAuF,CAAA;AAE1G,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCvD"}
|
package/lib/client/apply.js
CHANGED
|
@@ -2,6 +2,7 @@ import { createElement } from 'react';
|
|
|
2
2
|
import sideChatCss from './panel/side-chat.css';
|
|
3
3
|
import { selectionReferenceSource } from './parent-composer/add-to-conversation.js';
|
|
4
4
|
import { mountParentConversationAnnotations } from './parent-composer/ParentConversationAnnotations.js';
|
|
5
|
+
import { sideChatConversationReferenceSource } from './parent-composer/referenced-conversation.js';
|
|
5
6
|
import { SideChatController } from './side-chat-controller.js';
|
|
6
7
|
import { mountArchivedRemote } from './rc6/remote-adapter.js';
|
|
7
8
|
import { Rc6SideChatOverlay } from './rc6/Rc6SideChatOverlay.js';
|
|
@@ -17,6 +18,7 @@ export async function apply(ctx) {
|
|
|
17
18
|
const clientCtx = ctx;
|
|
18
19
|
const mounted = await mountArchivedRemote(clientCtx);
|
|
19
20
|
const removeSelectionReferenceSource = clientCtx.inputTriggers.registerSource(selectionReferenceSource);
|
|
21
|
+
const removeConversationReferenceSource = clientCtx.inputTriggers.registerSource(sideChatConversationReferenceSource);
|
|
20
22
|
const sessions = new Rc6SideChatSessions(clientCtx);
|
|
21
23
|
const removeParentAnnotations = mountParentConversationAnnotations(clientCtx, () => { sessions.removeConversationAnnotations(); });
|
|
22
24
|
const controller = new SideChatController(mounted.remote, sessions);
|
|
@@ -31,6 +33,7 @@ export async function apply(ctx) {
|
|
|
31
33
|
}
|
|
32
34
|
finally {
|
|
33
35
|
removeParentAnnotations();
|
|
36
|
+
removeConversationReferenceSource();
|
|
34
37
|
removeSelectionReferenceSource();
|
|
35
38
|
removeOverlay();
|
|
36
39
|
await mounted.dispose();
|
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,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,kBAAkB,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;AAE1G,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
|
+
{"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,mCAAmC,EAAE,MAAM,8CAA8C,CAAA;AAClG,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,kBAAkB,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;AAE1G,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,iCAAiC,GAAG,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,mCAAmC,CAAC,CAAA;IACrH,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,iCAAiC,EAAE,CAAA;YACnC,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,8 +1,10 @@
|
|
|
1
1
|
import type { SideChatPhase } from '../../shared/contracts.js';
|
|
2
2
|
import type { SideChatMessages } from './messages.js';
|
|
3
|
-
export declare function SideChatHeader({ phase, messages, onFocusParent, onClose, }: {
|
|
3
|
+
export declare function SideChatHeader({ phase, messages, addToConversationDisabled, onAddToConversation, onFocusParent, onClose, }: {
|
|
4
4
|
readonly phase: SideChatPhase;
|
|
5
5
|
readonly messages: SideChatMessages;
|
|
6
|
+
readonly addToConversationDisabled?: boolean;
|
|
7
|
+
readonly onAddToConversation?: () => void;
|
|
6
8
|
readonly onFocusParent: () => void;
|
|
7
9
|
readonly onClose: () => void;
|
|
8
10
|
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideChatHeader.d.ts","sourceRoot":"","sources":["../../../src/client/panel/SideChatHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"SideChatHeader.d.ts","sourceRoot":"","sources":["../../../src/client/panel/SideChatHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAerD,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,yBAAiC,EACjC,mBAAmB,EACnB,aAAa,EACb,OAAO,GACR,EAAE;IACD,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;IAC7B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAA;IACnC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,OAAO,CAAA;IAC5C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAA;IACzC,QAAQ,CAAC,aAAa,EAAE,MAAM,IAAI,CAAA;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAC7B,2CA4BA"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
|
|
3
|
-
return (_jsxs("
|
|
2
|
+
function AddToConversationIcon() {
|
|
3
|
+
return (_jsxs("svg", { className: "dsh-side-chat-add-to-conversation-icon", viewBox: "0 0 20 20", "aria-hidden": "true", children: [_jsx("path", { d: "M4.25 4.5h11.5v8.25H9l-3.5 2.75v-2.75H4.25z" }), _jsx("path", { d: "M10 6.5v4M8 8.5h4" })] }));
|
|
4
|
+
}
|
|
5
|
+
export function SideChatHeader({ phase, messages, addToConversationDisabled = false, onAddToConversation, onFocusParent, onClose, }) {
|
|
6
|
+
return (_jsxs("header", { className: "dsh-side-chat-header", children: [_jsx("button", { type: "button", className: "dsh-side-chat-heading", onClick: onFocusParent, children: _jsx("strong", { children: messages.title }) }), _jsxs("div", { className: "dsh-side-chat-header-actions", children: [onAddToConversation !== undefined && (_jsxs("button", { type: "button", className: "dsh-side-chat-add-to-conversation", disabled: addToConversationDisabled, onClick: onAddToConversation, children: [_jsx(AddToConversationIcon, {}), _jsx("span", { children: messages.addToConversation })] })), _jsx("button", { type: "button", className: "dsh-side-chat-close", "aria-label": messages.close, disabled: phase === 'closing', onClick: onClose, children: "\u00D7" })] })] }));
|
|
4
7
|
}
|
|
5
8
|
//# sourceMappingURL=SideChatHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideChatHeader.js","sourceRoot":"","sources":["../../../src/client/panel/SideChatHeader.tsx"],"names":[],"mappings":";AAGA,MAAM,UAAU,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,aAAa,EACb,OAAO,
|
|
1
|
+
{"version":3,"file":"SideChatHeader.js","sourceRoot":"","sources":["../../../src/client/panel/SideChatHeader.tsx"],"names":[],"mappings":";AAGA,SAAS,qBAAqB;IAC5B,OAAO,CACL,eACE,SAAS,EAAC,wCAAwC,EAClD,OAAO,EAAC,WAAW,iBACP,MAAM,aAElB,eAAM,CAAC,EAAC,6CAA6C,GAAG,EACxD,eAAM,CAAC,EAAC,mBAAmB,GAAG,IAC1B,CACP,CAAA;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,yBAAyB,GAAG,KAAK,EACjC,mBAAmB,EACnB,aAAa,EACb,OAAO,GAQR;IACC,OAAO,CACL,kBAAQ,SAAS,EAAC,sBAAsB,aACtC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,uBAAuB,EAAC,OAAO,EAAE,aAAa,YAC5E,2BAAS,QAAQ,CAAC,KAAK,GAAU,GAC1B,EACT,eAAK,SAAS,EAAC,8BAA8B,aAC1C,mBAAmB,KAAK,SAAS,IAAI,CACpC,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,mCAAmC,EAC7C,QAAQ,EAAE,yBAAyB,EACnC,OAAO,EAAE,mBAAmB,aAE5B,KAAC,qBAAqB,KAAG,EACzB,yBAAO,QAAQ,CAAC,iBAAiB,GAAQ,IAClC,CACV,EACD,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,qBAAqB,gBACnB,QAAQ,CAAC,KAAK,EAC1B,QAAQ,EAAE,KAAK,KAAK,SAAS,EAC7B,OAAO,EAAE,OAAO,uBACP,IACP,IACC,CACV,CAAA;AACH,CAAC"}
|
|
@@ -11,7 +11,9 @@ export interface SideChatPanelProps {
|
|
|
11
11
|
readonly onClose: () => Promise<SideChatActionResult<void>>;
|
|
12
12
|
readonly onRetry: () => Promise<SideChatActionResult<unknown>>;
|
|
13
13
|
readonly onFocusParent: () => void;
|
|
14
|
+
readonly onAddToConversation?: () => void;
|
|
15
|
+
readonly addToConversationDisabled?: boolean;
|
|
14
16
|
readonly onRemoveSelection?: () => void;
|
|
15
17
|
}
|
|
16
|
-
export declare function SideChatPanel({ state, locale, embeddedConversation, modelControl, onDraftChange, onFirstSend, onClose, onRetry, onFocusParent, onRemoveSelection, }: SideChatPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export declare function SideChatPanel({ state, locale, embeddedConversation, modelControl, onDraftChange, onFirstSend, onClose, onRetry, onFocusParent, onAddToConversation, addToConversationDisabled, onRemoveSelection, }: SideChatPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
17
19
|
//# 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,YAAY,CAAC,EAAE,SAAS,CAAA;IACjC,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,YAAY,EACZ,aAAa,EACb,WAAW,EACX,OAAO,EACP,OAAO,EACP,aAAa,EACb,iBAAiB,GAClB,EAAE,kBAAkB,
|
|
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,YAAY,CAAC,EAAE,SAAS,CAAA;IACjC,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,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAA;IACzC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,OAAO,CAAA;IAC5C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAA;CACxC;AAED,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,MAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,OAAO,EACP,OAAO,EACP,aAAa,EACb,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,GAClB,EAAE,kBAAkB,2CA4FpB"}
|
|
@@ -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, modelControl, onDraftChange, onFirstSend, onClose, onRetry, onFocusParent, onRemoveSelection, }) {
|
|
10
|
+
export function SideChatPanel({ state, locale = 'en', embeddedConversation, modelControl, onDraftChange, onFirstSend, onClose, onRetry, onFocusParent, onAddToConversation, addToConversationDisabled, onRemoveSelection, }) {
|
|
11
11
|
const messages = SIDE_CHAT_MESSAGES[locale];
|
|
12
12
|
const [submitting, setSubmitting] = useState(false);
|
|
13
13
|
const draftRef = useAutoGrowingTextarea(state.draft);
|
|
@@ -23,7 +23,7 @@ export function SideChatPanel({ state, locale = 'en', embeddedConversation, mode
|
|
|
23
23
|
setSubmitting(false);
|
|
24
24
|
}
|
|
25
25
|
};
|
|
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
|
|
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, ...onAddToConversation === undefined ? {} : { onAddToConversation }, ...addToConversationDisabled === undefined ? {} : { addToConversationDisabled }, 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
28
|
: (_jsxs("form", { className: "dsh-side-chat-draft", "data-composer-card": "", 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) {
|
|
@@ -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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"}
|
|
@@ -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,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,
|
|
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,iBAAiB,EAAE,MAAM,CAAA;IAClC,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,CA2ChF,CAAA"}
|
|
@@ -2,6 +2,7 @@ export const SIDE_CHAT_MESSAGES = Object.freeze({
|
|
|
2
2
|
en: Object.freeze({
|
|
3
3
|
title: 'Side Chat',
|
|
4
4
|
close: 'Close Side Chat',
|
|
5
|
+
addToConversation: 'Add to conversation',
|
|
5
6
|
placeholder: 'Ask about this in a Side Chat',
|
|
6
7
|
send: 'Send',
|
|
7
8
|
selectedPassage: 'Selected passage',
|
|
@@ -22,6 +23,7 @@ export const SIDE_CHAT_MESSAGES = Object.freeze({
|
|
|
22
23
|
'zh-CN': Object.freeze({
|
|
23
24
|
title: '侧边对话',
|
|
24
25
|
close: '关闭侧边对话',
|
|
26
|
+
addToConversation: '添加到主对话',
|
|
25
27
|
placeholder: '在侧边对话中询问这段内容',
|
|
26
28
|
send: '发送',
|
|
27
29
|
selectedPassage: '所选段落',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/client/panel/messages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/client/panel/messages.ts"],"names":[],"mappings":"AAsBA,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,iBAAiB,EAAE,qBAAqB;QACxC,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,iBAAiB,EAAE,QAAQ;QAC3B,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"}
|
|
@@ -1 +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,
|
|
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,EAIL,KAAK,2BAA2B,EACjC,MAAM,0BAA0B,CAAA;AAMjC,KAAK,MAAM,GAAG,MAAM,OAAO,kBAAkB,CAAA;AAC7C,UAAU,aAAa;IACrB,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,IAAI,EAAE;YACb,QAAQ,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,CAAA;YACpC,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;YAC5C,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAChC,CAAA;QACD,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;AA6DD,kFAAkF;AAClF,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,SAAS,CAiC5G;AAED,iFAAiF;AACjF,wBAAgB,kCAAkC,CAChD,GAAG,EAAE,gBAAgB,EACrB,iBAAiB,EAAE,MAAM,IAAI,GAC5B,MAAM,IAAI,CA2CZ"}
|
|
@@ -3,6 +3,7 @@ import { createElement } from 'react';
|
|
|
3
3
|
import { SIDE_CHAT_MESSAGES } from '../panel/messages.js';
|
|
4
4
|
import { SelectionQuote } from '../panel/SelectionQuote.js';
|
|
5
5
|
import { conversationAnnotations, parseAnnotatedConversationPrompt, } from './add-to-conversation.js';
|
|
6
|
+
import { parseReferencedConversationPrompt, } from './referenced-conversation.js';
|
|
6
7
|
function currentLocale() {
|
|
7
8
|
return navigator.language.toLowerCase().startsWith('zh') ? 'zh-CN' : 'en';
|
|
8
9
|
}
|
|
@@ -40,20 +41,58 @@ function replaceTextContent(content, message) {
|
|
|
40
41
|
});
|
|
41
42
|
return replaced ? next : [{ type: 'text', text: message }, ...next];
|
|
42
43
|
}
|
|
44
|
+
function parsePluginPrompt(text) {
|
|
45
|
+
let message = text;
|
|
46
|
+
let annotations;
|
|
47
|
+
let reference;
|
|
48
|
+
for (let index = 0; index < 2; index += 1) {
|
|
49
|
+
const annotated = annotations === undefined ? parseAnnotatedConversationPrompt(message) : undefined;
|
|
50
|
+
if (annotated !== undefined) {
|
|
51
|
+
annotations = annotated.annotations;
|
|
52
|
+
message = annotated.message;
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
const referenced = reference === undefined ? parseReferencedConversationPrompt(message) : undefined;
|
|
56
|
+
if (referenced !== undefined) {
|
|
57
|
+
reference = referenced.reference;
|
|
58
|
+
message = referenced.message;
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
if (annotations === undefined && reference === undefined)
|
|
64
|
+
return;
|
|
65
|
+
return {
|
|
66
|
+
...(annotations === undefined ? {} : { annotations }),
|
|
67
|
+
...(reference === undefined ? {} : { reference }),
|
|
68
|
+
message,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
43
71
|
/** Wrap DSH's own user renderer only when this plugin's durable prefix exists. */
|
|
44
72
|
export function annotatedUserMessageRenderer(Original) {
|
|
45
73
|
return function AnnotatedUserMessageRenderer(props) {
|
|
46
|
-
const parsed =
|
|
74
|
+
const parsed = parsePluginPrompt(contentText(props.node.data.content));
|
|
47
75
|
if (parsed === undefined)
|
|
48
76
|
return createElement(Original, props);
|
|
77
|
+
const body = visibleMessage(parsed.message);
|
|
78
|
+
const visible = parsed.reference === undefined
|
|
79
|
+
? body
|
|
80
|
+
: [`@${parsed.reference.title}`, body].filter(part => part.length > 0).join('\n\n');
|
|
81
|
+
const existingLabels = props.node.data.referenceLabels ?? [];
|
|
49
82
|
const node = {
|
|
50
83
|
...props.node,
|
|
51
84
|
data: {
|
|
52
85
|
...props.node.data,
|
|
53
|
-
content: replaceTextContent(props.node.data.content,
|
|
86
|
+
content: replaceTextContent(props.node.data.content, visible),
|
|
87
|
+
...(parsed.reference === undefined
|
|
88
|
+
? {}
|
|
89
|
+
: { referenceLabels: [...new Set([parsed.reference.title, ...existingLabels])] }),
|
|
54
90
|
},
|
|
55
91
|
};
|
|
56
|
-
|
|
92
|
+
const original = createElement(Original, { ...props, node });
|
|
93
|
+
if (parsed.annotations === undefined)
|
|
94
|
+
return original;
|
|
95
|
+
return (_jsxs("div", { className: "dsh-side-chat-parent-user-message", children: [_jsx(SelectionQuote, { selections: parsed.annotations, messages: SIDE_CHAT_MESSAGES[currentLocale()] }), _jsx("div", { className: "dsh-side-chat-parent-user-message-body", children: original })] }));
|
|
57
96
|
};
|
|
58
97
|
}
|
|
59
98
|
/** Mount the composer capsule and a thin wrapper around DSH's user renderers. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParentConversationAnnotations.js","sourceRoot":"","sources":["../../../src/client/parent-composer/ParentConversationAnnotations.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAoC,MAAM,OAAO,CAAA;AAEvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EACL,uBAAuB,EACvB,gCAAgC,
|
|
1
|
+
{"version":3,"file":"ParentConversationAnnotations.js","sourceRoot":"","sources":["../../../src/client/parent-composer/ParentConversationAnnotations.tsx"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,10 @@ export interface ParentComposerOccurrence {
|
|
|
15
15
|
readonly source: string;
|
|
16
16
|
readonly ref: string;
|
|
17
17
|
readonly offset: number;
|
|
18
|
+
/** Present in newer DSH input snapshots; older rc.6 fixtures omit it. */
|
|
19
|
+
readonly length?: number;
|
|
20
|
+
/** Draft-persistence projection cached by newer DSH versions. */
|
|
21
|
+
readonly clipboardText?: string;
|
|
18
22
|
}
|
|
19
23
|
export interface ParentComposerInputSnapshot {
|
|
20
24
|
readonly draft: string;
|
|
@@ -31,6 +35,7 @@ export interface ParentComposerInput {
|
|
|
31
35
|
readonly source: string;
|
|
32
36
|
readonly ref: string;
|
|
33
37
|
readonly label: string;
|
|
38
|
+
readonly appearance?: 'session' | 'file' | 'folder';
|
|
34
39
|
readonly clipboardText: string;
|
|
35
40
|
}, span: {
|
|
36
41
|
readonly start: number;
|
|
@@ -69,9 +74,9 @@ export declare function addSelectionToConversation(input: ParentComposerInput, s
|
|
|
69
74
|
export declare function updateConversationAnnotation(input: ParentComposerInput, annotationIndex: number, comment?: string): boolean;
|
|
70
75
|
/** Return the valid aggregated reference currently occupying the leading draft slot. */
|
|
71
76
|
export declare function conversationAnnotationReference(snapshot: ParentComposerInputSnapshot): string | undefined;
|
|
72
|
-
/** Remove
|
|
77
|
+
/** Remove a recognized plugin-owned prefix restored without its occurrence. */
|
|
73
78
|
export declare function removeOrphanedConversationAnnotationPlaceholder(input: ParentComposerInput): boolean;
|
|
74
|
-
/** Rehydrate a lost
|
|
79
|
+
/** Rehydrate a lost occurrence only over an exact stored plugin projection. */
|
|
75
80
|
export declare function restoreConversationAnnotationReference(input: ParentComposerInput, ref: string): boolean;
|
|
76
81
|
export interface AnnotatedConversationPrompt {
|
|
77
82
|
readonly annotations: readonly ConversationAnnotation[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-to-conversation.d.ts","sourceRoot":"","sources":["../../../src/client/parent-composer/add-to-conversation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAI1F,eAAO,MAAM,yBAAyB,kCAAkC,CAAA;AAExE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAMD,MAAM,WAAW,+BAAgC,SAAQ,sBAAsB;IAC7E,sEAAsE;IACtE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAA;CAC1C;AAOD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"add-to-conversation.d.ts","sourceRoot":"","sources":["../../../src/client/parent-composer/add-to-conversation.ts"],"names":[],"mappings":"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"}
|
|
@@ -113,6 +113,13 @@ function selectedContext(annotations) {
|
|
|
113
113
|
function selectionOccurrences(snapshot) {
|
|
114
114
|
return snapshot.occurrences.filter(occurrence => occurrence.source === SELECTION_REFERENCE_SOURCE);
|
|
115
115
|
}
|
|
116
|
+
function occurrenceLength(occurrence) {
|
|
117
|
+
return occurrence.length !== undefined
|
|
118
|
+
&& Number.isSafeInteger(occurrence.length)
|
|
119
|
+
&& occurrence.length > 0
|
|
120
|
+
? occurrence.length
|
|
121
|
+
: 1;
|
|
122
|
+
}
|
|
116
123
|
function storedConversationAnnotations(snapshot) {
|
|
117
124
|
return selectionOccurrences(snapshot).flatMap((occurrence) => {
|
|
118
125
|
try {
|
|
@@ -145,7 +152,8 @@ function draftWithoutSelectionOccurrences(snapshot) {
|
|
|
145
152
|
const occurrences = [...selectionOccurrences(snapshot)].sort((a, b) => b.offset - a.offset);
|
|
146
153
|
let draft = snapshot.draft;
|
|
147
154
|
for (const occurrence of occurrences) {
|
|
148
|
-
draft = draft.slice(0, occurrence.offset)
|
|
155
|
+
draft = draft.slice(0, occurrence.offset)
|
|
156
|
+
+ draft.slice(occurrence.offset + occurrenceLength(occurrence));
|
|
149
157
|
}
|
|
150
158
|
// Add to chat owns the blank lines immediately after its leading occurrence.
|
|
151
159
|
if (occurrences.some(occurrence => occurrence.offset === 0)) {
|
|
@@ -180,16 +188,20 @@ export const selectionReferenceSource = {
|
|
|
180
188
|
},
|
|
181
189
|
},
|
|
182
190
|
};
|
|
191
|
+
function annotationClipboardText(annotations) {
|
|
192
|
+
return annotations.map(annotation => annotation.text).join('\n\n');
|
|
193
|
+
}
|
|
183
194
|
function writeConversationAnnotations(input, before, annotations) {
|
|
184
195
|
const draft = draftWithoutSelectionOccurrences(before);
|
|
185
196
|
if (selectionOccurrences(before).length > 0)
|
|
186
197
|
input.setDraft(draft);
|
|
187
198
|
const insertionState = input.state.getSnapshot();
|
|
199
|
+
const ref = encodeSelectionReference(annotations);
|
|
188
200
|
const inserted = input.insertReference({
|
|
189
201
|
source: SELECTION_REFERENCE_SOURCE,
|
|
190
|
-
ref
|
|
202
|
+
ref,
|
|
191
203
|
label: SELECTION_REFERENCE_LABEL,
|
|
192
|
-
clipboardText: annotations
|
|
204
|
+
clipboardText: annotationClipboardText(annotations),
|
|
193
205
|
}, {
|
|
194
206
|
start: 0,
|
|
195
207
|
end: 0,
|
|
@@ -197,10 +209,25 @@ function writeConversationAnnotations(input, before, annotations) {
|
|
|
197
209
|
});
|
|
198
210
|
if (!inserted)
|
|
199
211
|
return false;
|
|
200
|
-
//
|
|
201
|
-
//
|
|
202
|
-
|
|
203
|
-
|
|
212
|
+
// rc.7 inserts one U+FFFC placeholder, while newer DSH versions insert the
|
|
213
|
+
// full @label range. Preserve whichever range DSH minted and only replace
|
|
214
|
+
// its trailing separator so the first visual row remains available to the
|
|
215
|
+
// plugin's interactive capsule.
|
|
216
|
+
const afterInsertion = input.state.getSnapshot();
|
|
217
|
+
const occurrence = selectionOccurrences(afterInsertion)
|
|
218
|
+
.find(candidate => candidate.offset === 0 && candidate.ref === ref);
|
|
219
|
+
const displayLength = occurrence === undefined ? 0 : occurrenceLength(occurrence);
|
|
220
|
+
if (occurrence === undefined || displayLength > afterInsertion.draft.length) {
|
|
221
|
+
input.setDraft(draft);
|
|
222
|
+
return false;
|
|
223
|
+
}
|
|
224
|
+
const display = afterInsertion.draft.slice(0, displayLength);
|
|
225
|
+
input.setDraft(`${display}\n\n${draft}`);
|
|
226
|
+
const preserved = selectionOccurrences(input.state.getSnapshot())
|
|
227
|
+
.some(candidate => candidate.offset === 0 && candidate.ref === ref);
|
|
228
|
+
if (!preserved)
|
|
229
|
+
input.setDraft(draft);
|
|
230
|
+
return preserved;
|
|
204
231
|
}
|
|
205
232
|
/** Add one passage to the parent composer's aggregated annotation occurrence. */
|
|
206
233
|
export function addSelectionToConversation(input, selection, comment) {
|
|
@@ -228,7 +255,10 @@ export function updateConversationAnnotation(input, annotationIndex, comment) {
|
|
|
228
255
|
/** Return the valid aggregated reference currently occupying the leading draft slot. */
|
|
229
256
|
export function conversationAnnotationReference(snapshot) {
|
|
230
257
|
const occurrence = selectionOccurrences(snapshot).find(candidate => candidate.offset === 0);
|
|
231
|
-
if (occurrence === undefined
|
|
258
|
+
if (occurrence === undefined
|
|
259
|
+
|| occurrenceLength(occurrence) > snapshot.draft.length
|
|
260
|
+
|| (occurrence.length === undefined
|
|
261
|
+
&& !snapshot.draft.startsWith(OBJECT_REPLACEMENT_CHARACTER)))
|
|
232
262
|
return;
|
|
233
263
|
try {
|
|
234
264
|
decodeStoredSelectionReference(occurrence.ref);
|
|
@@ -238,14 +268,25 @@ export function conversationAnnotationReference(snapshot) {
|
|
|
238
268
|
return;
|
|
239
269
|
}
|
|
240
270
|
}
|
|
241
|
-
function draftWithoutOrphanedAnnotationPrefix(snapshot) {
|
|
242
|
-
|
|
243
|
-
if (!snapshot.draft.startsWith(prefix)
|
|
244
|
-
|| snapshot.occurrences.some(occurrence => occurrence.offset === 0))
|
|
271
|
+
function draftWithoutOrphanedAnnotationPrefix(snapshot, ref) {
|
|
272
|
+
if (snapshot.occurrences.some(occurrence => occurrence.offset === 0))
|
|
245
273
|
return;
|
|
246
|
-
|
|
274
|
+
const prefixes = [
|
|
275
|
+
`${OBJECT_REPLACEMENT_CHARACTER}\n\n`,
|
|
276
|
+
`@${SELECTION_REFERENCE_LABEL}\n\n`,
|
|
277
|
+
];
|
|
278
|
+
if (ref !== undefined) {
|
|
279
|
+
try {
|
|
280
|
+
prefixes.push(`${annotationClipboardText(decodeStoredSelectionReference(ref))}\n\n`);
|
|
281
|
+
}
|
|
282
|
+
catch {
|
|
283
|
+
// Invalid stored references cannot authorize removing plain draft text.
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
const prefix = prefixes.find(candidate => snapshot.draft.startsWith(candidate));
|
|
287
|
+
return prefix === undefined ? undefined : snapshot.draft.slice(prefix.length);
|
|
247
288
|
}
|
|
248
|
-
/** Remove
|
|
289
|
+
/** Remove a recognized plugin-owned prefix restored without its occurrence. */
|
|
249
290
|
export function removeOrphanedConversationAnnotationPlaceholder(input) {
|
|
250
291
|
const draft = draftWithoutOrphanedAnnotationPrefix(input.state.getSnapshot());
|
|
251
292
|
if (draft === undefined)
|
|
@@ -253,7 +294,7 @@ export function removeOrphanedConversationAnnotationPlaceholder(input) {
|
|
|
253
294
|
input.setDraft(draft);
|
|
254
295
|
return true;
|
|
255
296
|
}
|
|
256
|
-
/** Rehydrate a lost
|
|
297
|
+
/** Rehydrate a lost occurrence only over an exact stored plugin projection. */
|
|
257
298
|
export function restoreConversationAnnotationReference(input, ref) {
|
|
258
299
|
let annotations;
|
|
259
300
|
try {
|
|
@@ -262,7 +303,7 @@ export function restoreConversationAnnotationReference(input, ref) {
|
|
|
262
303
|
catch {
|
|
263
304
|
return false;
|
|
264
305
|
}
|
|
265
|
-
const draft = draftWithoutOrphanedAnnotationPrefix(input.state.getSnapshot());
|
|
306
|
+
const draft = draftWithoutOrphanedAnnotationPrefix(input.state.getSnapshot(), ref);
|
|
266
307
|
if (draft === undefined)
|
|
267
308
|
return false;
|
|
268
309
|
input.setDraft(draft);
|