One helper, tools/file-encoding.ts, detects UTF-16 by byte order mark
and decodes text for read (UTF-8 as before otherwise) and losslessly for
edit. Edit writes files back in the encoding they were read with; files
that are not valid UTF-8 are decoded as Latin-1 so ASCII edits splice
exactly their bytes, and non-ASCII edits, fuzzy matches and changes to
the byte after a non-ASCII byte are refused. EditOperations gains an
optional writeFileBytes for these files.
fixes#10349fixes#5797
* fix(coding-agent): report edit access failures correctly closes#3894
- classify edit and edit-preview access errors by errno
- add regressions for missing, permission, and fallback cases
- document the fix in the coding-agent changelog
* chore: get rid of CHANGELOG.md entry
* refactor(coding-agent): apply review suggestions - use single error msg
* refactor(coding-agent): clean up test cases
- Extract diff computation from edit.ts into shared edit-diff.ts
- ToolExecutionComponent computes and caches diff when args are complete
- Diff is visible while permission hooks block, before tool executes