Files
outiline-mcp/openspec/changes/split-main-into-files/tasks.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

2.8 KiB

1. Extracción de dominios a archivos nuevos

  • 1.1 Crear client.go con el tipo OutlineClient, newOutlineClient y el método post movidos íntegros desde main.go (mismos nombres, firmas, comentarios y directivas //nolint), ajustando solo el bloque import.
    • Given el código del cliente en main.go
    • When se traslada a client.go y se compila en el contenedor
    • Then go build ./... compila sin errores y el archivo declara package main
  • 1.2 Crear updater.go con giteaRelease, parseVersion, versionNewer y doUpdate movidos íntegros desde main.go, ajustando solo el bloque import.
    • Given el código del auto-update en main.go
    • When se traslada a updater.go y se compila en el contenedor
    • Then go build ./... compila sin errores y updater.go no contiene referencias al cliente de Outline ni a los handlers MCP
  • 1.3 Crear tools.go con los cuatro handlers MCP (handleListCollections, handleSearch, handleGetDocument, handleCreateDocument) movidos íntegros desde main.go, ajustando solo el bloque import.
    • Given el código de los handlers en main.go
    • When se traslada a tools.go y se compila en el contenedor
    • Then go build ./... compila sin errores y los cuatro handlers conservan nombre y firma

2. Reducción del entrypoint

  • 2.1 Reducir main.go a la función main(), las variables de build (Version, GiteaURL, RepoOwner, RepoName) y el registro de tools, eliminando el código ya trasladado y los imports no utilizados.
    • Given main.go tras las extracciones
    • When se elimina el código duplicado/movido y se limpian los imports
    • Then main.go contiene únicamente entrypoint + variables de build + registro de tools, y go build ./... compila sin errores

3. Verificación

  • 3.1 Ejecutar golangci-lint run dentro del contenedor DevPod y corregir cualquier incidencia derivada del movimiento de código.
    • Given el refactor completado
    • When se ejecuta golangci-lint run en el contenedor
    • Then el linter no reporta errores nuevos respecto al estado previo al refactor
  • 3.2 Verificar que el binario se comporta igual: compilar con -ldflags de prueba y ejecutar handshake MCP + tools/list por stdio.
    • Given el binario compilado a partir del código reorganizado
    • When se envía por stdio el handshake initialize y una petición tools/list
    • THEN el servidor responde correctamente y lista las mismas cuatro tools con los mismos esquemas que antes del refactor
  • 3.3 Confirmar que no cambiaron go.mod, go.sum, .gitea/workflows/release.yml ni el contrato de nombres de assets.
    • Given el repositorio con el refactor aplicado
    • When se revisa git diff para esos archivos
    • Then no aparecen modificaciones en ellos