feat: agregar auto update

spec: separar responsabilidades
feat: agregra pipeline de construccion en gitea
This commit is contained in:
Carlos Sandoval
2026-09-02 20:01:35 +00:00
parent c1a060312f
commit 55eff5df89
9 changed files with 316 additions and 33 deletions
@@ -0,0 +1,36 @@
## 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