# 0031 — Expandir tools/file/ con write, list, append, delete ## Objetivo Ampliar el paquete `tools/file/` con operaciones de escritura, listado, append y borrado. Mantener el patron deny-by-default, validacion de symlinks, y respetar el flag `read_only` del config. ## Estado: completado Implementado en rama `issue/0031-expand-file-tools`. ### Archivos creados/modificados - `tools/file/validate.go` — NEW: validatePath(), validateWritePath(), resolveReal() extraidos de file.go - `tools/file/write.go` — NEW: write_file tool (crea/sobreescribe, MkdirAll, limite 1MB) - `tools/file/list.go` — NEW: list_directory tool (plano/recursivo, limite 500 entries) - `tools/file/append.go` — NEW: append_file tool (append o crear, limite 10MB total) - `tools/file/delete.go` — NEW: delete_file tool (solo archivos, nunca directorios) - `tools/file/file.go` — refactored: removidas funciones movidas a validate.go - `tools/file/write_test.go` — NEW: 11 tests - `tools/file/list_test.go` — NEW: 9 tests - `tools/file/append_test.go` — NEW: 11 tests - `tools/file/delete_test.go` — NEW: 9 tests - `agents/runtime.go` — registro condicional de las 4 tools nuevas ### Seguridad - Deny-by-default en todas las tools (AllowedPaths vacio = todo denegado) - ReadOnly gate: write/append/delete solo se registran si ReadOnly == false - Path traversal protegido via resolveReal() + prefix validation - Symlink escape protegido via EvalSymlinks - Solo archivos en delete (nunca directorios) - Limites de tamano: 1MB write, 10MB append total, 64KB read output, 500 entries list