#!/usr/bin/env python3
"""
Memory Banks API examples for Hindsight.
Run: python examples/api/memory-banks.py
"""
import os
import requests

HINDSIGHT_URL = os.getenv("HINDSIGHT_API_URL", "http://localhost:8888")

# =============================================================================
# Setup (not shown in docs)
# =============================================================================
from hindsight_client import Hindsight

client = Hindsight(base_url=HINDSIGHT_URL)

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

# [docs:create-bank]
client.create_bank(bank_id="my-bank")
# [/docs:create-bank]


# [docs:bank-with-disposition]
client.create_bank(bank_id="architect-bank")
client.update_bank_config(
    "architect-bank",
    reflect_mission="You're a senior software architect - keep track of system designs, "
            "technology decisions, and architectural patterns. Prefer simplicity over cutting-edge.",
    disposition_skepticism=4,   # Questions new technologies
    disposition_literalism=4,   # Focuses on concrete specs
    disposition_empathy=2,      # Prioritizes technical facts
)
# [/docs:bank-with-disposition]


# [docs:bank-background]
client.create_bank(bank_id="my-bank")
client.update_bank_config(
    "my-bank",
    reflect_mission="I am a research assistant specializing in machine learning.",
)
# [/docs:bank-background]


# [docs:bank-mission]
client.create_bank(bank_id="my-bank")
client.update_bank_config(
    "my-bank",
    reflect_mission="You're a senior software architect - keep track of system designs, "
            "technology decisions, and architectural patterns.",
)
# [/docs:bank-mission]


# [docs:bank-support-agent]
client.create_bank(bank_id="support-bank")
client.update_bank_config(
    "support-bank",
    observations_mission="I am a customer support agent. Track customer preferences, "
            "recurring issues, and resolution history to provide consistent, personalized support.",
)
# [/docs:bank-support-agent]


# [docs:update-bank-config]
client.update_bank_config(
    "my-bank",
    retain_mission="Always include technical decisions, API design choices, and architectural trade-offs. Ignore meeting logistics and social exchanges.",
    retain_extraction_mode="verbose",
    observations_mission="Observations are stable facts about people and projects. Always include preferences, skills, and recurring patterns. Ignore one-off events.",
    disposition_skepticism=4,
    disposition_literalism=4,
    disposition_empathy=2,
)
# [/docs:update-bank-config]


# [docs:get-bank-config]
# Returns resolved config (server defaults merged with bank overrides) and the raw overrides
data = client.get_bank_config("my-bank")
# data["config"]     — full resolved configuration
# data["overrides"]  — only fields overridden at the bank level
# [/docs:get-bank-config]


# [docs:reset-bank-config]
# Remove all bank-level overrides, reverting to server defaults
client.reset_bank_config("my-bank")
# [/docs:reset-bank-config]


# =============================================================================
# Cleanup (not shown in docs)
# =============================================================================
requests.delete(f"{HINDSIGHT_URL}/v1/default/banks/my-bank")
requests.delete(f"{HINDSIGHT_URL}/v1/default/banks/architect-bank")

print("memory-banks.py: All examples passed")
