#!/bin/bash
# Mental Models API examples for Hindsight CLI
# Run: bash examples/api/mental-models.sh

set -e

HINDSIGHT_URL="${HINDSIGHT_API_URL:-http://localhost:8888}"
BANK_ID="mental-models-demo-bank"

# =============================================================================
# Setup (not shown in docs)
# =============================================================================
hindsight bank create "$BANK_ID" --name "Mental Models Demo"
hindsight memory retain "$BANK_ID" "The team prefers async communication via Slack"
hindsight memory retain "$BANK_ID" "For urgent issues, use the #incidents channel"
hindsight memory retain "$BANK_ID" "Weekly syncs happen every Monday at 10am"
sleep 2

# =============================================================================
# Doc Examples
# =============================================================================

# [docs:create-mental-model]
# Create a mental model (runs reflect in background)
hindsight mental-model create "$BANK_ID" \
  "Team Communication Preferences" \
  "How does the team prefer to communicate?"
# [/docs:create-mental-model]

# [docs:create-mental-model-with-id]
# Create a mental model with a specific custom ID
hindsight mental-model create "$BANK_ID" \
  "Communication Policy" \
  "What are the team's communication guidelines?" \
  --id communication-policy
# [/docs:create-mental-model-with-id]

sleep 5

# [docs:create-mental-model-with-trigger]
# Create a mental model and get its ID for subsequent operations
hindsight mental-model create "$BANK_ID" \
  "Project Status" \
  "What is the current project status?"
# [/docs:create-mental-model-with-trigger]

sleep 5

# [docs:list-mental-models]
# List all mental models in a bank
hindsight mental-model list "$BANK_ID"
# [/docs:list-mental-models]

# Get the first mental model ID for subsequent examples
MENTAL_MODEL_ID=$(hindsight mental-model list "$BANK_ID" -o json | python3 -c "import sys,json; items=json.load(sys.stdin).get('items',[]); print(items[0]['id'] if items else '')" 2>/dev/null || echo "")

if [ -n "$MENTAL_MODEL_ID" ]; then
  # [docs:get-mental-model]
  # Get a specific mental model
  hindsight mental-model get "$BANK_ID" "$MENTAL_MODEL_ID"
  # [/docs:get-mental-model]

  # [docs:refresh-mental-model]
  # Refresh a mental model to update with current knowledge
  hindsight mental-model refresh "$BANK_ID" "$MENTAL_MODEL_ID"
  # [/docs:refresh-mental-model]

  # [docs:update-mental-model]
  # Update a mental model's metadata
  hindsight mental-model update "$BANK_ID" "$MENTAL_MODEL_ID" \
    --name "Updated Team Communication Preferences"
  # [/docs:update-mental-model]

  # [docs:get-mental-model-history]
  # Get the change history of a mental model
  hindsight mental-model history "$BANK_ID" "$MENTAL_MODEL_ID"
  # [/docs:get-mental-model-history]

  # [docs:delete-mental-model]
  # Delete a mental model
  hindsight mental-model delete "$BANK_ID" "$MENTAL_MODEL_ID" -y
  # [/docs:delete-mental-model]
fi

# =============================================================================
# Cleanup (not shown in docs)
# =============================================================================
curl -s -X DELETE "${HINDSIGHT_URL}/v1/default/banks/${BANK_ID}" > /dev/null

echo "mental-models.sh: All examples passed"
