# ============================================================
# oGMemory Unified Configuration Reference
# ============================================================
#
# This is the single reference template for all deployment modes.
# Copy and edit for your use case:
#
#   Local dev:  cp config/ogmem.reference.yaml ogmem.yaml
#   Docker:     cp config/ogmem.reference.yaml deploy/ogmemory.yaml
#
# Mode annotations:
#   [all]     — applies to all modes
#   [local]   — local development only
#   [docker]  — Docker deployment (uses ${ENV_VAR} from deploy.env)
#
# Priority: YAML value > env var > code default
# ============================================================

# ---- LLM Configuration [all] ----
llm:
  provider: openai                # [all] mock / openai / openai-cached
  api_key: "your-api-key"        # [local] your key; [docker] use "${LLM_API_KEY}"
  # api_key_command:             # [all] 1Password / vault integration
  #   command: ["/usr/local/bin/op", "read", "op://team/ogmemory/api-key"]
  base_url: "https://api.openai.com/v1"  # [local] your endpoint; [docker] use "${LLM_BASE_URL}"
  model: "gpt-4o-mini"           # [local] your model; [docker] use "${LLM_MODEL}"
  temperature: 0.1               # [all] recommended: 0-0.1 for deterministic extraction
  max_tokens: 4096               # [all]
  json_mode: false               # [all]

# ---- Embedding Configuration [all] ----
embedding:
  # provider: null               # [all] defaults to llm.provider
  model: "text-embedding-v4"     # [all]
  base_url: "https://api.openai.com/v1"  # [all] defaults to llm.base_url
  api_key: null                  # [all] defaults to llm.api_key
  # api_key_command:
  #   command: ["/usr/local/bin/op", "read", "op://team/ogmemory/embedding-api-key"]
  multimodal: false              # [all] true for VolcEngine /doubao embeddings
  # st_model: "BAAI/bge-m3"     # [local] Sentence Transformer local model (overrides API embedding)

# ---- Vector Database [all] ----
vector_db:
  type: chroma                   # [local] memory (quickstart) / chroma / opengauss
                                  # [docker] opengauss (recommended for production)
  # --- Chroma (local) ---
  chroma_persist_dir: ".ogmem_data/chroma"  # [local]
  # chroma_collection: "contextengine"
  # --- OpenGauss (docker / production) ---
  # connection_string: "host=127.0.0.1 port=8799 dbname=postgres user=gaussdb password=CHANGE_ME"
  dimension: 1024                # [all]
  table_name: vector_index       # [all]
  pool_size: 5                   # [all]

# ---- HTTP Service [all] ----
service:
  http_port: 8090                # [all]
  workers: 2                     # [all]
  # http_ip_allowlist: ["127.0.0.1", "10.0.0.0/8"]  # [all]
  # http_ip_allowlist_trust_proxy: false              # [all]
  # http_trusted_proxies: ["127.0.0.1"]               # [all]

# ---- Storage Backend [all] ----
storage:
  backend: sql                   # [all] agfs / sql (recommended: sql)
  connection_string: "host=127.0.0.1 port=5432 dbname=ogmemory user=postgres password=postgres"  # [local]
  pool_size: 5                   # [all]

# ---- Paths [local] ----
paths:
  data_root: .ogmem_data         # [local] all runtime data (chroma/, agfs/, logs/)

# ---- AGFS (internal) [docker] ----
agfs:
  base_url: "http://127.0.0.1:1833"   # [all] AGFS server address
  mount_prefix: "/local/plugin"        # [docker]

# ---- Index Service [all] ----
index:
  interval: 15                   # [all] polling interval (seconds)
  workers: 1                     # [all]

# ---- Identity / Multi-tenant [all] ----
identity:
  account_id: "acct-demo"        # [all]
  user_id: "u-alice"             # [all]
  agent_id: "main"               # [all]

# ---- Authentication [all] ----
auth:
  role_control_enabled: false    # [all] enable for multi-tenant
  # root_api_key: "root-secret-key-change-me"     # [all]
  # admin_api_keys:                                # [all]
  #   - "acct-company-a:admin-key-for-a"
  #   - "acct-company-b:admin-key-for-b"

# ---- Agent Sharing [all] ----
sharing:
  agent_shared_mode: "off"       # [all] off / user
  # agent_shared_list:           # [all]
  #   - "agent-shared-sales"
  #   - "agent-shared-support"

# ---- Memory Extraction [all] ----
memory:
  # after_turn_threshold: 200    # [all] tokens before auto-extraction
  # rolling_compress_enabled: true
  # compact_prepare_token_ttl: 300
  # directory_summary_enabled: false
  # prefetch_enabled: false
  # prefetch_top_k: 5
  # session_state_bridge_enabled: true
  # session_state_sync_interval_turns: 1
  # topic_detection_enabled: false
  # compression_quality_enabled: false
  # compression_quality_persist_metadata: false

# ---- Cache [all] ----
cache:
  enabled: true                  # [all]
  max_size: 1000                 # [all]