# ─────────────────────────────────────────────────────────────────────────
# 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.
# ─────────────────────────────────────────────────────────────────────────

# {{project_name}} — environment
#
# TIER 1 — required to boot (dev mode). The WHOLE pod runs on Tier 1 alone
# against the seeded dev store (agency/_shared/store.py).
LEAFMESH_LICENSE_KEY=
# coordinator + exception + supplier + Manager (gpt-4o-mini)
OPENAI_API_KEY=
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
LEAFMESH_ENV_TOKEN=development
# where human members are notified (defaults to a local stub)
# HITL_OUTBOUND_URL=
#   ^ 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.

# ── TIER 2 — real systems of record ──────────────────────────────────
# DAY-0 the mesh runs end-to-end with NONE of these set — the store-grounded
# agents read the seeded dev store and announce available:false when there is no
# real source. To go live: set the URL AND uncomment that agent's `mcp` block in
# configs/config.yaml (the SDK rejects an empty-url http mcp at load).
# WMS — inventory_agent, returns_handler_agent, inventory_control_agent
WMS_MCP_URL=
WMS_MCP_TOKEN=
# TMS / rate API — carrier_selector_agent
TMS_MCP_URL=
TMS_MCP_TOKEN=
# ERP / SRM — replenishment_planner_agent, supplier_relations_agent
ERP_MCP_URL=
ERP_MCP_TOKEN=
# robot fleet API — humanoid_status_agent (PROD swap)
FLEET_API_MCP_URL=

# Redis stream the OMS writes order.created events to (coordinator listen_events).
# Distinct from the SDK's primary Redis above.
ORDER_EVENTS_REDIS_URL=redis://localhost:6379

# ── Manager escalation ──
# webhook target (PagerDuty Events v2, ...)
PAGER_WEBHOOK=
