diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index cc9ed45..de4a3f6 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -111,6 +111,34 @@ jobs: echo "PASS: Docker image smoke test passed." exit 0 fi + + - name: Mnemon Integration Test + run: | + set -euo pipefail + CONTAINER_NAME="hermes-webtop" + TEST_NAME="ci-mnemon-$(date +%s)-$$" + echo "=== Mnemon Integration Test: $TEST_NAME ===" + + echo "[1/3] Hermes remembers via mnemon_remember..." + timeout 60 docker exec -u abc "$CONTAINER_NAME" \ + hermes chat -q "my name is $TEST_NAME, remember this in mnemon" \ + || { echo "FAIL: Hermes failed"; exit 1; } + + echo "[2/3] mnemon recall via CLI..." + docker exec -u abc "$CONTAINER_NAME" \ + mnemon recall "$TEST_NAME" --limit 5 2>&1 | grep -q "$TEST_NAME" \ + || { echo "FAIL: mnemon recall did not find $TEST_NAME"; exit 1; } + + echo "[3/3] Claude retrieves via mnemon..." + CLAUDE_OUTPUT=$(timeout 60 docker exec -u abc "$CONTAINER_NAME" \ + /config/.local/bin/claude --dangerously-skip-permissions -p \ + "Use mnemon recall to find my name. Reply with ONLY the name." 2>&1) + echo "Claude: $CLAUDE_OUTPUT" + echo "$CLAUDE_OUTPUT" | grep -q "$TEST_NAME" \ + || { echo "FAIL: Claude did not return $TEST_NAME"; exit 1; } + + echo "=== ALL MNEMON CHECKS PASSED ===" + # ── Collect logs on failure ────────────────────────────────────── - name: Upload logs on failure if: failure() diff --git a/docker/Dockerfile b/docker/Dockerfile index f6ee54d..bc380f1 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -4,7 +4,7 @@ ARG MODELRELAY_VERSION=1.18.0 ARG OLLAMA_VERSION=0.32.6 ARG NODE_VERSION=26.7.0 ARG CODE_SERVER_VERSION=4.131.0 -ARG MNEMON_VERSION=0.1.17 +ARG MNEMON_VERSION=0.2.3 ARG TARGETARCH # Use the official Ollama image to get the binary