Updates
Rolling release / release (push) Failing after 1m49s

This commit is contained in:
2026-09-12 19:36:06 -04:00
parent 9ad09b593c
commit d47e9e260f
30 changed files with 917 additions and 162 deletions
+27 -11
View File
@@ -72,6 +72,22 @@ function loadedCtxSize() {
return (loaded && loaded.ctxSize) || 8192;
}
function systemTokens(history) {
if (history && history[0] && history[0].role === 'system') return compaction.conversationTokens([history[0]]);
return 0;
}
function historyCompactOpts(session, toolDefs, ctxSize, sidecarTokens, budget, attempt) {
return {
budgetTokens: compaction.historyBudget(ctxSize, toolDefs, attempt || 0, sidecarTokens, {
voice: !!budget.voice,
systemTokens: systemTokens(session.history),
}),
tools: toolDefs,
voice: !!budget.voice,
};
}
function toolResultCap(budget) {
const ctx = loadedCtxSize();
const voice = !!(budget && budget.voice);
@@ -608,22 +624,20 @@ async function runTurn(ctx) {
const sidecarTokens = compaction.conversationTokens(turnSidecars) + 256;
const beforeUsage = compaction.usage(session.history, toolDefs, ctxSize);
emitLive(emit, session.id, jobId, Object.assign({ type: 'context' }, beforeUsage));
if (compaction.shouldCompact(session.history, toolDefs, ctxSize, sidecarTokens)) {
if (compaction.shouldCompact(session.history, toolDefs, ctxSize, sidecarTokens, { voice: !!budget.voice })) {
emitUpdate(emit, session.id, jobId, {
type: 'compaction',
status: 'start',
method: 'llm',
method: budget.voice ? 'heuristic' : 'llm',
used: beforeUsage.used,
limit: beforeUsage.limit,
pct: beforeUsage.pct,
threshold: beforeUsage.threshold,
});
const compactOpts = {
budgetTokens: compaction.historyBudget(ctxSize, toolDefs, 0, sidecarTokens),
tools: toolDefs,
voice: !!budget.voice,
};
session.history = await compaction.compactWithLlm(session.history, Object.assign({}, compactOpts, {
const compactOpts = historyCompactOpts(session, toolDefs, ctxSize, sidecarTokens, budget, 0);
session.history = budget.voice
? compaction.compact(session.history, compactOpts)
: await compaction.compactWithLlm(session.history, Object.assign({}, compactOpts, {
complete: (opts) => engine.complete(Object.assign({}, opts, {
desktopVision: false,
timeoutMs: budget.completeTimeoutMs,
@@ -643,7 +657,7 @@ async function runTurn(ctx) {
emitUpdate(emit, session.id, jobId, {
type: 'compaction',
status: 'done',
method: 'llm',
method: budget.voice ? 'heuristic' : 'llm',
used: afterUsage.used,
limit: afterUsage.limit,
pct: afterUsage.pct,
@@ -715,7 +729,7 @@ async function runTurn(ctx) {
// The estimate can be lower than the model's tokenizer count.
// Every overflow retry must shrink even an apparently small history.
budgetTokens: Math.min(
compaction.historyBudget(ctxSize, toolDefs, overflowTry + 1, sidecarTokens),
historyCompactOpts(session, toolDefs, ctxSize, sidecarTokens, budget, overflowTry + 1).budgetTokens,
Math.max(1, Math.floor(compaction.conversationTokens(session.history) * 0.85))
),
tools: toolDefs,
@@ -863,7 +877,9 @@ async function runTurn(ctx) {
}
if (stopEarly) break;
}
if (prepared.length) toolBudget.markToolRound(budget);
if (prepared.some((item) => item.name !== 'todo_write' && item.name !== 'update_goal')) {
toolBudget.markToolRound(budget);
}
if (stopEarly) {
return endTurn(emit, session, jobId, tracker, stopEarly);
}