@qwen-code/arena-agent 0.0.10-dev.9 → 0.0.10-test.0

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 (144) hide show
  1. package/.env.example +61 -10
  2. package/CHANGELOG.md +140 -11
  3. package/README.md +309 -46
  4. package/dist/agent.d.ts +20 -6
  5. package/dist/agent.js +303 -73
  6. package/dist/agent.js.map +1 -1
  7. package/dist/anthropic.d.ts +1 -1
  8. package/dist/anthropic.js +46 -57
  9. package/dist/anthropic.js.map +1 -1
  10. package/dist/arena-history.d.ts +12 -0
  11. package/dist/arena-history.js +119 -0
  12. package/dist/arena-history.js.map +1 -0
  13. package/dist/ask-user.js +44 -2
  14. package/dist/ask-user.js.map +1 -1
  15. package/dist/attachment-limits.d.ts +4 -0
  16. package/dist/attachment-limits.js +10 -0
  17. package/dist/attachment-limits.js.map +1 -0
  18. package/dist/attachments.d.ts +4 -2
  19. package/dist/attachments.js +9 -11
  20. package/dist/attachments.js.map +1 -1
  21. package/dist/brave-search.js +11 -7
  22. package/dist/brave-search.js.map +1 -1
  23. package/dist/canonical-data.d.ts +9 -0
  24. package/dist/canonical-data.js +12 -3
  25. package/dist/canonical-data.js.map +1 -1
  26. package/dist/cli.js +140 -40
  27. package/dist/cli.js.map +1 -1
  28. package/dist/code-tool-schema.d.ts +3 -0
  29. package/dist/code-tool-schema.js +92 -0
  30. package/dist/code-tool-schema.js.map +1 -0
  31. package/dist/code-tools.js +63 -26
  32. package/dist/code-tools.js.map +1 -1
  33. package/dist/compaction-threshold.d.ts +3 -0
  34. package/dist/compaction-threshold.js +6 -0
  35. package/dist/compaction-threshold.js.map +1 -0
  36. package/dist/compaction.d.ts +24 -7
  37. package/dist/compaction.js +242 -66
  38. package/dist/compaction.js.map +1 -1
  39. package/dist/config.d.ts +17 -0
  40. package/dist/config.js +30 -5
  41. package/dist/config.js.map +1 -1
  42. package/dist/connector-errors.d.ts +16 -0
  43. package/dist/connector-errors.js +69 -0
  44. package/dist/connector-errors.js.map +1 -0
  45. package/dist/connector-files.d.ts +31 -0
  46. package/dist/connector-files.js +249 -0
  47. package/dist/connector-files.js.map +1 -0
  48. package/dist/connector-input.d.ts +10 -0
  49. package/dist/connector-input.js +79 -0
  50. package/dist/connector-input.js.map +1 -0
  51. package/dist/connector-mcp.d.ts +60 -0
  52. package/dist/connector-mcp.js +474 -0
  53. package/dist/connector-mcp.js.map +1 -0
  54. package/dist/connectors.d.ts +13 -0
  55. package/dist/connectors.js +69 -0
  56. package/dist/connectors.js.map +1 -0
  57. package/dist/fetch-page.js +2 -2
  58. package/dist/fetch-page.js.map +1 -1
  59. package/dist/history.d.ts +15 -5
  60. package/dist/history.js +59 -14
  61. package/dist/history.js.map +1 -1
  62. package/dist/image-choice.d.ts +23 -0
  63. package/dist/image-choice.js +190 -0
  64. package/dist/image-choice.js.map +1 -0
  65. package/dist/image-input-fallback.js +5 -0
  66. package/dist/image-input-fallback.js.map +1 -1
  67. package/dist/image-model.d.ts +6 -0
  68. package/dist/image-model.js +32 -0
  69. package/dist/image-model.js.map +1 -0
  70. package/dist/midturn-checkpoint-hook.d.ts +14 -1
  71. package/dist/midturn-checkpoint-hook.js.map +1 -1
  72. package/dist/mode.js +1 -1
  73. package/dist/mode.js.map +1 -1
  74. package/dist/model-capabilities.js +18 -8
  75. package/dist/model-capabilities.js.map +1 -1
  76. package/dist/model-router-media.js +55 -3
  77. package/dist/model-router-media.js.map +1 -1
  78. package/dist/model-stream.d.ts +16 -0
  79. package/dist/model-stream.js +129 -0
  80. package/dist/model-stream.js.map +1 -0
  81. package/dist/openai-responses.d.ts +2 -1
  82. package/dist/openai-responses.js +85 -88
  83. package/dist/openai-responses.js.map +1 -1
  84. package/dist/process-manager.js +9 -9
  85. package/dist/process-manager.js.map +1 -1
  86. package/dist/prompts.d.ts +0 -2
  87. package/dist/prompts.js +10 -60
  88. package/dist/prompts.js.map +1 -1
  89. package/dist/protocol.d.ts +5 -1
  90. package/dist/protocol.js +23 -2
  91. package/dist/protocol.js.map +1 -1
  92. package/dist/provider.d.ts +18 -0
  93. package/dist/provider.js +120 -51
  94. package/dist/provider.js.map +1 -1
  95. package/dist/repo.d.ts +1 -1
  96. package/dist/repo.js +26 -4
  97. package/dist/repo.js.map +1 -1
  98. package/dist/routify-web-fetch.js +2 -2
  99. package/dist/routify-web-fetch.js.map +1 -1
  100. package/dist/server.js +55 -27
  101. package/dist/server.js.map +1 -1
  102. package/dist/session-memory-prompts.d.ts +3 -1
  103. package/dist/session-memory-prompts.js +4 -2
  104. package/dist/session-memory-prompts.js.map +1 -1
  105. package/dist/side-query.js +5 -0
  106. package/dist/side-query.js.map +1 -1
  107. package/dist/spec.d.ts +5 -4
  108. package/dist/spec.js +30 -11
  109. package/dist/spec.js.map +1 -1
  110. package/dist/startup-config.d.ts +39 -0
  111. package/dist/startup-config.js +347 -0
  112. package/dist/startup-config.js.map +1 -0
  113. package/dist/startup-main-config.d.ts +63 -0
  114. package/dist/startup-main-config.js +94 -0
  115. package/dist/startup-main-config.js.map +1 -0
  116. package/dist/startup-tool-config.d.ts +8 -0
  117. package/dist/startup-tool-config.js +116 -0
  118. package/dist/startup-tool-config.js.map +1 -0
  119. package/dist/summary-compaction.d.ts +29 -0
  120. package/dist/{legacy-compaction.js → summary-compaction.js} +79 -14
  121. package/dist/summary-compaction.js.map +1 -0
  122. package/dist/tools.d.ts +5 -1
  123. package/dist/tools.js +164 -54
  124. package/dist/tools.js.map +1 -1
  125. package/dist/tui.js +26 -6
  126. package/dist/tui.js.map +1 -1
  127. package/dist/types.d.ts +21 -1
  128. package/dist/web/app.js +30 -5
  129. package/dist/web/app.js.map +1 -1
  130. package/dist/workspace.js +61 -14
  131. package/dist/workspace.js.map +1 -1
  132. package/docs/BINARY_DISTRIBUTION.md +44 -8
  133. package/docs/MODES_AND_RELEASES.md +79 -6
  134. package/docs/SDK.md +1 -0
  135. package/modes/code-arena/capture-provenance.json +9 -6
  136. package/modes/code-arena/full-stack/dependencies.lock.json +8670 -0
  137. package/modes/code-arena/full-stack/system-prompt.txt +1 -1
  138. package/modes/code-arena/html/system-prompt.txt +1 -1
  139. package/modes/code-arena/react/dependencies.lock.json +2707 -0
  140. package/package.json +7 -2
  141. package/scripts/README.md +23 -4
  142. package/web/styles.css +22 -0
  143. package/dist/legacy-compaction.d.ts +0 -16
  144. package/dist/legacy-compaction.js.map +0 -1
