mirror of
https://github.com/MoonshotAI/kimi-code.git
synced 2026-07-13 11:19:15 +00:00
* feat(agent-core): announce image compression and keep originals readable Every image ingestion point (ReadMediaFile, MCP tool results, clipboard paste, REST upload/inline base64, ACP) now places a <system> caption next to a compressed image stating the original vs. delivered dimensions, byte size, and format, so downsampling is never silent to the model. Originals stay readable: file uploads point at the stored blob, and in-memory images are persisted into the session's media-originals dir (content-addressed, size-capped, removed with the session; temp-dir fallback when no session is known). ReadMediaFile gains region (crop in original-image pixel coordinates, delivered at full fidelity) and full_resolution (skip downscaling, with an explicit error over the per-image byte limit), so the model can zoom into fine detail instead of silently degrading on large images. * fix(agent-core): exempt compression captions from the MCP text budget The caption announcing an image's compression was inserted before the shared 100K text budget was applied, so a chatty MCP result (page text + screenshot) consumed the budget first and the caption was evicted — or sliced mid-string into an unclosed <system> fragment — while the downsampled image survived, silently reintroducing the exact degradation the caption exists to report, and orphaning the persisted original. Split the size-limit pass in two and reorder the pipeline: the text budget now runs on the tool's own text BEFORE compression inserts captions (exempt by construction), and the per-part binary cap still runs after compression so compressible screenshots are kept. * fix(agent-core): harden crop error reporting and document readback semantics - cropImageForModel rejects non-finite region coordinates with a clean message instead of surfacing the codec's internal validation dump - the full_resolution and cropped-region over-budget errors now include exact byte counts alongside the rounded sizes, so a file a hair over budget no longer reads "is 3.8 MB, over the 3.8 MB limit" - read-media.md notes that re-reading a file without region or full_resolution reproduces the same downsampled image |
||
|---|---|---|
| .. | ||
| __snapshots__ | ||
| helpers | ||
| svc | ||
| anti-corruption.test.ts | ||
| api-surface.snapshot.test.ts | ||
| approval.e2e.test.ts | ||
| auth-middleware.e2e.test.ts | ||
| auth-wiring.e2e.test.ts | ||
| auth.e2e.test.ts | ||
| authTokenService.test.ts | ||
| bindClassify.test.ts | ||
| config.e2e.test.ts | ||
| connections.e2e.test.ts | ||
| debug-nonloopback.e2e.test.ts | ||
| defineRoute.test.ts | ||
| error-handler.test.ts | ||
| fileLaunch.test.ts | ||
| files.e2e.test.ts | ||
| fs-basic.e2e.test.ts | ||
| fs-batch.e2e.test.ts | ||
| fs-browse.e2e.test.ts | ||
| fs-download.e2e.test.ts | ||
| fs-git.e2e.test.ts | ||
| fs-mkdir.e2e.test.ts | ||
| fs-path-safety.test.ts | ||
| fs-search.e2e.test.ts | ||
| fs-watch.e2e.test.ts | ||
| guiStore.e2e.test.ts | ||
| host-exposure.e2e.test.ts | ||
| host-origin.e2e.test.ts | ||
| hostnames.test.ts | ||
| lock.test.ts | ||
| messages.e2e.test.ts | ||
| meta.e2e.test.ts | ||
| model-catalog-refresh-scheduler.test.ts | ||
| model-catalog.e2e.test.ts | ||
| oauth.e2e.test.ts | ||
| origin.test.ts | ||
| prompt.e2e.test.ts | ||
| question.e2e.test.ts | ||
| rate-limit.test.ts | ||
| security-headers.test.ts | ||
| services-auth.test.ts | ||
| services.test.ts | ||
| sessions-workspace.e2e.test.ts | ||
| sessions.e2e.test.ts | ||
| skills.e2e.test.ts | ||
| snapshot.e2e.test.ts | ||
| snapshot.perf.test.ts | ||
| snapshot.smoke.test.ts | ||
| snapshotService.unit.test.ts | ||
| start.test.ts | ||
| swagger.e2e.test.ts | ||
| tasks.e2e.test.ts | ||
| terminals.e2e.test.ts | ||
| terminalTestBackend.ts | ||
| tools.e2e.test.ts | ||
| workspaces.e2e.test.ts | ||
| ws-abort.e2e.test.ts | ||
| ws-auth.e2e.test.ts | ||
| ws-broadcast.e2e.test.ts | ||
| ws-handshake.e2e.test.ts | ||
| ws-resync.e2e.test.ts | ||
| ws-terminal.e2e.test.ts | ||