@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.
Files changed (47) hide show
  1. package/README.md +4 -4
  2. package/README.zh-CN.md +4 -4
  3. package/lib/client/apply.d.ts.map +1 -1
  4. package/lib/client/apply.js +3 -0
  5. package/lib/client/apply.js.map +1 -1
  6. package/lib/client/panel/SideChatHeader.d.ts +3 -1
  7. package/lib/client/panel/SideChatHeader.d.ts.map +1 -1
  8. package/lib/client/panel/SideChatHeader.js +5 -2
  9. package/lib/client/panel/SideChatHeader.js.map +1 -1
  10. package/lib/client/panel/SideChatPanel.d.ts +3 -1
  11. package/lib/client/panel/SideChatPanel.d.ts.map +1 -1
  12. package/lib/client/panel/SideChatPanel.js +2 -2
  13. package/lib/client/panel/SideChatPanel.js.map +1 -1
  14. package/lib/client/panel/messages.d.ts +1 -0
  15. package/lib/client/panel/messages.d.ts.map +1 -1
  16. package/lib/client/panel/messages.js +2 -0
  17. package/lib/client/panel/messages.js.map +1 -1
  18. package/lib/client/parent-composer/ParentConversationAnnotations.d.ts +2 -0
  19. package/lib/client/parent-composer/ParentConversationAnnotations.d.ts.map +1 -1
  20. package/lib/client/parent-composer/ParentConversationAnnotations.js +42 -3
  21. package/lib/client/parent-composer/ParentConversationAnnotations.js.map +1 -1
  22. package/lib/client/parent-composer/add-to-conversation.d.ts +7 -2
  23. package/lib/client/parent-composer/add-to-conversation.d.ts.map +1 -1
  24. package/lib/client/parent-composer/add-to-conversation.js +57 -16
  25. package/lib/client/parent-composer/add-to-conversation.js.map +1 -1
  26. package/lib/client/parent-composer/annotation-persistence.d.ts +1 -1
  27. package/lib/client/parent-composer/annotation-persistence.d.ts.map +1 -1
  28. package/lib/client/parent-composer/annotation-persistence.js +40 -5
  29. package/lib/client/parent-composer/annotation-persistence.js.map +1 -1
  30. package/lib/client/parent-composer/referenced-conversation.d.ts +35 -0
  31. package/lib/client/parent-composer/referenced-conversation.d.ts.map +1 -0
  32. package/lib/client/parent-composer/referenced-conversation.js +207 -0
  33. package/lib/client/parent-composer/referenced-conversation.js.map +1 -0
  34. package/lib/client/rc6/Rc6SideChatOverlay.d.ts.map +1 -1
  35. package/lib/client/rc6/Rc6SideChatOverlay.js +41 -1
  36. package/lib/client/rc6/Rc6SideChatOverlay.js.map +1 -1
  37. package/lib/client/rc6/sessions-adapter.d.ts +3 -0
  38. package/lib/client/rc6/sessions-adapter.d.ts.map +1 -1
  39. package/lib/client/rc6/sessions-adapter.js +10 -0
  40. package/lib/client/rc6/sessions-adapter.js.map +1 -1
  41. package/lib/client.js +352 -32
  42. package/lib/client.js.map +1 -1
  43. package/lib/shared/constants.d.ts +1 -1
  44. package/lib/shared/constants.d.ts.map +1 -1
  45. package/lib/shared/constants.js +1 -1
  46. package/lib/shared/constants.js.map +1 -1
  47. 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
- ![Ask about selected text in Side Chat, then add an annotated selection to the main chat](https://raw.githubusercontent.com/AHGGG/dsh-side-chat/master/docs/assets/side-chat-demo.gif)
7
+ ![Ask about selected text in Side Chat, then add the Side Chat conversation to the main chat](https://raw.githubusercontent.com/AHGGG/dsh-side-chat/master/docs/assets/side-chat-demo.gif)
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. Press `Esc` or click `×` when you are done.
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
- ![先在 Side Chat 中询问选中文本,再把带批注的选区加入主会话](https://raw.githubusercontent.com/AHGGG/dsh-side-chat/master/docs/assets/side-chat-demo.gif)
7
+ ![先在 Side Chat 中询问选中文本,再将 Side Chat 对话添加到主会话](https://raw.githubusercontent.com/AHGGG/dsh-side-chat/master/docs/assets/side-chat-demo.gif)
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. 完成后按 `Esc`,或者点击 `×` 关闭。
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;AAalD,eAAO,MAAM,IAAI,qBAAqB,CAAA;AACtC,eAAO,MAAM,MAAM,UAAuF,CAAA;AAE1G,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCvD"}
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"}
@@ -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();
@@ -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;AAErD,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,aAAa,EACb,OAAO,GACR,EAAE;IACD,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;IAC7B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAA;IACnC,QAAQ,CAAC,aAAa,EAAE,MAAM,IAAI,CAAA;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAC7B,2CAcA"}
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
- export function SideChatHeader({ phase, messages, onFocusParent, onClose, }) {
3
- 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 }) }), _jsx("button", { type: "button", "aria-label": messages.close, disabled: phase === 'closing', onClick: onClose, children: "\u00D7" })] }));
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,GAMR;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,iBACE,IAAI,EAAC,QAAQ,gBACD,QAAQ,CAAC,KAAK,EAC1B,QAAQ,EAAE,KAAK,KAAK,SAAS,EAC7B,OAAO,EAAE,OAAO,uBACP,IACJ,CACV,CAAA;AACH,CAAC"}
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,2CA0FpB"}
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":"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"}
1
+ {"version":3,"file":"SideChatPanel.js","sourceRoot":"","sources":["../../../src/client/panel/SideChatPanel.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  export interface SideChatMessages {
2
2
  readonly title: string;
3
3
  readonly close: string;
4
+ readonly addToConversation: string;
4
5
  readonly placeholder: string;
5
6
  readonly send: string;
6
7
  readonly selectedPassage: 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,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"}
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":"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"}
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"}
@@ -7,6 +7,8 @@ interface UserNodeProps {
7
7
  readonly node: {
8
8
  readonly data: {
9
9
  readonly content: readonly unknown[];
10
+ readonly referenceLabels?: readonly string[];
11
+ readonly [key: string]: unknown;
10
12
  };
11
13
  readonly [key: string]: unknown;
12
14
  };
@@ -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,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,CAuB5G;AAED,iFAAiF;AACjF,wBAAgB,kCAAkC,CAChD,GAAG,EAAE,gBAAgB,EACrB,iBAAiB,EAAE,MAAM,IAAI,GAC5B,MAAM,IAAI,CA2CZ"}
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 = parseAnnotatedConversationPrompt(contentText(props.node.data.content));
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, visibleMessage(parsed.message)),
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
- 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: createElement(Original, { ...props, node }) })] }));
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":"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"}
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 the plugin-owned prefix when rc.6 restored its draft without occurrences. */
77
+ /** Remove a recognized plugin-owned prefix restored without its occurrence. */
73
78
  export declare function removeOrphanedConversationAnnotationPlaceholder(input: ParentComposerInput): boolean;
