diff --git a/docs/providers/ollama-testing.md b/docs/providers/ollama-testing.md new file mode 100644 index 000000000..aa7899c35 --- /dev/null +++ b/docs/providers/ollama-testing.md @@ -0,0 +1,265 @@ +# Testing Ollama Integration + +This guide covers how to test that Ollama models work correctly with Clawdbot. + +## Prerequisites + +1. **Ollama is running:** + ```bash + ollama serve + # Or check if it's already running: + curl http://localhost:11434/api/tags + ``` + +2. **Ollama models are installed:** + ```bash + ollama list + # Pull a model if needed: + ollama pull llama3.2 + ``` + +3. **Ollama is configured in Clawdbot:** + ```bash + # Set API key (any value works for local Ollama) + export OLLAMA_API_KEY="ollama-local" + # Or configure in config file: + clawdbot config set models.providers.ollama.apiKey "ollama-local" + ``` + +## Step 1: Verify Configuration + +### Check baseUrl is correct +```bash +clawdbot config get models.providers.ollama.baseUrl +# Should output: http://localhost:11434/v1 +# (or http://127.0.0.1:11434/v1) +``` + +### Verify models.json has correct baseUrl +```bash +cat ~/.clawdbot/agents/main/agent/models.json | jq '.providers.ollama.baseUrl' +# Should output: "http://localhost:11434/v1" +``` + +### Test Ollama API directly +```bash +curl -s http://localhost:11434/v1/completions \ + -H "Content-Type: application/json" \ + -d '{"model":"llama3.2:latest","prompt":"test","max_tokens":5}' \ + | jq -r '.choices[0].text // .error.message' +# Should return text, not an error +``` + +## Step 2: Verify Model Discovery + +### List available Ollama models +```bash +clawdbot models list | grep ollama +# Should show your Ollama models, e.g.: +# ollama/llama3.2:latest text 195k yes yes default,configured +``` + +### Check model details +```bash +clawdbot models list --json | jq '.[] | select(.id | startswith("ollama/"))' +``` + +## Step 3: Test Model Execution + +### Test via CLI (local/embedded mode) +```bash +# Simple test +clawdbot agent \ + --message "Say hello in one word" \ + --local \ + --session-id test-ollama-$(date +%s) \ + --thinking low + +# With specific model +clawdbot agent \ + --message "What is 2+2?" \ + --local \ + --model ollama/llama3.2:latest \ + --session-id test-ollama-$(date +%s) +``` + +### Test via Gateway (if gateway is running) +```bash +# Check gateway status +./scripts/gateway-status.sh + +# Send message via gateway +clawdbot agent \ + --message "Hello from Ollama" \ + --session-id test-gateway-$(date +%s) +``` + +### Test with default model set +```bash +# Set Ollama as default +clawdbot config set agents.defaults.model.primary "ollama/llama3.2:latest" + +# Test (will use default) +clawdbot agent \ + --message "Count to 3" \ + --local \ + --session-id test-default-$(date +%s) +``` + +## Step 4: Verify Logs + +### Check for successful model initialization +```bash +tail -100 /tmp/clawdbot/clawdbot-*.log | grep -i "ollama\|llama3.2" +# Should see: +# - "agent model: ollama/llama3.2:latest" +# - "embedded run start: ... provider=ollama model=llama3.2:latest" +``` + +### Check for API errors +```bash +tail -100 /tmp/clawdbot/clawdbot-*.log | grep -i "error\|fail" | grep -i "ollama\|11434" +# Should NOT see connection errors or 404 errors +``` + +## Step 5: Test Different Models + +### Test multiple Ollama models +```bash +# Test different models +for model in llama3.2:latest qwen2.5:7b deepseek-r1:32b; do + echo "Testing $model..." + clawdbot agent \ + --message "Say hi" \ + --local \ + --model "ollama/$model" \ + --session-id "test-$model-$(date +%s)" \ + --thinking low +done +``` + +## Step 6: Test Tool Calling (if model supports it) + +### Test with tools enabled +```bash +clawdbot agent \ + --message "What's the weather like?" \ + --local \ + --model ollama/llama3.2:latest \ + --session-id test-tools-$(date +%s) +# Models with tool support should attempt to use tools +``` + +## Troubleshooting + +### Issue: Models not listed +- **Check:** `OLLAMA_API_KEY` is set or configured +- **Check:** Ollama is running: `curl http://localhost:11434/api/tags` +- **Check:** Models are installed: `ollama list` + +### Issue: baseUrl error +- **Check:** baseUrl includes `/v1`: `clawdbot config get models.providers.ollama.baseUrl` +- **Fix:** `clawdbot config set models.providers.ollama.baseUrl "http://localhost:11434/v1"` + +### Issue: Connection refused +- **Check:** Ollama is running: `ps aux | grep ollama` +- **Check:** Port is correct: `lsof -iTCP:11434 -sTCP:LISTEN` +- **Restart:** `ollama serve` + +### Issue: Model not found +- **Check:** Model exists: `ollama list | grep ` +- **Pull model:** `ollama pull ` +- **Verify:** `clawdbot models list | grep ollama` + +### Issue: Timeout or slow response +- **Check:** Model size and system resources +- **Try:** Smaller model or increase timeout +- **Check logs:** Look for timeout errors + +## Expected Results + +✅ **Success indicators:** +- Models appear in `clawdbot models list` +- baseUrl is `http://localhost:11434/v1` (with `/v1`) +- API test returns text, not errors +- Logs show "provider=ollama model=..." without errors +- Agent commands complete successfully +- Responses are generated from Ollama models + +❌ **Failure indicators:** +- baseUrl missing `/v1` → 404 errors +- Connection refused → Ollama not running +- Model not found → Model not installed +- Timeout → Model too slow or system overloaded + +## Quick Test Script + +```bash +#!/bin/bash +# Quick Ollama integration test + +echo "=== Testing Ollama Integration ===" + +# 1. Check Ollama is running +echo "1. Checking Ollama..." +if curl -s http://localhost:11434/api/tags > /dev/null; then + echo " ✓ Ollama is running" +else + echo " ✗ Ollama is not running. Start with: ollama serve" + exit 1 +fi + +# 2. Check baseUrl +echo "2. Checking baseUrl..." +BASE_URL=$(clawdbot config get models.providers.ollama.baseUrl 2>/dev/null | grep -v "punycode\|DEP0040\|Use node" | tail -1) +if [[ "$BASE_URL" == *"/v1"* ]]; then + echo " ✓ baseUrl is correct: $BASE_URL" +else + echo " ✗ baseUrl is missing /v1: $BASE_URL" + echo " Fix with: clawdbot config set models.providers.ollama.baseUrl 'http://localhost:11434/v1'" + exit 1 +fi + +# 3. Test API +echo "3. Testing Ollama API..." +API_TEST=$(curl -s http://localhost:11434/v1/completions \ + -H "Content-Type: application/json" \ + -d '{"model":"llama3.2:latest","prompt":"test","max_tokens":2}' \ + | jq -r 'if .choices then "ok" else "error" end') +if [ "$API_TEST" = "ok" ]; then + echo " ✓ Ollama API is working" +else + echo " ✗ Ollama API test failed" + exit 1 +fi + +# 4. Check models are listed +echo "4. Checking model discovery..." +MODEL_COUNT=$(clawdbot models list 2>/dev/null | grep -c "ollama/" || echo "0") +if [ "$MODEL_COUNT" -gt 0 ]; then + echo " ✓ Found $MODEL_COUNT Ollama model(s)" +else + echo " ✗ No Ollama models found" + exit 1 +fi + +# 5. Test model execution +echo "5. Testing model execution..." +SESSION_ID="test-$(date +%s)" +RESULT=$(timeout 30 clawdbot agent \ + --message "Say hello" \ + --local \ + --session-id "$SESSION_ID" \ + --thinking low 2>&1) + +if echo "$RESULT" | grep -q "error\|Error\|ERROR"; then + echo " ✗ Model execution failed" + echo "$RESULT" | tail -5 + exit 1 +else + echo " ✓ Model execution successful" +fi + +echo "" +echo "=== All tests passed! ===" +``` diff --git a/scripts/gateway-restart.sh b/scripts/gateway-restart.sh new file mode 100755 index 000000000..6aa005d67 --- /dev/null +++ b/scripts/gateway-restart.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +# Restart the Clawdbot gateway + +set -euo pipefail + +echo "Restarting Clawdbot gateway..." +RESTART_OUTPUT=$(pnpm clawdbot gateway restart 2>&1) +RESTART_EXIT=$? + +if [ $RESTART_EXIT -eq 0 ] || echo "$RESTART_OUTPUT" | grep -q "not loaded"; then + # If service is not loaded, try to bootstrap it + if echo "$RESTART_OUTPUT" | grep -q "not loaded"; then + echo "Gateway service not loaded. Installing and starting..." + if pnpm clawdbot gateway install 2>&1; then + echo "Gateway service installed. Starting..." + launchctl bootstrap gui/$UID ~/Library/LaunchAgents/com.clawdbot.gateway.plist 2>&1 || true + fi + fi + + echo "Gateway restart command completed." + echo "Waiting for gateway to be ready..." + + # Wait up to 30 seconds for the gateway to start listening + PORT=$(pnpm clawdbot config get gateway.port 2>/dev/null | grep -E "^[0-9]+$" | head -1 || echo "18789") + GATEWAY_READY=false + # Give the service a moment to start + sleep 2 + for i in {1..28}; do + sleep 1 + if lsof -iTCP:${PORT} -sTCP:LISTEN >/dev/null 2>&1; then + GATEWAY_READY=true + break + fi + done + + # Verify gateway is actually listening on the port + if [ "$GATEWAY_READY" = true ]; then + echo "✓ Gateway restarted and is listening on port ${PORT}!" + echo "" + echo "Access the Control UI at:" + echo " http://localhost:${PORT}/" + else + echo "⚠ Gateway restart command succeeded, but gateway is not listening on port ${PORT}." + echo "" + echo "The gateway service may need to be installed or there may be a startup error." + echo "Try:" + echo " 1. Install service: pnpm clawdbot gateway install" + echo " 2. Check logs: ./scripts/clawlog.sh" + echo " 3. Check service status: ./scripts/gateway-status.sh" + exit 1 + fi +else + echo "✗ Gateway restart failed." + exit 1 +fi diff --git a/scripts/gateway-start.sh b/scripts/gateway-start.sh new file mode 100755 index 000000000..fd63d1a00 --- /dev/null +++ b/scripts/gateway-start.sh @@ -0,0 +1,116 @@ +#!/usr/bin/env bash +# Start the Clawdbot gateway + +set -euo pipefail + +echo "Starting Clawdbot gateway..." + +# Check if gateway is already running +if lsof -iTCP:18789 -sTCP:LISTEN >/dev/null 2>&1; then + echo "✓ Gateway is already running on port 18789" + PORT=$(pnpm clawdbot config get gateway.port 2>/dev/null | grep -E "^[0-9]+$" | head -1 || echo "18789") + echo "" + echo "Access the Control UI at:" + echo " http://localhost:${PORT}/" + exit 0 +fi + +# Try to start via service +START_OUTPUT=$(pnpm clawdbot gateway start 2>&1) +START_EXIT=$? + +if [ $START_EXIT -eq 0 ]; then + echo "Gateway start command completed." + echo "Waiting for gateway to be ready..." + + # Wait up to 30 seconds for the gateway to start listening + PORT=$(pnpm clawdbot config get gateway.port 2>/dev/null | grep -E "^[0-9]+$" | head -1 || echo "18789") + GATEWAY_READY=false + # Give the service a moment to start + sleep 2 + for i in {1..28}; do + sleep 1 + if lsof -iTCP:${PORT} -sTCP:LISTEN >/dev/null 2>&1; then + GATEWAY_READY=true + break + fi + done + + # Verify gateway is actually listening on the port + if [ "$GATEWAY_READY" = true ]; then + echo "✓ Gateway is running and listening on port ${PORT}!" + echo "" + echo "Access the Control UI at:" + echo " http://localhost:${PORT}/" + echo "" + echo "If the UI doesn't load in your browser:" + echo " 1. Ensure Control UI assets are built: pnpm ui:build" + echo " 2. Check gateway logs: ./scripts/clawlog.sh" + echo " 3. Verify gateway status: ./scripts/gateway-status.sh" + else + echo "⚠ Gateway start command succeeded, but gateway is not listening on port ${PORT}." + echo "" + echo "The gateway service may need to be installed or there may be a startup error." + echo "Try:" + echo " 1. Install service: pnpm clawdbot gateway install" + echo " 2. Or run directly (foreground): pnpm clawdbot gateway run" + echo " 3. Check logs: ./scripts/clawlog.sh" + echo " 4. Check service status: ./scripts/gateway-status.sh" + exit 1 + fi +elif echo "$START_OUTPUT" | grep -q "service not loaded\|not installed"; then + echo "Gateway service not installed. Installing..." + if pnpm clawdbot gateway install 2>&1; then + echo "Gateway service installed. Starting..." + if pnpm clawdbot gateway start 2>&1; then + echo "Gateway start command completed." + echo "Waiting for gateway to be ready..." + PORT=$(pnpm clawdbot config get gateway.port 2>/dev/null | grep -E "^[0-9]+$" | head -1 || echo "18789") + GATEWAY_READY=false + sleep 2 + for i in {1..28}; do + sleep 1 + if lsof -iTCP:${PORT} -sTCP:LISTEN >/dev/null 2>&1; then + GATEWAY_READY=true + break + fi + done + + if [ "$GATEWAY_READY" = true ]; then + echo "✓ Gateway is running and listening on port ${PORT}!" + echo "" + echo "Access the Control UI at:" + echo " http://localhost:${PORT}/" + else + echo "⚠ Gateway start command succeeded, but gateway is not listening on port ${PORT}." + echo "Check logs: ./scripts/clawlog.sh" + exit 1 + fi + else + EXIT_CODE=$? + echo "✗ Gateway start failed after install (exit code: $EXIT_CODE)." + echo "" + echo "Troubleshooting:" + echo " 1. Check service status: ./scripts/gateway-status.sh" + echo " 2. Run directly (foreground): pnpm clawdbot gateway run" + echo " 3. Check logs: ./scripts/clawlog.sh" + exit $EXIT_CODE + fi + else + echo "✗ Gateway service installation failed." + exit 1 + fi +else + EXIT_CODE=$START_EXIT + echo "✗ Gateway start failed (exit code: $EXIT_CODE)." + echo "" + echo "Output:" + echo "$START_OUTPUT" + echo "" + echo "Troubleshooting:" + echo " 1. Check service status: ./scripts/gateway-status.sh" + echo " 2. Install service: pnpm clawdbot gateway install" + echo " 3. Run directly (foreground): pnpm clawdbot gateway run" + echo " 4. Check logs: ./scripts/clawlog.sh" + exit $EXIT_CODE +fi diff --git a/scripts/gateway-status.sh b/scripts/gateway-status.sh new file mode 100755 index 000000000..22b1647c1 --- /dev/null +++ b/scripts/gateway-status.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +# Check the status of the Clawdbot gateway + +set -euo pipefail + +if pnpm clawdbot gateway status; then + PORT=$(pnpm clawdbot config get gateway.port 2>/dev/null | grep -E "^[0-9]+$" | head -1 || echo "18789") + echo "" + echo "Control UI URL: http://localhost:${PORT}/" +else + exit 1 +fi diff --git a/scripts/gateway-stop.sh b/scripts/gateway-stop.sh new file mode 100755 index 000000000..afec7bd8e --- /dev/null +++ b/scripts/gateway-stop.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +# Stop the Clawdbot gateway + +set -euo pipefail + +echo "Stopping Clawdbot gateway..." +if pnpm clawdbot gateway stop; then + echo "✓ Gateway stopped." +else + echo "✗ Gateway stop failed or gateway was not running." + exit 1 +fi diff --git a/scripts/gateway-update.sh b/scripts/gateway-update.sh new file mode 100755 index 000000000..a06cc0528 --- /dev/null +++ b/scripts/gateway-update.sh @@ -0,0 +1,147 @@ +#!/usr/bin/env bash +# Update, rebuild, and restart the Clawdbot gateway +# This script pulls latest changes, rebuilds, and restarts while preserving gateway state/memory + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" + +cd "$REPO_ROOT" + +echo "🔄 Updating Clawdbot gateway..." +echo "" + +# Step 1: Check git status +echo "📥 Step 1: Checking git status..." +if ! git diff-index --quiet HEAD -- 2>/dev/null; then + echo "⚠️ You have unstaged changes. Handling them..." + + # Check if there are only dist/ changes (build artifacts) + UNSTAGED=$(git diff --name-only) + if echo "$UNSTAGED" | grep -q "^dist/" && ! echo "$UNSTAGED" | grep -qv "^dist/"; then + echo " Only dist/ changes detected (build artifacts). Restoring them..." + git restore dist/ 2>/dev/null || true + else + # Check for .gitignore changes (common and safe to restore) + if echo "$UNSTAGED" | grep -q "^\.gitignore$" && [ "$(echo "$UNSTAGED" | wc -l | tr -d ' ')" = "1" ]; then + echo " Only .gitignore changes detected. Restoring..." + git restore .gitignore 2>/dev/null || true + else + echo "⚠️ You have unstaged changes that may be important:" + echo "$UNSTAGED" | sed 's/^/ - /' + echo "" + echo " These changes will be preserved, but you may need to resolve conflicts." + echo " Continuing with pull (will attempt rebase)..." + fi + fi +fi + +# Step 2: Pull latest changes +echo "" +echo "📥 Step 2: Pulling latest changes from git..." + +# Store current HEAD before pull to detect changes +PREV_HEAD=$(git rev-parse HEAD 2>/dev/null || echo "") + +PULL_OUTPUT=$(git pull --rebase 2>&1) || { + PULL_EXIT=$? + echo "✗ Git pull failed (exit code: $PULL_EXIT)" + echo "" + echo "Output:" + echo "$PULL_OUTPUT" + echo "" + echo "Please resolve any conflicts manually and try again." + exit $PULL_EXIT +} + +# Check if there were any new commits +CURRENT_HEAD=$(git rev-parse HEAD 2>/dev/null || echo "") +if [ -n "$PREV_HEAD" ] && [ "$PREV_HEAD" = "$CURRENT_HEAD" ]; then + echo "✓ Repository is already up to date" + NEW_COMMITS=false +else + echo "✓ Successfully pulled latest changes" + NEW_COMMITS=true + # Show what changed + if [ -n "$PREV_HEAD" ] && [ "$PREV_HEAD" != "$CURRENT_HEAD" ]; then + echo "" + echo "Recent commits:" + git log --oneline "$PREV_HEAD..HEAD" 2>/dev/null | head -5 | sed 's/^/ /' || git log --oneline -5 | sed 's/^/ /' + fi +fi + +# Step 3: Check if rebuild is needed +echo "" +echo "🔨 Step 3: Checking if rebuild is needed..." + +# Count TypeScript source files that changed +if [ "$NEW_COMMITS" = true ] && [ -n "$PREV_HEAD" ] && [ "$PREV_HEAD" != "$CURRENT_HEAD" ]; then + # Compare with previous HEAD before pull + TS_CHANGES=$(git diff --name-only "$PREV_HEAD" HEAD 2>/dev/null | grep -E '\.(ts|tsx)$|^src/' | wc -l | tr -d ' ' || echo "0") + + if [ "$TS_CHANGES" -gt 0 ]; then + echo " Found $TS_CHANGES TypeScript source file(s) changed. Rebuild required." + NEEDS_REBUILD=true + else + echo " No TypeScript source files changed. Checking if dist/ is up to date..." + # Check if dist exists and is newer than any source file + if [ -d "dist" ] && [ -f "dist/.buildstamp" ]; then + NEEDS_REBUILD=false + else + NEEDS_REBUILD=true + echo " dist/ directory missing or incomplete. Rebuild required." + fi + fi +else + # No new commits, but check if dist/ exists + if [ ! -d "dist" ] || [ ! -f "dist/.buildstamp" ]; then + NEEDS_REBUILD=true + echo " dist/ directory missing or incomplete. Rebuild required." + else + NEEDS_REBUILD=false + echo " No new commits and dist/ exists. Skipping rebuild." + fi +fi + +# Step 4: Rebuild if needed +if [ "$NEEDS_REBUILD" = true ]; then + echo "" + echo "🔨 Step 4: Rebuilding application..." + if pnpm build; then + echo "✓ Build completed successfully" + else + BUILD_EXIT=$? + echo "✗ Build failed (exit code: $BUILD_EXIT)" + echo "" + echo "Please fix build errors and try again." + exit $BUILD_EXIT + fi +else + echo "" + echo "⏭️ Step 4: Skipping rebuild (not needed)" +fi + +# Step 5: Restart gateway +echo "" +echo "🔄 Step 5: Restarting gateway..." +echo "" +echo " Note: Gateway state and memory are preserved during restart." +echo " Sessions, config, and agent state are stored in ~/.clawdbot/ and persist automatically." +echo "" + +# Use the existing restart script (it will print the Control UI URL) +if bash "$SCRIPT_DIR/gateway-restart.sh"; then + echo "" + echo "✅ Gateway update complete!" +else + RESTART_EXIT=$? + echo "" + echo "✗ Gateway restart failed (exit code: $RESTART_EXIT)" + echo "" + echo "Troubleshooting:" + echo " 1. Check gateway status: ./scripts/gateway-status.sh" + echo " 2. Check logs: ./scripts/clawlog.sh" + echo " 3. Try manual restart: ./scripts/gateway-restart.sh" + exit $RESTART_EXIT +fi diff --git a/scripts/test-ollama.sh b/scripts/test-ollama.sh new file mode 100755 index 000000000..b7f323b96 --- /dev/null +++ b/scripts/test-ollama.sh @@ -0,0 +1,82 @@ +#!/usr/bin/env bash +# Quick test script for Ollama integration + +set -euo pipefail + +echo "=== Testing Ollama Integration ===" +echo "" + +# 1. Check Ollama is running +echo "1. Checking Ollama is running..." +if curl -s http://localhost:11434/api/tags > /dev/null 2>&1; then + echo " ✓ Ollama is running" +else + echo " ✗ Ollama is not running. Start with: ollama serve" + exit 1 +fi + +# 2. Check baseUrl +echo "2. Checking baseUrl configuration..." +BASE_URL=$(pnpm clawdbot config get models.providers.ollama.baseUrl 2>/dev/null | grep -v "punycode\|DEP0040\|Use node\|trace-deprecation" | tail -1 | xargs) +if [[ "$BASE_URL" == *"/v1"* ]]; then + echo " ✓ baseUrl is correct: $BASE_URL" +else + echo " ✗ baseUrl is missing /v1: $BASE_URL" + echo " Fix with: pnpm clawdbot config set models.providers.ollama.baseUrl 'http://localhost:11434/v1'" + exit 1 +fi + +# 3. Test API directly +echo "3. Testing Ollama API directly..." +API_TEST=$(curl -s http://localhost:11434/v1/completions \ + -H "Content-Type: application/json" \ + -d '{"model":"llama3.2:latest","prompt":"test","max_tokens":2}' 2>/dev/null \ + | jq -r 'if .choices then "ok" else "error" end' 2>/dev/null || echo "error") +if [ "$API_TEST" = "ok" ]; then + echo " ✓ Ollama API is working" +else + echo " ✗ Ollama API test failed" + echo " Make sure Ollama is running and llama3.2:latest is installed" + exit 1 +fi + +# 4. Check models are discovered +echo "4. Checking model discovery..." +MODEL_COUNT=$(pnpm clawdbot models list 2>/dev/null | grep -c "ollama/" || echo "0") +if [ "$MODEL_COUNT" -gt 0 ]; then + echo " ✓ Found $MODEL_COUNT Ollama model(s)" + pnpm clawdbot models list 2>/dev/null | grep "ollama/" | head -3 | sed 's/^/ /' +else + echo " ✗ No Ollama models found" + echo " Make sure OLLAMA_API_KEY is set or configured" + exit 1 +fi + +# 5. Test model execution (optional, can be slow) +if [ "${TEST_EXECUTION:-}" = "1" ]; then + echo "5. Testing model execution..." + SESSION_ID="test-ollama-$(date +%s)" + if timeout 30 pnpm clawdbot agent \ + --message "Say hello in one word" \ + --local \ + --session-id "$SESSION_ID" \ + --thinking low > /tmp/ollama-test-output.log 2>&1; then + echo " ✓ Model execution successful" + echo " Response preview:" + tail -5 /tmp/ollama-test-output.log | sed 's/^/ /' + else + echo " ⚠ Model execution had issues (check /tmp/ollama-test-output.log)" + echo " This might be normal if the model is slow or requires more setup" + fi +else + echo "5. Skipping model execution test (set TEST_EXECUTION=1 to enable)" +fi + +echo "" +echo "=== Basic tests passed! ===" +echo "" +echo "To test model execution, run:" +echo " TEST_EXECUTION=1 ./scripts/test-ollama.sh" +echo "" +echo "Or test manually:" +echo " pnpm clawdbot agent --message 'Hello' --local --session-id test-$(date +%s)"