@@ -1,16 +1,19 @@
1
- import type { Message, ModelClient, ModelUsage, ReasoningEffort, ToolDefinition } from "./types.js";
2
- import { estimateContextTokens } from "./legacy-compaction.js";
1
+ import type { Message, ModelClient, ModelUsage, ReasoningEffort, SessionMemoryUpdate, ToolDefinition } from "./types.js";
2
+ import { estimateContextTokens } from "./summary-compaction.js";
3
3
  export { estimateContextTokens };
4
- export declare const AGENT_ARENA_COMPACTION_THRESHOLD_TOKENS = 250000;
4
+ export { AGENT_ARENA_COMPACTION_THRESHOLD_TOKENS } from "./compaction-threshold.js";
5
+ /** Captures use the ordinary Agent context with the UTC date and no location. */
6
+ export declare function sessionMemorySystemPrompt(currentDate?: string): string;
5
7
  export interface CompactionSettings {
6
8
  contextWindow: number;
7
9
  triggerRatio: number;
8
10
  summaryMaxTokens: number;
9
11
  reasoningEffort?: ReasoningEffort;
10
12
  imageTokenEstimate?: number;
11
- /** Internal override for focused replay/tests; Agent Arena defaults to 250k. */
13
+ /** Explicit threshold override; Agent Arena otherwise caps window * ratio at 250k. */
12
14
  compactionThresholdTokens?: number;
13
15
  legacy?: boolean;
16
+ onBeforeCompaction?: (estimatedTokensBefore: number, thresholdTokens: number) => Promise<void>;
14
17
  }
