From 4bae7bfb724b337734ccffdc5ee77b161f682e71 Mon Sep 17 00:00:00 2001 From: claude Date: Fri, 7 Aug 2026 01:02:53 +0200 Subject: [PATCH] ci/tasks/readme: register fleet Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_011KikHkfCiC3yELbsMN8fT9 --- .gitea/workflows/release.yml | 4 +++- .vscode/tasks.json | 27 ++++++++++++++++++++++++++- README.md | 5 +++-- doc/plan.md | 2 +- doc/tool-parity.md | 2 +- 5 files changed, 34 insertions(+), 6 deletions(-) diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 762eaa6..1de25fe 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -20,7 +20,7 @@ jobs: - name: Detektera ändrade tools id: changed run: | - TOOLS="pixel-sprite-maker mesh-tool bitmap-font-maker sfx-maker hitbox-tool notifyr svg-maker waitfor cronr giteactl" + TOOLS="pixel-sprite-maker mesh-tool bitmap-font-maker sfx-maker hitbox-tool notifyr svg-maker waitfor cronr giteactl fleet" BEFORE="${{ github.event.before }}" CHANGED="" if [ "${{ github.event_name }}" = "workflow_dispatch" ] \ @@ -64,6 +64,7 @@ jobs: waitfor) BIN=waitfor ;; cronr) BIN=cronr ;; giteactl) BIN=giteactl ;; + fleet) BIN=fleet ;; *) echo "okänt tool $t"; exit 1 ;; esac echo "=== $t ($BIN) ===" @@ -98,6 +99,7 @@ jobs: waitfor) BIN=waitfor ;; cronr) BIN=cronr ;; giteactl) BIN=giteactl ;; + fleet) BIN=fleet ;; esac TAG="$t-latest" BODY="$t (binär: $BIN) - rullande bygge från senaste master. Commit: ${{ github.sha }}. Arkitekturer: linux x64 + arm64 (Pi5)." diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 182acea..e605cb7 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -241,6 +241,30 @@ "$go" ] }, + { + "label": "build fleet", + "type": "shell", + "command": "go build -trimpath -ldflags '-s -w' -o build/fleet .", + "options": { + "cwd": "${workspaceFolder}/fleet" + }, + "group": "build", + "problemMatcher": [ + "$go" + ] + }, + { + "label": "test fleet", + "type": "shell", + "command": "go test ./...", + "options": { + "cwd": "${workspaceFolder}/fleet" + }, + "group": "test", + "problemMatcher": [ + "$go" + ] + }, { "label": "build", "dependsOn": [ @@ -253,7 +277,8 @@ "build svg-maker", "build waitfor", "build cronr", - "build giteactl" + "build giteactl", + "build fleet" ], "dependsOrder": "parallel", "group": { diff --git a/README.md b/README.md index 325df54..d89b333 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ agent understands the result without opening an image viewer. | [`waitfor/`](waitfor/) | `waitfor` | Blocks until a shell condition holds (exit 0 + optional regex match) — replaces hand-rolled poll loops. `--then` hook composes with notifyr. | | [`cronr/`](cronr/) | `cronr` | Recurring/one-shot jobs as systemd user timers that survive session exit and reboot. add/list/run/logs/rm, schedules validated by systemd-analyze. | | [`giteactl/`](giteactl/) | `giteactl` | Gitea Actions runs, job logs (API/web/ssh+zstd fallback), `wait` (block until green) and `wait-quiet` (the "serialize heavy builds" rule), release assets. | +| [`fleet/`](fleet/) | `fleet` | One-shot homelab health snapshot: container states, disk fill and failed systemd units across hosts, via read-only commands. Exit 2 = findings. | Each tool has its own folder, its own README with the full format/CLI reference, its own tests and its own dev branch (`dev/`). @@ -27,8 +28,8 @@ reference, its own tests and its own dev branch (`dev/`). [`doc/tool-parity.md`](doc/tool-parity.md) compares the Google agent's built-in tools with Claude Code's, and specs the CLI tools that close the gaps so any agent gets the same capabilities via its shell tool. -Built so far: `notifyr`, `waitfor`, `cronr`, `giteactl`, `svgc` -(2026-08-07). Still on the list: `fleet`, `envaudit`, `reghelper`, +Built so far: `notifyr`, `waitfor`, `cronr`, `giteactl`, `svgc`, +`fleet` (2026-08-07). Still on the list: `envaudit`, `reghelper`, `pagepub`, `nbcell`, `wtreectl`, `fanout`. Build order and rationale live there and in [`doc/plan.md`](doc/plan.md). Agy finds the tools through the `agent-tools` skill in `~/.gemini/config/skills/`. diff --git a/doc/plan.md b/doc/plan.md index ebb04a4..fc45b5c 100644 --- a/doc/plan.md +++ b/doc/plan.md @@ -31,7 +31,7 @@ master/main. Only tools whose folders changed get rebuilt. send/read), `waitfor` (block on condition), `cronr` (systemd user timers), `giteactl` (CI runs/logs/wait/wait-quiet/releases) and `svgc` (`svg-maker/`: .svgd → SVG for agent-helm, Björns direkta - önskemål). Alla smoke-testade mot riktig infra; agy-integration + önskemål) samt `fleet` (hälsosnapshot). Alla smoke-testade mot riktig infra; agy-integration via `agent-tools`-skill + AGENTS.md i `~/.gemini/config/`. ## Roadmap / expansion ideas (not agreed yet) diff --git a/doc/tool-parity.md b/doc/tool-parity.md index c248c66..b3557bb 100644 --- a/doc/tool-parity.md +++ b/doc/tool-parity.md @@ -292,7 +292,7 @@ binaries), same philosophy — don't duplicate those here. 1. ✅ `notifyr` — smallest, everything else composes with it, ntfy already runs. *(built 2026-08-07)* 2. ✅ `giteactl` — removes the biggest daily friction (CI logs + build serialization). *(built 2026-08-07; private repos need an API token in the config)* 3. ✅ `waitfor` + `cronr` — turns both agents into unattended operators. *(built 2026-08-07)* -4. `fleet` — replaces the hand-rolled health loops in every runbook. +4. ✅ `fleet` — replaces the hand-rolled health loops in every runbook. *(built 2026-08-07)* 5. `envaudit`, `reghelper`, `pagepub`, `nbcell`, `wtreectl` — as needed. 6. `fanout` — only if a concrete multi-agent need shows up.