## ADDED Requirements ### Requirement: Organización del código fuente por archivos El código fuente del proyecto SHALL estar distribuido en múltiples archivos dentro del paquete único `main`, agrupando cada archivo una única responsabilidad: entrypoint (`main.go`), cliente HTTP de Outline (`client.go`), handlers de tools MCP (`tools.go`) y auto-update (`updater.go`). #### Scenario: Distribución de archivos - **WHEN** se revisa la raíz del módulo `outline-mcp` - **THEN** existen los archivos `main.go`, `client.go`, `tools.go` y `updater.go`, todos declarando `package main` #### Scenario: Contenido del entrypoint - **WHEN** se revisa `main.go` - **THEN** contiene únicamente la función `main()`, las variables de build inyectadas por `-ldflags` (`Version`, `GiteaURL`, `RepoOwner`, `RepoName`) y el registro de tools en el servidor MCP #### Scenario: Aislamiento del auto-update - **WHEN** se revisa `updater.go` - **THEN** contiene `giteaRelease`, `parseVersion`, `versionNewer` y `doUpdate`, sin referencias al cliente de Outline ni a los handlers de tools MCP ### Requirement: Refactor sin cambio de comportamiento La distribución del código en archivos SHALL preservar íntegramente el comportamiento observable del servidor: nombres y esquemas de las tools MCP, manejo de errores de configuración, protocolo MCP y lógica de auto-update. #### Scenario: El servidor funciona tras el refactor - **WHEN** se compila el binario resultante y se ejecuta el handshake MCP por stdio seguido de una petición `tools/list` - **THEN** el servidor responde correctamente y lista las mismas tools con los mismos esquemas que antes del refactor #### Scenario: Sin cambios en dependencias ni pipeline - **WHEN** se compara el estado del repositorio antes y después del refactor - **THEN** `go.mod`, `go.sum`, `.gitea/workflows/release.yml` y el contrato de nombres de assets (`outline-mcp_{GOOS}_{GOARCH}`) permanecen inalterados