@pentoshi/clai 4.9.0 → 4.10.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/README.md +22 -1
- package/dist/agent/compaction-executor.d.ts +3 -5
- package/dist/agent/compaction-executor.js +165 -28
- package/dist/agent/compaction-executor.js.map +1 -1
- package/dist/agent/tool-call-parser.d.ts +5 -0
- package/dist/agent/tool-call-parser.js +70 -1
- package/dist/agent/tool-call-parser.js.map +1 -1
- package/dist/app/commands/catalog.js +5 -0
- package/dist/app/commands/catalog.js.map +1 -1
- package/dist/app/commands/registry.js +1 -0
- package/dist/app/commands/registry.js.map +1 -1
- package/dist/classic/bootstrap/start-classic.d.ts +1 -0
- package/dist/classic/bootstrap/start-classic.js +13 -0
- package/dist/classic/bootstrap/start-classic.js.map +1 -1
- package/dist/index.js +60 -7
- package/dist/index.js.map +1 -1
- package/dist/interactive-session/transport-node-pty.d.ts +10 -1
- package/dist/interactive-session/transport-node-pty.js +36 -12
- package/dist/interactive-session/transport-node-pty.js.map +1 -1
- package/dist/llm/operation-ledger.js +6 -2
- package/dist/llm/operation-ledger.js.map +1 -1
- package/dist/session-runtime/binding.d.ts +5 -0
- package/dist/session-runtime/binding.js +28 -0
- package/dist/session-runtime/binding.js.map +1 -0
- package/dist/session-runtime/child-bridge.d.ts +31 -0
- package/dist/session-runtime/child-bridge.js +169 -0
- package/dist/session-runtime/child-bridge.js.map +1 -0
- package/dist/session-runtime/client.d.ts +8 -0
- package/dist/session-runtime/client.js +448 -0
- package/dist/session-runtime/client.js.map +1 -0
- package/dist/session-runtime/discovery.d.ts +6 -0
- package/dist/session-runtime/discovery.js +100 -0
- package/dist/session-runtime/discovery.js.map +1 -0
- package/dist/session-runtime/host.d.ts +77 -0
- package/dist/session-runtime/host.js +758 -0
- package/dist/session-runtime/host.js.map +1 -0
- package/dist/session-runtime/launch.d.ts +11 -0
- package/dist/session-runtime/launch.js +68 -0
- package/dist/session-runtime/launch.js.map +1 -0
- package/dist/session-runtime/paths.d.ts +8 -0
- package/dist/session-runtime/paths.js +92 -0
- package/dist/session-runtime/paths.js.map +1 -0
- package/dist/session-runtime/protocol.d.ts +22 -0
- package/dist/session-runtime/protocol.js +149 -0
- package/dist/session-runtime/protocol.js.map +1 -0
- package/dist/session-runtime/replay-buffer.d.ts +12 -0
- package/dist/session-runtime/replay-buffer.js +50 -0
- package/dist/session-runtime/replay-buffer.js.map +1 -0
- package/dist/session-runtime/store.d.ts +14 -0
- package/dist/session-runtime/store.js +143 -0
- package/dist/session-runtime/store.js.map +1 -0
- package/dist/session-runtime/types.d.ts +102 -0
- package/dist/session-runtime/types.js +2 -0
- package/dist/session-runtime/types.js.map +1 -0
- package/dist/tui-v2/bootstrap/start-tui-v2.d.ts +1 -0
- package/dist/tui-v2/bootstrap/start-tui-v2.js +13 -0
- package/dist/tui-v2/bootstrap/start-tui-v2.js.map +1 -1
- package/dist/tui-v2/components/pager/pager.js +49 -34
- package/dist/tui-v2/components/pager/pager.js.map +1 -1
- package/dist/ui-core/bootstrap/composition-root.d.ts +4 -0
- package/dist/ui-core/bootstrap/composition-root.js +2 -0
- package/dist/ui-core/bootstrap/composition-root.js.map +1 -1
- package/dist/ui-core/commands/command-handlers.js +3 -2
- package/dist/ui-core/commands/command-handlers.js.map +1 -1
- package/dist/ui-core/commands/config-commands.d.ts +1 -0
- package/dist/ui-core/commands/config-commands.js +6 -0
- package/dist/ui-core/commands/config-commands.js.map +1 -1
- package/dist/ui-core/commands/picker-commands.js +68 -25
- package/dist/ui-core/commands/picker-commands.js.map +1 -1
- package/dist/version.generated.d.ts +2 -2
- package/dist/version.generated.js +2 -2
- package/dist/version.generated.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -19,6 +19,7 @@ Two things make it practical for everyday use:
|
|
|
19
19
|
- **Scope-based pentesting.** Opt-in engagement scope with authorized/excluded targets, allowed phases, rate and concurrency ceilings, redirect and DNS-rebinding escape detection, and out-of-scope flagging — designed for authorized pentests and bug-bounty programs.
|
|
20
20
|
- **Real building & debugging.** Scaffolds apps, edits code surgically, installs packages, runs builds/tests, starts dev servers as background jobs, and probes them before reporting success.
|
|
21
21
|
- **Durable plans.** `plan.create` / `task.update` drive a live checklist that survives context compaction and reloads with `/history` — the agent works task-by-task and won't fake completion.
|
|
22
|
+
- **Durable agent sessions.** Interactive sessions run behind an authenticated local PTY broker, so an agent keeps working after `/minimise`, an SSH disconnect, or switching to another history session; `clai --resume <id>` reattaches to the same live UI and output stream.
|
|
22
23
|
- **Persistent interactive terminals.** Conversation-owned PTY or pipe sessions keep REPLs such as Python, Metasploit, Meterpreter, database consoles, and debuggers open across model turns. The agent can send follow-up input, read incremental output, resize, interrupt, and close them without losing state.
|
|
23
24
|
- **Native + text tool calling.** Uses provider-native function calling where available, with a text-fence fallback (`toolCalling: auto|native|text`).
|
|
24
25
|
- **MCP, explicitly controlled.** Discovers local stdio and remote HTTP/SSE servers from project and compatible inherited configs. MCP tools are off by default; `/mcp` inspects and adds servers, and picking one drops an editable `@mcp:<server>` token into your prompt — stack as many as you need, delete one with backspace, or switch the whole session on with `/mcp all`.
|
|
@@ -460,6 +461,25 @@ Tool cards show the command/input clearly, with a live elapsed timer next to the
|
|
|
460
461
|
|
|
461
462
|
On exit, both interactive surfaces leave the alternate screen and print a sign-off card on the normal terminal: the wordmark beside a labelled block — session title, folder, elapsed time and message count, reasoning/cache token notes, and the command that reopens the session — followed by the same per-provider/model token table `/usage` shows. Resuming is `clai --resume <id>` (a unique id prefix is enough, and `-c/--continue` picks the newest session for the current directory). Sessions that were never persisted (`--no-history`, private mode, or nothing sent) say so instead of offering a resume command. The card is borderless and reflows down to very narrow terminals: the wordmark drops from six rows to four, then the block stacks beneath it, and labels give way before the resume command is ever shortened.
|
|
462
463
|
|
|
464
|
+
### Background sessions, minimise, and SSH reattach
|
|
465
|
+
|
|
466
|
+
Normal persistent interactive launches use a per-session local PTY broker. The UI and agent run inside that broker-owned terminal, while the shell process you interact with is a disposable client. This keeps the exact same live UI, pending confirmation, queue, tools, MCP connections, and terminal subprocesses alive when the client goes away.
|
|
467
|
+
|
|
468
|
+
- `/minimise` (also `/minimize`) detaches immediately and returns the shell prompt without cancelling the current turn. It prints the session id and the exact `clai --resume <id>` command.
|
|
469
|
+
- An SSH or terminal disconnect has the same detach behavior. SSH into the VM again as the same OS user and run `clai --resume <id>`; `clai -c` prefers the newest live session in the current directory.
|
|
470
|
+
- `/history` marks running, attached, and detached sessions. Selecting another session attaches or starts its own runtime instead of loading over a running agent, so the outgoing agent continues independently.
|
|
471
|
+
- One terminal controls a session at a time. Attaching from another terminal safely transfers control and releases the old terminal; this prevents duplicate keystrokes while still allowing cross-computer SSH takeover.
|
|
472
|
+
- The broker stores only bounded terminal replay (2 MiB), uses an authenticated user-only Unix socket or Windows named pipe, and keeps runtime metadata/locks user-readable only. It never opens a TCP port.
|
|
473
|
+
- A detached runtime stays alive while a turn, compaction, queued prompt, or responder job is active. Once truly idle and detached, it exits after 30 minutes by default; the saved session still resumes normally without keeping idle processes forever.
|
|
474
|
+
- `--no-history`, private mode, non-TTY/one-shot runs, and systems without a usable PTY retain the existing direct foreground behavior. `/minimise` reports that background detach is unavailable instead of partially detaching.
|
|
475
|
+
|
|
476
|
+
Optional controls:
|
|
477
|
+
|
|
478
|
+
```sh
|
|
479
|
+
CLAI_SESSION_RUNTIME_IDLE_MS=1800000 # detached idle lifetime (1 minute–24 hours)
|
|
480
|
+
CLAI_DISABLE_SESSION_RUNTIME=1 # force legacy direct foreground ownership
|
|
481
|
+
```
|
|
482
|
+
|
|
463
483
|
---
|
|
464
484
|
|
|
465
485
|
## Slash commands
|
|
@@ -483,6 +503,7 @@ On exit, both interactive surfaces leave the alternate screen and print a sign-o
|
|
|
483
503
|
| `/cwd <path>` | Change working directory |
|
|
484
504
|
| `/think` · `/thinking` | Show thinking from the last response |
|
|
485
505
|
| `/privacy [...]` | Private mode · clear history/logs/artifacts |
|
|
506
|
+
| `/minimise` · `/minimize` | Detach this terminal while the live session continues in the background |
|
|
486
507
|
| `/update` · `/help` · `/shortcuts` · `/exit` | Housekeeping |
|
|
487
508
|
|
|
488
509
|
---
|
|
@@ -496,7 +517,7 @@ clai [prompt...] # interactive UI, or one-shot with a prom
|
|
|
496
517
|
--show-thinking --verbose --quiet # one-shot stream controls
|
|
497
518
|
--tui --classic
|
|
498
519
|
--ui <tui|v2|opentui|classic|legacy|ink> # aliases; ignored with a prompt
|
|
499
|
-
--resume <sessionId> -c/--continue # reopen
|
|
520
|
+
--resume <sessionId> -c/--continue # reattach live or reopen saved session; ignored with a prompt
|
|
500
521
|
|
|
501
522
|
clai set <provider> [key] # --from-env <VAR> | --stdin | --url <url> (repeatable) | --skip-ping
|
|
502
523
|
clai unset <provider> # remove all keys for a provider (--url = endpoint URLs instead)
|
|
@@ -30,11 +30,9 @@ export interface CompactionSummaryExecution {
|
|
|
30
30
|
readonly onToken?: ((text: string, replace?: boolean) => void) | undefined;
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* strict prefix of this request, so APC providers serve it entirely from
|
|
37
|
-
* cache and only the tail + instruction bill as fresh input.
|
|
33
|
+
* Cache-preserving compaction history: the last successful request's text and
|
|
34
|
+
* protocol timeline, any appended history, then the compaction instruction.
|
|
35
|
+
* Binary image payloads are deliberately omitted from this text operation.
|
|
38
36
|
*/
|
|
39
37
|
export declare function buildCompactionReplayMessages(baseRequest: SuccessfulRequestSnapshot, history: readonly ChatMessage[], userPrompt: string): ChatMessage[];
|
|
40
38
|
export interface CompactionReplayPlan {
|
|
@@ -18,6 +18,128 @@ const COMPACTION_ERROR_RETRY_DELAY_MS = 1_500;
|
|
|
18
18
|
* summary runs, so the plan must leave room for them.
|
|
19
19
|
*/
|
|
20
20
|
const REPLAY_PLAN_SLACK_TOKENS = 4_096;
|
|
21
|
+
const COMPACTION_THINKING = {
|
|
22
|
+
enabled: false,
|
|
23
|
+
effort: "low",
|
|
24
|
+
};
|
|
25
|
+
function cloneTextOnlyMessage(message) {
|
|
26
|
+
const clone = structuredClone(message);
|
|
27
|
+
delete clone.images;
|
|
28
|
+
return clone;
|
|
29
|
+
}
|
|
30
|
+
function cloneCompatibilityMessage(message) {
|
|
31
|
+
const clone = cloneTextOnlyMessage(message);
|
|
32
|
+
delete clone.reasoningBlock;
|
|
33
|
+
delete clone.reasoningArtifacts;
|
|
34
|
+
return clone;
|
|
35
|
+
}
|
|
36
|
+
function errorStatus(error) {
|
|
37
|
+
if (!error || typeof error !== "object" || !("status" in error)) {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
const status = Number(error.status);
|
|
41
|
+
return Number.isFinite(status) ? status : undefined;
|
|
42
|
+
}
|
|
43
|
+
function errorText(error) {
|
|
44
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
45
|
+
const body = error && typeof error === "object" && "body" in error
|
|
46
|
+
? String(error.body ?? "")
|
|
47
|
+
: "";
|
|
48
|
+
return `${message}\n${body}`.trim();
|
|
49
|
+
}
|
|
50
|
+
function isRequestShapeRejection(error, signal) {
|
|
51
|
+
if (streamAlreadyEmitted(error) || isAbortError(error, signal))
|
|
52
|
+
return false;
|
|
53
|
+
const status = errorStatus(error);
|
|
54
|
+
if (status !== 400 && status !== 422)
|
|
55
|
+
return false;
|
|
56
|
+
const text = errorText(error);
|
|
57
|
+
return !/context length|maximum context|context window|prompt too long|too many tokens|model (?:is )?not found|unknown model|content policy|safety policy|moderation|unauthori[sz]ed|api key/i.test(text);
|
|
58
|
+
}
|
|
59
|
+
const REJECTABLE_WIRE_FIELDS = [
|
|
60
|
+
"chat_template_kwargs",
|
|
61
|
+
"enable_thinking",
|
|
62
|
+
"reasoning_effort",
|
|
63
|
+
"reasoning_budget",
|
|
64
|
+
"reasoning_content",
|
|
65
|
+
"parallel_tool_calls",
|
|
66
|
+
"tool_choice",
|
|
67
|
+
"stream_options",
|
|
68
|
+
"max_completion_tokens",
|
|
69
|
+
"max_tokens",
|
|
70
|
+
"temperature",
|
|
71
|
+
"top_p",
|
|
72
|
+
"image_url",
|
|
73
|
+
"images",
|
|
74
|
+
"tools",
|
|
75
|
+
"thinking",
|
|
76
|
+
"reasoning",
|
|
77
|
+
];
|
|
78
|
+
function rejectedWireField(error) {
|
|
79
|
+
const text = errorText(error)
|
|
80
|
+
.toLowerCase()
|
|
81
|
+
.replace(/\(e\.g\.\s*images? on a text-only model\)/g, "");
|
|
82
|
+
const rejection = "not support|unsupported|unknown|unrecognized|not allowed|does not accept|extra inputs are not permitted|invalid(?: request)?(?: argument| parameter| field| value)?";
|
|
83
|
+
for (const field of REJECTABLE_WIRE_FIELDS) {
|
|
84
|
+
const escaped = field.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
85
|
+
if (new RegExp(`(?:${escaped}).{0,80}(?:${rejection})`, "i").test(text) ||
|
|
86
|
+
new RegExp(`(?:${rejection}).{0,80}(?:${escaped})`, "i").test(text)) {
|
|
87
|
+
return field;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
function compactionCompatibilityRequest(request) {
|
|
93
|
+
const removed = [];
|
|
94
|
+
if (request.thinking !== undefined || request.forceReasoningReplay) {
|
|
95
|
+
removed.push("reasoning controls");
|
|
96
|
+
}
|
|
97
|
+
if (request.tools?.length ||
|
|
98
|
+
request.toolChoice !== undefined ||
|
|
99
|
+
request.parallelToolCalls !== undefined) {
|
|
100
|
+
removed.push("tool controls");
|
|
101
|
+
}
|
|
102
|
+
let removedArtifacts = false;
|
|
103
|
+
const messages = request.messages.map((message) => {
|
|
104
|
+
if (message.reasoningBlock || message.reasoningArtifacts?.length) {
|
|
105
|
+
removedArtifacts = true;
|
|
106
|
+
}
|
|
107
|
+
return cloneCompatibilityMessage(message);
|
|
108
|
+
});
|
|
109
|
+
if (removedArtifacts)
|
|
110
|
+
removed.push("reasoning replay artifacts");
|
|
111
|
+
if (removed.length === 0)
|
|
112
|
+
return undefined;
|
|
113
|
+
const { thinking: _thinking, forceReasoningReplay: _forceReasoningReplay, tools: _tools, toolChoice: _toolChoice, parallelToolCalls: _parallelToolCalls, ...rest } = request;
|
|
114
|
+
return {
|
|
115
|
+
request: {
|
|
116
|
+
...rest,
|
|
117
|
+
messages,
|
|
118
|
+
},
|
|
119
|
+
removed,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
function requestRejectionError(input) {
|
|
123
|
+
const field = rejectedWireField(input.error);
|
|
124
|
+
const upstream = errorText(input.error).replace(/\s+/g, " ").trim();
|
|
125
|
+
const cappedUpstream = upstream.length > 600 ? `${upstream.slice(0, 600)}…` : upstream;
|
|
126
|
+
const retry = input.retried
|
|
127
|
+
? ` after one compatibility retry${input.removed?.length ? ` without ${input.removed.join(", ")}` : ""}`
|
|
128
|
+
: "";
|
|
129
|
+
const diagnosis = field
|
|
130
|
+
? `The provider identified \`${field}\` as the rejected field.`
|
|
131
|
+
: "No image payload was sent, and the provider did not identify which request field was invalid; any image example in its generic message is not evidence that this request contained an image.";
|
|
132
|
+
const wrapped = new Error(`compaction failed: the provider rejected the text-only summary request${retry}. ${diagnosis} The original context was retained.${cappedUpstream ? ` Provider response: ${cappedUpstream}` : ""}`, { cause: input.error });
|
|
133
|
+
const status = errorStatus(input.error);
|
|
134
|
+
if (status !== undefined) {
|
|
135
|
+
Object.defineProperty(wrapped, "status", {
|
|
136
|
+
configurable: true,
|
|
137
|
+
enumerable: true,
|
|
138
|
+
value: status,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
return wrapped;
|
|
142
|
+
}
|
|
21
143
|
/**
|
|
22
144
|
* A compaction failure worth one more admission. Retryable by default: the
|
|
23
145
|
* only failures excluded are ones a retry cannot fix — aborts, partial streams
|
|
@@ -69,7 +191,7 @@ function comparableMessage(message) {
|
|
|
69
191
|
const { images: _images, ...rest } = message;
|
|
70
192
|
return JSON.stringify(rest);
|
|
71
193
|
}
|
|
72
|
-
function missingHistoryTail(requestMessages, history) {
|
|
194
|
+
function missingHistoryTail(requestMessages, history, textOnly = true) {
|
|
73
195
|
let requestIndex = 0;
|
|
74
196
|
let matchedHistory = 0;
|
|
75
197
|
while (matchedHistory < history.length) {
|
|
@@ -86,18 +208,18 @@ function missingHistoryTail(requestMessages, history) {
|
|
|
86
208
|
requestIndex = found + 1;
|
|
87
209
|
matchedHistory += 1;
|
|
88
210
|
}
|
|
89
|
-
return history
|
|
211
|
+
return history
|
|
212
|
+
.slice(matchedHistory)
|
|
213
|
+
.map((message) => textOnly ? cloneTextOnlyMessage(message) : structuredClone(message));
|
|
90
214
|
}
|
|
91
215
|
/**
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
* strict prefix of this request, so APC providers serve it entirely from
|
|
96
|
-
* cache and only the tail + instruction bill as fresh input.
|
|
216
|
+
* Cache-preserving compaction history: the last successful request's text and
|
|
217
|
+
* protocol timeline, any appended history, then the compaction instruction.
|
|
218
|
+
* Binary image payloads are deliberately omitted from this text operation.
|
|
97
219
|
*/
|
|
98
220
|
export function buildCompactionReplayMessages(baseRequest, history, userPrompt) {
|
|
99
221
|
return [
|
|
100
|
-
...baseRequest.messages.map(
|
|
222
|
+
...baseRequest.messages.map(cloneTextOnlyMessage),
|
|
101
223
|
...missingHistoryTail(baseRequest.messages, history),
|
|
102
224
|
{ role: "user", content: userPrompt },
|
|
103
225
|
];
|
|
@@ -133,12 +255,9 @@ export function planCompactionReplay(input) {
|
|
|
133
255
|
}
|
|
134
256
|
const continuationMessages = [
|
|
135
257
|
...baseRequest.messages.map((message) => structuredClone(message)),
|
|
136
|
-
...
|
|
137
|
-
];
|
|
138
|
-
const messages = [
|
|
139
|
-
...continuationMessages,
|
|
140
|
-
{ role: "user", content: input.prompt },
|
|
258
|
+
...missingHistoryTail(baseRequest.messages, input.history, false),
|
|
141
259
|
];
|
|
260
|
+
const messages = buildCompactionReplayMessages(baseRequest, input.history, input.prompt);
|
|
142
261
|
const account = (candidateMessages, compactionRequest) => accountAssembledRequest({
|
|
143
262
|
provider: baseRequest.provider,
|
|
144
263
|
model: baseRequest.model,
|
|
@@ -175,7 +294,7 @@ export async function executeCompactionSummary(execution) {
|
|
|
175
294
|
}
|
|
176
295
|
return execution.sourceMessages
|
|
177
296
|
? [
|
|
178
|
-
...execution.sourceMessages,
|
|
297
|
+
...execution.sourceMessages.map(cloneTextOnlyMessage),
|
|
179
298
|
{ role: "user", content: userPrompt },
|
|
180
299
|
]
|
|
181
300
|
: [
|
|
@@ -210,16 +329,13 @@ export async function executeCompactionSummary(execution) {
|
|
|
210
329
|
}
|
|
211
330
|
: {
|
|
212
331
|
temperature: 0.1,
|
|
213
|
-
|
|
214
|
-
// for openai-style gateways (TokenRouter etc.) `effort:"none"` maps to
|
|
215
|
-
// the wire value `reasoning_effort:"none"`, which many models reject
|
|
216
|
-
// ("reasoning option not supported"). "low" with enabled:false maps to
|
|
217
|
-
// no reasoning knob on those gateways while still disabling default
|
|
218
|
-
// thinking on deepseek-style models via their own mapping.
|
|
219
|
-
thinking: { enabled: false, effort: "low" },
|
|
332
|
+
thinking: COMPACTION_THINKING,
|
|
220
333
|
...(execution.allowModelFallback ? { allowModelFallback: true } : {}),
|
|
221
334
|
...(execution.tools?.length
|
|
222
|
-
? {
|
|
335
|
+
? {
|
|
336
|
+
tools: execution.tools.map((tool) => structuredClone(tool)),
|
|
337
|
+
toolChoice: "none",
|
|
338
|
+
}
|
|
223
339
|
: {}),
|
|
224
340
|
}),
|
|
225
341
|
...(execution.signal ? { signal: execution.signal } : {}),
|
|
@@ -248,9 +364,6 @@ export async function executeCompactionSummary(execution) {
|
|
|
248
364
|
}
|
|
249
365
|
}
|
|
250
366
|
const runProviderAttempt = async (attemptRequest, replace = false) => {
|
|
251
|
-
// A pinned single dispatch is what makes the one-admission contract real:
|
|
252
|
-
// without it the router can still rotate keys, fall back to another
|
|
253
|
-
// provider, or retry a capability downgrade, each resending this prompt.
|
|
254
367
|
const routerOptions = {
|
|
255
368
|
maxRetries: 0,
|
|
256
369
|
singleDispatch: true,
|
|
@@ -290,9 +403,7 @@ export async function executeCompactionSummary(execution) {
|
|
|
290
403
|
signal?.addEventListener("abort", onAbort, { once: true });
|
|
291
404
|
});
|
|
292
405
|
};
|
|
293
|
-
|
|
294
|
-
// cache-hot, so the second admission only re-bills the small fresh tail.
|
|
295
|
-
const runAttempt = async (attemptRequest, replace = false) => {
|
|
406
|
+
const runTransientAttempt = async (attemptRequest, replace = false) => {
|
|
296
407
|
try {
|
|
297
408
|
return await runProviderAttempt(attemptRequest, replace);
|
|
298
409
|
}
|
|
@@ -305,6 +416,32 @@ export async function executeCompactionSummary(execution) {
|
|
|
305
416
|
return await runProviderAttempt(attemptRequest, replace);
|
|
306
417
|
}
|
|
307
418
|
};
|
|
419
|
+
const runAttempt = async (attemptRequest, replace = false) => {
|
|
420
|
+
try {
|
|
421
|
+
return await runTransientAttempt(attemptRequest, replace);
|
|
422
|
+
}
|
|
423
|
+
catch (error) {
|
|
424
|
+
if (!isRequestShapeRejection(error, execution.signal))
|
|
425
|
+
throw error;
|
|
426
|
+
const compatibility = compactionCompatibilityRequest(attemptRequest);
|
|
427
|
+
if (!compatibility) {
|
|
428
|
+
throw requestRejectionError({ error, retried: false });
|
|
429
|
+
}
|
|
430
|
+
try {
|
|
431
|
+
return await runTransientAttempt(compatibility.request);
|
|
432
|
+
}
|
|
433
|
+
catch (retryError) {
|
|
434
|
+
if (!isRequestShapeRejection(retryError, execution.signal)) {
|
|
435
|
+
throw retryError;
|
|
436
|
+
}
|
|
437
|
+
throw requestRejectionError({
|
|
438
|
+
error: retryError,
|
|
439
|
+
retried: true,
|
|
440
|
+
removed: compatibility.removed,
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
};
|
|
308
445
|
const first = await runAttempt(request);
|
|
309
446
|
if (first.toolCalls?.length) {
|
|
310
447
|
throw new Error("compaction failed: model returned tool calls instead of a summary — original context retained");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compaction-executor.js","sourceRoot":"","sources":["../../src/agent/compaction-executor.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,EAC/B,oCAAoC,EACpC,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,GAErB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,mBAAmB,GACvB,4GAA4G,CAAC;AAE/G;;;;GAIG;AACH,MAAM,+BAA+B,GAAG,KAAK,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,wBAAwB,GAAG,KAAK,CAAC;AAEvC;;;;;;;;GAQG;AACH,SAAS,0BAA0B,CAAC,KAAc,EAAE,MAAoB;IACtE,IAAI,oBAAoB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,IAAI,0BAA0B,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,IAAI,KAAK,YAAY,qBAAqB;QAAE,OAAO,KAAK,CAAC;IACzD,MAAM,MAAM,GACV,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAI,KAAK;QACrD,CAAC,CAAC,MAAM,CAAE,KAA6B,CAAC,MAAM,CAAC;QAC/C,CAAC,CAAC,CAAC,CAAC;IACR,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAClD,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG;QAAE,OAAO,KAAK,CAAC;IAChD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,iFAAiF;AACjF,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IAGtC;IACA;IAHX,YACE,OAAe,EACN,aAAqB,EACrB,mBAAuC;QAEhD,KAAK,CAAC,OAAO,CAAC,CAAC;QAHN,kBAAa,GAAb,aAAa,CAAQ;QACrB,wBAAmB,GAAnB,mBAAmB,CAAoB;QAGhD,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED,MAAM,UAAU,0BAA0B,CACxC,KAAc;IAEd,OAAO,KAAK,YAAY,wBAAwB,CAAC;AACnD,CAAC;AA0BD,MAAM,qBAAqB,GAAG;IAC5B,SAAS,EAAE,mFAAmF;IAC9F,gBAAgB,EACd,kFAAkF;IACpF,QAAQ,EACN,8EAA8E;IAChF,UAAU,EACR,qFAAqF;CAC/E,CAAC;AAEX,SAAS,iBAAiB,CAAC,OAAoB;IAC7C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,kBAAkB,CACzB,eAAuC,EACvC,OAA+B;IAE/B,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,OAAO,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,cAAc,CAAE,CAAC,CAAC;QAC7D,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;QACf,KAAK,IAAI,KAAK,GAAG,YAAY,EAAE,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC1E,IAAI,iBAAiB,CAAC,eAAe,CAAC,KAAK,CAAE,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC5D,KAAK,GAAG,KAAK,CAAC;gBACd,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,KAAK,GAAG,CAAC;YAAE,MAAM;QACrB,YAAY,GAAG,KAAK,GAAG,CAAC,CAAC;QACzB,cAAc,IAAI,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AAClF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAC3C,WAAsC,EACtC,OAA+B,EAC/B,UAAkB;IAElB,OAAO;QACL,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAClE,GAAG,kBAAkB,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC;QACpD,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,UAAU,EAAE;KAC/C,CAAC;AACJ,CAAC;AAQD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAOpC;IACC,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IACtC,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW;QAAE,OAAO,SAAS,CAAC;IACpD,MAAM,IAAI,GAAG,kBAAkB,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACrE,IAAI,iBAAiB,CAAC,YAAY,CAAC,KAAK,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;QACvE,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QACpD,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;IAC5D,CAAC;IACD,MAAM,oBAAoB,GAAkB;QAC1C,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAClE,GAAG,IAAI;KACR,CAAC;IACF,MAAM,QAAQ,GAAkB;QAC9B,GAAG,oBAAoB;QACvB,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE;KACjD,CAAC;IACF,MAAM,OAAO,GAAG,CACd,iBAAyC,EACzC,iBAA0B,EACP,EAAE,CACrB,uBAAuB,CAAC;QACtB,QAAQ,EAAE,WAAW,CAAC,QAAQ;QAC9B,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,QAAQ,EAAE,iBAAiB;QAC3B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;QAC5B,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,WAAW,CAAC,UAAU,KAAK,SAAS;YACtC,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW,CAAC,UAAU,EAAE;YACxC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,WAAW,CAAC,iBAAiB,KAAK,SAAS;YAC7C,CAAC,CAAC,EAAE,iBAAiB,EAAE,WAAW,CAAC,iBAAiB,EAAE;YACtD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,GAAG,CAAC,KAAK,CAAC,kBAAkB,KAAK,SAAS;YACxC,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAAE;YAClD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,iBAAiB;YACnB,CAAC,CAAC;gBACE,oBAAoB,EAAE,KAAK,CAAC,SAAS;gBACrC,kBAAkB,EAChB,oBAAoB,GAAG,wBAAwB;aAClD;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC,UAAU,CAAC;IAChB,OAAO;QACL,QAAQ;QACR,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;QACnC,sBAAsB,EAAE,OAAO,CAAC,oBAAoB,EAAE,KAAK,CAAC;KAC7D,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,SAAqC;IAErC,MAAM,eAAe,GAAG,CACtB,UAAkB,EAClB,aAAqB,EACN,EAAE;QACjB,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;YAC1B,OAAO,6BAA6B,CAClC,SAAS,CAAC,WAAW,EACrB,SAAS,CAAC,OAAO,IAAI,EAAE,EACvB,UAAU,CACX,CAAC;QACJ,CAAC;QACD,OAAO,SAAS,CAAC,cAAc;YAC7B,CAAC,CAAC;gBACE,GAAG,SAAS,CAAC,cAAc;gBAC3B,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,UAAU,EAAE;aAC/C;YACH,CAAC,CAAC;gBACE,EAAE,IAAI,EAAE,QAAiB,EAAE,OAAO,EAAE,aAAa,EAAE;gBACnD,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,UAAU,EAAE;aAC/C,CAAC;IACR,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;IAC1C,MAAM,OAAO,GAAsB;QACjC,QAAQ,EAAE,WAAW,EAAE,QAAQ,IAAI,SAAS,CAAC,QAAQ;QACrD,KAAK,EAAE,WAAW,EAAE,KAAK,IAAI,SAAS,CAAC,KAAK;QAC5C,OAAO,EAAE,YAAY;QACrB,QAAQ,EAAE,eAAe,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,aAAa,CAAC;QACpE,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,GAAG,CAAC,WAAW;YACb,CAAC,CAAC;gBACE,GAAG,CAAC,WAAW,CAAC,WAAW,KAAK,SAAS;oBACvC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE;oBAC1C,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,WAAW,CAAC,QAAQ;oBACtB,CAAC,CAAC,EAAE,QAAQ,EAAE,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE;oBACrD,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,WAAW,CAAC,KAAK;oBACnB,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE;oBACnE,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,WAAW,CAAC,UAAU,KAAK,SAAS;oBACtC,CAAC,CAAC,EAAE,UAAU,EAAE,eAAe,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;oBACzD,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,WAAW,CAAC,iBAAiB,KAAK,SAAS;oBAC7C,CAAC,CAAC,EAAE,iBAAiB,EAAE,WAAW,CAAC,iBAAiB,EAAE;oBACtD,CAAC,CAAC,EAAE,CAAC;aACR;YACH,CAAC,CAAC;gBACE,WAAW,EAAE,GAAG;gBAChB,sEAAsE;gBACtE,uEAAuE;gBACvE,qEAAqE;gBACrE,uEAAuE;gBACvE,oEAAoE;gBACpE,2DAA2D;gBAC3D,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAc,EAAE;gBACpD,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrE,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM;oBACzB,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,MAAe,EAAE;oBACzD,CAAC,CAAC,EAAE,CAAC;aACR,CAAC;QACN,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1D,CAAC;IAEF,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,UAAU,GAAG,uBAAuB,CAAC;YACzC,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,KAAK,EAAE,WAAW,CAAC,KAAK;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS;gBAClC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE;gBACpC,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,OAAO,CAAC,iBAAiB,KAAK,SAAS;gBACzC,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE;gBAClD,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,GAAG,CAAC,SAAS,CAAC,kBAAkB,KAAK,SAAS;gBAC5C,CAAC,CAAC,EAAE,kBAAkB,EAAE,SAAS,CAAC,kBAAkB,EAAE;gBACtD,CAAC,CAAC,EAAE,CAAC;YACP,oBAAoB,EAAE,SAAS,CAAC,SAAS;SAC1C,CAAC,CAAC,UAAU,CAAC;QACd,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,wBAAwB,CAChC,+EAA+E,UAAU,CAAC,aAAa,CAAC,cAAc,EAAE,0BAA0B,UAAU,CAAC,KAAK,CAAC,mBAAmB,EAAE,cAAc,EAAE,iEAAiE,EACzQ,UAAU,CAAC,aAAa,EACxB,UAAU,CAAC,KAAK,CAAC,mBAAmB,CACrC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,kBAAkB,GAAG,KAAK,EAC9B,cAAiC,EACjC,OAAO,GAAG,KAAK,EACf,EAAE;QACF,0EAA0E;QAC1E,oEAAoE;QACpE,yEAAyE;QACzE,MAAM,aAAa,GAAG;YACpB,UAAU,EAAE,CAAC;YACb,cAAc,EAAE,IAAI;YACpB,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnE,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YACtB,OAAO,oBAAoB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,OAAO;YAAE,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,0BAA0B,CACvC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EACnC,SAAS,EACT,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,cAAc,EACd,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAC7B,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,GAAG,aAAa,EAAE,CAChD,CAAC;QACF,MAAM,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,KAAK,IAAmB,EAAE;QACjD,MAAM,OAAO,GAAG,SAAS,CAAC,YAAY,IAAI,+BAA+B,CAAC;QAC1E,IAAI,OAAO,IAAI,CAAC;YAAE,OAAO;QACzB,IAAI,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YAC9B,MAAM,SAAS,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;YAChC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,CAAC;YACZ,CAAC,EAAE,OAAO,CAAC,CAAC;YACZ,MAAM,OAAO,GAAG,GAAS,EAAE;gBACzB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YACjD,CAAC,CAAC;YACF,MAAM,OAAO,GAAG,GAAS,EAAE;gBACzB,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAChD,CAAC,CAAC;YACF,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,wEAAwE;IACxE,yEAAyE;IACzE,MAAM,UAAU,GAAG,KAAK,EACtB,cAAiC,EACjC,OAAO,GAAG,KAAK,EACf,EAAE;QACF,IAAI,CAAC;YACH,OAAO,MAAM,kBAAkB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IACE,CAAC,SAAS,CAAC,kBAAkB;gBAC7B,CAAC,0BAA0B,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EACpD,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,gBAAgB,EAAE,CAAC;YACzB,OAAO,MAAM,kBAAkB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,+FAA+F,CAChG,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,GAAG,0BAA0B,CACtC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAClC,CAAC;IACF,IAAI,WAKS,CAAC;IACd,IAAI,+BAA+B,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;QAChE,WAAW,GAAG,WAAW,CAAC;IAC5B,CAAC;SAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACpB,WAAW,GAAG,gBAAgB,CAAC;IACjC,CAAC;SAAM,IAAI,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,WAAW,GAAG,UAAU,CAAC;IAC3B,CAAC;SAAM,IAAI,oCAAoC,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,WAAW,GAAG,YAAY,CAAC;IAC7B,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,SAAS,CAAC,YAAY,KAAK,KAAK,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,UAAU,CAC5B;YACE,GAAG,OAAO;YACV,QAAQ,EAAE,eAAe,CACvB,0BAA0B,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,EACzD,GAAG,SAAS,CAAC,aAAa,GAAG,mBAAmB,EAAE,CACnD;YACD,WAAW,EAAE,CAAC;SACf,EACD,IAAI,CACL,CAAC;QACF,IAAI,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,+FAA+F,CAChG,CAAC;QACJ,CAAC;QACD,IAAI,+BAA+B,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,0BAA0B,CAClC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAClC,CAAC;QACF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAC;QACJ,CAAC;QACD,IAAI,oCAAoC,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CACb,2FAA2F,CAC5F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"compaction-executor.js","sourceRoot":"","sources":["../../src/agent/compaction-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -120,6 +120,11 @@ export declare function buildTurnHistory(messages: ChatMessage[], answer: string
|
|
|
120
120
|
* times ("We need to wait.We need to wait.…"), which otherwise bloats the
|
|
121
121
|
* context window and wastes tokens on every subsequent turn. We keep a few
|
|
122
122
|
* copies and note the collapse so the meaning is preserved without the bulk.
|
|
123
|
+
*
|
|
124
|
+
* Markdown tables, rules, lists, links, and code must remain exact: this runs
|
|
125
|
+
* before Markdown parsing, so changing one delimiter makes the renderer fall
|
|
126
|
+
* back to raw pipes. Plain prose spans can still include repeated newlines and
|
|
127
|
+
* therefore retain the original protection against multi-line degeneration.
|
|
123
128
|
*/
|
|
124
129
|
export declare function collapseRepeatedText(text: string): string;
|
|
125
130
|
/** Extract the text before the tool call block for display purposes */
|
|
@@ -1450,18 +1450,87 @@ export function buildTurnHistory(messages, answer) {
|
|
|
1450
1450
|
}
|
|
1451
1451
|
return convo;
|
|
1452
1452
|
}
|
|
1453
|
+
/** Lines where repetition is meaningful syntax/content and must stay byte-exact. */
|
|
1454
|
+
function isRepetitionSensitiveMarkdownLine(line) {
|
|
1455
|
+
if (/^(?: {4}|\t)/.test(line))
|
|
1456
|
+
return true;
|
|
1457
|
+
if (line.includes("`"))
|
|
1458
|
+
return true;
|
|
1459
|
+
if ((line.match(/\|/g)?.length ?? 0) >= 2)
|
|
1460
|
+
return true;
|
|
1461
|
+
if (/!?\[[^\]]*\](?:\([^)]*\)|\[[^\]]*\])/.test(line))
|
|
1462
|
+
return true;
|
|
1463
|
+
if (/^\s{0,3}(?:#{1,6}(?:\s|$)|>\s?|[-+*]\s+|\d+[.)]\s+)/.test(line)) {
|
|
1464
|
+
return true;
|
|
1465
|
+
}
|
|
1466
|
+
return /^\s{0,3}(?:(?:-\s*){3,}|(?:_\s*){3,}|(?:\*\s*){3,}|=+)\s*$/.test(line);
|
|
1467
|
+
}
|
|
1468
|
+
function collapseRepeatedProse(text) {
|
|
1469
|
+
return text.replace(/(.{3,80}?)\1{6,}/gs, (match, unit) => {
|
|
1470
|
+
// Punctuation runs are commonly Markdown separators/rules even when a
|
|
1471
|
+
// caller gives us an incomplete fragment without its surrounding line.
|
|
1472
|
+
if (!/[\p{L}\p{N}]/u.test(unit))
|
|
1473
|
+
return match;
|
|
1474
|
+
return `${unit.repeat(3)} …[repeated ~${Math.round(match.length / Math.max(1, unit.length))}× — collapsed]`;
|
|
1475
|
+
});
|
|
1476
|
+
}
|
|
1453
1477
|
/**
|
|
1454
1478
|
* Collapse pathological repetition before a message is stored in history.
|
|
1455
1479
|
* Some models degenerate into emitting the same short phrase hundreds of
|
|
1456
1480
|
* times ("We need to wait.We need to wait.…"), which otherwise bloats the
|
|
1457
1481
|
* context window and wastes tokens on every subsequent turn. We keep a few
|
|
1458
1482
|
* copies and note the collapse so the meaning is preserved without the bulk.
|
|
1483
|
+
*
|
|
1484
|
+
* Markdown tables, rules, lists, links, and code must remain exact: this runs
|
|
1485
|
+
* before Markdown parsing, so changing one delimiter makes the renderer fall
|
|
1486
|
+
* back to raw pipes. Plain prose spans can still include repeated newlines and
|
|
1487
|
+
* therefore retain the original protection against multi-line degeneration.
|
|
1459
1488
|
*/
|
|
1460
1489
|
export function collapseRepeatedText(text) {
|
|
1461
1490
|
if (!text || text.length < 1500)
|
|
1462
1491
|
return text;
|
|
1463
1492
|
try {
|
|
1464
|
-
|
|
1493
|
+
const pieces = text.split(/(\r\n|\n|\r)/);
|
|
1494
|
+
let output = "";
|
|
1495
|
+
let prose = "";
|
|
1496
|
+
let fence;
|
|
1497
|
+
const flushProse = () => {
|
|
1498
|
+
if (!prose)
|
|
1499
|
+
return;
|
|
1500
|
+
output += collapseRepeatedProse(prose);
|
|
1501
|
+
prose = "";
|
|
1502
|
+
};
|
|
1503
|
+
for (let index = 0; index < pieces.length; index += 2) {
|
|
1504
|
+
const line = pieces[index] ?? "";
|
|
1505
|
+
const newline = pieces[index + 1] ?? "";
|
|
1506
|
+
const fenceMatch = /^\s{0,3}(`{3,}|~{3,})/.exec(line);
|
|
1507
|
+
const protectedLine = fence !== undefined ||
|
|
1508
|
+
fenceMatch !== null ||
|
|
1509
|
+
isRepetitionSensitiveMarkdownLine(line);
|
|
1510
|
+
if (protectedLine) {
|
|
1511
|
+
flushProse();
|
|
1512
|
+
output += line + newline;
|
|
1513
|
+
}
|
|
1514
|
+
else {
|
|
1515
|
+
prose += line + newline;
|
|
1516
|
+
}
|
|
1517
|
+
if (fenceMatch) {
|
|
1518
|
+
const token = fenceMatch[1];
|
|
1519
|
+
if (!fence) {
|
|
1520
|
+
fence = { marker: token[0], length: token.length };
|
|
1521
|
+
}
|
|
1522
|
+
else {
|
|
1523
|
+
const rest = line.slice(fenceMatch[0].length);
|
|
1524
|
+
if (token[0] === fence.marker &&
|
|
1525
|
+
token.length >= fence.length &&
|
|
1526
|
+
rest.trim() === "") {
|
|
1527
|
+
fence = undefined;
|
|
1528
|
+
}
|
|
1529
|
+
}
|
|
1530
|
+
}
|
|
1531
|
+
}
|
|
1532
|
+
flushProse();
|
|
1533
|
+
return output;
|
|
1465
1534
|
}
|
|
1466
1535
|
catch {
|
|
1467
1536
|
return text;
|