555e282cc4
pi-agent-plugin checks / lint (push) Has been cancelled
pi-agent-plugin checks / test (20) (push) Has been cancelled
pi-agent-plugin checks / test (22) (push) Has been cancelled
pi-agent-plugin checks / build (push) Has been cancelled
TypeScript SDK CI / check_changes (push) Has been cancelled
TypeScript SDK CI / changelog_check (push) Has been cancelled
ci / changelog_check (push) Has been cancelled
ci / check_changes (push) Has been cancelled
ci / build_mem0 (3.10) (push) Has been cancelled
ci / build_mem0 (3.11) (push) Has been cancelled
ci / build_mem0 (3.12) (push) Has been cancelled
CLI Node CI / lint (push) Has been cancelled
CLI Node CI / test (20) (push) Has been cancelled
CLI Node CI / test (22) (push) Has been cancelled
CLI Node CI / build (push) Has been cancelled
CLI Python CI / lint (push) Has been cancelled
CLI Python CI / test (3.10) (push) Has been cancelled
CLI Python CI / test (3.11) (push) Has been cancelled
CLI Python CI / test (3.12) (push) Has been cancelled
CLI Python CI / build (push) Has been cancelled
openclaw checks / lint (push) Has been cancelled
openclaw checks / test (20) (push) Has been cancelled
openclaw checks / test (22) (push) Has been cancelled
openclaw checks / build (push) Has been cancelled
opencode-plugin checks / build (push) Has been cancelled
TypeScript SDK CI / build_ts_sdk (20) (push) Has been cancelled
TypeScript SDK CI / build_ts_sdk (22) (push) Has been cancelled
TypeScript SDK CI / integration_ts_sdk (20) (push) Has been cancelled
TypeScript SDK CI / integration_ts_sdk (22) (push) Has been cancelled
176 lines
7.3 KiB
Makefile
176 lines
7.3 KiB
Makefile
# ============================================================================
|
|
# Agentic Memory Skills — OpenClaw Plugin Installer
|
|
# ============================================================================
|
|
#
|
|
# Usage:
|
|
# make install # Interactive — prompts for API key
|
|
# make install MEM0_API_KEY=m0-xxx # Non-interactive
|
|
# make uninstall # Revert to stock plugin
|
|
# make restart # Rebuild + restart gateway
|
|
# make status # Check everything is working
|
|
# make logs # Tail gateway logs filtered to mem0
|
|
# make clean # Full teardown
|
|
#
|
|
# ============================================================================
|
|
|
|
SHELL := /bin/bash
|
|
.PHONY: install uninstall restart status logs clean build check-deps configure help
|
|
|
|
# Defaults
|
|
MEM0_API_KEY ?=
|
|
MEM0_USER_ID ?= $(shell whoami)
|
|
OPENCLAW_CONFIG := $(HOME)/.openclaw/openclaw.json
|
|
PLUGIN_DIR := $(shell pwd)
|
|
|
|
help: ## Show this help
|
|
@echo ""
|
|
@echo " Agentic Memory Skills — OpenClaw Plugin"
|
|
@echo " ========================================"
|
|
@echo ""
|
|
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-15s\033[0m %s\n", $$1, $$2}'
|
|
@echo ""
|
|
|
|
# ============================================================================
|
|
# Dependency checks
|
|
# ============================================================================
|
|
|
|
check-deps:
|
|
@echo "Checking dependencies..."
|
|
@command -v node >/dev/null 2>&1 || { echo "Error: Node.js is required. Install from https://nodejs.org"; exit 1; }
|
|
@NODE_MAJOR=$$(node -v | sed 's/v//' | cut -d. -f1); \
|
|
if [ "$$NODE_MAJOR" -lt 18 ]; then echo "Error: Node.js >= 18 required (found $$(node -v))"; exit 1; fi
|
|
@command -v npm >/dev/null 2>&1 || { echo "Error: npm is required"; exit 1; }
|
|
@if ! command -v openclaw >/dev/null 2>&1; then \
|
|
echo "OpenClaw not found. Installing..."; \
|
|
npm install -g openclaw || { echo "Error: Failed to install OpenClaw. Try: sudo npm install -g openclaw"; exit 1; }; \
|
|
echo "OpenClaw installed: $$(openclaw --version)"; \
|
|
else \
|
|
echo "OpenClaw: $$(openclaw --version 2>/dev/null || echo 'installed')"; \
|
|
fi
|
|
@echo "Node.js: $$(node -v)"
|
|
@echo "All dependencies OK."
|
|
|
|
# ============================================================================
|
|
# Build
|
|
# ============================================================================
|
|
|
|
build: ## Build the plugin from source
|
|
@echo "Installing npm dependencies..."
|
|
@npm install --silent 2>/dev/null
|
|
@echo "Building plugin..."
|
|
@npm run build --silent 2>/dev/null
|
|
@echo "Build OK: $$(ls -lh dist/index.js | awk '{print $$5}') ESM bundle"
|
|
|
|
# ============================================================================
|
|
# Install
|
|
# ============================================================================
|
|
|
|
install: check-deps build ## Full install — build, link, configure, restart
|
|
@# Remove existing plugin (suppress errors if not installed)
|
|
@echo "Removing existing openclaw-mem0 plugin (if any)..."
|
|
@echo "y" | openclaw plugins uninstall openclaw-mem0 >/dev/null 2>&1 || true
|
|
@# Link local build
|
|
@echo "Linking local plugin build..."
|
|
@openclaw plugins install "$(PLUGIN_DIR)" --link 2>&1 | grep -v "plugins.allow"
|
|
@# Configure AFTER link (link may overwrite config)
|
|
@$(MAKE) --no-print-directory configure
|
|
@# Restart gateway
|
|
@echo "Restarting gateway..."
|
|
@kill -9 $$(lsof -ti:18789) 2>/dev/null || true
|
|
@sleep 2
|
|
@openclaw gateway >/dev/null 2>&1 &
|
|
@sleep 4
|
|
@echo ""
|
|
@echo "============================================"
|
|
@echo " Installation complete!"
|
|
@echo "============================================"
|
|
@echo ""
|
|
@echo " Plugin: openclaw-mem0 (skills mode)"
|
|
@echo " User: $(MEM0_USER_ID)"
|
|
@echo " Web UI: http://127.0.0.1:18789"
|
|
@echo ""
|
|
@echo " Verify with: make status"
|
|
@echo " View logs: make logs"
|
|
@echo ""
|
|
|
|
# ============================================================================
|
|
# Configure — patch openclaw.json with required settings
|
|
# ============================================================================
|
|
|
|
configure:
|
|
@if [ -z "$(MEM0_API_KEY)" ]; then \
|
|
echo ""; \
|
|
echo " Enter your Mem0 API key (from https://app.mem0.ai/dashboard/api-keys):"; \
|
|
echo -n " > "; \
|
|
read -r key; \
|
|
if [ -z "$$key" ]; then echo "Error: API key is required."; exit 1; fi; \
|
|
MEM0_API_KEY="$$key" MEM0_USER_ID="$(MEM0_USER_ID)" python3 scripts/configure.py; \
|
|
else \
|
|
MEM0_API_KEY="$(MEM0_API_KEY)" MEM0_USER_ID="$(MEM0_USER_ID)" python3 scripts/configure.py; \
|
|
fi
|
|
|
|
# ============================================================================
|
|
# Status & Logs
|
|
# ============================================================================
|
|
|
|
status: ## Check plugin health and skills registration
|
|
@echo "Plugin health:"
|
|
@openclaw plugins doctor 2>&1 | grep -v "plugins.allow"
|
|
@echo ""
|
|
@echo "Skills:"
|
|
@openclaw skills list 2>&1 | grep -E "memory|Status|---" | head -10
|
|
@echo ""
|
|
@echo "Last gateway registration:"
|
|
@tail -50 /tmp/openclaw/openclaw-$$(date +%Y-%m-%d).log 2>/dev/null | grep "openclaw-mem0: registered" | tail -1 | grep -o '"1":"[^"]*"' || echo " No gateway log found. Is the gateway running?"
|
|
|
|
logs: ## Tail gateway logs (mem0 activity only)
|
|
@tail -f /tmp/openclaw/openclaw-$$(date +%Y-%m-%d).log 2>/dev/null | grep --line-buffered -o '"1":"[^"]*"' | grep --line-buffered -i "mem0\|skills-mode\|stored\|inject\|recall"
|
|
|
|
# ============================================================================
|
|
# Restart
|
|
# ============================================================================
|
|
|
|
restart: build ## Rebuild plugin and restart gateway
|
|
@echo "Restarting gateway..."
|
|
@kill -9 $$(lsof -ti:18789) 2>/dev/null || true
|
|
@sleep 2
|
|
@openclaw gateway >/dev/null 2>&1 &
|
|
@sleep 4
|
|
@echo "Gateway restarted. Verify: make status"
|
|
|
|
# ============================================================================
|
|
# Uninstall — revert to stock plugin
|
|
# ============================================================================
|
|
|
|
uninstall: ## Revert to stock openclaw-mem0 from npm
|
|
@echo "Uninstalling local plugin..."
|
|
@echo "y" | openclaw plugins uninstall openclaw-mem0 >/dev/null 2>&1 || true
|
|
@echo "Installing stock plugin from npm..."
|
|
@openclaw plugins install @mem0/openclaw-mem0 2>&1 | grep -v "plugins.allow"
|
|
@# Restore config backup if it exists
|
|
@if [ -f "$(OPENCLAW_CONFIG).pre-skills-backup" ]; then \
|
|
cp "$(OPENCLAW_CONFIG).pre-skills-backup" "$(OPENCLAW_CONFIG)"; \
|
|
echo "Restored config from backup."; \
|
|
else \
|
|
echo "Note: No config backup found. You may need to manually revert openclaw.json changes."; \
|
|
fi
|
|
@echo "Restarting gateway..."
|
|
@kill -9 $$(lsof -ti:18789) 2>/dev/null || true
|
|
@sleep 2
|
|
@openclaw gateway >/dev/null 2>&1 &
|
|
@sleep 4
|
|
@echo "Reverted to stock openclaw-mem0."
|
|
|
|
# ============================================================================
|
|
# Clean
|
|
# ============================================================================
|
|
|
|
clean: ## Full teardown — stop gateway, remove plugin, clean build
|
|
@echo "Stopping gateway..."
|
|
@kill -9 $$(lsof -ti:18789) 2>/dev/null || true
|
|
@echo "Removing plugin..."
|
|
@echo "y" | openclaw plugins uninstall openclaw-mem0 >/dev/null 2>&1 || true
|
|
@echo "Cleaning build artifacts..."
|
|
@rm -rf dist/ node_modules/
|
|
@echo "Clean complete."
|