A commit through the MCP needs the whole file in one call, and one model answer carries about 100 KB at most, so a long file (ventures/havre/app.js on teahubxyz/time, 174 KB) could not take an eight-hunk change today. tea_file_edit reads the file at the branch, applies exact-text replacements in order (each old must occur exactly once in the file as it stands; new takes its place, empty removes it), commits one update with the file's sha under the caller's own authority, and answers with the new file's size and sha256 to check against the caller's copy. Same bounds as tea_commit (3 MB), no deletes.
mcp/tea_mcp/server.py: the tool, Edit, version 2.3.0
mcp/tests/test_server.py: replacements in order and what it answers; every refusal before anything is committed
mcp/README.md: tools (32)
Tests: 40 of 40 pass from a clean checkout of this branch on hb-5 (Python 3.13, requirements.txt); the checkout went to the Trash afterwards. This sandbox cannot reach PyPI, so they could not run here.
After the merge: boring_teahub_deploy of the merged main SHA, health check (version 2.3.0), a line in docs/decisions.md, then the Havre edit that needed it.
Closes #12.
A commit through the MCP needs the whole file in one call, and one model answer carries about 100 KB at most, so a long file (`ventures/havre/app.js` on `teahubxyz/time`, 174 KB) could not take an eight-hunk change today. `tea_file_edit` reads the file at the branch, applies exact-text replacements in order (each `old` must occur exactly once in the file as it stands; `new` takes its place, empty removes it), commits one update with the file's sha under the caller's own authority, and answers with the new file's size and sha256 to check against the caller's copy. Same bounds as `tea_commit` (3 MB), no deletes.
- `mcp/tea_mcp/server.py`: the tool, `Edit`, version 2.3.0
- `mcp/tests/test_server.py`: replacements in order and what it answers; every refusal before anything is committed
- `mcp/README.md`: tools (32)
Tests: 40 of 40 pass from a clean checkout of this branch on hb-5 (Python 3.13, `requirements.txt`); the checkout went to the Trash afterwards. This sandbox cannot reach PyPI, so they could not run here.
After the merge: `boring_teahub_deploy` of the merged main SHA, health check (version 2.3.0), a line in `docs/decisions.md`, then the Havre edit that needed it.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01SKUMBXauq7XVN4BhTXjCSM
For a file too long to send whole: the edits apply in order, each old text must occur exactly once in the file as it stands, and the answer gives the new file's size and sha256 to check against the caller's copy. Version 2.3.0.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SKUMBXauq7XVN4BhTXjCSM
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #12.
A commit through the MCP needs the whole file in one call, and one model answer carries about 100 KB at most, so a long file (
ventures/havre/app.jsonteahubxyz/time, 174 KB) could not take an eight-hunk change today.tea_file_editreads the file at the branch, applies exact-text replacements in order (eacholdmust occur exactly once in the file as it stands;newtakes its place, empty removes it), commits one update with the file's sha under the caller's own authority, and answers with the new file's size and sha256 to check against the caller's copy. Same bounds astea_commit(3 MB), no deletes.mcp/tea_mcp/server.py: the tool,Edit, version 2.3.0mcp/tests/test_server.py: replacements in order and what it answers; every refusal before anything is committedmcp/README.md: tools (32)Tests: 40 of 40 pass from a clean checkout of this branch on hb-5 (Python 3.13,
requirements.txt); the checkout went to the Trash afterwards. This sandbox cannot reach PyPI, so they could not run here.After the merge:
boring_teahub_deployof the merged main SHA, health check (version 2.3.0), a line indocs/decisions.md, then the Havre edit that needed it.🤖 Generated with Claude Code
https://claude.ai/code/session_01SKUMBXauq7XVN4BhTXjCSM