mirror of
https://github.com/MoonshotAI/kimi-code.git
synced 2026-07-09 17:29:12 +00:00
* feat(kosong): classify HTTP 413 request-body-too-large as a dedicated error type * feat(agent-core): lower default image downscale cap to 2000px and make it configurable * feat(agent-core): strip media to text markers and retry when the compaction request is too large * feat(agent-core): cap model-initiated image reads with a configurable byte budget * feat(agent-core): resend with degraded media when the provider rejects the request body as too large * test(agent-core): add explicit timeouts to encode-heavy image budget tests * feat: add WebP decoding support with wasm integration - Introduced a new WebP decoding module using @jsquash/webp's wasm decoder. - Implemented functions to decode WebP images and check for animated WebP formats. - Updated image compression tests to include scenarios for WebP handling, including encoding and decoding. - Enhanced error handling for API request size limits to accommodate various error messages. - Updated pnpm lockfile to include new dependencies for WebP encoding and decoding. * chore(changeset): consolidate this PR's entries into one * fix(nix): update pnpmDeps hash for merged lockfile * feat(agent-core): refuse HEIC/HEIF reads with platform-matched conversion guidance
36 lines
1.4 KiB
JavaScript
36 lines
1.4 KiB
JavaScript
/**
|
|
* Regenerate `src/tools/support/webp-dec-wasm.ts` from the installed
|
|
* `@jsquash/webp` package.
|
|
*
|
|
* The WebP decoder wasm is committed as a base64 string module because the
|
|
* published CLI bundles every dependency into a single file with no runtime
|
|
* node_modules — a file-path lookup for the .wasm would break there, while a
|
|
* string constant survives every packaging (vitest on sources, tsdown
|
|
* bundling, nix builds) unchanged. Run this after bumping @jsquash/webp:
|
|
*
|
|
* node scripts/generate-webp-dec-wasm.mjs
|
|
*/
|
|
import { createRequire } from 'node:module';
|
|
import { readFileSync, writeFileSync } from 'node:fs';
|
|
import { resolve } from 'node:path';
|
|
|
|
const packageRoot = resolve(import.meta.dirname, '..');
|
|
const require = createRequire(resolve(packageRoot, 'package.json'));
|
|
|
|
const wasmPath = require.resolve('@jsquash/webp/codec/dec/webp_dec.wasm');
|
|
const version = require('@jsquash/webp/package.json').version;
|
|
const wasm = readFileSync(wasmPath);
|
|
|
|
const target = resolve(packageRoot, 'src/tools/support/webp-dec-wasm.ts');
|
|
writeFileSync(
|
|
target,
|
|
`// GENERATED FILE — do not edit by hand.
|
|
// WebP decoder wasm from @jsquash/webp@${version} (codec/dec/webp_dec.wasm),
|
|
// base64-encoded so the bundled CLI needs no on-disk wasm asset.
|
|
// Regenerate with: node scripts/generate-webp-dec-wasm.mjs
|
|
|
|
export const WEBP_DECODER_WASM_BASE64 =
|
|
'${wasm.toString('base64')}';
|
|
`,
|
|
);
|
|
console.log(`Wrote ${target} (${wasm.length} bytes of wasm)`);
|