diff --git a/README.md b/README.md index 52cedbf..6e4a259 100644 --- a/README.md +++ b/README.md @@ -18,10 +18,14 @@ hooks). **v2** byter fundament: en enskild Go-binär, [`helmd/`](helmd/), äger en tmux-session med agenten (**agy**) och exponerar REST+SSE — tmux-skärmen är sanningskällan i stället för agent-specifika hooks. -- Server: klar — se [`helmd/README.md`](helmd/README.md) (API, säkerhet, test) +- **Status just nu: [`doc/status.md`](doc/status.md)** (vad som är klart, + deployat, verifierat och vad som återstår) +- Server + webbklient: klara — se [`helmd/README.md`](helmd/README.md) + (API, säkerhet, test) - Plan (server → webbklient → Android): [`doc/plan.md`](doc/plan.md) - Release: rullande [`helmd-latest`](https://gitea.brasse-pc.eu/brasse/agent-helm/releases) - (`helmd-linux-x64` + arm64) + (`helmd-linux-x64` + arm64, webbklienten inbyggd); Pi5-instans på + `http://192.168.0.19:8788` (LAN-only) Allt nedanför denna linje beskriver **v1** (Node-stacken i `packages/`), som ligger kvar tills webbklienten är portad. diff --git a/doc/status.md b/doc/status.md new file mode 100644 index 0000000..e983705 --- /dev/null +++ b/doc/status.md @@ -0,0 +1,70 @@ +# agent-helm v2 — statusnotering 2026-08-05 + +Var vi står i implementationen. Uppdatera denna fil när läget ändras. +(Planen och besluten: [plan.md](plan.md). Full teknisk doc: +[../helmd/README.md](../helmd/README.md).) + +## Läge: steg 1 + 2 klara och deployade, steg 3 (Android) kvar + +| Del | Status | Var | +|-----|--------|-----| +| **helmd-servern** (Go, REST+SSE, tmux-ägare) | ✅ klar, testad | `helmd/` | +| **Webbklienten** (ramverksfri SPA, `go:embed`) | ✅ klar, browser-testad mot riktig agy | `helmd/web/` | +| **Release-binärer** (x64 + arm64, webbklient inbyggd) | ✅ rullande `helmd-latest` | [releases](https://gitea.brasse-pc.eu/brasse/agent-helm/releases) | +| **Docker-image** (arm64, alpine + tmux/bash) | ✅ byggs i CI | `localhost:5000/helmd:latest` | +| **Pi5-deploy** (LAN-only, ingen NPM-vhost) | ✅ kör | stack `/srv/dockge-staks/helmd/`, `http://192.168.0.19:8788` | +| **Android-klient** (egen SSH-tunnel) | ⬜ ej påbörjad | steg 3 i plan.md | +| v1 (Node: daemon/server/web + rcai.brasse-pc.eu) | 🟡 kvar orörd tills v2 helt ersatt | `packages/` | + +## Så kör man det (snabbref) + +```bash +# Arbetsstationen (styr riktiga agy): +curl -fsSL -o ~/.local/bin/helmd https://gitea.brasse-pc.eu/brasse/agent-helm/releases/download/helmd-latest/helmd-linux-x64 +chmod +x ~/.local/bin/helmd +helmd serve # UI + API på http://127.0.0.1:8788 +helmd token # token till login + +# Pi5-instansen (sessioner kör i containern): +# UI: http://192.168.0.19:8788 (endast LAN) +# token: sudo docker exec helmd helmd token +# Utifrån: ssh -L 8788:192.168.0.19:8788 och surfa till localhost:8788 + +# Dela en fil från agenten till klienterna: +helmd share --note "rapport" fil.html +``` + +## Vad som är verifierat + +- 29/29 integrationstester i isolerad Docker-container + (`helmd/scripts/run-integration.sh`) — hela API-ytan inkl. auth, + frågesvar (siffer- och pilnavigering), delningar, notify-regler, SSE. +- Enhetstester för frågedetektorn mot **riktiga agy 1.1.9-dumpar** + (godkännande, trust, inramad picker, markdown-falsklarm). +- End-to-end i browser mot riktig agy: prompt → godkännandefråga → + frågekort → svar → kommandot kört; markdown/bild-delningar renderade. +- Pi5-deployen från LAN: UI 200, API 401 utan token, bash-session i + containern svarar. + +## Kända begränsningar / öppna punkter + +1. **`mode cycle` (Shift+Tab) är overifierad mot agy** — tangenten + skickas korrekt (BTab), men att agy faktiskt byter läge är inte + bekräftat. Testa; annars finns `POST /keys` som fallback. +2. **Ingen agent i Pi5-containern ännu** — sessioner där kör bash. + Kandidater: claude-code (arm64) eller agy om Google släpper arm64. +3. PWA-manifest finns men ingen service worker — "installera som app" + funkar, offline-cache saknas (planerad ihop med Android-steget). +4. ntfy-notiser vid ny fråga är PÅ för Pi5-instansen (topic + `agent-helm`) — kan bli spammigt med många sessioner; stängs av i + Inställningar-fliken i så fall. +5. v1-stacken (`agent-helm` på :8787 / rcai.brasse-pc.eu) kör kvar men + är död funktionellt (Gemini-OAuth) — riv när v2 känns komplett, + inkl. NPM-vhosten `rcai`. + +## Nästa steg (steg 3) + +Android-klient som sätter upp sin **egen SSH-tunnel** till Pi5 och +pratar med helmd genom den. Lutning: Capacitor-wrap av webbklienten + +SSH-bibliotek (alternativt native Kotlin om tunnelkontrollen kräver +det). Push utifrån: ntfy-appen prenumererar redan på `agent-helm`.