From 6d6fed86a7eb1ff38d00f36990320941ff9a14a0 Mon Sep 17 00:00:00 2001 From: kylerankin Date: Thu, 24 Sep 2026 17:41:02 +0000 Subject: [PATCH] feat(brew): remove RamaLama from Bluefin AI tools bundle MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Align the optional AI tools bundle with the Agent Mode product contract: drop the retired RamaLama package, whose local-inference role now belongs to llmman. The bundle is opt-in via `ujust install-ai-tools`, so this is package-inventory cleanup for new installs only — existing users' RamaLama installs are neither uninstalled nor migrated. Add tests asserting the required Agent Mode inventory in both directions (llmman, linux-mcp-server, Goose and Jan present; RamaLama absent) so the set cannot silently drift, and register the suite in the `just test` recipe. Oh My Pi is deferred: the packaged formula lands in ublue-os/homebrew-tap#686, after which the brew line and its assertion are added in the same follow-up. Closes projectbluefin/common#1164. Assisted-by: lemonade/Ornith-1.5-35B-A3B-GGUF-Q6_K Signed-off-by: kylerankin Hive-Run: projectbluefin/common#1164 Hive-Plan: projectbluefin/common#1164 Hive-Spec: projectbluefin/common#1164 Signed-off-by: kylerankin --- Justfile | 1 + .../share/ublue-os/homebrew/ai-tools.Brewfile | 1 - tests/test_ai_tools_brewfile.bats | 41 +++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 tests/test_ai_tools_brewfile.bats diff --git a/Justfile b/Justfile index 68cf9a6dc..5ae63462d 100644 --- a/Justfile +++ b/Justfile @@ -30,6 +30,7 @@ test: bats tests/test_dynamic_wallpaper.bats bats tests/test_geoclue_latitude.bats bats tests/test_brew_preinstall.bats + bats tests/test_ai_tools_brewfile.bats bats tests/test_validate_brewfiles.bats bats tests/test_oem_brew.bats bats tests/test_bonedigger_report.bats diff --git a/system_files/shared/usr/share/ublue-os/homebrew/ai-tools.Brewfile b/system_files/shared/usr/share/ublue-os/homebrew/ai-tools.Brewfile index c5a9f71ef..b1fa3f420 100644 --- a/system_files/shared/usr/share/ublue-os/homebrew/ai-tools.Brewfile +++ b/system_files/shared/usr/share/ublue-os/homebrew/ai-tools.Brewfile @@ -12,7 +12,6 @@ brew "llmfit" brew "llmmanorg/tap/llmman" brew "mistral-vibe" brew "qwen-code" -brew "ramalama" brew "ublue-os/tap/linux-mcp-server" cask "claude-code" cask "codex" diff --git a/tests/test_ai_tools_brewfile.bats b/tests/test_ai_tools_brewfile.bats new file mode 100644 index 000000000..95ea2009c --- /dev/null +++ b/tests/test_ai_tools_brewfile.bats @@ -0,0 +1,41 @@ +#!/usr/bin/env bats +# Tests for the Bluefin Agent Mode AI tools bundle. +# +# Asserts the required inventory in both directions so additions and removals +# cannot silently drift: every required tool must be present, and the retired +# RamaLama package must be absent. Pure content assertions — no real Homebrew. +# +# Oh My Pi is intentionally NOT asserted yet: the packaged formula lands in +# ublue-os/homebrew-tap#686, after which the brew line and this assertion are +# added in the same follow-up. +# +# Run: bats tests/test_ai_tools_brewfile.bats + +BREWFILE="${BATS_TEST_DIRNAME}/../system_files/shared/usr/share/ublue-os/homebrew/ai-tools.Brewfile" + +@test "ai-tools bundle installs llmman as the local inference runtime" { + grep -qFx 'tap "llmmanorg/tap"' "${BREWFILE}" + grep -qFx 'brew "llmmanorg/tap/llmman"' "${BREWFILE}" +} + +@test "ai-tools bundle installs the read-only linux-mcp-server diagnostics tool" { + grep -qFx 'brew "ublue-os/tap/linux-mcp-server"' "${BREWFILE}" +} + +@test "ai-tools bundle installs Goose as the GUI troubleshooting client" { + grep -qFx 'cask "ublue-os/tap/goose-linux"' "${BREWFILE}" +} + +@test "ai-tools bundle installs Jan as the chat application" { + grep -qFx 'flatpak "ai.jan.Jan"' "${BREWFILE}" +} + +@test "ai-tools bundle no longer installs retired RamaLama" { + run grep -nw 'ramalama' "${BREWFILE}" + [ "${status}" -ne 0 ] +} + +@test "ai-tools bundle stays user-scoped with no privileged install route" { + run grep -nE 'sudo' "${BREWFILE}" + [ "${status}" -ne 0 ] +}