74
- /** Rehydrate a lost rc.6 occurrence only over the exact plugin-owned orphan prefix. */
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":"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"}
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;IACvB,yEAAyE;IACzE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,iEAAiE;IACjE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAChC;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,EAAE,SAAS,wBAAwB,EAAE,CAAA;CAC1D;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE;QACd,WAAW,IAAI,2BAA2B,CAAA;QAC1C,SAAS,CAAC,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;KAC7C,CAAA;IACD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,eAAe,CACb,SAAS,EAAE;QACT,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;QACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAA;QACnD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;KAC/B,EACD,IAAI,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAChF,OAAO,CAAA;CACX;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,KAAK,EAAE;QAAE,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAAA;KAAE,CAAA;CAC7D;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,UAAU,IAAI,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC,CAAA;IACvC,MAAM,IAAI,SAAS,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE;QACd,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;QAClC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAC7D,CAAA;CACF;AA0FD,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,sBAAsB,EAAE,CAEvF;AAiDD,mFAAmF;AACnF,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,2BAA2B,GACpC,SAAS,sBAAsB,EAAE,CAEnC;AAED,qEAAqE;AACrE,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,2BAA2B,GACpC,SAAS,+BAA+B,EAAE,CAW5C;AAiBD,+EAA+E;AAC/E,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAKjF;AAED,8EAA8E;AAC9E,eAAO,MAAM,wBAAwB,EAAE,wBAatC,CAAA;AAiDD,iFAAiF;AACjF,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,mBAAmB,EAC1B,SAAS,EAAE,qBAAqB,EAChC,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAIT;AAED,8EAA8E;AAC9E,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,mBAAmB,EAC1B,eAAe,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAcT;AAED,wFAAwF;AACxF,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,2BAA2B,GACpC,MAAM,GAAG,SAAS,CAYpB;AAsBD,+EAA+E;AAC/E,wBAAgB,+CAA+C,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAKnG;AAED,+EAA+E;AAC/E,wBAAgB,sCAAsC,CACpD,KAAK,EAAE,mBAAmB,EAC1B,GAAG,EAAE,MAAM,GACV,OAAO,CAWT;AASD,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,WAAW,EAAE,SAAS,sBAAsB,EAAE,CAAA;IACvD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAYD,iFAAiF;AACjF,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,2BAA2B,GAAG,SAAS,CA2BtG;AAED,wDAAwD;AACxD,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,qBAAqB,GAAG,SAAS,EAC5C,QAAQ,EAAE,MAAM,GACf,SAAS,kBAAkB,EAAE,CAe/B"}
@@ -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) + draft.slice(occurrence.offset + 1);
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: encodeSelectionReference(annotations),
202
+ ref,
191
203
  label: SELECTION_REFERENCE_LABEL,
192
- clipboardText: annotations.map(annotation => annotation.text).join('\n\n'),
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
- // DSH keeps the occurrence and owns its model serialization. The two blank
201
- // lines reserve the first visual row for the plugin's interactive capsule.
202
- input.setDraft(`${OBJECT_REPLACEMENT_CHARACTER}\n\n${draft}`);
203
- return true;
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 || !snapshot.draft.startsWith(OBJECT_REPLACEMENT_CHARACTER))
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
- const prefix = `${OBJECT_REPLACEMENT_CHARACTER}\n\n`;
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
- return snapshot.draft.slice(prefix.length);
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 the plugin-owned prefix when rc.6 restored its draft without occurrences. */
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 rc.6 occurrence only over the exact plugin-owned orphan prefix. */
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);