mirror of
https://github.com/CopilotKit/CopilotKit.git
synced 2026-09-14 16:26:20 +08:00
d0bcdaef8a
Path and manifest collision keys are contract-bearing: the conformance corpus declares `references/Straße.txt` + `references/STRASSE.txt` and `references/İ.txt` + `references/i̇.txt` invalid, and only full Unicode Default Case Folding collapses them. TypeScript already used a generated Unicode 17.0.0 table, C# used `ToUpperInvariant` (simple case mapping, no `ß` expansion and no `İ` folding), and Python used `str.casefold()` (whatever Unicode version the interpreter ships - 95 code points differ from Unicode 17.0.0 on Python 3.10). `scripts/generate-unicode-default-case-folding.mjs` now emits the identical pinned table for all three languages from one parse of one SHA-256-pinned source, so a regeneration cannot refresh one language and leave the others behind. Each language gets exactly one folding definition site, which both the SDK's own collision checks and the portable contract validator consume. Escape hex digits are lowercase so that `ruff format` - which the pre-commit hook runs over staged Python - treats the generated table as already formatted.