79fe2134e9
blockRangeAt inferred no language for files like `zshrc`/`.zshrc`/`.bashrc` because `Path::extension` returns `None` for bare and dotfile names alike, so the edit tool's `replace block` / `insert after block` ops were permanently unresolvable on them — an agent retrying the block op would loop on the same "could not resolve a syntactic block" error. from_extension now maps known shell rc/profile basenames (zshrc, zshenv, zprofile, zlogin, zlogout, zsh_aliases, bashrc, bash_profile, bash_login, bash_logout, bash_aliases, profile, kshrc, mkshrc, shrc; with or without a leading dot) to the bash grammar, alongside the existing Makefile/Dockerfile basename handling. Adds a block-resolution regression test over a zsh `if [[ … ]]; then … fi` block in `zshrc`/`.zshrc`/`.bashrc`.