@ykurilov/agent-chat-core 0.79.1 → 0.80.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 +18 -0
- package/README.md +1 -0
- package/dist/{chunk-AJSRGBVM.js → chunk-PORXDIWX.js} +80 -31
- package/dist/chunk-PORXDIWX.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/storage-contract.js +1 -1
- package/dist/types/agent-run/build-model-request.d.ts +3 -9
- package/dist/types/agent-run/run-agent-turn.d.ts +2 -1
- package/dist/types/chat-service.d.ts +3 -1
- package/dist/types/compaction/run-compaction.d.ts +4 -0
- package/dist/types/compaction/summary-part.d.ts +10 -0
- package/dist/types/frozen-context/context-blocks.d.ts +6 -1
- package/dist/types/frozen-context/freeze-context.d.ts +2 -0
- package/dist/types/frozen-context/frozen-context-messages.d.ts +8 -2
- package/dist/types/index.d.ts +1 -1
- package/package.json +1 -1
- package/dist/chunk-AJSRGBVM.js.map +0 -1
package/dist/index.js
CHANGED
package/dist/storage-contract.js
CHANGED
|
@@ -5,7 +5,7 @@ import type { ModelCatalog, ProviderOptionsByProvider, ReasoningRequest } from "
|
|
|
5
5
|
import type { ModelSilenceLimits } from "../provider-errors/model-silence.js";
|
|
6
6
|
import type { ModelCallObservation } from "./observe-model-calls.js";
|
|
7
7
|
import type { ModeNotes } from "./mode-notes.js";
|
|
8
|
-
import type {
|
|
8
|
+
import type { FrozenContextProjection } from "../frozen-context/frozen-context-messages.js";
|
|
9
9
|
import type { ServiceBlockFormat } from "./forged-blocks.js";
|
|
10
10
|
export interface ModelRequest {
|
|
11
11
|
model: LanguageModel;
|
|
@@ -67,15 +67,9 @@ export declare function buildModelRequest(input: {
|
|
|
67
67
|
/**
|
|
68
68
|
* Застывшие блоки хода (память, дата, блоки приложения, место): текстом в вопрос перед каждым ответом, у которого они
|
|
69
69
|
* есть, после пометок режима и канала (`withFrozenContext`). `current` — блоки ответа, которого в истории ещё нет.
|
|
70
|
-
* Нет — блоков в запросе
|
|
70
|
+
* Нет — блоков в запросе нет. Сжатие включает сохранённые блоки тем же механизмом, без чтения источников.
|
|
71
71
|
*/
|
|
72
|
-
frozenContext?:
|
|
73
|
-
current?: {
|
|
74
|
-
answerId: string;
|
|
75
|
-
data: FrozenContextData;
|
|
76
|
-
};
|
|
77
|
-
group: boolean;
|
|
78
|
-
};
|
|
72
|
+
frozenContext?: FrozenContextProjection;
|
|
79
73
|
/**
|
|
80
74
|
* Сообщения после истории только в этом запросе (служебная пометка попытки): в историю не пишутся. Метка кэша конца —
|
|
81
75
|
* на последнем сообщении истории, хвост без метки: его не будет в следующих запросах, записывать его в кэш незачем,
|
|
@@ -27,7 +27,7 @@ import type { AppEvent, StaffActor } from "../turn-hooks/turn-hooks.js";
|
|
|
27
27
|
import type { PreparedTurn } from "../turn-hooks/turn-preparation.js";
|
|
28
28
|
import type { ChatClosure } from "../access/chat-closure.js";
|
|
29
29
|
import type { HiddenStateKey } from "../app-state/state-messages.js";
|
|
30
|
-
import type { ContextBlocksSource } from "../frozen-context/context-blocks.js";
|
|
30
|
+
import type { ContextBlocksRefresh, ContextBlocksSource } from "../frozen-context/context-blocks.js";
|
|
31
31
|
import type { AgentViewer, AgentViewerSource } from "./agent-viewer.js";
|
|
32
32
|
import type { AppStateAccess, AppStateValues } from "../app-state/app-state.js";
|
|
33
33
|
/** Выбранная модель: по ней приложение решает, какие инструменты ей дать. */
|
|
@@ -198,6 +198,7 @@ export interface AgentTurnInput {
|
|
|
198
198
|
viewer?: AgentViewerSource;
|
|
199
199
|
/** Блоки приложения для вопроса хода: один опрос в начале хода, дальше застывают в ответе (`agent.contextBlocks`). */
|
|
200
200
|
contextBlocks?: ContextBlocksSource;
|
|
201
|
+
contextBlocksRefresh?: ContextBlocksRefresh;
|
|
201
202
|
/** Срок ответа `contextBlocks`, мс, уже проверенный; `Infinity` — без срока. Нет — 5 с. */
|
|
202
203
|
contextBlocksTimeoutMs?: number;
|
|
203
204
|
/**
|
|
@@ -8,7 +8,7 @@ import type { TurnRequestContext } from "./page-context/page-context.js";
|
|
|
8
8
|
import type { BrowserCallAnswer } from "./agent-run/browser-tools.js";
|
|
9
9
|
import type { AgentToolsSource } from "./agent-run/run-agent-turn.js";
|
|
10
10
|
import type { StepContext } from "./agent-run/step-context.js";
|
|
11
|
-
import type { ContextBlocksSource } from "./frozen-context/context-blocks.js";
|
|
11
|
+
import type { ContextBlocksRefresh, ContextBlocksSource } from "./frozen-context/context-blocks.js";
|
|
12
12
|
import type { ChatEvent, ChatEvents } from "./chat-events/chat-events.js";
|
|
13
13
|
import type { BackgroundTasks } from "./background/background-tasks.js";
|
|
14
14
|
import type { ThoughtTitlesSetting } from "./thought-titles/thought-titles-setting.js";
|
|
@@ -222,6 +222,8 @@ export interface AgentSettings {
|
|
|
222
222
|
* `private: true` — блок не показывается в групповом ходе. Не задано — запрос побайтно прежний.
|
|
223
223
|
*/
|
|
224
224
|
contextBlocks?: ContextBlocksSource;
|
|
225
|
+
/** Снимок до смены начала истории, как у памяти; по умолчанию `turn` — прежнее чтение каждого хода. */
|
|
226
|
+
contextBlocksRefresh?: ContextBlocksRefresh;
|
|
225
227
|
/**
|
|
226
228
|
* Права человека из базы приложения (админ ли, тариф): зовётся один раз в начале хода, до `contextBlocks` и сборки
|
|
227
229
|
* инструментов; повторная попытка и запасной провайдер не зовут снова. Итог — полем `viewer` в `contextBlocks` и в
|
|
@@ -30,6 +30,10 @@ export interface CompactionRunInput {
|
|
|
30
30
|
switchableTools?: ReadonlySet<string>;
|
|
31
31
|
/** Что сжимаем: история до границы включительно (со сводкой прежней записи, если она есть). */
|
|
32
32
|
history: readonly AgentChatMessage[];
|
|
33
|
+
/** Полная эффективная ветка: только для выбора app anchor, сообщения за границей в пересказ не идут. */
|
|
34
|
+
contextHistory?: readonly AgentChatMessage[];
|
|
35
|
+
/** Только пересказ шагов внутри текущего ответа: не сохраняется как общая сводка чата. */
|
|
36
|
+
transient?: true;
|
|
33
37
|
/** Вложения проходят тот же путь, что в обычном ходе: сводка видит текст файлов. */
|
|
34
38
|
attachments?: MessageAttachments;
|
|
35
39
|
/** Служебные форматы хода: поддельные блоки в прошлых ответах вырезаются так же, как в ходе (кэш хода). */
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AgentChatMessage } from "../conversation/types.js";
|
|
2
|
+
declare const SUMMARY: unique symbol;
|
|
3
|
+
type SummaryPart = {
|
|
4
|
+
type: "text";
|
|
5
|
+
text: string;
|
|
6
|
+
[SUMMARY]: true;
|
|
7
|
+
};
|
|
8
|
+
export declare const summaryPart: (text: string) => SummaryPart;
|
|
9
|
+
export declare const isSummaryPart: (part: AgentChatMessage["parts"][number]) => boolean;
|
|
10
|
+
export {};
|
|
@@ -21,6 +21,8 @@ export interface HiddenContextBlock {
|
|
|
21
21
|
}
|
|
22
22
|
/** Что отдаёт источник блоков: показанные блоки и скрытые ради места. */
|
|
23
23
|
export type ContextBlockEntry = ContextBlock | HiddenContextBlock;
|
|
24
|
+
/** Когда перечитывать блоки приложения; по умолчанию — каждый новый ход. */
|
|
25
|
+
export type ContextBlocksRefresh = "turn" | "history-start";
|
|
24
26
|
export declare function isHiddenBlock(entry: ContextBlockEntry): entry is HiddenContextBlock;
|
|
25
27
|
/** Что видит `agent.contextBlocks` в начале хода. Всё — копии: правка функции не доходит до хода. */
|
|
26
28
|
export interface ContextBlocksInput {
|
|
@@ -62,7 +64,8 @@ export interface ContextBlocksInput {
|
|
|
62
64
|
abortSignal: AbortSignal;
|
|
63
65
|
}
|
|
64
66
|
/**
|
|
65
|
-
* Блоки приложения для вопроса хода:
|
|
67
|
+
* Блоки приложения для вопроса хода: по умолчанию один вызов в начале нового хода; `history-start` повторяет
|
|
68
|
+
* чтение только при отсутствии снимка или смене начала истории. Пустой список, `null` и `undefined` — блоков нет.
|
|
66
69
|
* Бросила, вернула не список или не ответила в срок — блоки приложения берутся из прошлого ответа.
|
|
67
70
|
*/
|
|
68
71
|
export type ContextBlocksSource = (input: ContextBlocksInput) => ContextBlockEntry[] | null | undefined | Promise<ContextBlockEntry[] | null | undefined>;
|
|
@@ -86,6 +89,8 @@ export interface FrozenContextData {
|
|
|
86
89
|
* Нет поля — память не читалась (групповой ход, сбой, ответ старой версии).
|
|
87
90
|
*/
|
|
88
91
|
memoryFrom?: string;
|
|
92
|
+
/** Успешный снимок приложения при этом начале истории; только режим `history-start`. */
|
|
93
|
+
appContextFrom?: string;
|
|
89
94
|
/** Служебные сообщения хода от `prepareTurn`: модель видит их текстом после блоков. В разницу блоков не входят. */
|
|
90
95
|
notices?: AgentNotice[];
|
|
91
96
|
}
|
|
@@ -22,6 +22,8 @@ export declare function freezeContext(input: {
|
|
|
22
22
|
* чате память не перечитывается и не досылается. Нет — память читается каждый ход.
|
|
23
23
|
*/
|
|
24
24
|
memoryFrom?: string;
|
|
25
|
+
/** Тот же триггер для приложения в opt-in режиме; нет — прежнее чтение каждого хода. */
|
|
26
|
+
appContextFrom?: string;
|
|
25
27
|
base: {
|
|
26
28
|
id: string;
|
|
27
29
|
data: FrozenContextData;
|
|
@@ -17,13 +17,19 @@ export declare function frozenContextBase(history: readonly AgentChatMessage[]):
|
|
|
17
17
|
* `current` — блоки ответа, которого в истории ещё нет (первый запрос хода): в конец последнего сообщения человека.
|
|
18
18
|
* В групповом ходе личные блоки не показываются ни из этого хода, ни из прошлых.
|
|
19
19
|
*/
|
|
20
|
-
export declare function withFrozenContext(history: readonly AgentChatMessage[], options:
|
|
20
|
+
export declare function withFrozenContext(history: readonly AgentChatMessage[], options: FrozenContextProjection): AgentChatMessage[];
|
|
21
|
+
/** Внутренняя проекция общего сборщика; не настройка агента и не данные модели. */
|
|
22
|
+
export interface FrozenContextProjection {
|
|
21
23
|
current?: {
|
|
22
24
|
answerId: string;
|
|
23
25
|
data: FrozenContextData;
|
|
24
26
|
};
|
|
25
27
|
group: boolean;
|
|
26
|
-
|
|
28
|
+
/** При сжатии префикса anchor ищется в полной эффективной ветке; её текст сюда не переносится. */
|
|
29
|
+
anchorHistory?: readonly AgentChatMessage[];
|
|
30
|
+
/** Допустимые ключи блоков в проекции; нет — прежний набор. Текст переписки не фильтруется. */
|
|
31
|
+
includeKey?: (key: string) => boolean;
|
|
32
|
+
}
|
|
27
33
|
/**
|
|
28
34
|
* Заметка продолжения последней, а перед ней — решения подтверждения, по которым инструмент ещё не выполнен: AI SDK
|
|
29
35
|
* выполняет одобренные вызовы, только если запрос кончается ответом инструмента. Тогда заметка отдаётся отдельно —
|
package/dist/types/index.d.ts
CHANGED
|
@@ -95,7 +95,7 @@ export type { AgentToolsModel, AgentToolsSource } from "./agent-run/run-agent-tu
|
|
|
95
95
|
export { AgentViewerError } from "./agent-run/agent-viewer.js";
|
|
96
96
|
export type { AgentViewer, AgentViewerInput, AgentViewerSource } from "./agent-run/agent-viewer.js";
|
|
97
97
|
export type { StepContext, StepContextInput } from "./agent-run/step-context.js";
|
|
98
|
-
export type { ContextBlock, ContextBlockEntry, ContextBlocksInput, ContextBlocksSource, HiddenContextBlock } from "./frozen-context/context-blocks.js";
|
|
98
|
+
export type { ContextBlock, ContextBlockEntry, ContextBlocksInput, ContextBlocksRefresh, ContextBlocksSource, HiddenContextBlock } from "./frozen-context/context-blocks.js";
|
|
99
99
|
export { FROZEN_CONTEXT_PART_TYPE } from "./frozen-context/context-blocks.js";
|
|
100
100
|
export { END_TURN_PART_TYPE } from "./agent-run/end-turn.js";
|
|
101
101
|
export type { ProviderFallbackSetting } from "./agent-run/next-attempt.js";
|