@ykurilov/agent-chat-react 0.62.0 → 0.63.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/CHANGELOG.md +11 -0
- package/dist/{chunk-7DVTSVKQ.js → chunk-Y5HL6THS.js} +260 -182
- package/dist/chunk-Y5HL6THS.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/panel.js +1 -1
- package/dist/types/message-editing/use-message-editing.d.ts +32 -0
- package/dist/types/message-feed.d.ts +3 -1
- package/package.json +1 -1
- package/dist/chunk-7DVTSVKQ.js.map +0 -1
package/dist/index.js
CHANGED
package/dist/panel.js
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
useChatList,
|
|
7
7
|
useChatListView,
|
|
8
8
|
useWorkspaceListSync
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-Y5HL6THS.js";
|
|
10
10
|
|
|
11
11
|
// src/agent-panel/agent-panel-provider.tsx
|
|
12
12
|
import { useCallback as useCallback2, useMemo, useRef, useState, useSyncExternalStore as useSyncExternalStore2 } from "react";
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { RefObject } from "react";
|
|
2
|
+
import type { AgentChatMessage } from "../chat-types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Открытое поле правки сообщения человека. Набранный текст живёт здесь, а не в самом поле: поле пересоздаётся, когда
|
|
5
|
+
* окно ленты убирает его за краем экрана, когда лента открывается заново (переход ветки) или сообщение приходит с
|
|
6
|
+
* новым id, — и появляется снова с тем, что человек набрал.
|
|
7
|
+
*/
|
|
8
|
+
export interface MessageEditing {
|
|
9
|
+
/** id сообщения с открытым полем правки; `null` — поле закрыто. */
|
|
10
|
+
id: string | null;
|
|
11
|
+
/** Номер попытки сохранения: после отказа поле открывается заново с ошибкой. */
|
|
12
|
+
attempt: number;
|
|
13
|
+
/** Отказ сервера на последнюю попытку. */
|
|
14
|
+
error?: string;
|
|
15
|
+
/** С каким текстом открыть поле: набранное раньше или текст сообщения. */
|
|
16
|
+
draftOf: (message: AgentChatMessage) => string;
|
|
17
|
+
open: (messageId: string) => void;
|
|
18
|
+
/** Человек набирает: перерисовки ленты это не вызывает. */
|
|
19
|
+
type: (text: string) => void;
|
|
20
|
+
close: () => void;
|
|
21
|
+
/** Сервер отказал правке: поле открывается снова с отправленным текстом и ошибкой. */
|
|
22
|
+
refuse: (messageId: string, text: string, error: string) => void;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Состояние правки по ленте `messages`. Сообщение пришло с новым id (перечитанная история) — поле остаётся у него.
|
|
26
|
+
* Сообщения больше нет — поле закрывается, а набранный текст отдаётся `onDraftLost` (чат кладёт его в поле ввода).
|
|
27
|
+
* Пока идёт сохранение (`saving`), лента меняется самой правкой: это не пропажа.
|
|
28
|
+
*/
|
|
29
|
+
export declare function useMessageEditing(messages: readonly AgentChatMessage[], { saving, onDraftLost }: {
|
|
30
|
+
saving: RefObject<boolean>;
|
|
31
|
+
onDraftLost: (text: string) => void;
|
|
32
|
+
}): MessageEditing;
|
|
@@ -13,6 +13,8 @@ export interface MessageFeedProps {
|
|
|
13
13
|
keepLastMounted: boolean;
|
|
14
14
|
/** Что показать при первом показе: сообщение с этим id встаёт у верха; по умолчанию лента внизу. */
|
|
15
15
|
openAtMessageId?: string;
|
|
16
|
+
/** Сообщение с открытым полем правки остаётся в дереве за краем окна ленты: поле не теряет фокус и место ввода. */
|
|
17
|
+
keepMountedMessageId?: string;
|
|
16
18
|
ref?: Ref<MessageFeedHandle>;
|
|
17
19
|
}
|
|
18
20
|
/**
|
|
@@ -21,7 +23,7 @@ export interface MessageFeedProps {
|
|
|
21
23
|
* за растущим ответом, а после шага читателя вверх (колесо, касание, клавиша) стоит на месте.
|
|
22
24
|
* Снова прилипает, когда читатель вернулся к низу ближе чем на 96 px.
|
|
23
25
|
*/
|
|
24
|
-
declare function MessageFeedView({ scrollRef, messages, renderMessage, keepLastMounted, openAtMessageId, ref }: MessageFeedProps): import("react").JSX.Element;
|
|
26
|
+
declare function MessageFeedView({ scrollRef, messages, renderMessage, keepLastMounted, openAtMessageId, keepMountedMessageId, ref }: MessageFeedProps): import("react").JSX.Element;
|
|
25
27
|
/** `memo`: ввод в поле и другие перерисовки чата, не меняющие ленту, её не трогают. */
|
|
26
28
|
export declare const MessageFeed: import("react").MemoExoticComponent<typeof MessageFeedView>;
|
|
27
29
|
export {};
|