Files
unibots/dev/issues/completed/0031-expand-file-tools.md
T
agent fc644ecd6e feat: import agents_and_robots platform as unibots (Matrix-out, unibus transport)
Reemplaza el scaffold del echobot por la plataforma completa de bots traida
desde ~/DataProyects/Github/agents_and_robots tras la operacion Matrix-out:
los bots ya no hablan por Matrix sino por el bus unibus (modelo todo-rooms +
E2E via shell/transportunibus sobre github.com/enmanuel/unibus/pkg/client).

- go.mod: replace de unibus -> ../unibus y de fn-registry -> ../../../.. (paths
  relativos reajustados a la nueva ubicacion dentro de fn_registry).
- app.md: bump a 0.2.0, descripcion + arquitectura + comandos + gotchas reales.
- modulo Go conservado como github.com/enmanuel/agents (sin reescribir imports).

agents_and_robots queda archivado como museo de la era Matrix.
2026-06-07 11:50:13 +02:00

1.6 KiB

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