@gaunt-sloth/core 2.0.0-beta.4 → 2.0.0-beta.6
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/dist/config/schema.d.ts +4 -0
- package/dist/config/schema.js +64 -2
- package/dist/config/schema.js.map +1 -1
- package/dist/config/tokenBudget.d.ts +88 -0
- package/dist/config/tokenBudget.js +155 -0
- package/dist/config/tokenBudget.js.map +1 -0
- package/dist/config/types.d.ts +33 -4
- package/dist/config/types.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.js +5 -0
- package/dist/config.js.map +1 -1
- package/dist/core/GthAbstractAgent.d.ts +24 -0
- package/dist/core/GthAbstractAgent.js +37 -1
- package/dist/core/GthAbstractAgent.js.map +1 -1
- package/dist/core/GthAgentRunner.d.ts +216 -1
- package/dist/core/GthAgentRunner.js +424 -3
- package/dist/core/GthAgentRunner.js.map +1 -1
- package/dist/core/GthLangChainAgent.d.ts +196 -0
- package/dist/core/GthLangChainAgent.js +392 -2
- package/dist/core/GthLangChainAgent.js.map +1 -1
- package/dist/core/approvals/approvalRequest.d.ts +142 -0
- package/dist/core/approvals/approvalRequest.js +198 -3
- package/dist/core/approvals/approvalRequest.js.map +1 -1
- package/dist/core/approvals/conversationGrants.d.ts +60 -0
- package/dist/core/approvals/conversationGrants.js +77 -0
- package/dist/core/approvals/conversationGrants.js.map +1 -0
- package/dist/core/approvals/grants.d.ts +16 -0
- package/dist/core/approvals/grants.js +20 -5
- package/dist/core/approvals/grants.js.map +1 -1
- package/dist/core/compaction.d.ts +181 -0
- package/dist/core/compaction.js +293 -0
- package/dist/core/compaction.js.map +1 -0
- package/dist/core/compactionThreshold.d.ts +158 -0
- package/dist/core/compactionThreshold.js +183 -0
- package/dist/core/compactionThreshold.js.map +1 -0
- package/dist/core/contextWindow.d.ts +146 -0
- package/dist/core/contextWindow.js +256 -0
- package/dist/core/contextWindow.js.map +1 -0
- package/dist/core/exitOutputChannel.d.ts +51 -0
- package/dist/core/exitOutputChannel.js +65 -0
- package/dist/core/exitOutputChannel.js.map +1 -0
- package/dist/core/refusal.d.ts +17 -2
- package/dist/core/refusal.js +80 -14
- package/dist/core/refusal.js.map +1 -1
- package/dist/core/runStats.d.ts +1 -1
- package/dist/core/terminationNotice.d.ts +8 -0
- package/dist/core/terminationNotice.js +10 -4
- package/dist/core/terminationNotice.js.map +1 -1
- package/dist/core/terminationReason.d.ts +28 -0
- package/dist/core/terminationReason.js +27 -0
- package/dist/core/terminationReason.js.map +1 -1
- package/dist/core/types.d.ts +35 -1
- package/dist/core/types.js.map +1 -1
- package/dist/history/checkpointRetention.d.ts +279 -0
- package/dist/history/checkpointRetention.js +567 -0
- package/dist/history/checkpointRetention.js.map +1 -0
- package/dist/history/checkpointSaver.d.ts +93 -0
- package/dist/history/checkpointSaver.js +464 -0
- package/dist/history/checkpointSaver.js.map +1 -0
- package/dist/history/historyEnabled.d.ts +27 -0
- package/dist/history/historyEnabled.js +23 -0
- package/dist/history/historyEnabled.js.map +1 -0
- package/dist/history/historyFormat.d.ts +27 -0
- package/dist/history/historyFormat.js +125 -2
- package/dist/history/historyFormat.js.map +1 -1
- package/dist/history/historyStore.d.ts +61 -0
- package/dist/history/historyStore.js +180 -7
- package/dist/history/historyStore.js.map +1 -1
- package/dist/history/recordSession.d.ts +84 -22
- package/dist/history/recordSession.js +187 -12
- package/dist/history/recordSession.js.map +1 -1
- package/dist/history/sessionCheckpointer.d.ts +48 -0
- package/dist/history/sessionCheckpointer.js +200 -0
- package/dist/history/sessionCheckpointer.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/modelCatalog.d.ts +14 -0
- package/dist/providers/modelCatalog.js +4 -0
- package/dist/providers/modelCatalog.js.map +1 -1
- package/dist/providers/modelDiscovery.d.ts +3 -1
- package/dist/providers/modelDiscovery.js +22 -8
- package/dist/providers/modelDiscovery.js.map +1 -1
- package/dist/providers/ollama.js +3 -19
- package/dist/providers/ollama.js.map +1 -1
- package/dist/runtime/conversation.js +7 -1
- package/dist/runtime/conversation.js.map +1 -1
- package/dist/runtime/singleShot.js +6 -1
- package/dist/runtime/singleShot.js.map +1 -1
- package/dist/utils/consoleUtils.d.ts +77 -0
- package/dist/utils/consoleUtils.js +81 -0
- package/dist/utils/consoleUtils.js.map +1 -1
- package/package.json +2 -2
- package/schema/gsloth-config.schema.json +33 -14
|
@@ -344,7 +344,15 @@ function readAnnotationSnapshot(value) {
|
|
|
344
344
|
* discarding a real grant over a missing timestamp would cost an approval the human already gave.
|
|
345
345
|
* The annotation snapshot is the exception ({@link readAnnotationSnapshot}), because it decides.
|
|
346
346
|
*/
|
|
347
|
-
|
|
347
|
+
/**
|
|
348
|
+
* Read one stored grant, or `null` when the value is not one: no readable entry, or an annotation
|
|
349
|
+
* snapshot that is present and malformed (see `readAnnotationSnapshot`).
|
|
350
|
+
*
|
|
351
|
+
* Exported because the conversation-grants document a resume restores
|
|
352
|
+
* (`core/approvals/conversationGrants.ts`) stores grants in this same shape, and one reader for
|
|
353
|
+
* both files is what keeps the two from accepting different things.
|
|
354
|
+
*/
|
|
355
|
+
export function readGrant(value, fallbackTime) {
|
|
348
356
|
if (!value || typeof value !== 'object')
|
|
349
357
|
return null;
|
|
350
358
|
const record = value;
|
|
@@ -585,7 +593,10 @@ function refusedWriteNotice(filePath, holds, state) {
|
|
|
585
593
|
return {
|
|
586
594
|
level: StatusLevel.ERROR,
|
|
587
595
|
message: `This answer was NOT saved to ${filePath}, because that file could not be read when this ` +
|
|
588
|
-
|
|
596
|
+
// GS2-20 — an unsaved answer is held with the CONVERSATION (recorded in the history store and
|
|
597
|
+
// installed again on a resume), so the fallback lifetime is the conversation's.
|
|
598
|
+
`session started. ${recovery} For now the answer applies to this conversation only: ` +
|
|
599
|
+
'resuming it keeps the answer, and any other conversation will ask again.',
|
|
589
600
|
};
|
|
590
601
|
}
|
|
591
602
|
/**
|
|
@@ -617,8 +628,9 @@ function failedWriteNotice(filePath, holds, purpose, reason) {
|
|
|
617
628
|
return {
|
|
618
629
|
level: StatusLevel.ERROR,
|
|
619
630
|
message: `${filePath} could NOT be updated (${reason}), so this entry is still saved in it. It is ` +
|
|
620
|
-
|
|
621
|
-
'
|
|
631
|
+
// GS2-20 — the lift, like a grant, is held with the conversation.
|
|
632
|
+
'lifted for the rest of this conversation and it will be back in any other, until that ' +
|
|
633
|
+
'file can be written or you remove the entry from it by hand.',
|
|
622
634
|
};
|
|
623
635
|
}
|
|
624
636
|
if (purpose === 'migrate') {
|
|
@@ -633,7 +645,10 @@ function failedWriteNotice(filePath, holds, purpose, reason) {
|
|
|
633
645
|
level: StatusLevel.ERROR,
|
|
634
646
|
message: `This answer was NOT saved to ${filePath}, because that file could not be written ` +
|
|
635
647
|
`(${reason}). Nothing in it was lost — it was read normally and is left exactly as it is. ` +
|
|
636
|
-
|
|
648
|
+
// GS2-20 — the fallback lifetime is the conversation's: kept in the history store, back on
|
|
649
|
+
// a resume, absent from any other conversation.
|
|
650
|
+
'The answer applies to this conversation only; resuming it keeps the answer, and any other ' +
|
|
651
|
+
'conversation will not have it.',
|
|
637
652
|
};
|
|
638
653
|
}
|
|
639
654
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grants.js","sourceRoot":"","sources":["../../../src/core/approvals/grants.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"grants.js","sourceRoot":"","sources":["../../../src/core/approvals/grants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* GS2-23 — **the one conversation-compaction mechanism.** Folds the older part of a conversation
|
|
4
|
+
* into a single summary message and keeps a recent tail verbatim, so the model has room to go on.
|
|
5
|
+
*
|
|
6
|
+
* Every path that shortens a conversation goes through {@link compactMessages}: the manual
|
|
7
|
+
* `/compact` (this node), the reactive compact-and-retry on a context overflow (EXT-160) and the
|
|
8
|
+
* preventive threshold (EXT-161). Built separately they would disagree about what a context window
|
|
9
|
+
* is, so the invariants live here once, as tests rather than as comments:
|
|
10
|
+
*
|
|
11
|
+
* - **(a)** a `tool_call` is never separated from its `tool_result`: the cut moves so an `AIMessage`
|
|
12
|
+
* with `tool_calls` and every `ToolMessage` answering it fall on the same side, by widening the
|
|
13
|
+
* kept tail back to the pair's start;
|
|
14
|
+
* - **(b)** a system prompt survives untouched, and the summary is carried in a `HumanMessage` —
|
|
15
|
+
* never a mid-list `SystemMessage`, which `ChatAnthropic` rejects outright;
|
|
16
|
+
* - **(c)** the tail is never truncated at its end, so the last message of the input is the last
|
|
17
|
+
* message of the output: a history that ended on the pending user turn still does, and no
|
|
18
|
+
* compaction turns a completed exchange into a trailing assistant turn. The guarantee is
|
|
19
|
+
* relative to the input — the mechanism never CREATES a trailing assistant turn; a history a
|
|
20
|
+
* thrown turn left ending on its unanswered human turn still ends on it, and having the next
|
|
21
|
+
* human turn present before the model is invoked again is the caller's job;
|
|
22
|
+
* - **(d)** the operation converges: a previous summary is recognised by its marker and folded into
|
|
23
|
+
* the new one, so a compacted history compacted again holds exactly one summary message.
|
|
24
|
+
*
|
|
25
|
+
* The function is pure over its inputs and does no I/O of its own: the model call is injected as
|
|
26
|
+
* `summarize`, which is what lets the involuntary path bind a different model, a test bind a stub,
|
|
27
|
+
* and the manual command bind the session's own. Applying the result to the live graph is the
|
|
28
|
+
* runner's job (`GthAgentRunner.compactConversation`), through {@link replaceGraphMessages}.
|
|
29
|
+
*/
|
|
30
|
+
import { HumanMessage, type BaseMessage } from '@langchain/core/messages';
|
|
31
|
+
import type { RunnableConfig } from '@langchain/core/runnables';
|
|
32
|
+
/**
|
|
33
|
+
* How many trailing messages a compaction keeps verbatim when the caller names no number.
|
|
34
|
+
*
|
|
35
|
+
* Small on purpose: a compaction is asked for when the conversation has grown too long, and the
|
|
36
|
+
* summary is what carries the rest. Six is roughly the last exchange with a tool call in it, or the
|
|
37
|
+
* last three plain exchanges — enough that the model still sees, word for word, what it was just
|
|
38
|
+
* doing. The kept tail can be wider than this when the cut would have split a tool pair (see
|
|
39
|
+
* {@link compactionCutIndex}).
|
|
40
|
+
*/
|
|
41
|
+
export declare const DEFAULT_KEEP_RECENT = 6;
|
|
42
|
+
/**
|
|
43
|
+
* The marker a summary message carries in `additional_kwargs.lc_source`, so a later compaction can
|
|
44
|
+
* recognise it and fold it in rather than nest a summary inside a summary.
|
|
45
|
+
*
|
|
46
|
+
* It rides in the slot LangChain's own `summarizationMiddleware` uses (`lc_source: 'summarization'`),
|
|
47
|
+
* which is why {@link isCompactionSummary} accepts both values: a history that the opt-in
|
|
48
|
+
* middleware already summarised converges through here the same way one of ours does.
|
|
49
|
+
*/
|
|
50
|
+
export declare const COMPACTION_SUMMARY_SOURCE = "gth-compaction";
|
|
51
|
+
/** The line the summary message opens with, so the model reads what follows as a summary. */
|
|
52
|
+
export declare const COMPACTION_SUMMARY_PREFIX = "Here is a summary of the conversation to date:";
|
|
53
|
+
/** What a compaction hands back: the replacement list and what changed. */
|
|
54
|
+
export interface CompactMessagesResult {
|
|
55
|
+
/** The replacement message list — the input unchanged when `changed` is false. */
|
|
56
|
+
messages: BaseMessage[];
|
|
57
|
+
/** The summary the model produced, or `''` when nothing was folded. */
|
|
58
|
+
summaryText: string;
|
|
59
|
+
/** How many messages were folded into the summary (a previous summary counts as one of them). */
|
|
60
|
+
removedCount: number;
|
|
61
|
+
/** How many trailing messages were kept verbatim. */
|
|
62
|
+
keptCount: number;
|
|
63
|
+
/** Whether anything was folded. False leaves the conversation exactly as it was. */
|
|
64
|
+
changed: boolean;
|
|
65
|
+
}
|
|
66
|
+
/** The summariser a compaction calls once, over the span being folded. */
|
|
67
|
+
export type ConversationSummarizer = (spanToSummarize: BaseMessage[], focus?: string) => Promise<string>;
|
|
68
|
+
/** Input to {@link compactMessages}. */
|
|
69
|
+
export interface CompactMessagesInput {
|
|
70
|
+
/**
|
|
71
|
+
* The conversation as the graph holds it. A system prompt at the head is left where it is and
|
|
72
|
+
* excluded from the fold; the graphs this repo builds keep the system prompt outside
|
|
73
|
+
* `state.messages` altogether, so it is usually absent.
|
|
74
|
+
*/
|
|
75
|
+
messages: readonly BaseMessage[];
|
|
76
|
+
/** The one model call the compaction makes, injected so the function itself does no I/O. */
|
|
77
|
+
summarize: ConversationSummarizer;
|
|
78
|
+
/** Trailing messages to keep verbatim; {@link DEFAULT_KEEP_RECENT} when omitted. */
|
|
79
|
+
keepRecent?: number;
|
|
80
|
+
/** An optional instruction from the user about what the summary should concentrate on. */
|
|
81
|
+
focus?: string;
|
|
82
|
+
}
|
|
83
|
+
/** Whether a message is a summary produced by a previous compaction (ours or LangChain's). */
|
|
84
|
+
export declare function isCompactionSummary(message: BaseMessage): boolean;
|
|
85
|
+
/**
|
|
86
|
+
* The summary as the graph will hold it: a `HumanMessage`, marked so {@link isCompactionSummary}
|
|
87
|
+
* finds it again. A `HumanMessage` and not a `SystemMessage` because a system message anywhere but
|
|
88
|
+
* first is rejected by the Anthropic converter, and because the summary is conversation content —
|
|
89
|
+
* what the two parties said — rather than an instruction about how to behave.
|
|
90
|
+
*/
|
|
91
|
+
export declare function createCompactionSummaryMessage(summaryText: string): HumanMessage;
|
|
92
|
+
/**
|
|
93
|
+
* **The cut rule.** Returns the index in `messages` where the kept tail begins, or `null` when
|
|
94
|
+
* there is nothing to fold.
|
|
95
|
+
*
|
|
96
|
+
* The tail is the last `keepRecent` messages, widened backwards so no `tool_call` is separated from
|
|
97
|
+
* its `tool_result` (`widenTailToPairStart`). A system prompt at the head is never part of
|
|
98
|
+
* either side. A previous summary sits at the head of the conversation and is always in the folded
|
|
99
|
+
* span, never in the tail — and when it would be the ONLY thing folded, nothing is folded: rewriting
|
|
100
|
+
* a summary with no new material behind it is the thrash invariant (d) forbids.
|
|
101
|
+
*/
|
|
102
|
+
export declare function compactionCutIndex(messages: readonly BaseMessage[], keepRecent?: number): number | null;
|
|
103
|
+
/**
|
|
104
|
+
* Fold the older part of `messages` into one summary message. See the module doc for the four
|
|
105
|
+
* invariants this holds and the tests that pin them.
|
|
106
|
+
*
|
|
107
|
+
* `summarize` is called exactly once, over the folded span (a previous summary included, so its
|
|
108
|
+
* content is carried forward rather than lost), and its failure propagates: a compaction that
|
|
109
|
+
* cannot get a summary leaves the conversation alone and says so, rather than replacing history
|
|
110
|
+
* with an error string.
|
|
111
|
+
*/
|
|
112
|
+
export declare function compactMessages(input: CompactMessagesInput): Promise<CompactMessagesResult>;
|
|
113
|
+
/**
|
|
114
|
+
* The prompt the summariser sends, in the shape of LangChain's `summarizationMiddleware` prompt
|
|
115
|
+
* (role, objective, instructions, then the rendered messages) so the two mechanisms ask the model
|
|
116
|
+
* for the same kind of artifact. The `focus` block is the one addition: the user's own steer on
|
|
117
|
+
* what the summary should keep, appended when `/compact` was given free text.
|
|
118
|
+
*/
|
|
119
|
+
export declare function buildCompactionPrompt(span: readonly BaseMessage[], focus?: string): string;
|
|
120
|
+
/** The narrowest thing a summariser needs from a chat model: `invoke(prompt)` returning a message. */
|
|
121
|
+
export interface SummarizingModel {
|
|
122
|
+
invoke(input: string): Promise<{
|
|
123
|
+
content: unknown;
|
|
124
|
+
}>;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* A {@link ConversationSummarizer} bound to a chat model: renders the span with
|
|
128
|
+
* {@link buildCompactionPrompt} and returns the reply's text. The session model is what the runner
|
|
129
|
+
* binds; a caller with a cheaper model for summaries binds that instead.
|
|
130
|
+
*/
|
|
131
|
+
export declare function createModelSummarizer(model: SummarizingModel): ConversationSummarizer;
|
|
132
|
+
/** A message-count and character-based size of a conversation — an estimate, never tokens. */
|
|
133
|
+
export interface ConversationSize {
|
|
134
|
+
messages: number;
|
|
135
|
+
characters: number;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* The size of a conversation as a message count and a character estimate. Characters, not tokens,
|
|
139
|
+
* on purpose: precise token accounting belongs with the threshold that needs it (EXT-161), and a
|
|
140
|
+
* before/after comparison only has to agree with itself.
|
|
141
|
+
*/
|
|
142
|
+
export declare function conversationSize(messages: readonly BaseMessage[]): ConversationSize;
|
|
143
|
+
/** The structural surface of a compiled LangGraph graph that a replacement needs. */
|
|
144
|
+
export interface MessagesGraph {
|
|
145
|
+
updateState(config: RunnableConfig, values: {
|
|
146
|
+
messages: BaseMessage[];
|
|
147
|
+
}, asNode?: string): Promise<unknown>;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Replace a thread's whole message list with `messages`, through the graph's own `updateState`.
|
|
151
|
+
*
|
|
152
|
+
* The write is `RemoveMessage(REMOVE_ALL_MESSAGES)` followed by the replacement, which the
|
|
153
|
+
* `messagesStateReducer` behind `state.messages` turns into "discard everything, keep what
|
|
154
|
+
* follows". Going through `updateState` is what makes a compaction durable for free: the graph
|
|
155
|
+
* writes a new checkpoint, so the next turn and a later resume both load the compacted history.
|
|
156
|
+
*/
|
|
157
|
+
export declare function replaceGraphMessages(graph: MessagesGraph, runConfig: RunnableConfig, messages: readonly BaseMessage[]): Promise<void>;
|
|
158
|
+
/** What `GthAgentRunner.compactConversation` reports about the compaction it applied. */
|
|
159
|
+
export interface ConversationCompaction {
|
|
160
|
+
/** Whether anything was folded. When false, nothing was written and `after` equals `before`. */
|
|
161
|
+
changed: boolean;
|
|
162
|
+
/** Messages folded into the summary. */
|
|
163
|
+
removedCount: number;
|
|
164
|
+
/** Messages kept verbatim after the summary (the whole conversation when nothing changed). */
|
|
165
|
+
keptCount: number;
|
|
166
|
+
/** The tail length that was asked for; the kept count can be wider (a tool pair was protected). */
|
|
167
|
+
keepRecent: number;
|
|
168
|
+
/** The summary the model produced, or `''` when nothing changed. */
|
|
169
|
+
summaryText: string;
|
|
170
|
+
/** The conversation's size before the compaction. */
|
|
171
|
+
before: ConversationSize;
|
|
172
|
+
/** The conversation's size as the graph holds it afterwards, read back rather than computed. */
|
|
173
|
+
after: ConversationSize;
|
|
174
|
+
}
|
|
175
|
+
/** Options for `GthAgentRunner.compactConversation`. */
|
|
176
|
+
export interface CompactConversationOptions {
|
|
177
|
+
/** Free text after `/compact`: what the summary should concentrate on. */
|
|
178
|
+
focus?: string;
|
|
179
|
+
/** Trailing messages to keep verbatim; {@link DEFAULT_KEEP_RECENT} when omitted. */
|
|
180
|
+
keepRecent?: number;
|
|
181
|
+
}
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* GS2-23 — **the one conversation-compaction mechanism.** Folds the older part of a conversation
|
|
4
|
+
* into a single summary message and keeps a recent tail verbatim, so the model has room to go on.
|
|
5
|
+
*
|
|
6
|
+
* Every path that shortens a conversation goes through {@link compactMessages}: the manual
|
|
7
|
+
* `/compact` (this node), the reactive compact-and-retry on a context overflow (EXT-160) and the
|
|
8
|
+
* preventive threshold (EXT-161). Built separately they would disagree about what a context window
|
|
9
|
+
* is, so the invariants live here once, as tests rather than as comments:
|
|
10
|
+
*
|
|
11
|
+
* - **(a)** a `tool_call` is never separated from its `tool_result`: the cut moves so an `AIMessage`
|
|
12
|
+
* with `tool_calls` and every `ToolMessage` answering it fall on the same side, by widening the
|
|
13
|
+
* kept tail back to the pair's start;
|
|
14
|
+
* - **(b)** a system prompt survives untouched, and the summary is carried in a `HumanMessage` —
|
|
15
|
+
* never a mid-list `SystemMessage`, which `ChatAnthropic` rejects outright;
|
|
16
|
+
* - **(c)** the tail is never truncated at its end, so the last message of the input is the last
|
|
17
|
+
* message of the output: a history that ended on the pending user turn still does, and no
|
|
18
|
+
* compaction turns a completed exchange into a trailing assistant turn. The guarantee is
|
|
19
|
+
* relative to the input — the mechanism never CREATES a trailing assistant turn; a history a
|
|
20
|
+
* thrown turn left ending on its unanswered human turn still ends on it, and having the next
|
|
21
|
+
* human turn present before the model is invoked again is the caller's job;
|
|
22
|
+
* - **(d)** the operation converges: a previous summary is recognised by its marker and folded into
|
|
23
|
+
* the new one, so a compacted history compacted again holds exactly one summary message.
|
|
24
|
+
*
|
|
25
|
+
* The function is pure over its inputs and does no I/O of its own: the model call is injected as
|
|
26
|
+
* `summarize`, which is what lets the involuntary path bind a different model, a test bind a stub,
|
|
27
|
+
* and the manual command bind the session's own. Applying the result to the live graph is the
|
|
28
|
+
* runner's job (`GthAgentRunner.compactConversation`), through {@link replaceGraphMessages}.
|
|
29
|
+
*/
|
|
30
|
+
import { AIMessage, HumanMessage, RemoveMessage, SystemMessage, ToolMessage, getBufferString, } from '@langchain/core/messages';
|
|
31
|
+
import { REMOVE_ALL_MESSAGES } from '@langchain/langgraph';
|
|
32
|
+
/**
|
|
33
|
+
* How many trailing messages a compaction keeps verbatim when the caller names no number.
|
|
34
|
+
*
|
|
35
|
+
* Small on purpose: a compaction is asked for when the conversation has grown too long, and the
|
|
36
|
+
* summary is what carries the rest. Six is roughly the last exchange with a tool call in it, or the
|
|
37
|
+
* last three plain exchanges — enough that the model still sees, word for word, what it was just
|
|
38
|
+
* doing. The kept tail can be wider than this when the cut would have split a tool pair (see
|
|
39
|
+
* {@link compactionCutIndex}).
|
|
40
|
+
*/
|
|
41
|
+
export const DEFAULT_KEEP_RECENT = 6;
|
|
42
|
+
/**
|
|
43
|
+
* The marker a summary message carries in `additional_kwargs.lc_source`, so a later compaction can
|
|
44
|
+
* recognise it and fold it in rather than nest a summary inside a summary.
|
|
45
|
+
*
|
|
46
|
+
* It rides in the slot LangChain's own `summarizationMiddleware` uses (`lc_source: 'summarization'`),
|
|
47
|
+
* which is why {@link isCompactionSummary} accepts both values: a history that the opt-in
|
|
48
|
+
* middleware already summarised converges through here the same way one of ours does.
|
|
49
|
+
*/
|
|
50
|
+
export const COMPACTION_SUMMARY_SOURCE = 'gth-compaction';
|
|
51
|
+
/** The marker LangChain's `summarizationMiddleware` stamps on the summary messages IT produces. */
|
|
52
|
+
const LANGCHAIN_SUMMARY_SOURCE = 'summarization';
|
|
53
|
+
/** The line the summary message opens with, so the model reads what follows as a summary. */
|
|
54
|
+
export const COMPACTION_SUMMARY_PREFIX = 'Here is a summary of the conversation to date:';
|
|
55
|
+
/** Whether a message is a summary produced by a previous compaction (ours or LangChain's). */
|
|
56
|
+
export function isCompactionSummary(message) {
|
|
57
|
+
if (!HumanMessage.isInstance(message))
|
|
58
|
+
return false;
|
|
59
|
+
const source = message.additional_kwargs?.lc_source;
|
|
60
|
+
return source === COMPACTION_SUMMARY_SOURCE || source === LANGCHAIN_SUMMARY_SOURCE;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The summary as the graph will hold it: a `HumanMessage`, marked so {@link isCompactionSummary}
|
|
64
|
+
* finds it again. A `HumanMessage` and not a `SystemMessage` because a system message anywhere but
|
|
65
|
+
* first is rejected by the Anthropic converter, and because the summary is conversation content —
|
|
66
|
+
* what the two parties said — rather than an instruction about how to behave.
|
|
67
|
+
*/
|
|
68
|
+
export function createCompactionSummaryMessage(summaryText) {
|
|
69
|
+
return new HumanMessage({
|
|
70
|
+
content: `${COMPACTION_SUMMARY_PREFIX}\n\n${summaryText.trim()}`,
|
|
71
|
+
additional_kwargs: { lc_source: COMPACTION_SUMMARY_SOURCE },
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/** The ids of the tool calls an AI message issued, or an empty set for any other message. */
|
|
75
|
+
function toolCallIdsOf(message) {
|
|
76
|
+
const ids = new Set();
|
|
77
|
+
if (!AIMessage.isInstance(message))
|
|
78
|
+
return ids;
|
|
79
|
+
for (const call of message.tool_calls ?? []) {
|
|
80
|
+
if (typeof call.id === 'string' && call.id.length > 0)
|
|
81
|
+
ids.add(call.id);
|
|
82
|
+
}
|
|
83
|
+
return ids;
|
|
84
|
+
}
|
|
85
|
+
/** How many leading `SystemMessage`s the list opens with — the system prompt, when it is in-band. */
|
|
86
|
+
function leadingSystemCount(messages) {
|
|
87
|
+
let count = 0;
|
|
88
|
+
while (count < messages.length && SystemMessage.isInstance(messages[count]))
|
|
89
|
+
count++;
|
|
90
|
+
return count;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* The index of the `AIMessage` a tool result at `resultIndex` answers: the NEAREST earlier message
|
|
94
|
+
* that issued its `tool_call_id`, or `-1` for an orphan.
|
|
95
|
+
*
|
|
96
|
+
* Nearest, not earliest, because ids are not unique in every history: a replayed fixture and more
|
|
97
|
+
* than one provider reuse short ids (`call_0`) turn after turn. A result answers the most recent
|
|
98
|
+
* call with its id; pairing it with the first one ever issued would widen the tail back to the
|
|
99
|
+
* head of the conversation and fold nothing.
|
|
100
|
+
*/
|
|
101
|
+
function issuerOf(conversation, resultIndex, id) {
|
|
102
|
+
for (let j = resultIndex - 1; j >= 0; j--) {
|
|
103
|
+
if (toolCallIdsOf(conversation[j]).has(id))
|
|
104
|
+
return j;
|
|
105
|
+
}
|
|
106
|
+
return -1;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Widen a proposed tail start backwards until no tool pair straddles it: for every `ToolMessage`
|
|
110
|
+
* at or after `start`, the `AIMessage` that issued its `tool_call_id` ({@link issuerOf}) must be at
|
|
111
|
+
* or after `start` too. Repeats until stable, because moving the start back can bring another
|
|
112
|
+
* answered call into the tail.
|
|
113
|
+
*/
|
|
114
|
+
function widenTailToPairStart(conversation, start) {
|
|
115
|
+
let tailStart = start;
|
|
116
|
+
for (;;) {
|
|
117
|
+
let widenedTo = tailStart;
|
|
118
|
+
for (let i = tailStart; i < conversation.length; i++) {
|
|
119
|
+
const message = conversation[i];
|
|
120
|
+
if (!ToolMessage.isInstance(message) || !message.tool_call_id)
|
|
121
|
+
continue;
|
|
122
|
+
const issuer = issuerOf(conversation, i, message.tool_call_id);
|
|
123
|
+
if (issuer !== -1 && issuer < widenedTo)
|
|
124
|
+
widenedTo = issuer;
|
|
125
|
+
}
|
|
126
|
+
if (widenedTo === tailStart)
|
|
127
|
+
return tailStart;
|
|
128
|
+
tailStart = widenedTo;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* **The cut rule.** Returns the index in `messages` where the kept tail begins, or `null` when
|
|
133
|
+
* there is nothing to fold.
|
|
134
|
+
*
|
|
135
|
+
* The tail is the last `keepRecent` messages, widened backwards so no `tool_call` is separated from
|
|
136
|
+
* its `tool_result` (`widenTailToPairStart`). A system prompt at the head is never part of
|
|
137
|
+
* either side. A previous summary sits at the head of the conversation and is always in the folded
|
|
138
|
+
* span, never in the tail — and when it would be the ONLY thing folded, nothing is folded: rewriting
|
|
139
|
+
* a summary with no new material behind it is the thrash invariant (d) forbids.
|
|
140
|
+
*/
|
|
141
|
+
export function compactionCutIndex(messages, keepRecent = DEFAULT_KEEP_RECENT) {
|
|
142
|
+
const keep = Math.max(1, Math.floor(keepRecent));
|
|
143
|
+
const systemEnd = leadingSystemCount(messages);
|
|
144
|
+
const conversation = messages.slice(systemEnd);
|
|
145
|
+
if (conversation.length <= keep)
|
|
146
|
+
return null;
|
|
147
|
+
const tailStart = widenTailToPairStart(conversation, conversation.length - keep);
|
|
148
|
+
if (tailStart <= 0)
|
|
149
|
+
return null;
|
|
150
|
+
if (tailStart === 1 && isCompactionSummary(conversation[0]))
|
|
151
|
+
return null;
|
|
152
|
+
return systemEnd + tailStart;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Fold the older part of `messages` into one summary message. See the module doc for the four
|
|
156
|
+
* invariants this holds and the tests that pin them.
|
|
157
|
+
*
|
|
158
|
+
* `summarize` is called exactly once, over the folded span (a previous summary included, so its
|
|
159
|
+
* content is carried forward rather than lost), and its failure propagates: a compaction that
|
|
160
|
+
* cannot get a summary leaves the conversation alone and says so, rather than replacing history
|
|
161
|
+
* with an error string.
|
|
162
|
+
*/
|
|
163
|
+
export async function compactMessages(input) {
|
|
164
|
+
const messages = [...input.messages];
|
|
165
|
+
const unchanged = {
|
|
166
|
+
messages,
|
|
167
|
+
summaryText: '',
|
|
168
|
+
removedCount: 0,
|
|
169
|
+
keptCount: messages.length,
|
|
170
|
+
changed: false,
|
|
171
|
+
};
|
|
172
|
+
const cut = compactionCutIndex(messages, input.keepRecent);
|
|
173
|
+
if (cut === null)
|
|
174
|
+
return unchanged;
|
|
175
|
+
const systemEnd = leadingSystemCount(messages);
|
|
176
|
+
const folded = messages.slice(systemEnd, cut);
|
|
177
|
+
const kept = messages.slice(cut);
|
|
178
|
+
const summaryText = (await input.summarize(folded, input.focus)).trim();
|
|
179
|
+
if (summaryText.length === 0) {
|
|
180
|
+
throw new Error('The model returned an empty summary, so the conversation was left unchanged.');
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
messages: [
|
|
184
|
+
...messages.slice(0, systemEnd),
|
|
185
|
+
createCompactionSummaryMessage(summaryText),
|
|
186
|
+
...kept,
|
|
187
|
+
],
|
|
188
|
+
summaryText,
|
|
189
|
+
removedCount: folded.length,
|
|
190
|
+
keptCount: kept.length,
|
|
191
|
+
changed: true,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* The prompt the summariser sends, in the shape of LangChain's `summarizationMiddleware` prompt
|
|
196
|
+
* (role, objective, instructions, then the rendered messages) so the two mechanisms ask the model
|
|
197
|
+
* for the same kind of artifact. The `focus` block is the one addition: the user's own steer on
|
|
198
|
+
* what the summary should keep, appended when `/compact` was given free text.
|
|
199
|
+
*/
|
|
200
|
+
export function buildCompactionPrompt(span, focus) {
|
|
201
|
+
const focusBlock = focus && focus.trim().length > 0
|
|
202
|
+
? `\n<focus>\nThe user asked that the summary pay particular attention to: ${focus.trim()}\n</focus>\n`
|
|
203
|
+
: '';
|
|
204
|
+
return `<role>
|
|
205
|
+
Context Extraction Assistant
|
|
206
|
+
</role>
|
|
207
|
+
|
|
208
|
+
<primary_objective>
|
|
209
|
+
Your sole objective in this task is to extract the highest quality, most relevant context from the conversation history below.
|
|
210
|
+
</primary_objective>
|
|
211
|
+
|
|
212
|
+
<objective_information>
|
|
213
|
+
The conversation history below is about to be replaced by the context you extract, so that the conversation can continue with room to spare. Because of this, ensure the context you extract is the most important information to the overall goal: what was asked, what was decided, what was done, what was found, and what remains open.
|
|
214
|
+
</objective_information>
|
|
215
|
+
|
|
216
|
+
<instructions>
|
|
217
|
+
Extract and record all of the most important context from the conversation history. Do not repeat actions that were already completed; record their outcomes instead. Keep file paths, identifiers, commands, numbers and error messages exact. If the history opens with an earlier summary, fold it into yours rather than repeating it separately.
|
|
218
|
+
Respond ONLY with the extracted context. Do not include any additional information, or text before or after the extracted context.
|
|
219
|
+
</instructions>
|
|
220
|
+
${focusBlock}
|
|
221
|
+
<messages>
|
|
222
|
+
Messages to summarize:
|
|
223
|
+
${getBufferString(span)}
|
|
224
|
+
</messages>`;
|
|
225
|
+
}
|
|
226
|
+
/** The text of a model reply, whether it came back as a string or as content blocks. */
|
|
227
|
+
function contentText(content) {
|
|
228
|
+
if (typeof content === 'string')
|
|
229
|
+
return content;
|
|
230
|
+
if (!Array.isArray(content))
|
|
231
|
+
return '';
|
|
232
|
+
return content
|
|
233
|
+
.map((block) => {
|
|
234
|
+
if (typeof block === 'string')
|
|
235
|
+
return block;
|
|
236
|
+
if (block &&
|
|
237
|
+
typeof block === 'object' &&
|
|
238
|
+
typeof block.text === 'string') {
|
|
239
|
+
return block.text;
|
|
240
|
+
}
|
|
241
|
+
return '';
|
|
242
|
+
})
|
|
243
|
+
.join('');
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* A {@link ConversationSummarizer} bound to a chat model: renders the span with
|
|
247
|
+
* {@link buildCompactionPrompt} and returns the reply's text. The session model is what the runner
|
|
248
|
+
* binds; a caller with a cheaper model for summaries binds that instead.
|
|
249
|
+
*/
|
|
250
|
+
export function createModelSummarizer(model) {
|
|
251
|
+
return async (span, focus) => contentText((await model.invoke(buildCompactionPrompt(span, focus))).content);
|
|
252
|
+
}
|
|
253
|
+
/** The characters of one message as a model would read them: its text, its tool calls, its result. */
|
|
254
|
+
function messageCharacters(message) {
|
|
255
|
+
let total = contentText(message.content).length;
|
|
256
|
+
if (AIMessage.isInstance(message)) {
|
|
257
|
+
for (const call of message.tool_calls ?? []) {
|
|
258
|
+
total += call.name.length;
|
|
259
|
+
try {
|
|
260
|
+
total += JSON.stringify(call.args ?? {}).length;
|
|
261
|
+
}
|
|
262
|
+
catch {
|
|
263
|
+
/* an argument that cannot be serialised contributes only its name */
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
return total;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* The size of a conversation as a message count and a character estimate. Characters, not tokens,
|
|
271
|
+
* on purpose: precise token accounting belongs with the threshold that needs it (EXT-161), and a
|
|
272
|
+
* before/after comparison only has to agree with itself.
|
|
273
|
+
*/
|
|
274
|
+
export function conversationSize(messages) {
|
|
275
|
+
let characters = 0;
|
|
276
|
+
for (const message of messages)
|
|
277
|
+
characters += messageCharacters(message);
|
|
278
|
+
return { messages: messages.length, characters };
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Replace a thread's whole message list with `messages`, through the graph's own `updateState`.
|
|
282
|
+
*
|
|
283
|
+
* The write is `RemoveMessage(REMOVE_ALL_MESSAGES)` followed by the replacement, which the
|
|
284
|
+
* `messagesStateReducer` behind `state.messages` turns into "discard everything, keep what
|
|
285
|
+
* follows". Going through `updateState` is what makes a compaction durable for free: the graph
|
|
286
|
+
* writes a new checkpoint, so the next turn and a later resume both load the compacted history.
|
|
287
|
+
*/
|
|
288
|
+
export async function replaceGraphMessages(graph, runConfig, messages) {
|
|
289
|
+
await graph.updateState(runConfig, {
|
|
290
|
+
messages: [new RemoveMessage({ id: REMOVE_ALL_MESSAGES }), ...messages],
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
//# sourceMappingURL=compaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../src/core/compaction.ts"],"names":[],"mappings":"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"}
|