15
18
  export interface CompactionResult {
16
19
  compacted: boolean;
@@ -18,15 +21,25 @@ export interface CompactionResult {
18
21
  estimatedTokensAfter: number;
19
22
  usage?: ModelUsage;
20
23
  memory?: string;
24
+ coveredMessages?: number;
25
+ }
26
+ /** Serializable cache; coverage refers to contextFromHistory with a system prefix. */
27
+ export interface StoredSessionMemory {
28
+ version: 1;
29
+ latest?: SessionMemoryState;
30
+ update?: SessionMemoryUpdate;
21
31
  }
22
- /** Ephemeral background cache. Persist only the context produced by compaction. */
23
32
  export interface SessionMemoryCache {
24
33
  state?: SessionMemoryState;
25
34
  latest?: SessionMemoryState;
26
35
  latestUsage?: ModelUsage;
27
36
  pending?: Promise<void>;
28
37
  attemptedPrefix?: string;
38
+ controller?: AbortController;
39
+ update?: SessionMemoryUpdate;
29
40
  }
41
+ export declare function storedSessionMemory(cache: SessionMemoryCache): StoredSessionMemory | undefined;
42
+ export declare function settleSessionMemory(cache: SessionMemoryCache, cancel?: boolean): Promise<void>;
30
43
  export interface SessionMemoryState {
31
44
  version: 1;
32
45
  memory: string;
@@ -35,10 +48,12 @@ export interface SessionMemoryState {
35
48
  prefixHash: string;
36
49
  }
37
50
  export declare function mergeSessionMemory(memory: string, patch: string): string;
38
- /** o200k_base matches all 45 captured section counts; unrelated to context estimation. */
51
+ /** o200k_base matches all 45 captured section counts and estimates large text. */
39
52
  export declare function memoryTokenEstimate(text: string): number;
40
53
  /** Provider-reported completed-request usage plus an estimate of later messages. */
41
54
  export declare function estimateCompactionTokens(messages: readonly Message[], tools: readonly ToolDefinition[], imageTokenEstimate?: number): number;
55
+ /** Estimate only an unarchived span; request input/total usage cancels its shared prefix. */
56
+ export declare function estimateSessionMemoryTokens(source: readonly Message[], imageTokenEstimate?: number): number;
42
57
  export declare function sessionMemoryUpdatePrompt(memory: string): string;
43
58
  export declare function continuationSummaryBlock(memory: string): string;
44
59
  /** Rebuild model input from the latest applied marker, retaining raw history. */
@@ -47,5 +62,7 @@ export declare function memoryPrefixHash(messages: readonly Message[], count: nu
47
62
  export declare function sessionMemoryMatchesHistory(state: unknown, messages: readonly Message[]): state is SessionMemoryState;
48
63
  export declare function restoreSessionMemory(messages: Message[], state: SessionMemoryState): boolean;
49
64
  export declare function compactMessagesIfNeeded(messages: Message[], tools: readonly ToolDefinition[], client: ModelClient, model: string, settings: CompactionSettings, signal?: AbortSignal): Promise<CompactionResult>;
65
+ /** Captured memory envelope; source messages and opaque provider state stay intact. */
66
+ export declare function sessionMemoryUpdateMessages(source: readonly Message[], previous: string, currentDate?: string): Message[];
50
67
  /** Provisional scheduling policy, not an observed official constant. */
51
- export declare function maintainSessionMemory(messages: Message[], history: readonly Message[], cache: SessionMemoryCache, tools: readonly ToolDefinition[], client: ModelClient, model: string, settings: CompactionSettings, updateTokens?: number, signal?: AbortSignal, onUpdate?: (usage: ModelUsage | undefined, success: boolean) => void): Promise<CompactionResult>;
68
+ export declare function maintainSessionMemory(messages: Message[], history: readonly Message[], cache: SessionMemoryCache, tools: readonly ToolDefinition[], client: ModelClient, model: string, settings: CompactionSettings, updateTokens?: number, signal?: AbortSignal, onUpdate?: (update: SessionMemoryUpdate) => void | Promise<void>): Promise<CompactionResult>;
@@ -1,10 +1,26 @@
1
1
  import crypto from "node:crypto";
2
+ import { agentArenaCompactionThreshold } from "./compaction-threshold.js";
2
3
  import { Tiktoken } from "js-tiktoken/lite";
3
4
  import o200kBase from "js-tiktoken/ranks/o200k_base";
4
- import { estimateContextTokens, continuationSummaryBlock as legacySummaryBlock, compactMessagesIfNeeded as legacyCompact } from "./legacy-compaction.js";
5
- import { memoryBudgetNoticeTemplate, emptySessionMemory, memoryContinuationPreamble, memorySystemPrompt, memoryUpdateTemplate } from "./session-memory-prompts.js";
5
+ import { contextTokenReplacer, estimateContextTokens, latestCompleteStepStart, continuationSummaryBlock as summaryBlock, compactMessagesIfNeeded as compactSummary } from "./summary-compaction.js";
6
+ import { memoryBudgetNoticeTemplate, emptySessionMemory, memoryContinuationPreamble, memoryContextTemplate, memorySystemPrompt, memoryUpdatePrefix, memoryUpdateTemplate } from "./session-memory-prompts.js";
6
7
  export { estimateContextTokens };
7
- export const AGENT_ARENA_COMPACTION_THRESHOLD_TOKENS = 250_000;
8
+ export { AGENT_ARENA_COMPACTION_THRESHOLD_TOKENS } from "./compaction-threshold.js";
9
+ /** Captures use the ordinary Agent context with the UTC date and no location. */
10
+ export function sessionMemorySystemPrompt(currentDate = new Date().toISOString().slice(0, 10)) {
11
+ return memoryContextTemplate.replace("{{currentDate}}", currentDate) + memorySystemPrompt;
12
+ }
13
+ export function storedSessionMemory(cache) {
14
+ if (!cache.latest && !cache.update)
15
+ return undefined;
16
+ return structuredClone({ version: 1, ...(cache.latest ? { latest: cache.latest } : {}),
17
+ ...(cache.update ? { update: cache.update } : {}) });
18
+ }
19
+ export async function settleSessionMemory(cache, cancel = true) {
20
+ if (cancel)
21
+ cache.controller?.abort(new Error("Memory update cancelled at run boundary"));
22
+ await cache.pending;
23
+ }
8
24
  const descriptions = new Map(emptySessionMemory.split("\n\n").map(section => {
9
25
  const [header, description] = section.split("\n");
10
26
  return [header, description];
@@ -70,7 +86,7 @@ export function mergeSessionMemory(memory, patch) {
70
86
  return render(previous);
71
87
  }
72
88
  let memoryEncoder;
73
- /** o200k_base matches all 45 captured section counts; unrelated to context estimation. */
89
+ /** o200k_base matches all 45 captured section counts and estimates large text. */
74
90
  export function memoryTokenEstimate(text) {
75
91
  memoryEncoder ??= new Tiktoken(o200kBase);
76
92
  // Memory may contain literal special-token spellings; count them as ordinary text.
@@ -99,7 +115,7 @@ function completedRequestTokens(usage) {
99
115
  }
100
116
  return undefined;
101
117
  }
102
- function visibleContextTokens(messages, tools, imageTokenEstimate) {
118
+ function characterContextTokens(messages, tools, imageTokenEstimate) {
103
119
  // Usage is persisted for accounting but stripped at every provider wire boundary.
104
120
  const visible = messages.map(message => {
105
121
  if (message.role !== "assistant" || !message.usage)
@@ -109,6 +125,48 @@ function visibleContextTokens(messages, tools, imageTokenEstimate) {
109
125
  });
110
126
  return estimateContextTokens(visible, tools, imageTokenEstimate);
111
127
  }
128
+ /** Large text can be much denser than four ASCII characters per token (e.g. SVG).
129
+ * o200k_base is a local estimate, not the selected model's tokenizer. Keep the
130
+ * character estimate as a floor and allow 10% for tokenizer differences.
131
+ */
132
+ function largeTextCorrection(messages) {
133
+ let correction = 0;
134
+ const chunkTokens = new Map();
135
+ for (const message of messages) {
136
+ const { usage: _usage, ...visible } = message;
137
+ const value = message.role === "assistant" && message.openai_response_items?.length
138
+ ? { role: message.role, openai_response_items: message.openai_response_items } : visible;
139
+ const serialized = JSON.stringify(value, function (key, item) {
140
+ // Opaque provider state is not ordinary text. Leave its existing character
141
+ // estimate intact instead of applying a text tokenizer to ciphertext.
142
+ if (key === "encrypted_content" || key === "signature")
143
+ return "<opaque>";
144
+ return contextTokenReplacer.call(this, key, item);
145
+ });
146
+ if (serialized.length < 4096)
147
+ continue;
148
+ let characters = 0;
149
+ for (const character of serialized)
150
+ characters += character.codePointAt(0) <= 0x7f ? 0.25 : 1;
151
+ let tokens = 0;
152
+ // BPE can be quadratic on long runs without separators. Small, memoized
153
+ // chunks bound that work; boundary splits only make this more conservative.
154
+ for (let offset = 0; offset < serialized.length; offset += 512) {
155
+ const chunk = serialized.slice(offset, offset + 512);
156
+ let count = chunkTokens.get(chunk);
157
+ if (count === undefined) {
158
+ count = memoryTokenEstimate(chunk);
159
+ chunkTokens.set(chunk, count);
160
+ }
161
+ tokens += count;
162
+ }
163
+ correction += Math.max(0, Math.ceil(tokens * 1.1) - Math.floor(characters));
164
+ }
165
+ return correction;
166
+ }
167
+ function visibleContextTokens(messages, tools, imageTokenEstimate) {
168
+ return characterContextTokens(messages, tools, imageTokenEstimate) + largeTextCorrection(messages);
169
+ }
112
170
  function hasMemoryOnlyPrefix(messages, assistantIndex) {
113
171
  const firstIndex = messages[0]?.role === "system" ? 1 : 0;
114
172
  const first = messages[firstIndex];
@@ -126,7 +184,7 @@ function hasMemoryOnlyPrefix(messages, assistantIndex) {
126
184
  }
127
185
  /** Provider-reported completed-request usage plus an estimate of later messages. */
128
186
  export function estimateCompactionTokens(messages, tools, imageTokenEstimate) {
129
- const current = visibleContextTokens(messages, tools, imageTokenEstimate);
187
+ const current = characterContextTokens(messages, tools, imageTokenEstimate);
130
188
  for (let index = messages.length - 1; index >= 0; index--) {
131
189
  const message = messages[index];
132
190
  if (message?.role !== "assistant")
@@ -135,18 +193,62 @@ export function estimateCompactionTokens(messages, tools, imageTokenEstimate) {
135
193
  continue;
136
194
  const completed = completedRequestTokens(message.usage);
137
195
  if (completed !== undefined) {
138
- const throughAssistant = visibleContextTokens(messages.slice(0, index + 1), tools, imageTokenEstimate);
139
- return Math.max(0, completed + current - throughAssistant);
196
+ const throughAssistant = characterContextTokens(messages.slice(0, index + 1), tools, imageTokenEstimate);
197
+ return Math.max(0, completed + current - throughAssistant + largeTextCorrection(messages.slice(index + 1)));
140
198
  }
141
199
  // Some OpenAI-compatible endpoints omit total/output usage. Fall back to
142
200
  // the exact input baseline and locally estimate the replayed assistant too.
143
201
  const baseline = inputTokens(message.usage);
144
202
  if (baseline === undefined)
145
203
  continue;
146
- const previous = visibleContextTokens(messages.slice(0, index), tools, imageTokenEstimate);
147
- return Math.max(0, baseline + current - previous);
204
+ const previous = characterContextTokens(messages.slice(0, index), tools, imageTokenEstimate);
205
+ return Math.max(0, baseline + current - previous + largeTextCorrection(messages.slice(index)));
206
+ }
207
+ return current + largeTextCorrection(messages);
208
+ }
209
+ /** Estimate only an unarchived span; request input/total usage cancels its shared prefix. */
210
+ export function estimateSessionMemoryTokens(source, imageTokenEstimate) {
211
+ const local = (messages) => messages.length
212
+ ? visibleContextTokens(messages, [], imageTokenEstimate) : 0;
213
+ let first = -1;
214
+ let baseline = 0;
215
+ let previousInput = 0;
216
+ let last = -1;
217
+ let endTokens = 0;
218
+ let includesAssistant = false;
219
+ for (let index = 0; index < source.length; index++) {
220
+ const message = source[index];
221
+ if (message.role !== "assistant")
222
+ continue;
223
+ const input = inputTokens(message.usage);
224
+ const completed = completedRequestTokens(message.usage);
225
+ // A replaced prefix or inconsistent usage cannot provide a meaningful delta.
226
+ if (input !== undefined && (input < previousInput || (completed !== undefined && completed < input))) {
227
+ return local(source);
228
+ }
229
+ if (input !== undefined)
230
+ previousInput = input;
231
+ if (first < 0) {
232
+ if (input === undefined)
233
+ continue;
234
+ first = index;
235
+ baseline = input;
236
+ }
237
+ const end = completed ?? input;
238
+ if (end === undefined)
239
+ continue;
240
+ if (end < baseline)
241
+ return local(source);
242
+ last = index;
243
+ endTokens = end;
244
+ includesAssistant = completed !== undefined;
148
245
  }
149
- return current;
246
+ if (first < 0)
247
+ return local(source);
248
+ // Leading user messages were already in the first input; trailing results were
249
+ // not in the last request. Neither belongs in the usage delta itself.
250
+ return local(source.slice(0, first)) + endTokens - baseline +
251
+ local(source.slice(last + (includesAssistant ? 1 : 0)));
150
252
  }
151
253
  export function sessionMemoryUpdatePrompt(memory) {
152
254
  const oversized = [...sections(memory, false)].flatMap(([header, body]) => {
@@ -154,8 +256,8 @@ export function sessionMemoryUpdatePrompt(memory) {
154
256
  const count = memoryTokenEstimate(body.replace(/^_[^\n]+_\s*/, ""));
155
257
  return count > budget ? [`- "${header}" is ~${count} tokens (limit: 1500)`] : [];
156
258
  });
157
- const notice = oversized.length ? "\n\n" + memoryBudgetNoticeTemplate.replace("{{SECTIONS}}", oversized.join("\n")) : "";
158
- return memoryUpdateTemplate.replace("\n\n<session_memory>{{MEMORY}}</session_memory>", `${notice}\n\n<session_memory>\n${memory}\n</session_memory>`);
259
+ const notice = oversized.length ? "\n\n" + memoryBudgetNoticeTemplate.replace("{{SECTIONS}}", () => oversized.join("\n")) : "";
260
+ return memoryUpdateTemplate.replace("\n\n<session_memory>{{MEMORY}}</session_memory>", () => `${notice}\n\n<session_memory>\n${memory}\n</session_memory>`);
159
261
  }
160
262
  export function continuationSummaryBlock(memory) {
161
263
  return `<arena-system-message>\n${memoryContinuationPreamble}\n\n${escapedMemory(memory)}\n\n</arena-system-message>`;
@@ -169,13 +271,21 @@ export function contextFromHistory(history) {
169
271
  const summary = marker.content.map(part => part.text).join("\n");
170
272
  if (!summary.trim())
171
273
  throw new Error("Compaction record has no summary");
172
- const tail = history.slice(i + 1).filter(message => message.role !== "compaction");
274
+ const tail = history.slice(i + 1).filter(message => message.role !== "compaction").map((message, index) => {
275
+ // These requests used the prefix that this marker replaced. Keep
276
+ // their usage in raw history for accounting, but not as a context baseline.
277
+ if (index < (marker.compaction?.retained_messages ?? 0) && message.role === "assistant") {
278
+ const { usage: _usage, ...rest } = message;
279
+ return rest;
280
+ }
281
+ return message;
282
+ });
173
283
  if (tail[0]?.role === "tool")
174
284
  throw new Error("Compaction record splits a tool call/result pair");
175
285
  // The dump also contains older full summaries. Preserve their wrapper;
176
286
  // current eight-section memory continues to use its captured preamble.
177
287
  const block = summary.startsWith("# Current State\n")
178
- ? continuationSummaryBlock(summary) : legacySummaryBlock(summary);
288
+ ? continuationSummaryBlock(summary) : summaryBlock(summary);
179
289
  const first = tail[0];
180
290
  const user = { role: "user", content: [{ text: block },
181
291
  ...(first?.role === "user" ? typeof first.content === "string"
@@ -239,7 +349,12 @@ export function sessionMemoryMatchesHistory(state, messages) {
239
349
  export function restoreSessionMemory(messages, state) {
240
350
  if (!sessionMemoryMatchesHistory(state, messages))
241
351
  return false;
242
- const tail = messages.slice(state.coveredMessages);
352
+ const tail = messages.slice(state.coveredMessages).map(message => {
353
+ if (message.role !== "assistant")
354
+ return message;
355
+ const { usage: _usage, ...rest } = message;
356
+ return rest;
357
+ });
243
358
  const first = tail[0];
244
359
  messages.splice(1, messages.length - 1, ...(first?.role === "user" ? [prepend(first, state.memory), ...tail.slice(1)] :
245
360
  [{ role: "user", content: continuationSummaryBlock(state.memory) }, ...tail]));
@@ -247,10 +362,15 @@ export function restoreSessionMemory(messages, state) {
247
362
  }
248
363
  export async function compactMessagesIfNeeded(messages, tools, client, model, settings, signal) {
249
364
  if (settings.legacy)
250
- return legacyCompact(messages, tools, client, model, settings, signal);
365
+ return compactSummary(messages, tools, client, model, {
366
+ ...settings,
367
+ estimateTokens: estimateCompactionTokens,
368
+ estimateLocalTokens: visibleContextTokens,
369
+ allowMidturn: true,
370
+ }, signal);
251
371
  const before = estimateCompactionTokens(messages, tools, settings.imageTokenEstimate);
252
372
  const unchanged = { compacted: false, estimatedTokensBefore: before, estimatedTokensAfter: before };
253
- const threshold = settings.compactionThresholdTokens ?? AGENT_ARENA_COMPACTION_THRESHOLD_TOKENS;
373
+ const threshold = agentArenaCompactionThreshold(settings.contextWindow, settings.triggerRatio, settings.compactionThresholdTokens);
254
374
  if (before < threshold)
255
375
  return unchanged;
256
376
  // Preserve the current human turn (including all its tool-call/result pairs).
@@ -264,8 +384,9 @@ export async function compactMessagesIfNeeded(messages, tools, client, model, se
264
384
  }
265
385
  if (boundary <= 1)
266
386
  return unchanged;
267
- const prior = extractMemory(messages);
268
- const { memory, usage } = await updateMemory(prior.messages.slice(1, boundary), prior.memory, client, model, settings, signal);
387
+ if (settings.onBeforeCompaction)
388
+ await settings.onBeforeCompaction(before, threshold);
389
+ const { memory, usage } = await updateMemory(messages.slice(1, boundary), emptySessionMemory, client, model, settings, signal);
269
390
  if (!memory)
270
391
  return { ...unchanged, usage };
271
392
  const current = messages[boundary];
@@ -273,10 +394,49 @@ export async function compactMessagesIfNeeded(messages, tools, client, model, se
273
394
  return { compacted: true, estimatedTokensBefore: before,
274
395
  estimatedTokensAfter: visibleContextTokens(messages, tools, settings.imageTokenEstimate), usage, memory };
275
396
  }
397
+ /** Captured memory envelope; source messages and opaque provider state stay intact. */
398
+ export function sessionMemoryUpdateMessages(source, previous, currentDate) {
399
+ const conversation = [...source];
400
+ const first = conversation[0];
401
+ const partsOf = (message) => typeof message.content === "string"
402
+ ? message.content ? [{ text: message.content }] : [] : structuredClone(message.content);
403
+ if (first?.role === "user") {
404
+ const parts = partsOf(first), controls = [];
405
+ // These captured context blocks precede the updater prefix, even when the
406
+ // remaining user content is merged into the same multimodal message.
407
+ while (parts[0] && "text" in parts[0]) {
408
+ const text = parts[0].text;
409
+ const control = /^<arena-system-message>\n(?:The conversation so far has been condensed into the session memory below\.|The previous assistant response was stopped by the user before it completed\.)[\s\S]*?<\/arena-system-message>/.exec(text)?.[0];
410
+ if (!control)
411
+ break;
412
+ controls.push({ text: control });
413
+ parts.shift();
414
+ if (text.length > control.length)
415
+ parts.unshift({ text: text.slice(control.length) });
416
+ }
417
+ const content = [...controls, { text: memoryUpdatePrefix }, ...parts];
418
+ conversation[0] = content.length === 1 ? { role: "user", content: memoryUpdatePrefix } : { role: "user", content };
419
+ }
420
+ else
421
+ conversation.unshift({ role: "user", content: memoryUpdatePrefix });
422
+ conversation.push({ role: "user", content: sessionMemoryUpdatePrompt(previous) });
423
+ const messages = [{ role: "system", content: sessionMemorySystemPrompt(currentDate) }];
424
+ for (const message of conversation) {
425
+ const last = messages.at(-1);
426
+ // In particular, image tool results at the end share a user message with
427
+ // the update instruction; neither their images nor text may be dropped.
428
+ if (last?.role === "user" && message.role === "user") {
429
+ messages[messages.length - 1] = { role: "user", content: [...partsOf(last), ...partsOf(message)] };
430
+ }
431
+ else
432
+ messages.push(message);
433
+ }
434
+ return messages;
435
+ }
276
436
  async function updateMemory(source, previous, client, model, settings, signal) {
437
+ signal?.throwIfAborted();
277
438
  const request = {
278
- model, messages: [{ role: "system", content: memorySystemPrompt }, ...source,
279
- { role: "user", content: sessionMemoryUpdatePrompt(previous) }],
439
+ model, messages: sessionMemoryUpdateMessages(source, previous),
280
440
  tools: [], toolChoice: "none", temperature: 1, maxTokens: settings.summaryMaxTokens,
281
441
  ...(settings.reasoningEffort ? { reasoningEffort: settings.reasoningEffort } : { thinkingBudget: 81920 }),
282
442
  enableThinking: true, preserveThinking: true, useProviderDefaults: true, signal,
@@ -294,77 +454,93 @@ async function updateMemory(source, previous, client, model, settings, signal) {
294
454
  }
295
455
  if (signal?.aborted)
296
456
  throw signal.reason || new Error("Memory update cancelled");
297
- if (!patch.trim() || (finishReason && finishReason !== "stop"))
298
- return { usage };
457
+ if (!patch.trim())
458
+ return { usage, update: { status: "error", code: "MEMORY_EMPTY_RESPONSE", usage } };
459
+ if (finishReason && finishReason !== "stop")
460
+ return { usage,
461
+ update: { status: "error", code: "MEMORY_INCOMPLETE_RESPONSE", error: `Memory response finished with ${finishReason}`, usage } };
299
462
  let memory;
300
463
  try {
301
464
  memory = mergeSessionMemory(previous, patch);
302
465
  }
303
- catch {
304
- return { usage };
466
+ catch (error) {
467
+ return { usage, update: { status: "error", code: "MEMORY_INVALID_PATCH", error: String(error), usage } };
305
468
  }
306
- return { memory, usage };
469
+ return { memory, usage, update: { status: "success", usage } };
307
470
  }
308
471
  /** Provisional scheduling policy, not an observed official constant. */
309
472
  export async function maintainSessionMemory(messages, history, cache, tools, client, model, settings, updateTokens = 24_000, signal, onUpdate) {
310
473
  const before = estimateCompactionTokens(messages, tools, settings.imageTokenEstimate);
311
474
  const unchanged = { compacted: false, estimatedTokensBefore: before, estimatedTokensAfter: before };
312
- const threshold = settings.compactionThresholdTokens ?? AGENT_ARENA_COMPACTION_THRESHOLD_TOKENS;
475
+ const threshold = agentArenaCompactionThreshold(settings.contextWindow, settings.triggerRatio, settings.compactionThresholdTokens);
313
476
  const needsCompaction = before >= threshold;
314
477
  if (cache.latest && !sessionMemoryMatchesHistory(cache.latest, history))
315
478
  cache.latest = undefined;
316
479
  if (cache.state && !sessionMemoryMatchesHistory(cache.state, history))
317
480
  cache.state = undefined;
318
- const previous = cache.latest || cache.state;
319
- const embedded = previous ? undefined : extractMemory(history);
481
+ if (needsCompaction && cache.latest && cache.latest.coveredMessages > (cache.state?.coveredMessages ?? 1)) {
482
+ await settings.onBeforeCompaction?.(before, threshold);
483
+ // Coverage refers to the current history. Close a concurrent refresh
484
+ // before replacing that history, then use the latest completed snapshot.
485
+ await settleSessionMemory(cache);
486
+ const latest = cache.latest;
487
+ const usage = cache.latestUsage;
488
+ const replacement = [...history];
489
+ if (!restoreSessionMemory(replacement, latest))
490
+ return unchanged;
491
+ messages.splice(0, messages.length, ...replacement);
492
+ cache.state = latest;
493
+ return { compacted: true, estimatedTokensBefore: before,
494
+ estimatedTokensAfter: visibleContextTokens(messages, tools, settings.imageTokenEstimate),
495
+ memory: latest.memory, usage };
496
+ }
320
497
  // Keep the newest complete assistant/tool step (or newest user message) verbatim.
321
498
  // This also permits updates during a long single-user tool loop.
322
- let boundary = history.length - 1;
323
- while (boundary > 1 && history[boundary]?.role !== "assistant" && history[boundary]?.role !== "user")
324
- boundary--;
325
- // Keep an immediately preceding user instruction with the retained step.
326
- while (boundary > 1 && history[boundary - 1]?.role === "user")
327
- boundary--;
499
+ const boundary = latestCompleteStepStart(history);
500
+ const previous = cache.latest || cache.state;
501
+ const embedded = previous ? undefined : extractMemory(history);
328
502
  const start = previous?.coveredMessages ?? 1;
329
503
  if (!cache.pending && boundary > start) {
330
- const source = structuredClone((embedded?.messages ?? history).slice(start, boundary));
331
- // A synthetic memory-only user message has no new content to summarize.
332
- if (source[0]?.role === "user" && Array.isArray(source[0].content) && !source[0].content.length)
333
- source.shift();
504
+ const source = structuredClone(history.slice(start, boundary));
505
+ const budgetSource = (embedded?.messages ?? history).slice(start, boundary);
334
506
  const prefixHash = memoryPrefixHash(history, boundary);
335
- // Incremental estimate excludes system/tools and the existing memory. Images use
336
- // the local estimator; the exact official scheduling tokenizer is unknown.
337
- const eligible = estimateContextTokens(source, [], settings.imageTokenEstimate) >= updateTokens;
338
- if ((eligible || needsCompaction) && cache.attemptedPrefix !== prefixHash) {
507
+ const eligible = estimateSessionMemoryTokens(budgetSource, settings.imageTokenEstimate) >= updateTokens;
508
+ if (eligible && cache.attemptedPrefix !== prefixHash) {
339
509
  cache.attemptedPrefix = prefixHash;
340
- cache.pending = (async () => {
510
+ const controller = new AbortController();
511
+ cache.controller = controller;
512
+ const updateSignal = signal ? AbortSignal.any([signal, controller.signal]) : controller.signal;
513
+ cache.update = { status: "pending" };
514
+ // Publish the promise before any callback yields so concurrent schedulers
515
+ // observe the same in-flight update.
516
+ cache.pending = Promise.resolve().then(async () => {
517
+ if (onUpdate)
518
+ await onUpdate({ status: "pending" });
341
519
  try {
342
- const result = await updateMemory(source, previous?.memory ?? embedded?.memory ?? emptySessionMemory, client, model, settings, signal);
343
- onUpdate?.(result.usage, Boolean(result.memory));
344
- if (result.memory && !signal?.aborted && memoryPrefixHash(history, boundary) === prefixHash) {
520
+ // With no cached update, official captures retain applied memory in
521
+ // the source and start a fresh section patch from the empty template.
522
+ const result = await updateMemory(source, previous?.memory ?? emptySessionMemory, client, model, settings, updateSignal);
523
+ updateSignal.throwIfAborted();
524
+ cache.update = result.update;
525
+ if (result.memory && memoryPrefixHash(history, boundary) === prefixHash) {
345
526
  cache.latest = { version: 1, memory: result.memory, coveredMessages: boundary, prefixHash };
346
527
  cache.latestUsage = result.usage;
347
528
  }
529
+ else if (result.memory) {
530
+ cache.update = { status: "error", code: "MEMORY_STALE_HISTORY", usage: result.usage };
531
+ }
348
532
  }
349
- catch { /* Keep existing memory/context; retry after the source advances. */ }
350
- })().finally(() => { cache.pending = undefined; });
533
+ catch (error) {
534
+ cache.update = { status: updateSignal.aborted ? "cancelled" : "error",
535
+ code: updateSignal.aborted ? "MEMORY_CANCELLED" : "MEMORY_REQUEST_FAILED",
536
+ error: error instanceof Error ? error.message : String(error) };
537
+ }
538
+ await onUpdate?.(cache.update);
539
+ }).finally(() => { cache.pending = undefined; cache.controller = undefined; });
351
540
  }
352
541
  }
353
- if (!needsCompaction)
354
- return unchanged;
355
- // At the hard context boundary, wait for an in-flight snapshot if necessary.
356
- if (cache.pending)
357
- await cache.pending;
358
- const latest = cache.latest;
359
- if (!latest || latest.coveredMessages <= (cache.state?.coveredMessages ?? 1))
360
- return unchanged;
361
- const replacement = [...history];
362
- if (!restoreSessionMemory(replacement, latest))
363
- return unchanged;
364
- messages.splice(0, messages.length, ...replacement);
365
- cache.state = latest;
366
- return { compacted: true, estimatedTokensBefore: before,
367
- estimatedTokensAfter: visibleContextTokens(messages, tools, settings.imageTokenEstimate),
368
- memory: latest.memory, usage: cache.latestUsage };
542
+ // Crossing the threshold does not create or wait for memory. Continue with
543
+ // the exact conversation until a background refresh is available.
544
+ return unchanged;
369
545
  }
370
546
  //# sourceMappingURL=compaction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compaction.js","sourceRoot":"","sources":["../src/compaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compaction.js","sourceRoot":"","sources":["../src/compaction.ts"],"names":[],"mappings":"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"}