# ─────────────────────────────────────────────────────────────────────────
# WHAT BELONGS IN THIS FILE — and what does NOT
#
# This file is for the DEPLOYMENT'S OWN identity and its model keys. That is
# all. Provider credentials do NOT live here.
#
#   HERE, in .env
#     LEAFMESH_LICENSE_KEY, LEAFMESH_ENV_TOKEN
#     the ports, REDIS_* / Postgres  (the store the vault itself lives in)
#     your model provider key(s): OPENAI_API_KEY / ANTHROPIC_API_KEY /
#       GOOGLE_API_KEY …  (these are read from the environment as the mesh
#       starts, so they must be here — the vault is read too late for them)
#
#   NOT HERE — in the VAULT, added on Studio's Infrastructure page
#     every channel credential  (Slack bot_token / signing_secret / app_token,
#       Teams, Discord, Cliq, WhatsApp, Email)
#     every connector credential (MCP, Zapier, Composio, n8n, custom)
#     Config then names it:  connection: "slack-workspace"
#
# Why it matters: since 2.4.180 the mesh REFUSES TO BOOT if it finds a
# provider credential written into config — and `${ENV_VAR}` does not help,
# because substitution happens before the check runs, so the check sees the
# token itself. `connection:` is the only path that works.
#
# Note: a value is EMPTY here, never a comment. `KEY=   # explanation` is read
# by python-dotenv as the COMMENT being the value.
# ─────────────────────────────────────────────────────────────────────────

# ──────────────────────────────────────────────────────────────
# LeafMesh — required keys
LEAFMESH_LICENSE_KEY=your-license-key-here
LEAFMESH_ENV_TOKEN=your-env-token-here

# ──────────────────────────────────────────────────────────────
# LLM providers — Cora + Manager + Compliance use gpt-4o-mini (OpenAI);
# Sourcing + Planner use claude-sonnet-4-6 (Anthropic). Set both.
OPENAI_API_KEY=your-key-here
ANTHROPIC_API_KEY=your-anthropic-key

# ──────────────────────────────────────────────────────────────
# Redis (default = local docker compose redis)
# Consumed by the redis: block in configs/config.yaml via ${VAR:default}.
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=

# ──────────────────────────────────────────────────────────────
# HITL webhook target — where the SDK POSTs human-approval notifications.
# Consumed by webhook_config.outbound_url of the three human agents
# (requester_human, approver_human, procurement_lead_human) via ${HITL_OUTBOUND_URL:...}.
# HITL_OUTBOUND_URL=http://127.0.0.1:9999/human-notify
#   ^ LOCAL TEST STUB ONLY. Leave it commented. A human seat should be
#     human_interface: "default" (the Studio Inbox) — a real queue a real
#     person clicks. A custom webhook receiver is not how HITL is run.

# ──────────────────────────────────────────────────────────────
# Domain knob — budget approval threshold (USD). Consumed by
# agency/tools.py (estimate_landed_cost).
HIGH_VALUE_THRESHOLD_USD=50000

# ──────────────────────────────────────────────────────────────
# Tier 2 — real ERP/SRM connectors (set the URL, then uncomment the `mcp`
# block in configs/config.yaml). Until set, the pod reads the seed dev store
# and every tool announces itself (available:false) rather than faking a read.
# ERP_MCP_URL=
# ERP_MCP_TOKEN=
# SRM_MCP_URL=
# SRM_MCP_TOKEN=
