Files
outiline-mcp/openspec/changes/split-main-into-files/specs/code-structure/spec.md
T
Carlos Sandoval 55eff5df89 feat: agregar auto update
spec: separar responsabilidades
feat: agregra pipeline de construccion en gitea
2026-09-02 20:01:35 +00:00

28 lines
1.9 KiB
Markdown

## 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