LLeMbas CLI 1.5.1
ci / check (push) Canceled after 0s

An image counted as half a million tokens: the context estimate measured its
base64 as text, so a 1-3 MB screenshot read as "context at 150-280%" the
moment view_image added it, and the session compacted after every image.
An image now counts by its dimensions (28 px patches, at most 16k tokens, a
flat 1600 when unreadable) everywhere the CLI estimates -- the meter, pruning,
/context and the no-usage fallback of all five dialects. Images over 1600 px
or 500 KB are shrunk to 1600 px when ImageMagick is there.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
HomerandClaude Opus 5.5 committed 2026-10-23 21:24:31 +00:00
1 parent 025b067e38
commit 82918ba5a8
12 files changed
+196 -18

No files matched your search

+2 -2
View File
@@ -11,7 +11,7 @@ import { learned, learnEfforts, learnNoProgress, learnNoStreamOptions } from "./
import { historyArgs, Parts, record, recordFailure, retrying, statusOf, SwapBanner } from "./common.ts"
import { sseJson } from "./sse.ts"
import { ThinkSplitter } from "./think.ts"
import { estimateTokens } from "./tokens.ts"
import { estimateTokens, estimateValue } from "./tokens.ts"
import {
ProviderError,
type ChatRequest,
@@ -274,7 +274,7 @@ export class OpenAIChatClient implements Client {
const parts = message.parts
if (!usage) {
const out = parts.reduce((n, p) => n + estimateTokens(p.type === "tool_call" ? p.name + p.args : p.text), 0)
usage = { type: "usage", usage: { input: estimateTokens(JSON.stringify(body.messages)), output: out, estimated: true } }
usage = { type: "usage", usage: { input: estimateValue(body.messages), output: out, estimated: true } }
}
yield usage
yield { type: "finish", reason: finish, message }