Files
outiline-mcp/openspec/changes/split-main-into-files/tasks.md
T
Carlos Sandoval e701f12702
release / build-binaries (push) Failing after 50s
release / publish-release (push) Skipped
codigo faltante
2026-09-02 20:12:41 +00:00

37 lines
2.8 KiB
Markdown

## 1. Extracción de dominios a archivos nuevos
- [x] 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`
- [x] 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
- [x] 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
- [x] 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
- [x] 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
- [x] 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
- [x] 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