ci/tasks/readme: register fleet
All checks were successful
release-tools / build-release (push) Successful in 2m27s

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011KikHkfCiC3yELbsMN8fT9
This commit is contained in:
2026-08-07 01:02:53 +02:00
parent ea06442d44
commit 4bae7bfb72
5 changed files with 34 additions and 6 deletions

View File

@@ -20,7 +20,7 @@ jobs:
- name: Detektera ändrade tools - name: Detektera ändrade tools
id: changed id: changed
run: | 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 }}" BEFORE="${{ github.event.before }}"
CHANGED="" CHANGED=""
if [ "${{ github.event_name }}" = "workflow_dispatch" ] \ if [ "${{ github.event_name }}" = "workflow_dispatch" ] \
@@ -64,6 +64,7 @@ jobs:
waitfor) BIN=waitfor ;; waitfor) BIN=waitfor ;;
cronr) BIN=cronr ;; cronr) BIN=cronr ;;
giteactl) BIN=giteactl ;; giteactl) BIN=giteactl ;;
fleet) BIN=fleet ;;
*) echo "okänt tool $t"; exit 1 ;; *) echo "okänt tool $t"; exit 1 ;;
esac esac
echo "=== $t ($BIN) ===" echo "=== $t ($BIN) ==="
@@ -98,6 +99,7 @@ jobs:
waitfor) BIN=waitfor ;; waitfor) BIN=waitfor ;;
cronr) BIN=cronr ;; cronr) BIN=cronr ;;
giteactl) BIN=giteactl ;; giteactl) BIN=giteactl ;;
fleet) BIN=fleet ;;
esac esac
TAG="$t-latest" TAG="$t-latest"
BODY="$t (binär: $BIN) - rullande bygge från senaste master. Commit: ${{ github.sha }}. Arkitekturer: linux x64 + arm64 (Pi5)." BODY="$t (binär: $BIN) - rullande bygge från senaste master. Commit: ${{ github.sha }}. Arkitekturer: linux x64 + arm64 (Pi5)."

27
.vscode/tasks.json vendored
View File

@@ -241,6 +241,30 @@
"$go" "$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", "label": "build",
"dependsOn": [ "dependsOn": [
@@ -253,7 +277,8 @@
"build svg-maker", "build svg-maker",
"build waitfor", "build waitfor",
"build cronr", "build cronr",
"build giteactl" "build giteactl",
"build fleet"
], ],
"dependsOrder": "parallel", "dependsOrder": "parallel",
"group": { "group": {

View File

@@ -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. | | [`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. | | [`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. | | [`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 Each tool has its own folder, its own README with the full format/CLI
reference, its own tests and its own dev branch (`dev/<tool>`). reference, its own tests and its own dev branch (`dev/<tool>`).
@@ -27,8 +28,8 @@ reference, its own tests and its own dev branch (`dev/<tool>`).
[`doc/tool-parity.md`](doc/tool-parity.md) compares the Google agent's [`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 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. the gaps so any agent gets the same capabilities via its shell tool.
Built so far: `notifyr`, `waitfor`, `cronr`, `giteactl`, `svgc` Built so far: `notifyr`, `waitfor`, `cronr`, `giteactl`, `svgc`,
(2026-08-07). Still on the list: `fleet`, `envaudit`, `reghelper`, `fleet` (2026-08-07). Still on the list: `envaudit`, `reghelper`,
`pagepub`, `nbcell`, `wtreectl`, `fanout`. Build order and rationale `pagepub`, `nbcell`, `wtreectl`, `fanout`. Build order and rationale
live there and in [`doc/plan.md`](doc/plan.md). Agy finds the tools live there and in [`doc/plan.md`](doc/plan.md). Agy finds the tools
through the `agent-tools` skill in `~/.gemini/config/skills/`. through the `agent-tools` skill in `~/.gemini/config/skills/`.

View File

@@ -31,7 +31,7 @@ master/main. Only tools whose folders changed get rebuilt.
send/read), `waitfor` (block on condition), `cronr` (systemd user send/read), `waitfor` (block on condition), `cronr` (systemd user
timers), `giteactl` (CI runs/logs/wait/wait-quiet/releases) and timers), `giteactl` (CI runs/logs/wait/wait-quiet/releases) and
`svgc` (`svg-maker/`: .svgd → SVG for agent-helm, Björns direkta `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/`. via `agent-tools`-skill + AGENTS.md i `~/.gemini/config/`.
## Roadmap / expansion ideas (not agreed yet) ## Roadmap / expansion ideas (not agreed yet)

View File

@@ -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)* 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)* 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)* 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. 5. `envaudit`, `reghelper`, `pagepub`, `nbcell`, `wtreectl` — as needed.
6. `fanout` — only if a concrete multi-agent need shows up. 6. `fanout` — only if a concrete multi-agent need shows up.