| # gemini_wrap.sh β MnemoCore context injector for Gemini CLI | |
| # ============================================================= | |
| # Usage: ./gemini_wrap.sh [any gemini CLI args...] | |
| # | |
| # Fetches recent MnemoCore context and prepends it to the system prompt | |
| # via a temporary file, then delegates to the real `gemini` binary. | |
| # | |
| # Environment variables: | |
| # MNEMOCORE_URL MnemoCore REST URL (default: http://localhost:8100) | |
| # HAIM_API_KEY API key for MnemoCore | |
| # BRIDGE_PY Path to mnemo_bridge.py (auto-detected) | |
| # GEMINI_BIN Path to gemini binary (default: gemini) | |
| set -euo pipefail | |
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | |
| BRIDGE_PY="${BRIDGE_PY:-$(realpath "$SCRIPT_DIR/../mnemo_bridge.py")}" | |
| GEMINI_BIN="${GEMINI_BIN:-gemini}" | |
| MNEMOCORE_URL="${MNEMOCORE_URL:-http://localhost:8100}" | |
| # ββ Fetch context (silently degrade if offline) ββββββββββββββββββββββββββββ | |
| CONTEXT="" | |
| if python3 "$BRIDGE_PY" health &>/dev/null; then | |
| CONTEXT="$(python3 "$BRIDGE_PY" context --top-k 6 2>/dev/null || true)" | |
| fi | |
| # ββ Build the injected system prompt fragment ββββββββββββββββββββββββββββββ | |
| if [[ -n "$CONTEXT" ]]; then | |
| MEMORY_FILE="$(mktemp /tmp/mnemo_context_XXXXXX.md)" | |
| trap 'rm -f "$MEMORY_FILE"' EXIT | |
| cat > "$MEMORY_FILE" <<'HEREDOC' | |
| ## Persistent Memory Context (from MnemoCore) | |
| The following is relevant context from your memory of previous sessions. | |
| Use it to avoid re-discovering known patterns, bugs, and decisions. | |
| HEREDOC | |
| echo "$CONTEXT" >> "$MEMORY_FILE" | |
| # Gemini CLI supports --system-prompt-file or similar flags. | |
| # Adjust this to match the actual Gemini CLI interface. | |
| exec "$GEMINI_BIN" --system-prompt-file "$MEMORY_FILE" "$@" | |
| else | |
| exec "$GEMINI_BIN" "$@" | |
| fi | |