1 line
429 KiB
JSON
1 line
429 KiB
JSON
{"repo": "brsamayu/sparkle-project", "files": {"backend/.env.local.example": {"64262a2815277936193ab706ebf73cbec02b9b0c": {"t": 1785595201.086415, "n": 1706, "h": "ab89fbee417d0a3e", "c": "# Backend local development environment.\n\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=dev_secret_key_change_in_production\n\nPOSTGRES_HOST=127.0.0.1\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=change-me\nDATABASE_URL=postgresql+asyncpg://postgres:change-me@127.0.0.1:5432/sparkle\n\nREDIS_HOST=127.0.0.1\nREDIS_PORT=6379\nREDIS_PASSWORD=change-me\nREDIS_URL=redis://:change-me@127.0.0.1:6379/0\n\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_dashscope_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=qwen-plus\n\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\nDASHSCOPE_API_KEY=your_dashscope_api_key\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nZHIPU_API_KEY=your_zhipu_api_key\nXIAOMI_MIMO_API_KEY=your_mimo_api_key\n\nSTT_PROVIDER=xunfei\nSTT_ENHANCE_ENABLED=true\nXUNFEI_APP_ID=your_xunfei_app_id\nXUNFEI_API_KEY=your_xunfei_api_key\nXUNFEI_API_SECRET=your_xunfei_api_secret\n\nWS_ALLOW_QUERY_TOKEN=true\nINTERNAL_API_KEY=dev_internal_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\nOPENCLAW_ENABLED=true\nOPENCLAW_TRANSPORT=gateway_ws\nOPENCLAW_DEFAULT_AGENT_ID=main\nOPENCLAW_GATEWAY_URL=http://127.0.0.1:18789\nOPENCLAW_WS_URL=ws://127.0.0.1:18789\nOPENCLAW_WS_DEVICE_IDENTITY_PATH=/absolute/path/to/.openclaw/device.json\nOPENCLAW_DEFAULT_WORKDIR=/absolute/path/to/Sparkle-project\n\nMINIO_ROOT_USER=minioadmin\nMINIO_ROOT_PASSWORD=minioadmin\nJWT_SECRET=dev_jwt_secret_change_me\n"}, "393e5fb96529c127b40a507ca0acb78f9e80fde1": {"t": 1785747983.3454974, "n": 1706, "h": "ab89fbee417d0a3e", "c": "# Backend local development environment.\n\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=dev_secret_key_change_in_production\n\nPOSTGRES_HOST=127.0.0.1\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=change-me\nDATABASE_URL=postgresql+asyncpg://postgres:change-me@127.0.0.1:5432/sparkle\n\nREDIS_HOST=127.0.0.1\nREDIS_PORT=6379\nREDIS_PASSWORD=change-me\nREDIS_URL=redis://:change-me@127.0.0.1:6379/0\n\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_dashscope_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=qwen-plus\n\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\nDASHSCOPE_API_KEY=your_dashscope_api_key\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nZHIPU_API_KEY=your_zhipu_api_key\nXIAOMI_MIMO_API_KEY=your_mimo_api_key\n\nSTT_PROVIDER=xunfei\nSTT_ENHANCE_ENABLED=true\nXUNFEI_APP_ID=your_xunfei_app_id\nXUNFEI_API_KEY=your_xunfei_api_key\nXUNFEI_API_SECRET=your_xunfei_api_secret\n\nWS_ALLOW_QUERY_TOKEN=true\nINTERNAL_API_KEY=dev_internal_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\nOPENCLAW_ENABLED=true\nOPENCLAW_TRANSPORT=gateway_ws\nOPENCLAW_DEFAULT_AGENT_ID=main\nOPENCLAW_GATEWAY_URL=http://127.0.0.1:18789\nOPENCLAW_WS_URL=ws://127.0.0.1:18789\nOPENCLAW_WS_DEVICE_IDENTITY_PATH=/absolute/path/to/.openclaw/device.json\nOPENCLAW_DEFAULT_WORKDIR=/absolute/path/to/Sparkle-project\n\nMINIO_ROOT_USER=minioadmin\nMINIO_ROOT_PASSWORD=minioadmin\nJWT_SECRET=dev_jwt_secret_change_me\n"}, "3b53356cdb12712bacad89ab47465c8d414093a8": {"t": 1785747984.4866614, "n": 1409, "h": "4d8fc2f07e237e7e", "c": "# Backend local development environment.\n\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=dev_secret_key_change_in_production\n\nPOSTGRES_HOST=127.0.0.1\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=change-me\nDATABASE_URL=postgresql+asyncpg://postgres:change-me@127.0.0.1:5432/sparkle\n\nREDIS_HOST=127.0.0.1\nREDIS_PORT=6379\nREDIS_PASSWORD=change-me\nREDIS_URL=redis://:change-me@127.0.0.1:6379/0\n\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_dashscope_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=qwen-plus\n\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\nDASHSCOPE_API_KEY=your_dashscope_api_key\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nZHIPU_API_KEY=your_zhipu_api_key\nXIAOMI_MIMO_API_KEY=your_mimo_api_key\n\nSTT_PROVIDER=xunfei\nSTT_ENHANCE_ENABLED=true\nXUNFEI_APP_ID=your_xunfei_app_id\nXUNFEI_API_KEY=your_xunfei_api_key\nXUNFEI_API_SECRET=your_xunfei_api_secret\n\nWS_ALLOW_QUERY_TOKEN=true\nINTERNAL_API_KEY=dev_internal_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\nMINIO_ROOT_USER=minioadmin\nMINIO_ROOT_PASSWORD=minioadmin\nJWT_SECRET=dev_jwt_secret_change_me\n"}}, "scripts/check_production_secrets.py": {"64262a2815277936193ab706ebf73cbec02b9b0c": {"t": 1785595209.8260715, "n": 5902, "h": "f5d4628279c0fb90", "c": "#!/usr/bin/env python3\n\"\"\"Pre-deployment secret validation.\n\nChecks that production environment secrets are present and that tracked files do\nnot contain provider-shaped credentials. The output intentionally names only\nfiles/variables, never secret values.\n\nExit 0 = pass, 1 = fail.\n\"\"\"\nfrom __future__ import annotations\n\nimport argparse\nimport re\nimport subprocess\nimport sys\nfrom pathlib import Path\n\nREPO_ROOT = Path(__file__).resolve().parents[1]\nENV_PATH = REPO_ROOT / \"backend\" / \".env\"\n\nPLACEHOLDER_PREFIXES = (\"your_\", \"replace_with\", \"changeme\", \"placeholder\", \"example_\", \"dummy_\")\nPLACEHOLDER_VALUES = {\n \"\",\n \"dev\",\n \"test\",\n \"password\",\n \"postgres\",\n \"redis\",\n \"secret\",\n \"minioadmin\",\n \"your-secret-key\",\n \"your_api_key_here\",\n}\n\nCRITICAL_SECRETS = [\n \"SECRET_KEY\",\n \"JWT_SECRET\",\n \"POSTGRES_PASSWORD\",\n \"REDIS_PASSWORD\",\n \"INTERNAL_API_KEY\",\n \"MINIO_ACCESS_KEY\",\n \"MINIO_SECRET_KEY\",\n]\n\nLLM_KEY_NAMES = [\n \"LLM_API_KEY\",\n \"XIAOMI_MIMO_API_KEY\",\n \"ZHIPU_API_KEY\",\n \"DEEPSEEK_API_KEY\",\n \"DASHSCOPE_API_KEY\",\n \"SILICONFLOW_API_KEY\",\n \"HUNYUAN_API_KEY\",\n]\n\n_LINE_PATTERN = re.compile(r\"^([A-Z_]+)=(.*)$\")\n_TRACKED_ENV_PATTERN = re.compile(r\"(^|/)\\.env($|\\.)\")\n_ALLOWED_TRACKED_ENV_SUFFIXES = (\".example\", \".local.example\", \".deploy.example\")\n_PROVIDER_PATTERNS: tuple[tuple[str, re.Pattern[str]], ...] = (\n (\"OpenAI-compatible key\", re.compile(r\"(?<![A-Za-z0-9])sk-[A-Za-z0-9_-]{20,}\")),\n (\"Google API key\", re.compile(r\"AIza[0-9A-Za-z_-]{35}\")),\n (\"AWS access key\", re.compile(r\"\\b(?:AKIA|ASIA)[0-9A-Z]{16}\\b\")),\n (\"GitHub token\", re.compile(r\"\\bgh[pousr]_[A-Za-z0-9_]{30,}\\b\")),\n (\"Slack token\", re.compile(r\"\\bxox[baprs]-[0-9A-Za-z-]{10,}\\b\")),\n)\n_NAMED_SECRET_PATTERNS: tuple[tuple[str, re.Pattern[str]], ...] = (\n (\n \"Zhipu API key\",\n re.compile(r\"(?im)^\\s*ZHIPU_API_KEY\\s*=\\s*['\\\"]?([0-9a-f]{32}\\.[A-Za-z0-9_-]{8,})['\\\"]?\\s*$\"),\n ),\n (\n \"XunFei API key\",\n re.compile(r\"(?im)^\\s*XUNFEI_API_KEY\\s*=\\s*['\\\"]?([0-9a-f]{32})['\\\"]?\\s*$\"),\n ),\n (\n \"XunFei API secret\",\n re.compile(r\"(?im)^\\s*XUNFEI_API_SECRET\\s*=\\s*['\\\"]?([A-Za-z0-9+/=_-]{24,})['\\\"]?\\s*$\"),\n ),\n)\n\n\ndef _is_placeholder(value: str) -> bool:\n normalized = value.strip().strip(\"\\\"'\").lower()\n return normalized in PLACEHOLDER_VALUES or any(normalized.startswith(p) for p in PLACEHOLDER_PREFIXES)\n\n\ndef _load_env(path: Path) -> dict[str, str]:\n env: dict[str, str] = {}\n if not path.exists():\n return env\n for line in path.read_text().splitlines():\n m = _LINE_PATTERN.match(line.strip())\n if m:\n val = m.group(2).strip()\n # Strip surrounding quotes\n if len(val) >= 2 and val[0] in ('\"', \"'\") and val[-1] == val[0]:\n val = val[1:-1]\n env[m.group(1)] = val\n return env\n\n\ndef _tracked_files() -> list[Path]:\n result = subprocess.run(\n [\"git\", \"ls-files\", \"-z\"],\n cwd=REPO_ROOT,\n check=True,\n stdout=subprocess.PIPE,\n stderr=subprocess.PIPE,\n )\n return [REPO_ROOT / item.decode() for item in result.stdout.split(b\"\\0\") if item]\n\n\ndef _is_allowed_tracked_env(path: Path) -> bool:\n rel = path.relative_to(REPO_ROOT).as_posix()\n return rel.endswith(_ALLOWED_TRACKED_ENV_SUFFIXES)\n\n\ndef _scan_tracked_files() -> list[str]:\n findings: list[str] = []\n for path in _tracked_files():\n rel = path.relative_to(REPO_ROOT).as_posix()\n if not path.exists() or path.is_dir():\n continue\n\n if _TRACKED_ENV_PATTERN.search(rel) and not _is_allowed_tracked_env(path):\n findings.append(f\"{rel}: runtime .env file is tracked\")\n\n try:\n content = path.read_text(encoding=\"utf-8\")\n except UnicodeDecodeError:\n continue\n\n for name, pattern in _PROVIDER_PATTERNS:\n if pattern.search(content):\n findings.append(f\"{rel}: provider-shaped credential found ({name})\")\n\n for name, pattern in _NAMED_SECRET_PATTERNS:\n match = pattern.search(content)\n if match and not _is_placeholder(match.group(1)):\n findings.append(f\"{rel}: provider-shaped credential found ({name})\")\n\n return findings\n\n\ndef _validate_env_file() -> list[str]:\n env = _load_env(ENV_PATH)\n if not env:\n print(f\"[Secrets] SKIP — {ENV_PATH} not found (development mode)\")\n return []\n\n violations: list[str] = []\n\n for name in CRITICAL_SECRETS:\n val = env.get(name, \"\")\n if _is_placeholder(val):\n violations.append(f\"{name} is empty or placeholder\")\n\n has_llm = any(env.get(k, \"\") and not _is_placeholder(env[k]) for k in LLM_KEY_NAMES)\n if not has_llm:\n violations.append(\"No LLM API key configured (need one of: \" + \", \".join(LLM_KEY_NAMES) + \")\")\n return violations\n\n\ndef main(argv: list[str] | None = None) -> int:\n parser = argparse.ArgumentParser(description=\"Validate production secrets without printing secret values.\")\n parser.add_argument(\n \"--env-only\",\n action=\"store_true\",\n help=\"only validate backend/.env and skip tracked-file scanning\",\n )\n parser.add_argument(\n \"--tracked-only\",\n action=\"store_true\",\n help=\"only scan tracked files and skip backend/.env validation\",\n )\n args = parser.parse_args(argv)\n\n violations: list[str] = []\n if not args.tracked_only:\n violations.extend(_validate_env_file())\n if not args.env_only:\n violations.extend(_scan_tracked_files())\n\n if violations:\n print(\"[Secrets] FAIL — secret validation issues detected:\")\n for v in violations:\n print(f\" - {v}\")\n return 1\n\n print(\"[Secrets] PASS — production secrets and tracked files validated\")\n return 0\n\n\nif __name__ == \"__main__\":\n sys.exit(main())\n"}, "1acebfc8c28332a6a3056497798f3c45938ef960": {"t": 1785747980.6526074, "n": 5902, "h": "f5d4628279c0fb90", "c": "#!/usr/bin/env python3\n\"\"\"Pre-deployment secret validation.\n\nChecks that production environment secrets are present and that tracked files do\nnot contain provider-shaped credentials. The output intentionally names only\nfiles/variables, never secret values.\n\nExit 0 = pass, 1 = fail.\n\"\"\"\nfrom __future__ import annotations\n\nimport argparse\nimport re\nimport subprocess\nimport sys\nfrom pathlib import Path\n\nREPO_ROOT = Path(__file__).resolve().parents[1]\nENV_PATH = REPO_ROOT / \"backend\" / \".env\"\n\nPLACEHOLDER_PREFIXES = (\"your_\", \"replace_with\", \"changeme\", \"placeholder\", \"example_\", \"dummy_\")\nPLACEHOLDER_VALUES = {\n \"\",\n \"dev\",\n \"test\",\n \"password\",\n \"postgres\",\n \"redis\",\n \"secret\",\n \"minioadmin\",\n \"your-secret-key\",\n \"your_api_key_here\",\n}\n\nCRITICAL_SECRETS = [\n \"SECRET_KEY\",\n \"JWT_SECRET\",\n \"POSTGRES_PASSWORD\",\n \"REDIS_PASSWORD\",\n \"INTERNAL_API_KEY\",\n \"MINIO_ACCESS_KEY\",\n \"MINIO_SECRET_KEY\",\n]\n\nLLM_KEY_NAMES = [\n \"LLM_API_KEY\",\n \"XIAOMI_MIMO_API_KEY\",\n \"ZHIPU_API_KEY\",\n \"DEEPSEEK_API_KEY\",\n \"DASHSCOPE_API_KEY\",\n \"SILICONFLOW_API_KEY\",\n \"HUNYUAN_API_KEY\",\n]\n\n_LINE_PATTERN = re.compile(r\"^([A-Z_]+)=(.*)$\")\n_TRACKED_ENV_PATTERN = re.compile(r\"(^|/)\\.env($|\\.)\")\n_ALLOWED_TRACKED_ENV_SUFFIXES = (\".example\", \".local.example\", \".deploy.example\")\n_PROVIDER_PATTERNS: tuple[tuple[str, re.Pattern[str]], ...] = (\n (\"OpenAI-compatible key\", re.compile(r\"(?<![A-Za-z0-9])sk-[A-Za-z0-9_-]{20,}\")),\n (\"Google API key\", re.compile(r\"AIza[0-9A-Za-z_-]{35}\")),\n (\"AWS access key\", re.compile(r\"\\b(?:AKIA|ASIA)[0-9A-Z]{16}\\b\")),\n (\"GitHub token\", re.compile(r\"\\bgh[pousr]_[A-Za-z0-9_]{30,}\\b\")),\n (\"Slack token\", re.compile(r\"\\bxox[baprs]-[0-9A-Za-z-]{10,}\\b\")),\n)\n_NAMED_SECRET_PATTERNS: tuple[tuple[str, re.Pattern[str]], ...] = (\n (\n \"Zhipu API key\",\n re.compile(r\"(?im)^\\s*ZHIPU_API_KEY\\s*=\\s*['\\\"]?([0-9a-f]{32}\\.[A-Za-z0-9_-]{8,})['\\\"]?\\s*$\"),\n ),\n (\n \"XunFei API key\",\n re.compile(r\"(?im)^\\s*XUNFEI_API_KEY\\s*=\\s*['\\\"]?([0-9a-f]{32})['\\\"]?\\s*$\"),\n ),\n (\n \"XunFei API secret\",\n re.compile(r\"(?im)^\\s*XUNFEI_API_SECRET\\s*=\\s*['\\\"]?([A-Za-z0-9+/=_-]{24,})['\\\"]?\\s*$\"),\n ),\n)\n\n\ndef _is_placeholder(value: str) -> bool:\n normalized = value.strip().strip(\"\\\"'\").lower()\n return normalized in PLACEHOLDER_VALUES or any(normalized.startswith(p) for p in PLACEHOLDER_PREFIXES)\n\n\ndef _load_env(path: Path) -> dict[str, str]:\n env: dict[str, str] = {}\n if not path.exists():\n return env\n for line in path.read_text().splitlines():\n m = _LINE_PATTERN.match(line.strip())\n if m:\n val = m.group(2).strip()\n # Strip surrounding quotes\n if len(val) >= 2 and val[0] in ('\"', \"'\") and val[-1] == val[0]:\n val = val[1:-1]\n env[m.group(1)] = val\n return env\n\n\ndef _tracked_files() -> list[Path]:\n result = subprocess.run(\n [\"git\", \"ls-files\", \"-z\"],\n cwd=REPO_ROOT,\n check=True,\n stdout=subprocess.PIPE,\n stderr=subprocess.PIPE,\n )\n return [REPO_ROOT / item.decode() for item in result.stdout.split(b\"\\0\") if item]\n\n\ndef _is_allowed_tracked_env(path: Path) -> bool:\n rel = path.relative_to(REPO_ROOT).as_posix()\n return rel.endswith(_ALLOWED_TRACKED_ENV_SUFFIXES)\n\n\ndef _scan_tracked_files() -> list[str]:\n findings: list[str] = []\n for path in _tracked_files():\n rel = path.relative_to(REPO_ROOT).as_posix()\n if not path.exists() or path.is_dir():\n continue\n\n if _TRACKED_ENV_PATTERN.search(rel) and not _is_allowed_tracked_env(path):\n findings.append(f\"{rel}: runtime .env file is tracked\")\n\n try:\n content = path.read_text(encoding=\"utf-8\")\n except UnicodeDecodeError:\n continue\n\n for name, pattern in _PROVIDER_PATTERNS:\n if pattern.search(content):\n findings.append(f\"{rel}: provider-shaped credential found ({name})\")\n\n for name, pattern in _NAMED_SECRET_PATTERNS:\n match = pattern.search(content)\n if match and not _is_placeholder(match.group(1)):\n findings.append(f\"{rel}: provider-shaped credential found ({name})\")\n\n return findings\n\n\ndef _validate_env_file() -> list[str]:\n env = _load_env(ENV_PATH)\n if not env:\n print(f\"[Secrets] SKIP — {ENV_PATH} not found (development mode)\")\n return []\n\n violations: list[str] = []\n\n for name in CRITICAL_SECRETS:\n val = env.get(name, \"\")\n if _is_placeholder(val):\n violations.append(f\"{name} is empty or placeholder\")\n\n has_llm = any(env.get(k, \"\") and not _is_placeholder(env[k]) for k in LLM_KEY_NAMES)\n if not has_llm:\n violations.append(\"No LLM API key configured (need one of: \" + \", \".join(LLM_KEY_NAMES) + \")\")\n return violations\n\n\ndef main(argv: list[str] | None = None) -> int:\n parser = argparse.ArgumentParser(description=\"Validate production secrets without printing secret values.\")\n parser.add_argument(\n \"--env-only\",\n action=\"store_true\",\n help=\"only validate backend/.env and skip tracked-file scanning\",\n )\n parser.add_argument(\n \"--tracked-only\",\n action=\"store_true\",\n help=\"only scan tracked files and skip backend/.env validation\",\n )\n args = parser.parse_args(argv)\n\n violations: list[str] = []\n if not args.tracked_only:\n violations.extend(_validate_env_file())\n if not args.env_only:\n violations.extend(_scan_tracked_files())\n\n if violations:\n print(\"[Secrets] FAIL — secret validation issues detected:\")\n for v in violations:\n print(f\" - {v}\")\n return 1\n\n print(\"[Secrets] PASS — production secrets and tracked files validated\")\n return 0\n\n\nif __name__ == \"__main__\":\n sys.exit(main())\n"}, "32b915219c867f46ca325638f58cecda72e95b36": {"t": 1785747982.769826, "n": 2161, "h": "4f745090e87b95eb", "c": "#!/usr/bin/env python3\n\"\"\"Pre-deployment secret validation.\n\nChecks that no placeholder values remain in the production .env file.\nExit 0 = pass, 1 = fail.\n\"\"\"\nfrom __future__ import annotations\n\nimport re\nimport sys\nfrom pathlib import Path\n\nREPO_ROOT = Path(__file__).resolve().parents[1]\nENV_PATH = REPO_ROOT / \"backend\" / \".env\"\n\nPLACEHOLDER_PREFIXES = (\"your_\", \"replace_with\", \"changeme\")\n\nCRITICAL_SECRETS = [\n \"SECRET_KEY\",\n \"JWT_SECRET\",\n \"POSTGRES_PASSWORD\",\n \"REDIS_PASSWORD\",\n \"INTERNAL_API_KEY\",\n \"MINIO_ACCESS_KEY\",\n \"MINIO_SECRET_KEY\",\n]\n\nLLM_KEY_NAMES = [\n \"LLM_API_KEY\",\n \"ZHIPU_API_KEY\",\n \"DEEPSEEK_API_KEY\",\n]\n\n_LINE_PATTERN = re.compile(r\"^([A-Z_]+)=(.*)$\")\n\n\ndef _load_env(path: Path) -> dict[str, str]:\n env: dict[str, str] = {}\n if not path.exists():\n return env\n for line in path.read_text().splitlines():\n m = _LINE_PATTERN.match(line.strip())\n if m:\n val = m.group(2).strip()\n # Strip surrounding quotes\n if len(val) >= 2 and val[0] in ('\"', \"'\") and val[-1] == val[0]:\n val = val[1:-1]\n env[m.group(1)] = val\n return env\n\n\ndef main() -> int:\n env = _load_env(ENV_PATH)\n if not env:\n print(f\"[Secrets] SKIP — {ENV_PATH} not found (development mode)\")\n return 0\n\n violations: list[str] = []\n\n for name in CRITICAL_SECRETS:\n val = env.get(name, \"\")\n if not val or any(val.startswith(p) for p in PLACEHOLDER_PREFIXES):\n violations.append(f\"{name} is empty or placeholder: {val!r}\")\n\n has_llm = any(\n env.get(k, \"\") and not any(env[k].startswith(p) for p in PLACEHOLDER_PREFIXES)\n for k in LLM_KEY_NAMES\n )\n if not has_llm:\n violations.append(\"No LLM API key configured (need one of: \" + \", \".join(LLM_KEY_NAMES) + \")\")\n\n if violations:\n print(\"[Secrets] FAIL — placeholder secrets detected:\")\n for v in violations:\n print(f\" - {v}\")\n return 1\n\n print(f\"[Secrets] PASS — {len(CRITICAL_SECRETS)} critical secrets + LLM key validated\")\n return 0\n\n\nif __name__ == \"__main__\":\n sys.exit(main())\n"}}, "backend/scripts/verify_mimo_simple.sh": {"64262a2815277936193ab706ebf73cbec02b9b0c": {"t": 1785595223.642231, "n": 3926, "h": "8992e414336eeaf1", "c": "#!/bin/bash\n# MIMO 集成验证脚本(简化版)\n# 使用 curl 直接调用 MIMO API\n\nset -e\n\n# 从 .env 文件读取配置\nsource .env 2>/dev/null || true\n\nAPI_KEY=\"${XIAOMI_MIMO_API_KEY}\"\nBASE_URL=\"${XIAOMI_MIMO_BASE_URL:-https://api.xiaomimimo.com/v1}\"\nMODEL=\"${XIAOMI_CHAT_MODEL:-mimo-v2-flash}\"\n\necho \"==============================================\"\necho \" MIMO 集成验证\"\necho \"==============================================\"\necho \"\"\necho \"配置信息:\"\necho \" API Key: ${API_KEY:0:10}...\"\necho \" Base URL: $BASE_URL\"\necho \" Model: $MODEL\"\necho \"\"\n\n# 1. 测试基础聊天\necho \"==============================================\"\necho \"1. 测试基础聊天(不带联网搜索)\"\necho \"==============================================\"\n\nRESPONSE=$(curl -s -X POST \"${BASE_URL}/chat/completions\" \\\n -H \"Authorization: Bearer ${API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n -d \"{\n \\\"model\\\": \\\"${MODEL}\\\",\n \\\"messages\\\": [{\\\"role\\\": \\\"user\\\", \\\"content\\\": \\\"你好,请用一句话介绍你自己。\\\"}],\n \\\"max_tokens\\\": 100\n }\")\n\necho \"响应:\"\necho \"$RESPONSE\" | python3 -m json.tool 2>/dev/null || echo \"$RESPONSE\"\necho \"\"\n\n# 检查是否有错误\nERROR=$(echo \"$RESPONSE\" | python3 -c \"import sys,json; d=json.load(sys.stdin); print(d.get('error',''))\" 2>/dev/null)\nif [ -n \"$ERROR\" ]; then\n echo \"❌ 基础聊天失败: $ERROR\"\n exit 1\nfi\n\necho \"✅ 基础聊天成功\"\necho \"\"\n\n# 2. 测试联网搜索\necho \"==============================================\"\necho \"2. 测试联网搜索功能\"\necho \"==============================================\"\n\nRESPONSE=$(curl -s -X POST \"${BASE_URL}/chat/completions\" \\\n -H \"Authorization: Bearer ${API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n -d \"{\n \\\"model\\\": \\\"${MODEL}\\\",\n \\\"messages\\\": [{\\\"role\\\": \\\"user\\\", \\\"content\\\": \\\"今天北京的天气怎么样?请搜索最新信息。\\\"}],\n \\\"tools\\\": [{\\\"type\\\": \\\"web_search\\\"}],\n \\\"max_tokens\\\": 500\n }\")\n\necho \"响应:\"\necho \"$RESPONSE\" | python3 -m json.tool 2>/dev/null || echo \"$RESPONSE\"\necho \"\"\n\n# 检查是否有错误\nERROR=$(echo \"$RESPONSE\" | python3 -c \"import sys,json; d=json.load(sys.stdin); print(d.get('error',''))\" 2>/dev/null)\nif [ -n \"$ERROR\" ]; then\n echo \"❌ 联网搜索失败: $ERROR\"\n exit 1\nfi\n\n# 检查 annotations(联网搜索引用)\nANNOTATIONS=$(echo \"$RESPONSE\" | python3 -c \"\nimport sys, json\nd = json.load(sys.stdin)\nmsg = d.get('choices', [{}])[0].get('message', {})\nanns = msg.get('annotations', [])\nprint(f'找到 {len(anns)} 个搜索引用' if anns else '无搜索引用')\nfor i, a in enumerate(anns[:3], 1):\n print(f' {i}. {a.get(\\\"title\\\", \\\"N/A\\\")}')\n\" 2>/dev/null)\n\necho \"联网搜索引用: $ANNOTATIONS\"\necho \"✅ 联网搜索测试完成\"\necho \"\"\n\n# 3. 测试思考模式\necho \"==============================================\"\necho \"3. 测试思考模式\"\necho \"==============================================\"\n\nRESPONSE=$(curl -s -X POST \"${BASE_URL}/chat/completions\" \\\n -H \"Authorization: Bearer ${API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n -d \"{\n \\\"model\\\": \\\"${MODEL}\\\",\n \\\"messages\\\": [{\\\"role\\\": \\\"user\\\", \\\"content\\\": \\\"请解释一下什么是递归,并给出一个例子。\\\"}],\n \\\"thinking\\\": {\\\"type\\\": \\\"enabled\\\"},\n \\\"max_tokens\\\": 500\n }\")\n\necho \"响应:\"\necho \"$RESPONSE\" | python3 -m json.tool 2>/dev/null || echo \"$RESPONSE\"\necho \"\"\n\n# 检查 reasoning_content\nREASONING=$(echo \"$RESPONSE\" | python3 -c \"\nimport sys, json\nd = json.load(sys.stdin)\nmsg = d.get('choices', [{}])[0].get('message', {})\nrc = msg.get('reasoning_content', '')\nprint(f'思考链长度: {len(rc)} 字符' if rc else '无思考链内容')\n\" 2>/dev/null)\n\necho \"思考链: $REASONING\"\necho \"✅ 思考模式测试完成\"\necho \"\"\n\n# 4. 测试流式响应\necho \"==============================================\"\necho \"4. 测试流式响应\"\necho \"==============================================\"\n\necho \"发送流式请求...\"\ncurl -s -N -X POST \"${BASE_URL}/chat/completions\" \\\n -H \"Authorization: Bearer ${API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n -d \"{\n \\\"model\\\": \\\"${MODEL}\\\",\n \\\"messages\\\": [{\\\"role\\\": \\\"user\\\", \\\"content\\\": \\\"请数到5\\\"}],\n \\\"stream\\\": true,\n \\\"max_tokens\\\": 50\n }\" 2>&1 | head -20\n\necho \"\"\necho \"✅ 流式响应测试完成\"\necho \"\"\n\necho \"==============================================\"\necho \" 🎉 MIMO v2-pro 集成验证完成\"\necho \"==============================================\"\n"}}, ".env.local.example": {"64262a2815277936193ab706ebf73cbec02b9b0c": {"t": 1785745142.4287832, "n": 6570, "h": "11748277c9c03bd9", "c": "# Local host-mode development environment.\n# Copy to `.env` on a workstation where services run on localhost.\n\nENVIRONMENT=development\nDEBUG=True\n\nPOSTGRES_HOST=127.0.0.1\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=change-me\nDATABASE_URL=postgresql+asyncpg://postgres:change-me@127.0.0.1:5432/sparkle\nSPARKLE_DB_PORT=5432\n\nREDIS_HOST=127.0.0.1\nREDIS_PORT=6379\nREDIS_PASSWORD=change-me\nREDIS_URL=redis://:change-me@127.0.0.1:6379/0\n\nMINIO_ROOT_USER=minioadmin\nMINIO_ROOT_PASSWORD=minioadmin\nMINIO_ENDPOINT=127.0.0.1:9000\nMINIO_ACCESS_KEY=minioadmin\nMINIO_SECRET_KEY=minioadmin\nMINIO_BUCKET=sparkle-files\nMINIO_USE_SSL=false\nMINIO_AUTO_CREATE_BUCKET=true\n\nJWT_SECRET=dev_jwt_secret_change_me\nINTERNAL_API_KEY=dev_internal_key\n\nSPARKLE_GATEWAY_PORT=8080\nSPARKLE_API_PORT=8000\nSPARKLE_AGENT_PORT=50051\nSPARKLE_MINIO_API_PORT=9000\nSPARKLE_MINIO_CONSOLE_PORT=9001\n\nBACKEND_URL=http://127.0.0.1:8000\nGATEWAY_INTERNAL_URL=http://127.0.0.1:8080\nOTEL_EXPORTER_OTLP_ENDPOINT=\n\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_dashscope_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=qwen-plus\n\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen-plus\nDASHSCOPE_REASON_MODEL=qwen-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\n\nXIAOMI_MIMO_API_KEY=your_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\n\nSTT_PROVIDER=xunfei\nSTT_ENHANCE_ENABLED=true\nXUNFEI_APP_ID=your_xunfei_app_id\nXUNFEI_API_KEY=your_xunfei_api_key\nXUNFEI_API_SECRET=your_xunfei_api_secret\nXUNFEI_STT_DOMAIN=iat\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# ─── AURORA ADAPTIVE KERNEL ────────────────────────────────────────────────\n# Aurora switches use the tri-state protocol: off → shadow → live.\n# In development, all modes default to \"live\" for full feature testing.\n#\n# OpenClaw delegated execution\n# docker-compose injects host.docker.internal routes for containers automatically.\nOPENCLAW_ENABLED=true\n\nOPENCLAW_TRANSPORT=gateway_ws\n\nOPENCLAW_DEFAULT_AGENT_ID=main\n\nOPENCLAW_DEFAULT_TIMEOUT_SECONDS=300\n\nOPENCLAW_MAX_CONCURRENT_RUNS=3\n\nGRPC_TLS_CERT_PATH=/run/secrets/grpc_server.crt\n\nGRPC_TLS_KEY_PATH=/run/secrets/grpc_server.key\n\n# AGENT_TLS_INSECURE=false # skip cert verification (NOT for production)\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\n\nENABLE_CONTEXT_SEMANTIC_GATING=true\n\nENABLE_CONTEXT_BRIEFING=true\n\nENABLE_CONTEXT_FOCUS_METADATA=true\n\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\n\nENABLE_ADAPTIVE_PRESENTATION=true\n\nENABLE_STRUCTURED_NEXT_ACTIONS=true\n\nENABLE_BLOCKED_TEMPERATURE=true\n\nENABLE_UX_PRESENTATION_METADATA=true\n\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\n\nENABLE_PROACTIVE_INSIGHTS=true\n\nENABLE_PLAN_REASONING_SUMMARY=true\n\nENABLE_WEEKLY_LEARNING_REPORT=true\n\nENABLE_PROGRESS_COMPARISONS=true\n\n# AURORA_DEFAULT_MODE overrides the default for all switches below.\n# Set to \"shadow\" in development to test new Aurora features in observation-only mode.\nAURORA_DEFAULT_MODE=live\n\nAURORA_BAYESIAN_MODE=live\n\nAURORA_POLICY_COMPILER_MODE=live\n\nAURORA_REFLECTION_WIRE_MODE=live\n\nAURORA_SCENE_MODE=live\n\nAURORA_FORESIGHT_MODE=live\n\nAURORA_TRAITS_MODE=live\n\nAURORA_TRAITS_NLP_MODE=live\n\nAURORA_TRAITS_COLDSTART_MODE=live\n\nAURORA_SRL_MODE=live\n\nAURORA_SRL_TRACKER_MODE=live\n\nAURORA_SRL_BRIDGE_MODE=live\n\nAURORA_SRL_SCAFFOLDING_CONSUME_MODE=live\n\nAURORA_METACOG_MODE=live\n\nAURORA_METACOG_DASHBOARD_MODE=live\n\nAURORA_METACOG_PROCESS_SCAFFOLDING_MODE=live\n\nAURORA_METACOG_FSM_COMBINE_MODE=live\n\nAURORA_IDIOGRAPHIC_MODE=live\n\nAURORA_DOC_CONTEXT_DOCUMENT_CONTEXT_INJECTION_MODE=live\n\n# Aurora non-MODE parameters (thresholds, budgets, cooldowns, boolean triggers)\n# Stage 23 - Bayesian Learner\nAURORA_BAYESIAN_LIVE_CANARY_PERCENT=5\n\nAURORA_BAYESIAN_TTL_DAYS=30\n\n# Stage 24 - Policy Compiler\nAURORA_POLICY_DAILY_BUDGET=2\n\nAURORA_POLICY_COOLDOWN_HOURS=24\n\n# Stage 25 - Reflection Wire\nAURORA_REFLECTION_CONTEXT_LIMIT=20\n\nAURORA_REFLECTION_CONTEXT_MAX_TOKENS=800\n\nAURORA_REFLECTION_TRIGGER_TOO_DIFFICULT=true\n\nAURORA_REFLECTION_TRIGGER_UNCLEAR=true\n\nAURORA_REFLECTION_TRIGGER_ABANDONED=true\n\nAURORA_REFLECTION_TRIGGER_INTERVENTION_INEFFECTIVE=true\n\nAURORA_REFLECTION_TRIGGER_PLAN_STALL=true\n\nAURORA_REFLECTION_TRIGGER_OVERLOAD=true\n\n# Stage 26 - Scene Model\nAURORA_SCENE_SIMILARITY_THRESHOLD=0.75\n\nAURORA_SCENE_TIME_WINDOW_HOURS=72\n\nAURORA_SCENE_QUALITY_THRESHOLD=0.6\n\n# Stage 27 - Foresight Engine\nAURORA_FORESIGHT_ATTRACTOR=live\n\nAURORA_FORESIGHT_DEVIATION=live\n\nAURORA_FORESIGHT_JITAI=live\n\nAURORA_FORESIGHT_CACHE_TTL_SECONDS=60\n\nAURORA_FORESIGHT_ATTRACTOR_ALPHA=0.1\n\nAURORA_FORESIGHT_ATTRACTOR_MIN_CONFIDENCE=0.3\n\nAURORA_FORESIGHT_DEVIATION_Z_THRESHOLD=1.5\n\nAURORA_FORESIGHT_JITAI_DAILY_BUDGET=3\n\nAURORA_FORESIGHT_JITAI_COOLDOWN_HOURS=24\n\nAURORA_FORESIGHT_JITAI_MISFIRE_THRESHOLD=0.15\n\n# Stage 28 - Traits\nAURORA_TRAITS_NLP_COOLDOWN_HOURS=24\n\nAURORA_TRAITS_NLP_BIAS_THRESHOLD=0.10\n\nAURORA_TRAITS_NLP_MAX_DAYS=30\n\nAURORA_TRAITS_NLP_MAX_COST_USD=0.003\n\n# Stage 29 - SRL\nAURORA_SRL_MISJUDGMENT_THRESHOLD=0.20\n\nAURORA_SRL_AGGREGATOR_TTL_SECONDS=15\n\n# Stage 30 - Metacognition\nAURORA_METACOG_CACHE_TTL_SECONDS=60\n\nAURORA_METACOG_MIN_SAMPLE_SIZE=20\n\nAURORA_METACOG_PROCESS_TRIGGER_ABS_BIAS=0.30\n\nAURORA_METACOG_PROCESS_COOLDOWN_HOURS=72\n\nAURORA_METACOG_PROXY_REVISION_FREQUENCY=live\n\nAURORA_METACOG_PROXY_SELF_CORRECTION_RATE=live\n\nAURORA_METACOG_PROXY_QUESTION_TO_STATEMENT_RATIO=live\n\nAURORA_METACOG_PROXY_TIME_TO_FIRST_ACTION=live\n\nAURORA_METACOG_PROXY_COMPLETION_VS_ESTIMATE_DELTA_SIGN=live\n\nAURORA_IDIOGRAPHIC_TTL_SECONDS=300\n\n# Stage 40 - Calendar\n# Document Context\nAURORA_DOC_CONTEXT_MODE=auto\n\nAURORA_DOC_CONTEXT_AGGRESSIVE_BUDGET_TOKENS=2200\n\nAURORA_DOC_CONTEXT_SELECTIVE_BUDGET_TOKENS=900\n\nAURORA_DOC_CONTEXT_AMBIGUOUS_BUDGET_TOKENS=500\n\n# Privacy\nAURORA_PRIVACY_PII_REDACTION_MODE=live\n"}, "c61d8d9842fefb535a108141b6c655e2e6243b5a": {"t": 1785747982.7846882, "n": 6570, "h": "11748277c9c03bd9", "c": "# Local host-mode development environment.\n# Copy to `.env` on a workstation where services run on localhost.\n\nENVIRONMENT=development\nDEBUG=True\n\nPOSTGRES_HOST=127.0.0.1\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=change-me\nDATABASE_URL=postgresql+asyncpg://postgres:change-me@127.0.0.1:5432/sparkle\nSPARKLE_DB_PORT=5432\n\nREDIS_HOST=127.0.0.1\nREDIS_PORT=6379\nREDIS_PASSWORD=change-me\nREDIS_URL=redis://:change-me@127.0.0.1:6379/0\n\nMINIO_ROOT_USER=minioadmin\nMINIO_ROOT_PASSWORD=minioadmin\nMINIO_ENDPOINT=127.0.0.1:9000\nMINIO_ACCESS_KEY=minioadmin\nMINIO_SECRET_KEY=minioadmin\nMINIO_BUCKET=sparkle-files\nMINIO_USE_SSL=false\nMINIO_AUTO_CREATE_BUCKET=true\n\nJWT_SECRET=dev_jwt_secret_change_me\nINTERNAL_API_KEY=dev_internal_key\n\nSPARKLE_GATEWAY_PORT=8080\nSPARKLE_API_PORT=8000\nSPARKLE_AGENT_PORT=50051\nSPARKLE_MINIO_API_PORT=9000\nSPARKLE_MINIO_CONSOLE_PORT=9001\n\nBACKEND_URL=http://127.0.0.1:8000\nGATEWAY_INTERNAL_URL=http://127.0.0.1:8080\nOTEL_EXPORTER_OTLP_ENDPOINT=\n\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_dashscope_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=qwen-plus\n\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen-plus\nDASHSCOPE_REASON_MODEL=qwen-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\n\nXIAOMI_MIMO_API_KEY=your_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\n\nSTT_PROVIDER=xunfei\nSTT_ENHANCE_ENABLED=true\nXUNFEI_APP_ID=your_xunfei_app_id\nXUNFEI_API_KEY=your_xunfei_api_key\nXUNFEI_API_SECRET=your_xunfei_api_secret\nXUNFEI_STT_DOMAIN=iat\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# ─── AURORA ADAPTIVE KERNEL ────────────────────────────────────────────────\n# Aurora switches use the tri-state protocol: off → shadow → live.\n# In development, all modes default to \"live\" for full feature testing.\n#\n# OpenClaw delegated execution\n# docker-compose injects host.docker.internal routes for containers automatically.\nOPENCLAW_ENABLED=true\n\nOPENCLAW_TRANSPORT=gateway_ws\n\nOPENCLAW_DEFAULT_AGENT_ID=main\n\nOPENCLAW_DEFAULT_TIMEOUT_SECONDS=300\n\nOPENCLAW_MAX_CONCURRENT_RUNS=3\n\nGRPC_TLS_CERT_PATH=/run/secrets/grpc_server.crt\n\nGRPC_TLS_KEY_PATH=/run/secrets/grpc_server.key\n\n# AGENT_TLS_INSECURE=false # skip cert verification (NOT for production)\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\n\nENABLE_CONTEXT_SEMANTIC_GATING=true\n\nENABLE_CONTEXT_BRIEFING=true\n\nENABLE_CONTEXT_FOCUS_METADATA=true\n\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\n\nENABLE_ADAPTIVE_PRESENTATION=true\n\nENABLE_STRUCTURED_NEXT_ACTIONS=true\n\nENABLE_BLOCKED_TEMPERATURE=true\n\nENABLE_UX_PRESENTATION_METADATA=true\n\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\n\nENABLE_PROACTIVE_INSIGHTS=true\n\nENABLE_PLAN_REASONING_SUMMARY=true\n\nENABLE_WEEKLY_LEARNING_REPORT=true\n\nENABLE_PROGRESS_COMPARISONS=true\n\n# AURORA_DEFAULT_MODE overrides the default for all switches below.\n# Set to \"shadow\" in development to test new Aurora features in observation-only mode.\nAURORA_DEFAULT_MODE=live\n\nAURORA_BAYESIAN_MODE=live\n\nAURORA_POLICY_COMPILER_MODE=live\n\nAURORA_REFLECTION_WIRE_MODE=live\n\nAURORA_SCENE_MODE=live\n\nAURORA_FORESIGHT_MODE=live\n\nAURORA_TRAITS_MODE=live\n\nAURORA_TRAITS_NLP_MODE=live\n\nAURORA_TRAITS_COLDSTART_MODE=live\n\nAURORA_SRL_MODE=live\n\nAURORA_SRL_TRACKER_MODE=live\n\nAURORA_SRL_BRIDGE_MODE=live\n\nAURORA_SRL_SCAFFOLDING_CONSUME_MODE=live\n\nAURORA_METACOG_MODE=live\n\nAURORA_METACOG_DASHBOARD_MODE=live\n\nAURORA_METACOG_PROCESS_SCAFFOLDING_MODE=live\n\nAURORA_METACOG_FSM_COMBINE_MODE=live\n\nAURORA_IDIOGRAPHIC_MODE=live\n\nAURORA_DOC_CONTEXT_DOCUMENT_CONTEXT_INJECTION_MODE=live\n\n# Aurora non-MODE parameters (thresholds, budgets, cooldowns, boolean triggers)\n# Stage 23 - Bayesian Learner\nAURORA_BAYESIAN_LIVE_CANARY_PERCENT=5\n\nAURORA_BAYESIAN_TTL_DAYS=30\n\n# Stage 24 - Policy Compiler\nAURORA_POLICY_DAILY_BUDGET=2\n\nAURORA_POLICY_COOLDOWN_HOURS=24\n\n# Stage 25 - Reflection Wire\nAURORA_REFLECTION_CONTEXT_LIMIT=20\n\nAURORA_REFLECTION_CONTEXT_MAX_TOKENS=800\n\nAURORA_REFLECTION_TRIGGER_TOO_DIFFICULT=true\n\nAURORA_REFLECTION_TRIGGER_UNCLEAR=true\n\nAURORA_REFLECTION_TRIGGER_ABANDONED=true\n\nAURORA_REFLECTION_TRIGGER_INTERVENTION_INEFFECTIVE=true\n\nAURORA_REFLECTION_TRIGGER_PLAN_STALL=true\n\nAURORA_REFLECTION_TRIGGER_OVERLOAD=true\n\n# Stage 26 - Scene Model\nAURORA_SCENE_SIMILARITY_THRESHOLD=0.75\n\nAURORA_SCENE_TIME_WINDOW_HOURS=72\n\nAURORA_SCENE_QUALITY_THRESHOLD=0.6\n\n# Stage 27 - Foresight Engine\nAURORA_FORESIGHT_ATTRACTOR=live\n\nAURORA_FORESIGHT_DEVIATION=live\n\nAURORA_FORESIGHT_JITAI=live\n\nAURORA_FORESIGHT_CACHE_TTL_SECONDS=60\n\nAURORA_FORESIGHT_ATTRACTOR_ALPHA=0.1\n\nAURORA_FORESIGHT_ATTRACTOR_MIN_CONFIDENCE=0.3\n\nAURORA_FORESIGHT_DEVIATION_Z_THRESHOLD=1.5\n\nAURORA_FORESIGHT_JITAI_DAILY_BUDGET=3\n\nAURORA_FORESIGHT_JITAI_COOLDOWN_HOURS=24\n\nAURORA_FORESIGHT_JITAI_MISFIRE_THRESHOLD=0.15\n\n# Stage 28 - Traits\nAURORA_TRAITS_NLP_COOLDOWN_HOURS=24\n\nAURORA_TRAITS_NLP_BIAS_THRESHOLD=0.10\n\nAURORA_TRAITS_NLP_MAX_DAYS=30\n\nAURORA_TRAITS_NLP_MAX_COST_USD=0.003\n\n# Stage 29 - SRL\nAURORA_SRL_MISJUDGMENT_THRESHOLD=0.20\n\nAURORA_SRL_AGGREGATOR_TTL_SECONDS=15\n\n# Stage 30 - Metacognition\nAURORA_METACOG_CACHE_TTL_SECONDS=60\n\nAURORA_METACOG_MIN_SAMPLE_SIZE=20\n\nAURORA_METACOG_PROCESS_TRIGGER_ABS_BIAS=0.30\n\nAURORA_METACOG_PROCESS_COOLDOWN_HOURS=72\n\nAURORA_METACOG_PROXY_REVISION_FREQUENCY=live\n\nAURORA_METACOG_PROXY_SELF_CORRECTION_RATE=live\n\nAURORA_METACOG_PROXY_QUESTION_TO_STATEMENT_RATIO=live\n\nAURORA_METACOG_PROXY_TIME_TO_FIRST_ACTION=live\n\nAURORA_METACOG_PROXY_COMPLETION_VS_ESTIMATE_DELTA_SIGN=live\n\nAURORA_IDIOGRAPHIC_TTL_SECONDS=300\n\n# Stage 40 - Calendar\n# Document Context\nAURORA_DOC_CONTEXT_MODE=auto\n\nAURORA_DOC_CONTEXT_AGGRESSIVE_BUDGET_TOKENS=2200\n\nAURORA_DOC_CONTEXT_SELECTIVE_BUDGET_TOKENS=900\n\nAURORA_DOC_CONTEXT_AMBIGUOUS_BUDGET_TOKENS=500\n\n# Privacy\nAURORA_PRIVACY_PII_REDACTION_MODE=live\n"}, "3b53356cdb12712bacad89ab47465c8d414093a8": {"t": 1785747983.888737, "n": 2411, "h": "92bf290f2caf1118", "c": "# Local host-mode development environment.\n# Copy to `.env` on a workstation where services run on localhost.\n\nENVIRONMENT=development\nDEBUG=True\n\nPOSTGRES_HOST=127.0.0.1\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=change-me\nDATABASE_URL=postgresql+asyncpg://postgres:change-me@127.0.0.1:5432/sparkle\nSPARKLE_DB_PORT=5432\n\nREDIS_HOST=127.0.0.1\nREDIS_PORT=6379\nREDIS_PASSWORD=change-me\nREDIS_URL=redis://:change-me@127.0.0.1:6379/0\n\nMINIO_ROOT_USER=minioadmin\nMINIO_ROOT_PASSWORD=minioadmin\nMINIO_ENDPOINT=127.0.0.1:9000\nMINIO_ACCESS_KEY=minioadmin\nMINIO_SECRET_KEY=minioadmin\nMINIO_BUCKET=sparkle-files\nMINIO_USE_SSL=false\nMINIO_AUTO_CREATE_BUCKET=true\n\nJWT_SECRET=dev_jwt_secret_change_me\nINTERNAL_API_KEY=dev_internal_key\n\nSPARKLE_GATEWAY_PORT=8080\nSPARKLE_API_PORT=8000\nSPARKLE_AGENT_PORT=50051\nSPARKLE_MINIO_API_PORT=9000\nSPARKLE_MINIO_CONSOLE_PORT=9001\n\nBACKEND_URL=http://127.0.0.1:8000\nGATEWAY_INTERNAL_URL=http://127.0.0.1:8080\nOTEL_EXPORTER_OTLP_ENDPOINT=\n\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_dashscope_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=qwen-plus\n\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen-plus\nDASHSCOPE_REASON_MODEL=qwen-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\n\nXIAOMI_MIMO_API_KEY=your_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\n\nSTT_PROVIDER=xunfei\nSTT_ENHANCE_ENABLED=true\nXUNFEI_APP_ID=your_xunfei_app_id\nXUNFEI_API_KEY=your_xunfei_api_key\nXUNFEI_API_SECRET=your_xunfei_api_secret\nXUNFEI_STT_DOMAIN=iat\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n"}}, "backend/.env.example": {"64262a2815277936193ab706ebf73cbec02b9b0c": {"t": 1785747102.3154821, "n": 12422, "h": "522dc95cd098e69c", "c": "# Application Settings\n# ⚠️ Production: ALL values marked \"your_xxx\" or \"replace_with\" MUST be replaced with real secrets.\n# Run `python scripts/check_production_secrets.py` to validate.\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=replace_with_a_32_plus_char_secret_key_value_here # REQUIRED: min 32 chars\nJWT_SECRET=replace_with_a_32_plus_char_jwt_secret_value_here # REQUIRED: min 32 chars\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256 # Set to RS256 in production; requires JWT_PRIVATE_KEY + JWT_PUBLIC_KEY\nJWT_PRIVATE_KEY= # PEM-encoded RSA private key (required for RS256)\nJWT_PUBLIC_KEY= # PEM-encoded RSA public key (required for RS256)\n\n# Sentry Crash Reporting (leave empty to disable)\nSENTRY_DSN=\nSENTRY_ENVIRONMENT=production\nSENTRY_TRACES_SAMPLE_RATE=0.1\n\n# OpenClaw delegated execution\nOPENCLAW_ENABLED=true\nOPENCLAW_TRANSPORT=gateway_ws\nOPENCLAW_DEFAULT_AGENT_ID=main\nOPENCLAW_GATEWAY_URL=http://127.0.0.1:18789\nOPENCLAW_WS_URL=ws://127.0.0.1:18789\nOPENCLAW_WS_DEVICE_IDENTITY_PATH=/absolute/path/to/.openclaw/device.json\nOPENCLAW_DEFAULT_WORKDIR=/absolute/path/to/Sparkle-project\nOPENCLAW_DEFAULT_TIMEOUT_SECONDS=300\nOPENCLAW_MAX_CONCURRENT_RUNS=3\n\n# Social Login — Google\nGOOGLE_CLIENT_ID=your_google_client_id\n\n# Social Login — Apple\nAPPLE_CLIENT_ID=your_apple_client_id\n\n# Social Login — WeChat\nWECHAT_APP_ID=your_wechat_app_id\nWECHAT_APP_SECRET=your_wechat_app_secret\n\n# Email Service\n# EMAIL_ENABLED defaults to false in development and true in production when omitted.\n# Set EMAIL_ENABLED=false explicitly in production only if email verification/reset flows are intentionally disabled.\nEMAIL_ENABLED=\nSMTP_HOST=smtp.example.com\nSMTP_PORT=587\nSMTP_USER=your_smtp_username\nSMTP_PASSWORD=your_smtp_password\nEMAIL_FROM=no-reply@example.com\nEMAIL_FROM_NAME=Sparkle\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_PLUS=\nLLM_TIER_PRO=\nLLM_TIER_REASONING=\nLLM_TIER_MAX=\nLLM_TIER_GLM_BATCH=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_STANDARD_MODEL=mimo-v2-flash\nXIAOMI_PRO_MODEL=MiMo-V2.5\nXIAOMI_TEMPERATURE=0.3\nXIAOMI_PRO_TEMPERATURE=0.3\n\n# MIMO 编码套餐 (可选,Pro 模型走独立 URL)\nXIAOMI_MIMO_TOKEN_PLAN_API_KEY=\nXIAOMI_MIMO_TOKEN_PLAN_BASE_URL=https://token-plan-cn.xiaomimimo.com/v1\n\n# DeepSeek Configuration (v4 models)\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_AIR_MODEL=glm-4.5-air\nZHIPU_LIGHT_MODEL=glm-4.6\nZHIPU_MAX_MODEL=glm-5\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CODING_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\nOCR_PROVIDER=zhipu\nOCR_BACKUP_PROVIDER=siliconflow\n\n# SiliconFlow Configuration (Embedding/Rerank/翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_OCR_TIMEOUT_SECONDS=120\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nSILICONFLOW_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nTRANSLATION_PRIMARY_PROVIDER=hunyuan\nTRANSLATION_BACKUP_PROVIDER=siliconflow\nTRANSLATION_PROVIDER_TIMEOUT_SECONDS=30\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen3.6-plus\nDASHSCOPE_REASON_MODEL=qwen3.6-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_BACKUP_PROVIDER=siliconflow\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_BACKUP_PROVIDER=siliconflow\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nSTT_ENHANCE_ENABLED=true\n\n# GLM Batch\nGLM_BATCH_ENABLED=true\nGLM_BATCH_QUEUE=glm_batch\nGLM_BATCH_MIN_CONCURRENCY=1\nGLM_BATCH_MAX_CONCURRENCY=6\nGLM_BATCH_PEAK_START_HOUR=14\nGLM_BATCH_PEAK_END_HOUR=18\nGLM_BATCH_PEAK_CONCURRENCY=2\nGLM_BATCH_OFFPEAK_DEFAULT_CONCURRENCY=3\nGLM_BATCH_ADAPTIVE_ENABLED=true\nGLM_BATCH_ADAPTIVE_SUCCESS_THRESHOLD=8\nGLM_BATCH_ADAPTIVE_INCREASE_COOLDOWN_SECONDS=180\nGLM_BATCH_ADAPTIVE_RATE_LIMIT_COOLDOWN_SECONDS=300\nGLM_BATCH_SPILLOVER_ENABLED=true\nGLM_BATCH_SPILLOVER_BACKLOG_FACTOR=2\nGLM_BATCH_CAPSULES_ENABLED=true\nGLM_BATCH_COGNITIVE_ANALYSIS_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_key\nXUNFEI_API_SECRET=your_xunfei_secret\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# Production URL (for Flutter deeplinks, CORS, email links)\nPRODUCTION_URL=\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\nENABLE_CONTEXT_SEMANTIC_GATING=true\nENABLE_CONTEXT_BRIEFING=true\nENABLE_CONTEXT_FOCUS_METADATA=true\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\nENABLE_ADAPTIVE_PRESENTATION=true\nENABLE_STRUCTURED_NEXT_ACTIONS=true\nENABLE_BLOCKED_TEMPERATURE=true\nENABLE_UX_PRESENTATION_METADATA=true\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\nENABLE_PROACTIVE_INSIGHTS=true\nENABLE_PLAN_REASONING_SUMMARY=true\nENABLE_WEEKLY_LEARNING_REPORT=true\nENABLE_PROGRESS_COMPARISONS=true\nENABLE_AURORA_RUNTIME_V1=true\nAURORA_DEFAULT_MODE=live\n\n# Aurora tri-state kill switches (off | shadow | live)\nSPARKLE_MEMORY_INFERRED_WRITE_ENABLED=true\nSPARKLE_MEMORY_INFERRED_DRY_RUN_ENABLED=false\nSPARKLE_AGGREGATOR_ENABLED=true\nSPARKLE_ROUTER_SOCIAL_CONTEXT_READ_ENABLED=true\nSPARKLE_ROUTER_USE_AGGREGATOR_PROVIDER=true\nSPARKLE_PUSH_POLICY_ENABLED=true\nSPARKLE_PUSH_DELIVERY_ENABLED=true\nSPARKLE_WORKING_MEMORY_ENABLED=true\nSPARKLE_LLM_EXTRACTOR_ENABLED=true\nSPARKLE_LLM_EXTRACTOR_DRY_RUN_ENABLED=false\nSPARKLE_CONSOLIDATION_ENABLED=true\nSPARKLE_CONFLICT_RESOLVER_SHADOW_MODE=false\nSPARKLE_ROUTER_SUFFICIENCY_BRANCH_ENABLED=true\nSPARKLE_SKILL_EXTRACT_ENABLED=true\nSPARKLE_SKILL_SELECTION_ENABLED=true\nSPARKLE_SKILL_SHARE_ENABLED=true\nSPARKLE_SKILL_SHARE_MOCK_REVIEW_ENABLED=false\nSPARKLE_PROMPT_SOCIAL_CONTEXT_RENDER_ENABLED=true\nAURORA_STAGE18_AGGREGATOR_MODE=live\nAURORA_STAGE18_PUSH_POLICY_MODE=live\nAURORA_STAGE18_PUSH_DELIVERY_MODE=live\nAURORA_STAGE19_WORKING_MEMORY_MODE=live\nAURORA_STAGE19_LLM_EXTRACTOR_MODE=live\nAURORA_STAGE19_CONSOLIDATION_MODE=live\nAURORA_STAGE21_SKILL_STORE_MODE=live\nAURORA_STAGE21_SKILL_SELECTION_MODE=live\nAURORA_STAGE21_SKILL_SHARE_MODE=live\nAURORA_BAYESIAN_MODE=live\nAURORA_POLICY_COMPILER_MODE=live\nAURORA_REFLECTION_WIRE_MODE=live\nAURORA_SCENE_MODE=live\nAURORA_FORESIGHT_MODE=live\nAURORA_TRAITS_MODE=live\nAURORA_TRAITS_NLP_MODE=live\nAURORA_TRAITS_COLDSTART_MODE=live\nAURORA_SRL_MODE=live\nAURORA_SRL_TRACKER_MODE=live\nAURORA_SRL_BRIDGE_MODE=live\nAURORA_SRL_SCAFFOLDING_CONSUME_MODE=live\nAURORA_METACOG_MODE=live\nAURORA_METACOG_DASHBOARD_MODE=live\nAURORA_METACOG_PROCESS_SCAFFOLDING_MODE=live\nAURORA_METACOG_FSM_COMBINE_MODE=live\nAURORA_IDIOGRAPHIC_MODE=live\nAURORA_STAGE33_MODE=live\nAURORA_STAGE33_SOCIAL_MODE=live\nAURORA_STAGE33_SRL_MODE=live\nAURORA_STAGE33_WM_PROMPT_MODE=live\nAURORA_STAGE33_EVENTS_MODE=live\nAURORA_STAGE34_MODE=live\nAURORA_STAGE34_ERROR_BRIDGE_MODE=live\nAURORA_STAGE34_CAPSULE_MODE=live\nAURORA_STAGE34_JOURNEY_SUBSCRIBERS_MODE=live\nAURORA_STAGE35_MODE=live\nAURORA_STAGE35_METACOG_ROUTER_MODE=live\nAURORA_STAGE38_ERR_REPLAN_MODE=live\nAURORA_STAGE38_PUSH_SCHEDULER_MODE=live\nAURORA_DOC_CONTEXT_DOCUMENT_CONTEXT_INJECTION_MODE=live\n\n# Aurora non-MODE parameters (thresholds, budgets, cooldowns, boolean triggers)\n# Stage 23 — Bayesian Learner\nAURORA_BAYESIAN_LIVE_CANARY_PERCENT=5\nAURORA_BAYESIAN_TTL_DAYS=30\n# Stage 24 — Policy Compiler\nAURORA_POLICY_DAILY_BUDGET=2\nAURORA_POLICY_COOLDOWN_HOURS=24\n# Stage 25 — Reflection Wire\nAURORA_REFLECTION_CONTEXT_LIMIT=20\nAURORA_REFLECTION_CONTEXT_MAX_TOKENS=800\nAURORA_REFLECTION_TRIGGER_TOO_DIFFICULT=true\nAURORA_REFLECTION_TRIGGER_UNCLEAR=true\nAURORA_REFLECTION_TRIGGER_ABANDONED=true\nAURORA_REFLECTION_TRIGGER_INTERVENTION_INEFFECTIVE=true\nAURORA_REFLECTION_TRIGGER_PLAN_STALL=true\nAURORA_REFLECTION_TRIGGER_OVERLOAD=true\n# Stage 26 — Scene Model\nAURORA_SCENE_SIMILARITY_THRESHOLD=0.75\nAURORA_SCENE_TIME_WINDOW_HOURS=72\nAURORA_SCENE_QUALITY_THRESHOLD=0.6\n# Stage 27 — Foresight Engine\nAURORA_FORESIGHT_ATTRACTOR=live\nAURORA_FORESIGHT_DEVIATION=live\nAURORA_FORESIGHT_JITAI=live\nAURORA_FORESIGHT_CACHE_TTL_SECONDS=60\nAURORA_FORESIGHT_ATTRACTOR_ALPHA=0.1\nAURORA_FORESIGHT_ATTRACTOR_MIN_CONFIDENCE=0.3\nAURORA_FORESIGHT_DEVIATION_Z_THRESHOLD=1.5\nAURORA_FORESIGHT_JITAI_DAILY_BUDGET=3\nAURORA_FORESIGHT_JITAI_COOLDOWN_HOURS=24\nAURORA_FORESIGHT_JITAI_MISFIRE_THRESHOLD=0.15\n# Stage 28 — Traits\nAURORA_TRAITS_NLP_COOLDOWN_HOURS=24\nAURORA_TRAITS_NLP_BIAS_THRESHOLD=0.10\nAURORA_TRAITS_NLP_MAX_DAYS=30\nAURORA_TRAITS_NLP_MAX_COST_USD=0.003\nAURORA_TRAITS_NLP_P95_MS_BUDGET=800\n# Stage 29 — SRL\nAURORA_SRL_EVENT_LAG_P95_THRESHOLD_SECONDS=5.0\nAURORA_SRL_MISJUDGMENT_THRESHOLD=0.20\nAURORA_SRL_TRACKER_P95_MS_BUDGET=20\nAURORA_SRL_AGGREGATOR_TTL_SECONDS=15\n# Stage 30 — Metacognition\nAURORA_METACOG_CACHE_TTL_SECONDS=60\nAURORA_METACOG_MIN_SAMPLE_SIZE=20\nAURORA_METACOG_PROCESS_TRIGGER_ABS_BIAS=0.30\nAURORA_METACOG_PROCESS_COOLDOWN_HOURS=72\nAURORA_METACOG_P95_MS_BUDGET=100\nAURORA_METACOG_PROXY_REVISION_FREQUENCY=live\nAURORA_METACOG_PROXY_SELF_CORRECTION_RATE=live\nAURORA_METACOG_PROXY_QUESTION_TO_STATEMENT_RATIO=live\nAURORA_METACOG_PROXY_TIME_TO_FIRST_ACTION=live\nAURORA_METACOG_PROXY_COMPLETION_VS_ESTIMATE_DELTA_SIGN=live\nAURORA_IDIOGRAPHIC_TTL_SECONDS=300\n# Stage 37 — LLM Safety\nAURORA_STAGE37_LLM_SAFETY_MODE=live\n# Stage 38 — Error Replan + Push Scheduler\nAURORA_STAGE38_PUSH_SCHEDULER_INTERVAL_MINUTES=5\n# Stage 39 — Scaffolding + Cognitive Load + Galaxy\nAURORA_STAGE39_MODE=live\nAURORA_STAGE39_SCAFFOLDING_PROMPT_MODE=live\nAURORA_STAGE39_COGLOAD_ROUTE_MODE=live\nAURORA_STAGE39_GALAXY_INJECT_MODE=live\n# Stage 40 — Calendar\nAURORA_STAGE40_CALENDAR_MODE=live\n# Document Context\nAURORA_DOC_CONTEXT_MODE=auto\nAURORA_DOC_CONTEXT_AGGRESSIVE_BUDGET_TOKENS=2200\nAURORA_DOC_CONTEXT_SELECTIVE_BUDGET_TOKENS=900\nAURORA_DOC_CONTEXT_AMBIGUOUS_BUDGET_TOKENS=500\n# Privacy\nAURORA_PRIVACY_PII_REDACTION_MODE=live\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# GLM OCR (Document Cleaning via Zhipu)\n# ZHIPU_API_KEY=your_zhipu_api_key\n# ZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n# ZHIPU_OCR_MODEL=glm-ocr\n"}, "99f494951e00c863f6e70a73ca67e0217dd9924b": {"t": 1785747980.465457, "n": 12422, "h": "522dc95cd098e69c", "c": "# Application Settings\n# ⚠️ Production: ALL values marked \"your_xxx\" or \"replace_with\" MUST be replaced with real secrets.\n# Run `python scripts/check_production_secrets.py` to validate.\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=replace_with_a_32_plus_char_secret_key_value_here # REQUIRED: min 32 chars\nJWT_SECRET=replace_with_a_32_plus_char_jwt_secret_value_here # REQUIRED: min 32 chars\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256 # Set to RS256 in production; requires JWT_PRIVATE_KEY + JWT_PUBLIC_KEY\nJWT_PRIVATE_KEY= # PEM-encoded RSA private key (required for RS256)\nJWT_PUBLIC_KEY= # PEM-encoded RSA public key (required for RS256)\n\n# Sentry Crash Reporting (leave empty to disable)\nSENTRY_DSN=\nSENTRY_ENVIRONMENT=production\nSENTRY_TRACES_SAMPLE_RATE=0.1\n\n# OpenClaw delegated execution\nOPENCLAW_ENABLED=true\nOPENCLAW_TRANSPORT=gateway_ws\nOPENCLAW_DEFAULT_AGENT_ID=main\nOPENCLAW_GATEWAY_URL=http://127.0.0.1:18789\nOPENCLAW_WS_URL=ws://127.0.0.1:18789\nOPENCLAW_WS_DEVICE_IDENTITY_PATH=/absolute/path/to/.openclaw/device.json\nOPENCLAW_DEFAULT_WORKDIR=/absolute/path/to/Sparkle-project\nOPENCLAW_DEFAULT_TIMEOUT_SECONDS=300\nOPENCLAW_MAX_CONCURRENT_RUNS=3\n\n# Social Login — Google\nGOOGLE_CLIENT_ID=your_google_client_id\n\n# Social Login — Apple\nAPPLE_CLIENT_ID=your_apple_client_id\n\n# Social Login — WeChat\nWECHAT_APP_ID=your_wechat_app_id\nWECHAT_APP_SECRET=your_wechat_app_secret\n\n# Email Service\n# EMAIL_ENABLED defaults to false in development and true in production when omitted.\n# Set EMAIL_ENABLED=false explicitly in production only if email verification/reset flows are intentionally disabled.\nEMAIL_ENABLED=\nSMTP_HOST=smtp.example.com\nSMTP_PORT=587\nSMTP_USER=your_smtp_username\nSMTP_PASSWORD=your_smtp_password\nEMAIL_FROM=no-reply@example.com\nEMAIL_FROM_NAME=Sparkle\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_PLUS=\nLLM_TIER_PRO=\nLLM_TIER_REASONING=\nLLM_TIER_MAX=\nLLM_TIER_GLM_BATCH=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_STANDARD_MODEL=mimo-v2-flash\nXIAOMI_PRO_MODEL=MiMo-V2.5\nXIAOMI_TEMPERATURE=0.3\nXIAOMI_PRO_TEMPERATURE=0.3\n\n# MIMO 编码套餐 (可选,Pro 模型走独立 URL)\nXIAOMI_MIMO_TOKEN_PLAN_API_KEY=\nXIAOMI_MIMO_TOKEN_PLAN_BASE_URL=https://token-plan-cn.xiaomimimo.com/v1\n\n# DeepSeek Configuration (v4 models)\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_AIR_MODEL=glm-4.5-air\nZHIPU_LIGHT_MODEL=glm-4.6\nZHIPU_MAX_MODEL=glm-5\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CODING_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\nOCR_PROVIDER=zhipu\nOCR_BACKUP_PROVIDER=siliconflow\n\n# SiliconFlow Configuration (Embedding/Rerank/翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_OCR_TIMEOUT_SECONDS=120\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nSILICONFLOW_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nTRANSLATION_PRIMARY_PROVIDER=hunyuan\nTRANSLATION_BACKUP_PROVIDER=siliconflow\nTRANSLATION_PROVIDER_TIMEOUT_SECONDS=30\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen3.6-plus\nDASHSCOPE_REASON_MODEL=qwen3.6-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_BACKUP_PROVIDER=siliconflow\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_BACKUP_PROVIDER=siliconflow\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nSTT_ENHANCE_ENABLED=true\n\n# GLM Batch\nGLM_BATCH_ENABLED=true\nGLM_BATCH_QUEUE=glm_batch\nGLM_BATCH_MIN_CONCURRENCY=1\nGLM_BATCH_MAX_CONCURRENCY=6\nGLM_BATCH_PEAK_START_HOUR=14\nGLM_BATCH_PEAK_END_HOUR=18\nGLM_BATCH_PEAK_CONCURRENCY=2\nGLM_BATCH_OFFPEAK_DEFAULT_CONCURRENCY=3\nGLM_BATCH_ADAPTIVE_ENABLED=true\nGLM_BATCH_ADAPTIVE_SUCCESS_THRESHOLD=8\nGLM_BATCH_ADAPTIVE_INCREASE_COOLDOWN_SECONDS=180\nGLM_BATCH_ADAPTIVE_RATE_LIMIT_COOLDOWN_SECONDS=300\nGLM_BATCH_SPILLOVER_ENABLED=true\nGLM_BATCH_SPILLOVER_BACKLOG_FACTOR=2\nGLM_BATCH_CAPSULES_ENABLED=true\nGLM_BATCH_COGNITIVE_ANALYSIS_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_key\nXUNFEI_API_SECRET=your_xunfei_secret\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# Production URL (for Flutter deeplinks, CORS, email links)\nPRODUCTION_URL=\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\nENABLE_CONTEXT_SEMANTIC_GATING=true\nENABLE_CONTEXT_BRIEFING=true\nENABLE_CONTEXT_FOCUS_METADATA=true\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\nENABLE_ADAPTIVE_PRESENTATION=true\nENABLE_STRUCTURED_NEXT_ACTIONS=true\nENABLE_BLOCKED_TEMPERATURE=true\nENABLE_UX_PRESENTATION_METADATA=true\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\nENABLE_PROACTIVE_INSIGHTS=true\nENABLE_PLAN_REASONING_SUMMARY=true\nENABLE_WEEKLY_LEARNING_REPORT=true\nENABLE_PROGRESS_COMPARISONS=true\nENABLE_AURORA_RUNTIME_V1=true\nAURORA_DEFAULT_MODE=live\n\n# Aurora tri-state kill switches (off | shadow | live)\nSPARKLE_MEMORY_INFERRED_WRITE_ENABLED=true\nSPARKLE_MEMORY_INFERRED_DRY_RUN_ENABLED=false\nSPARKLE_AGGREGATOR_ENABLED=true\nSPARKLE_ROUTER_SOCIAL_CONTEXT_READ_ENABLED=true\nSPARKLE_ROUTER_USE_AGGREGATOR_PROVIDER=true\nSPARKLE_PUSH_POLICY_ENABLED=true\nSPARKLE_PUSH_DELIVERY_ENABLED=true\nSPARKLE_WORKING_MEMORY_ENABLED=true\nSPARKLE_LLM_EXTRACTOR_ENABLED=true\nSPARKLE_LLM_EXTRACTOR_DRY_RUN_ENABLED=false\nSPARKLE_CONSOLIDATION_ENABLED=true\nSPARKLE_CONFLICT_RESOLVER_SHADOW_MODE=false\nSPARKLE_ROUTER_SUFFICIENCY_BRANCH_ENABLED=true\nSPARKLE_SKILL_EXTRACT_ENABLED=true\nSPARKLE_SKILL_SELECTION_ENABLED=true\nSPARKLE_SKILL_SHARE_ENABLED=true\nSPARKLE_SKILL_SHARE_MOCK_REVIEW_ENABLED=false\nSPARKLE_PROMPT_SOCIAL_CONTEXT_RENDER_ENABLED=true\nAURORA_STAGE18_AGGREGATOR_MODE=live\nAURORA_STAGE18_PUSH_POLICY_MODE=live\nAURORA_STAGE18_PUSH_DELIVERY_MODE=live\nAURORA_STAGE19_WORKING_MEMORY_MODE=live\nAURORA_STAGE19_LLM_EXTRACTOR_MODE=live\nAURORA_STAGE19_CONSOLIDATION_MODE=live\nAURORA_STAGE21_SKILL_STORE_MODE=live\nAURORA_STAGE21_SKILL_SELECTION_MODE=live\nAURORA_STAGE21_SKILL_SHARE_MODE=live\nAURORA_BAYESIAN_MODE=live\nAURORA_POLICY_COMPILER_MODE=live\nAURORA_REFLECTION_WIRE_MODE=live\nAURORA_SCENE_MODE=live\nAURORA_FORESIGHT_MODE=live\nAURORA_TRAITS_MODE=live\nAURORA_TRAITS_NLP_MODE=live\nAURORA_TRAITS_COLDSTART_MODE=live\nAURORA_SRL_MODE=live\nAURORA_SRL_TRACKER_MODE=live\nAURORA_SRL_BRIDGE_MODE=live\nAURORA_SRL_SCAFFOLDING_CONSUME_MODE=live\nAURORA_METACOG_MODE=live\nAURORA_METACOG_DASHBOARD_MODE=live\nAURORA_METACOG_PROCESS_SCAFFOLDING_MODE=live\nAURORA_METACOG_FSM_COMBINE_MODE=live\nAURORA_IDIOGRAPHIC_MODE=live\nAURORA_STAGE33_MODE=live\nAURORA_STAGE33_SOCIAL_MODE=live\nAURORA_STAGE33_SRL_MODE=live\nAURORA_STAGE33_WM_PROMPT_MODE=live\nAURORA_STAGE33_EVENTS_MODE=live\nAURORA_STAGE34_MODE=live\nAURORA_STAGE34_ERROR_BRIDGE_MODE=live\nAURORA_STAGE34_CAPSULE_MODE=live\nAURORA_STAGE34_JOURNEY_SUBSCRIBERS_MODE=live\nAURORA_STAGE35_MODE=live\nAURORA_STAGE35_METACOG_ROUTER_MODE=live\nAURORA_STAGE38_ERR_REPLAN_MODE=live\nAURORA_STAGE38_PUSH_SCHEDULER_MODE=live\nAURORA_DOC_CONTEXT_DOCUMENT_CONTEXT_INJECTION_MODE=live\n\n# Aurora non-MODE parameters (thresholds, budgets, cooldowns, boolean triggers)\n# Stage 23 — Bayesian Learner\nAURORA_BAYESIAN_LIVE_CANARY_PERCENT=5\nAURORA_BAYESIAN_TTL_DAYS=30\n# Stage 24 — Policy Compiler\nAURORA_POLICY_DAILY_BUDGET=2\nAURORA_POLICY_COOLDOWN_HOURS=24\n# Stage 25 — Reflection Wire\nAURORA_REFLECTION_CONTEXT_LIMIT=20\nAURORA_REFLECTION_CONTEXT_MAX_TOKENS=800\nAURORA_REFLECTION_TRIGGER_TOO_DIFFICULT=true\nAURORA_REFLECTION_TRIGGER_UNCLEAR=true\nAURORA_REFLECTION_TRIGGER_ABANDONED=true\nAURORA_REFLECTION_TRIGGER_INTERVENTION_INEFFECTIVE=true\nAURORA_REFLECTION_TRIGGER_PLAN_STALL=true\nAURORA_REFLECTION_TRIGGER_OVERLOAD=true\n# Stage 26 — Scene Model\nAURORA_SCENE_SIMILARITY_THRESHOLD=0.75\nAURORA_SCENE_TIME_WINDOW_HOURS=72\nAURORA_SCENE_QUALITY_THRESHOLD=0.6\n# Stage 27 — Foresight Engine\nAURORA_FORESIGHT_ATTRACTOR=live\nAURORA_FORESIGHT_DEVIATION=live\nAURORA_FORESIGHT_JITAI=live\nAURORA_FORESIGHT_CACHE_TTL_SECONDS=60\nAURORA_FORESIGHT_ATTRACTOR_ALPHA=0.1\nAURORA_FORESIGHT_ATTRACTOR_MIN_CONFIDENCE=0.3\nAURORA_FORESIGHT_DEVIATION_Z_THRESHOLD=1.5\nAURORA_FORESIGHT_JITAI_DAILY_BUDGET=3\nAURORA_FORESIGHT_JITAI_COOLDOWN_HOURS=24\nAURORA_FORESIGHT_JITAI_MISFIRE_THRESHOLD=0.15\n# Stage 28 — Traits\nAURORA_TRAITS_NLP_COOLDOWN_HOURS=24\nAURORA_TRAITS_NLP_BIAS_THRESHOLD=0.10\nAURORA_TRAITS_NLP_MAX_DAYS=30\nAURORA_TRAITS_NLP_MAX_COST_USD=0.003\nAURORA_TRAITS_NLP_P95_MS_BUDGET=800\n# Stage 29 — SRL\nAURORA_SRL_EVENT_LAG_P95_THRESHOLD_SECONDS=5.0\nAURORA_SRL_MISJUDGMENT_THRESHOLD=0.20\nAURORA_SRL_TRACKER_P95_MS_BUDGET=20\nAURORA_SRL_AGGREGATOR_TTL_SECONDS=15\n# Stage 30 — Metacognition\nAURORA_METACOG_CACHE_TTL_SECONDS=60\nAURORA_METACOG_MIN_SAMPLE_SIZE=20\nAURORA_METACOG_PROCESS_TRIGGER_ABS_BIAS=0.30\nAURORA_METACOG_PROCESS_COOLDOWN_HOURS=72\nAURORA_METACOG_P95_MS_BUDGET=100\nAURORA_METACOG_PROXY_REVISION_FREQUENCY=live\nAURORA_METACOG_PROXY_SELF_CORRECTION_RATE=live\nAURORA_METACOG_PROXY_QUESTION_TO_STATEMENT_RATIO=live\nAURORA_METACOG_PROXY_TIME_TO_FIRST_ACTION=live\nAURORA_METACOG_PROXY_COMPLETION_VS_ESTIMATE_DELTA_SIGN=live\nAURORA_IDIOGRAPHIC_TTL_SECONDS=300\n# Stage 37 — LLM Safety\nAURORA_STAGE37_LLM_SAFETY_MODE=live\n# Stage 38 — Error Replan + Push Scheduler\nAURORA_STAGE38_PUSH_SCHEDULER_INTERVAL_MINUTES=5\n# Stage 39 — Scaffolding + Cognitive Load + Galaxy\nAURORA_STAGE39_MODE=live\nAURORA_STAGE39_SCAFFOLDING_PROMPT_MODE=live\nAURORA_STAGE39_COGLOAD_ROUTE_MODE=live\nAURORA_STAGE39_GALAXY_INJECT_MODE=live\n# Stage 40 — Calendar\nAURORA_STAGE40_CALENDAR_MODE=live\n# Document Context\nAURORA_DOC_CONTEXT_MODE=auto\nAURORA_DOC_CONTEXT_AGGRESSIVE_BUDGET_TOKENS=2200\nAURORA_DOC_CONTEXT_SELECTIVE_BUDGET_TOKENS=900\nAURORA_DOC_CONTEXT_AMBIGUOUS_BUDGET_TOKENS=500\n# Privacy\nAURORA_PRIVACY_PII_REDACTION_MODE=live\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# GLM OCR (Document Cleaning via Zhipu)\n# ZHIPU_API_KEY=your_zhipu_api_key\n# ZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n# ZHIPU_OCR_MODEL=glm-ocr\n"}, "74c6f749f11a01adaeafca12d6ec2b7dd7f4f003": {"t": 1785747982.0796149, "n": 12425, "h": "5abdca901519c1d5", "c": "# Application Settings\n# ⚠️ Production: ALL values marked \"your_xxx\" or \"replace_with\" MUST be replaced with real secrets.\n# Run `python scripts/check_production_secrets.py` to validate.\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=replace_with_a_32_plus_char_secret_key_value_here # REQUIRED: min 32 chars\nJWT_SECRET=replace_with_a_32_plus_char_jwt_secret_value_here # REQUIRED: min 32 chars\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256 # Set to RS256 in production; requires JWT_PRIVATE_KEY + JWT_PUBLIC_KEY\nJWT_PRIVATE_KEY= # PEM-encoded RSA private key (required for RS256)\nJWT_PUBLIC_KEY= # PEM-encoded RSA public key (required for RS256)\n\n# Sentry Crash Reporting (leave empty to disable)\nSENTRY_DSN=\nSENTRY_ENVIRONMENT=production\nSENTRY_TRACES_SAMPLE_RATE=0.1\n\n# OpenClaw delegated execution\nOPENCLAW_ENABLED=true\nOPENCLAW_TRANSPORT=gateway_ws\nOPENCLAW_DEFAULT_AGENT_ID=main\nOPENCLAW_GATEWAY_URL=http://127.0.0.1:18789\nOPENCLAW_WS_URL=ws://127.0.0.1:18789\nOPENCLAW_WS_DEVICE_IDENTITY_PATH=/absolute/path/to/.openclaw/device.json\nOPENCLAW_DEFAULT_WORKDIR=/absolute/path/to/Sparkle-project\nOPENCLAW_DEFAULT_TIMEOUT_SECONDS=300\nOPENCLAW_MAX_CONCURRENT_RUNS=3\n\n# Social Login — Google\nGOOGLE_CLIENT_ID=your_google_client_id\n\n# Social Login — Apple\nAPPLE_CLIENT_ID=your_apple_client_id\n\n# Social Login — WeChat\nWECHAT_APP_ID=your_wechat_app_id\nWECHAT_APP_SECRET=your_wechat_app_secret\n\n# Email Service\n# EMAIL_ENABLED defaults to false in development and true in production when omitted.\n# Set EMAIL_ENABLED=false explicitly in production only if email verification/reset flows are intentionally disabled.\nEMAIL_ENABLED=\nSMTP_HOST=smtp.example.com\nSMTP_PORT=587\nSMTP_USER=your_smtp_username\nSMTP_PASSWORD=your_smtp_password\nEMAIL_FROM=no-reply@example.com\nEMAIL_FROM_NAME=Sparkle\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_PLUS=\nLLM_TIER_PRO=\nLLM_TIER_REASONING=\nLLM_TIER_MAX=\nLLM_TIER_GLM_BATCH=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_STANDARD_MODEL=mimo-v2-flash\nXIAOMI_PRO_MODEL=MiMo-V2.5\nXIAOMI_TEMPERATURE=0.3\nXIAOMI_PRO_TEMPERATURE=0.3\n\n# MIMO 编码套餐 (可选,Pro 模型走独立 URL)\nXIAOMI_MIMO_TOKEN_PLAN_API_KEY=\nXIAOMI_MIMO_TOKEN_PLAN_BASE_URL=https://token-plan-cn.xiaomimimo.com/v1\n\n# DeepSeek Configuration (v4 models)\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_AIR_MODEL=glm-4.5-air\nZHIPU_LIGHT_MODEL=glm-4.6\nZHIPU_MAX_MODEL=glm-5\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CODING_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\nOCR_PROVIDER=zhipu\nOCR_BACKUP_PROVIDER=siliconflow\n\n# SiliconFlow Configuration (Embedding/Rerank/翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_OCR_TIMEOUT_SECONDS=120\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nSILICONFLOW_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nTRANSLATION_PRIMARY_PROVIDER=hunyuan\nTRANSLATION_BACKUP_PROVIDER=siliconflow\nTRANSLATION_PROVIDER_TIMEOUT_SECONDS=30\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen3.6-plus\nDASHSCOPE_REASON_MODEL=qwen3.6-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_BACKUP_PROVIDER=siliconflow\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_BACKUP_PROVIDER=siliconflow\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nSTT_ENHANCE_ENABLED=true\n\n# GLM Batch\nGLM_BATCH_ENABLED=true\nGLM_BATCH_QUEUE=glm_batch\nGLM_BATCH_MIN_CONCURRENCY=1\nGLM_BATCH_MAX_CONCURRENCY=6\nGLM_BATCH_PEAK_START_HOUR=14\nGLM_BATCH_PEAK_END_HOUR=18\nGLM_BATCH_PEAK_CONCURRENCY=2\nGLM_BATCH_OFFPEAK_DEFAULT_CONCURRENCY=3\nGLM_BATCH_ADAPTIVE_ENABLED=true\nGLM_BATCH_ADAPTIVE_SUCCESS_THRESHOLD=8\nGLM_BATCH_ADAPTIVE_INCREASE_COOLDOWN_SECONDS=180\nGLM_BATCH_ADAPTIVE_RATE_LIMIT_COOLDOWN_SECONDS=300\nGLM_BATCH_SPILLOVER_ENABLED=true\nGLM_BATCH_SPILLOVER_BACKLOG_FACTOR=2\nGLM_BATCH_CAPSULES_ENABLED=true\nGLM_BATCH_COGNITIVE_ANALYSIS_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_key\nXUNFEI_API_SECRET=your_xunfei_secret\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# Production URL (for Flutter deeplinks, CORS, email links)\nPRODUCTION_URL=\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\nENABLE_CONTEXT_SEMANTIC_GATING=true\nENABLE_CONTEXT_BRIEFING=true\nENABLE_CONTEXT_FOCUS_METADATA=true\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\nENABLE_ADAPTIVE_PRESENTATION=true\nENABLE_STRUCTURED_NEXT_ACTIONS=true\nENABLE_BLOCKED_TEMPERATURE=true\nENABLE_UX_PRESENTATION_METADATA=true\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\nENABLE_PROACTIVE_INSIGHTS=true\nENABLE_PLAN_REASONING_SUMMARY=true\nENABLE_WEEKLY_LEARNING_REPORT=true\nENABLE_PROGRESS_COMPARISONS=true\nENABLE_AURORA_RUNTIME_V1=true\nAURORA_DEFAULT_MODE=live\n\n# Aurora tri-state kill switches (off | shadow | live)\nSPARKLE_MEMORY_INFERRED_WRITE_ENABLED=true\nSPARKLE_MEMORY_INFERRED_DRY_RUN_ENABLED=false\nSPARKLE_AGGREGATOR_ENABLED=true\nSPARKLE_ROUTER_SOCIAL_CONTEXT_READ_ENABLED=true\nSPARKLE_ROUTER_USE_AGGREGATOR_PROVIDER=true\nSPARKLE_PUSH_POLICY_ENABLED=true\nSPARKLE_PUSH_DELIVERY_ENABLED=true\nSPARKLE_WORKING_MEMORY_ENABLED=true\nSPARKLE_LLM_EXTRACTOR_ENABLED=true\nSPARKLE_LLM_EXTRACTOR_DRY_RUN_ENABLED=false\nSPARKLE_CONSOLIDATION_ENABLED=true\nSPARKLE_CONFLICT_RESOLVER_SHADOW_MODE=false\nSPARKLE_ROUTER_SUFFICIENCY_BRANCH_ENABLED=true\nSPARKLE_SKILL_EXTRACT_ENABLED=true\nSPARKLE_SKILL_SELECTION_ENABLED=true\nSPARKLE_SKILL_SHARE_ENABLED=true\nSPARKLE_SKILL_SHARE_MOCK_REVIEW_ENABLED=false\nSPARKLE_PROMPT_SOCIAL_CONTEXT_RENDER_ENABLED=true\nAURORA_STAGE18_AGGREGATOR_MODE=live\nAURORA_STAGE18_PUSH_POLICY_MODE=live\nAURORA_STAGE18_PUSH_DELIVERY_MODE=live\nAURORA_STAGE19_WORKING_MEMORY_MODE=live\nAURORA_STAGE19_LLM_EXTRACTOR_MODE=live\nAURORA_STAGE19_CONSOLIDATION_MODE=live\nAURORA_STAGE21_SKILL_STORE_MODE=live\nAURORA_STAGE21_SKILL_SELECTION_MODE=live\nAURORA_STAGE21_SKILL_SHARE_MODE=live\nAURORA_BAYESIAN_MODE=live\nAURORA_POLICY_COMPILER_MODE=live\nAURORA_REFLECTION_WIRE_MODE=live\nAURORA_SCENE_MODE=live\nAURORA_FORESIGHT_MODE=live\nAURORA_TRAITS_MODE=live\nAURORA_TRAITS_NLP_MODE=live\nAURORA_TRAITS_COLDSTART_MODE=live\nAURORA_SRL_MODE=live\nAURORA_SRL_TRACKER_MODE=live\nAURORA_SRL_BRIDGE_MODE=live\nAURORA_SRL_SCAFFOLDING_CONSUME_MODE=live\nAURORA_METACOG_MODE=live\nAURORA_METACOG_DASHBOARD_MODE=live\nAURORA_METACOG_PROCESS_SCAFFOLDING_MODE=live\nAURORA_METACOG_FSM_COMBINE_MODE=live\nAURORA_IDIOGRAPHIC_MODE=live\nAURORA_STAGE33_MODE=live\nAURORA_STAGE33_SOCIAL_MODE=live\nAURORA_STAGE33_SRL_MODE=live\nAURORA_STAGE33_WM_PROMPT_MODE=live\nAURORA_STAGE33_EVENTS_MODE=live\nAURORA_STAGE34_MODE=live\nAURORA_STAGE34_ERROR_BRIDGE_MODE=live\nAURORA_STAGE34_CAPSULE_MODE=live\nAURORA_STAGE34_JOURNEY_SUBSCRIBERS_ENABLED=live\nAURORA_STAGE35_MODE=live\nAURORA_STAGE35_METACOG_ROUTER_MODE=live\nAURORA_STAGE38_ERR_REPLAN_MODE=live\nAURORA_STAGE38_PUSH_SCHEDULER_MODE=live\nAURORA_DOC_CONTEXT_DOCUMENT_CONTEXT_INJECTION_MODE=live\n\n# Aurora non-MODE parameters (thresholds, budgets, cooldowns, boolean triggers)\n# Stage 23 — Bayesian Learner\nAURORA_BAYESIAN_LIVE_CANARY_PERCENT=5\nAURORA_BAYESIAN_TTL_DAYS=30\n# Stage 24 — Policy Compiler\nAURORA_POLICY_DAILY_BUDGET=2\nAURORA_POLICY_COOLDOWN_HOURS=24\n# Stage 25 — Reflection Wire\nAURORA_REFLECTION_CONTEXT_LIMIT=20\nAURORA_REFLECTION_CONTEXT_MAX_TOKENS=800\nAURORA_REFLECTION_TRIGGER_TOO_DIFFICULT=true\nAURORA_REFLECTION_TRIGGER_UNCLEAR=true\nAURORA_REFLECTION_TRIGGER_ABANDONED=true\nAURORA_REFLECTION_TRIGGER_INTERVENTION_INEFFECTIVE=true\nAURORA_REFLECTION_TRIGGER_PLAN_STALL=true\nAURORA_REFLECTION_TRIGGER_OVERLOAD=true\n# Stage 26 — Scene Model\nAURORA_SCENE_SIMILARITY_THRESHOLD=0.75\nAURORA_SCENE_TIME_WINDOW_HOURS=72\nAURORA_SCENE_QUALITY_THRESHOLD=0.6\n# Stage 27 — Foresight Engine\nAURORA_FORESIGHT_ATTRACTOR=live\nAURORA_FORESIGHT_DEVIATION=live\nAURORA_FORESIGHT_JITAI=live\nAURORA_FORESIGHT_CACHE_TTL_SECONDS=60\nAURORA_FORESIGHT_ATTRACTOR_ALPHA=0.1\nAURORA_FORESIGHT_ATTRACTOR_MIN_CONFIDENCE=0.3\nAURORA_FORESIGHT_DEVIATION_Z_THRESHOLD=1.5\nAURORA_FORESIGHT_JITAI_DAILY_BUDGET=3\nAURORA_FORESIGHT_JITAI_COOLDOWN_HOURS=24\nAURORA_FORESIGHT_JITAI_MISFIRE_THRESHOLD=0.15\n# Stage 28 — Traits\nAURORA_TRAITS_NLP_COOLDOWN_HOURS=24\nAURORA_TRAITS_NLP_BIAS_THRESHOLD=0.10\nAURORA_TRAITS_NLP_MAX_DAYS=30\nAURORA_TRAITS_NLP_MAX_COST_USD=0.003\nAURORA_TRAITS_NLP_P95_MS_BUDGET=800\n# Stage 29 — SRL\nAURORA_SRL_EVENT_LAG_P95_THRESHOLD_SECONDS=5.0\nAURORA_SRL_MISJUDGMENT_THRESHOLD=0.20\nAURORA_SRL_TRACKER_P95_MS_BUDGET=20\nAURORA_SRL_AGGREGATOR_TTL_SECONDS=15\n# Stage 30 — Metacognition\nAURORA_METACOG_CACHE_TTL_SECONDS=60\nAURORA_METACOG_MIN_SAMPLE_SIZE=20\nAURORA_METACOG_PROCESS_TRIGGER_ABS_BIAS=0.30\nAURORA_METACOG_PROCESS_COOLDOWN_HOURS=72\nAURORA_METACOG_P95_MS_BUDGET=100\nAURORA_METACOG_PROXY_REVISION_FREQUENCY=live\nAURORA_METACOG_PROXY_SELF_CORRECTION_RATE=live\nAURORA_METACOG_PROXY_QUESTION_TO_STATEMENT_RATIO=live\nAURORA_METACOG_PROXY_TIME_TO_FIRST_ACTION=live\nAURORA_METACOG_PROXY_COMPLETION_VS_ESTIMATE_DELTA_SIGN=live\nAURORA_IDIOGRAPHIC_TTL_SECONDS=300\n# Stage 37 — LLM Safety\nAURORA_STAGE37_LLM_SAFETY_MODE=live\n# Stage 38 — Error Replan + Push Scheduler\nAURORA_STAGE38_PUSH_SCHEDULER_INTERVAL_MINUTES=5\n# Stage 39 — Scaffolding + Cognitive Load + Galaxy\nAURORA_STAGE39_MODE=live\nAURORA_STAGE39_SCAFFOLDING_PROMPT_MODE=live\nAURORA_STAGE39_COGLOAD_ROUTE_MODE=live\nAURORA_STAGE39_GALAXY_INJECT_MODE=live\n# Stage 40 — Calendar\nAURORA_STAGE40_CALENDAR_MODE=live\n# Document Context\nAURORA_DOC_CONTEXT_MODE=auto\nAURORA_DOC_CONTEXT_AGGRESSIVE_BUDGET_TOKENS=2200\nAURORA_DOC_CONTEXT_SELECTIVE_BUDGET_TOKENS=900\nAURORA_DOC_CONTEXT_AMBIGUOUS_BUDGET_TOKENS=500\n# Privacy\nAURORA_PRIVACY_PII_REDACTION_MODE=live\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# GLM OCR (Document Cleaning via Zhipu)\n# ZHIPU_API_KEY=your_zhipu_api_key\n# ZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n# ZHIPU_OCR_MODEL=glm-ocr\n"}, "fb9a818639c5e2f89253dcb61bb15c6e83bf96c1": {"t": 1785747983.191298, "n": 12400, "h": "9726ce0966c9166d", "c": "# Application Settings\n# ⚠️ Production: ALL values marked \"your_xxx\" or \"replace_with\" MUST be replaced with real secrets.\n# Run `python scripts/check_production_secrets.py` to validate.\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=replace_with_a_32_plus_char_secret_key_value_here # REQUIRED: min 32 chars\nJWT_SECRET=replace_with_a_32_plus_char_jwt_secret_value_here # REQUIRED: min 32 chars\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256 # Set to RS256 in production; requires JWT_PRIVATE_KEY + JWT_PUBLIC_KEY\nJWT_PRIVATE_KEY= # PEM-encoded RSA private key (required for RS256)\nJWT_PUBLIC_KEY= # PEM-encoded RSA public key (required for RS256)\n\n# Sentry Crash Reporting (leave empty to disable)\nSENTRY_DSN=\nSENTRY_ENVIRONMENT=production\nSENTRY_TRACES_SAMPLE_RATE=0.1\n\n# OpenClaw delegated execution\nOPENCLAW_ENABLED=true\nOPENCLAW_TRANSPORT=gateway_ws\nOPENCLAW_DEFAULT_AGENT_ID=main\nOPENCLAW_GATEWAY_URL=http://127.0.0.1:18789\nOPENCLAW_WS_URL=ws://127.0.0.1:18789\nOPENCLAW_WS_DEVICE_IDENTITY_PATH=/absolute/path/to/.openclaw/device.json\nOPENCLAW_DEFAULT_WORKDIR=/absolute/path/to/Sparkle-project\nOPENCLAW_DEFAULT_TIMEOUT_SECONDS=300\nOPENCLAW_MAX_CONCURRENT_RUNS=3\n\n# Social Login — Google\nGOOGLE_CLIENT_ID=your_google_client_id\n\n# Social Login — Apple\nAPPLE_CLIENT_ID=your_apple_client_id\n\n# Social Login — WeChat\nWECHAT_APP_ID=your_wechat_app_id\nWECHAT_APP_SECRET=your_wechat_app_secret\n\n# Email Service\n# EMAIL_ENABLED defaults to false in development and true in production when omitted.\n# Set EMAIL_ENABLED=false explicitly in production only if email verification/reset flows are intentionally disabled.\nEMAIL_ENABLED=\nSMTP_HOST=smtp.example.com\nSMTP_PORT=587\nSMTP_USER=your_smtp_username\nSMTP_PASSWORD=your_smtp_password\nEMAIL_FROM=no-reply@example.com\nEMAIL_FROM_NAME=Sparkle\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_PLUS=\nLLM_TIER_PRO=\nLLM_TIER_REASONING=\nLLM_TIER_MAX=\nLLM_TIER_GLM_BATCH=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_STANDARD_MODEL=mimo-v2-flash\nXIAOMI_PRO_MODEL=MiMo-V2.5\nXIAOMI_TEMPERATURE=0.3\nXIAOMI_PRO_TEMPERATURE=0.3\n\n# MIMO 编码套餐 (可选,Pro 模型走独立 URL)\nXIAOMI_MIMO_TOKEN_PLAN_API_KEY=\nXIAOMI_MIMO_TOKEN_PLAN_BASE_URL=https://token-plan-cn.xiaomimimo.com/v1\n\n# DeepSeek Configuration (v4 models)\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_AIR_MODEL=glm-4.5-air\nZHIPU_LIGHT_MODEL=glm-4.6\nZHIPU_MAX_MODEL=glm-5\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CODING_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\nOCR_PROVIDER=zhipu\nOCR_BACKUP_PROVIDER=siliconflow\n\n# SiliconFlow Configuration (Embedding/Rerank/翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_OCR_TIMEOUT_SECONDS=120\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nSILICONFLOW_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nTRANSLATION_PRIMARY_PROVIDER=hunyuan\nTRANSLATION_BACKUP_PROVIDER=siliconflow\nTRANSLATION_PROVIDER_TIMEOUT_SECONDS=30\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen3.6-plus\nDASHSCOPE_REASON_MODEL=qwen3.6-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_BACKUP_PROVIDER=siliconflow\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_BACKUP_PROVIDER=siliconflow\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nSTT_ENHANCE_ENABLED=true\n\n# GLM Batch\nGLM_BATCH_ENABLED=true\nGLM_BATCH_QUEUE=glm_batch\nGLM_BATCH_MIN_CONCURRENCY=1\nGLM_BATCH_MAX_CONCURRENCY=6\nGLM_BATCH_PEAK_START_HOUR=14\nGLM_BATCH_PEAK_END_HOUR=18\nGLM_BATCH_PEAK_CONCURRENCY=2\nGLM_BATCH_OFFPEAK_DEFAULT_CONCURRENCY=3\nGLM_BATCH_ADAPTIVE_ENABLED=true\nGLM_BATCH_ADAPTIVE_SUCCESS_THRESHOLD=8\nGLM_BATCH_ADAPTIVE_INCREASE_COOLDOWN_SECONDS=180\nGLM_BATCH_ADAPTIVE_RATE_LIMIT_COOLDOWN_SECONDS=300\nGLM_BATCH_SPILLOVER_ENABLED=true\nGLM_BATCH_SPILLOVER_BACKLOG_FACTOR=2\nGLM_BATCH_CAPSULES_ENABLED=true\nGLM_BATCH_COGNITIVE_ANALYSIS_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_key\nXUNFEI_API_SECRET=your_xunfei_secret\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# Production URL (for Flutter deeplinks, CORS, email links)\nPRODUCTION_URL=\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\nENABLE_CONTEXT_SEMANTIC_GATING=true\nENABLE_CONTEXT_BRIEFING=true\nENABLE_CONTEXT_FOCUS_METADATA=true\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\nENABLE_ADAPTIVE_PRESENTATION=true\nENABLE_STRUCTURED_NEXT_ACTIONS=true\nENABLE_BLOCKED_TEMPERATURE=true\nENABLE_UX_PRESENTATION_METADATA=true\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\nENABLE_PROACTIVE_INSIGHTS=true\nENABLE_PLAN_REASONING_SUMMARY=true\nENABLE_WEEKLY_LEARNING_REPORT=true\nENABLE_PROGRESS_COMPARISONS=true\nENABLE_AURORA_RUNTIME_V1=true\n\n# Aurora tri-state kill switches (off | shadow | live)\nSPARKLE_MEMORY_INFERRED_WRITE_ENABLED=true\nSPARKLE_MEMORY_INFERRED_DRY_RUN_ENABLED=false\nSPARKLE_AGGREGATOR_ENABLED=true\nSPARKLE_ROUTER_SOCIAL_CONTEXT_READ_ENABLED=true\nSPARKLE_ROUTER_USE_AGGREGATOR_PROVIDER=true\nSPARKLE_PUSH_POLICY_ENABLED=true\nSPARKLE_PUSH_DELIVERY_ENABLED=true\nSPARKLE_WORKING_MEMORY_ENABLED=true\nSPARKLE_LLM_EXTRACTOR_ENABLED=true\nSPARKLE_LLM_EXTRACTOR_DRY_RUN_ENABLED=false\nSPARKLE_CONSOLIDATION_ENABLED=true\nSPARKLE_CONFLICT_RESOLVER_SHADOW_MODE=false\nSPARKLE_ROUTER_SUFFICIENCY_BRANCH_ENABLED=true\nSPARKLE_SKILL_EXTRACT_ENABLED=true\nSPARKLE_SKILL_SELECTION_ENABLED=true\nSPARKLE_SKILL_SHARE_ENABLED=true\nSPARKLE_SKILL_SHARE_MOCK_REVIEW_ENABLED=false\nSPARKLE_PROMPT_SOCIAL_CONTEXT_RENDER_ENABLED=true\nAURORA_STAGE18_AGGREGATOR_MODE=live\nAURORA_STAGE18_PUSH_POLICY_MODE=live\nAURORA_STAGE18_PUSH_DELIVERY_MODE=live\nAURORA_STAGE19_WORKING_MEMORY_MODE=live\nAURORA_STAGE19_LLM_EXTRACTOR_MODE=live\nAURORA_STAGE19_CONSOLIDATION_MODE=live\nAURORA_STAGE21_SKILL_STORE_MODE=live\nAURORA_STAGE21_SKILL_SELECTION_MODE=live\nAURORA_STAGE21_SKILL_SHARE_MODE=live\nAURORA_BAYESIAN_MODE=live\nAURORA_POLICY_COMPILER_MODE=live\nAURORA_REFLECTION_WIRE_MODE=live\nAURORA_SCENE_MODE=live\nAURORA_FORESIGHT_MODE=live\nAURORA_TRAITS_MODE=live\nAURORA_TRAITS_NLP_MODE=live\nAURORA_TRAITS_COLDSTART_MODE=live\nAURORA_SRL_MODE=live\nAURORA_SRL_TRACKER_MODE=live\nAURORA_SRL_BRIDGE_MODE=live\nAURORA_SRL_SCAFFOLDING_CONSUME_MODE=live\nAURORA_METACOG_MODE=live\nAURORA_METACOG_DASHBOARD_MODE=live\nAURORA_METACOG_PROCESS_SCAFFOLDING_MODE=live\nAURORA_METACOG_FSM_COMBINE_MODE=live\nAURORA_IDIOGRAPHIC_MODE=live\nAURORA_STAGE33_MODE=live\nAURORA_STAGE33_SOCIAL_MODE=live\nAURORA_STAGE33_SRL_MODE=live\nAURORA_STAGE33_WM_PROMPT_MODE=live\nAURORA_STAGE33_EVENTS_MODE=live\nAURORA_STAGE34_MODE=live\nAURORA_STAGE34_ERROR_BRIDGE_MODE=live\nAURORA_STAGE34_CAPSULE_MODE=live\nAURORA_STAGE34_JOURNEY_SUBSCRIBERS_ENABLED=live\nAURORA_STAGE35_MODE=live\nAURORA_STAGE35_METACOG_ROUTER_MODE=live\nAURORA_STAGE38_ERR_REPLAN_MODE=live\nAURORA_STAGE38_PUSH_SCHEDULER_MODE=live\nAURORA_DOC_CONTEXT_DOCUMENT_CONTEXT_INJECTION_MODE=live\n\n# Aurora non-MODE parameters (thresholds, budgets, cooldowns, boolean triggers)\n# Stage 23 — Bayesian Learner\nAURORA_BAYESIAN_LIVE_CANARY_PERCENT=5\nAURORA_BAYESIAN_TTL_DAYS=30\n# Stage 24 — Policy Compiler\nAURORA_POLICY_DAILY_BUDGET=2\nAURORA_POLICY_COOLDOWN_HOURS=24\n# Stage 25 — Reflection Wire\nAURORA_REFLECTION_CONTEXT_LIMIT=20\nAURORA_REFLECTION_CONTEXT_MAX_TOKENS=800\nAURORA_REFLECTION_TRIGGER_TOO_DIFFICULT=true\nAURORA_REFLECTION_TRIGGER_UNCLEAR=true\nAURORA_REFLECTION_TRIGGER_ABANDONED=true\nAURORA_REFLECTION_TRIGGER_INTERVENTION_INEFFECTIVE=true\nAURORA_REFLECTION_TRIGGER_PLAN_STALL=true\nAURORA_REFLECTION_TRIGGER_OVERLOAD=true\n# Stage 26 — Scene Model\nAURORA_SCENE_SIMILARITY_THRESHOLD=0.75\nAURORA_SCENE_TIME_WINDOW_HOURS=72\nAURORA_SCENE_QUALITY_THRESHOLD=0.6\n# Stage 27 — Foresight Engine\nAURORA_FORESIGHT_ATTRACTOR=live\nAURORA_FORESIGHT_DEVIATION=live\nAURORA_FORESIGHT_JITAI=live\nAURORA_FORESIGHT_CACHE_TTL_SECONDS=60\nAURORA_FORESIGHT_ATTRACTOR_ALPHA=0.1\nAURORA_FORESIGHT_ATTRACTOR_MIN_CONFIDENCE=0.3\nAURORA_FORESIGHT_DEVIATION_Z_THRESHOLD=1.5\nAURORA_FORESIGHT_JITAI_DAILY_BUDGET=3\nAURORA_FORESIGHT_JITAI_COOLDOWN_HOURS=24\nAURORA_FORESIGHT_JITAI_MISFIRE_THRESHOLD=0.15\n# Stage 28 — Traits\nAURORA_TRAITS_NLP_COOLDOWN_HOURS=24\nAURORA_TRAITS_NLP_BIAS_THRESHOLD=0.10\nAURORA_TRAITS_NLP_MAX_DAYS=30\nAURORA_TRAITS_NLP_MAX_COST_USD=0.003\nAURORA_TRAITS_NLP_P95_MS_BUDGET=800\n# Stage 29 — SRL\nAURORA_SRL_EVENT_LAG_P95_THRESHOLD_SECONDS=5.0\nAURORA_SRL_MISJUDGMENT_THRESHOLD=0.20\nAURORA_SRL_TRACKER_P95_MS_BUDGET=20\nAURORA_SRL_AGGREGATOR_TTL_SECONDS=15\n# Stage 30 — Metacognition\nAURORA_METACOG_CACHE_TTL_SECONDS=60\nAURORA_METACOG_MIN_SAMPLE_SIZE=20\nAURORA_METACOG_PROCESS_TRIGGER_ABS_BIAS=0.30\nAURORA_METACOG_PROCESS_COOLDOWN_HOURS=72\nAURORA_METACOG_P95_MS_BUDGET=100\nAURORA_METACOG_PROXY_REVISION_FREQUENCY=live\nAURORA_METACOG_PROXY_SELF_CORRECTION_RATE=live\nAURORA_METACOG_PROXY_QUESTION_TO_STATEMENT_RATIO=live\nAURORA_METACOG_PROXY_TIME_TO_FIRST_ACTION=live\nAURORA_METACOG_PROXY_COMPLETION_VS_ESTIMATE_DELTA_SIGN=live\nAURORA_IDIOGRAPHIC_TTL_SECONDS=300\n# Stage 37 — LLM Safety\nAURORA_STAGE37_LLM_SAFETY_MODE=live\n# Stage 38 — Error Replan + Push Scheduler\nAURORA_STAGE38_PUSH_SCHEDULER_INTERVAL_MINUTES=5\n# Stage 39 — Scaffolding + Cognitive Load + Galaxy\nAURORA_STAGE39_MODE=live\nAURORA_STAGE39_SCAFFOLDING_PROMPT_MODE=live\nAURORA_STAGE39_COGLOAD_ROUTE_MODE=live\nAURORA_STAGE39_GALAXY_INJECT_MODE=live\n# Stage 40 — Calendar\nAURORA_STAGE40_CALENDAR_MODE=live\n# Document Context\nAURORA_DOC_CONTEXT_MODE=auto\nAURORA_DOC_CONTEXT_AGGRESSIVE_BUDGET_TOKENS=2200\nAURORA_DOC_CONTEXT_SELECTIVE_BUDGET_TOKENS=900\nAURORA_DOC_CONTEXT_AMBIGUOUS_BUDGET_TOKENS=500\n# Privacy\nAURORA_PRIVACY_PII_REDACTION_MODE=live\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# GLM OCR (Document Cleaning via Zhipu)\n# ZHIPU_API_KEY=your_zhipu_api_key\n# ZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n# ZHIPU_OCR_MODEL=glm-ocr\n"}, "d255df35bcc27782b302e3ffcc3fb0664b0a89a4": {"t": 1785747984.3152304, "n": 12190, "h": "022d296e66339248", "c": "# Application Settings\n# ⚠️ Production: ALL values marked \"your_xxx\" or \"replace_with\" MUST be replaced with real secrets.\n# Run `python scripts/check_production_secrets.py` to validate.\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=replace_with_a_32_plus_char_secret_key_value_here # REQUIRED: min 32 chars\nJWT_SECRET=replace_with_a_32_plus_char_jwt_secret_value_here # REQUIRED: min 32 chars\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# Sentry Crash Reporting (leave empty to disable)\nSENTRY_DSN=\nSENTRY_ENVIRONMENT=production\nSENTRY_TRACES_SAMPLE_RATE=0.1\n\n# OpenClaw delegated execution\nOPENCLAW_ENABLED=true\nOPENCLAW_TRANSPORT=gateway_ws\nOPENCLAW_DEFAULT_AGENT_ID=main\nOPENCLAW_GATEWAY_URL=http://127.0.0.1:18789\nOPENCLAW_WS_URL=ws://127.0.0.1:18789\nOPENCLAW_WS_DEVICE_IDENTITY_PATH=/absolute/path/to/.openclaw/device.json\nOPENCLAW_DEFAULT_WORKDIR=/absolute/path/to/Sparkle-project\nOPENCLAW_DEFAULT_TIMEOUT_SECONDS=300\nOPENCLAW_MAX_CONCURRENT_RUNS=3\n\n# Social Login — Google\nGOOGLE_CLIENT_ID=your_google_client_id\n\n# Social Login — Apple\nAPPLE_CLIENT_ID=your_apple_client_id\n\n# Social Login — WeChat\nWECHAT_APP_ID=your_wechat_app_id\nWECHAT_APP_SECRET=your_wechat_app_secret\n\n# Email Service\n# EMAIL_ENABLED defaults to false in development and true in production when omitted.\n# Set EMAIL_ENABLED=false explicitly in production only if email verification/reset flows are intentionally disabled.\nEMAIL_ENABLED=\nSMTP_HOST=smtp.example.com\nSMTP_PORT=587\nSMTP_USER=your_smtp_username\nSMTP_PASSWORD=your_smtp_password\nEMAIL_FROM=no-reply@example.com\nEMAIL_FROM_NAME=Sparkle\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_PLUS=\nLLM_TIER_PRO=\nLLM_TIER_REASONING=\nLLM_TIER_MAX=\nLLM_TIER_GLM_BATCH=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_STANDARD_MODEL=mimo-v2-flash\nXIAOMI_PRO_MODEL=MiMo-V2.5\nXIAOMI_TEMPERATURE=0.3\nXIAOMI_PRO_TEMPERATURE=0.3\n\n# MIMO 编码套餐 (可选,Pro 模型走独立 URL)\nXIAOMI_MIMO_TOKEN_PLAN_API_KEY=\nXIAOMI_MIMO_TOKEN_PLAN_BASE_URL=https://token-plan-cn.xiaomimimo.com/v1\n\n# DeepSeek Configuration (v4 models)\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_AIR_MODEL=glm-4.5-air\nZHIPU_LIGHT_MODEL=glm-4.6\nZHIPU_MAX_MODEL=glm-5\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CODING_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\nOCR_PROVIDER=zhipu\nOCR_BACKUP_PROVIDER=siliconflow\n\n# SiliconFlow Configuration (Embedding/Rerank/翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_OCR_TIMEOUT_SECONDS=120\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nSILICONFLOW_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nTRANSLATION_PRIMARY_PROVIDER=hunyuan\nTRANSLATION_BACKUP_PROVIDER=siliconflow\nTRANSLATION_PROVIDER_TIMEOUT_SECONDS=30\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen3.6-plus\nDASHSCOPE_REASON_MODEL=qwen3.6-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_BACKUP_PROVIDER=siliconflow\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_BACKUP_PROVIDER=siliconflow\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nSTT_ENHANCE_ENABLED=true\n\n# GLM Batch\nGLM_BATCH_ENABLED=true\nGLM_BATCH_QUEUE=glm_batch\nGLM_BATCH_MIN_CONCURRENCY=1\nGLM_BATCH_MAX_CONCURRENCY=6\nGLM_BATCH_PEAK_START_HOUR=14\nGLM_BATCH_PEAK_END_HOUR=18\nGLM_BATCH_PEAK_CONCURRENCY=2\nGLM_BATCH_OFFPEAK_DEFAULT_CONCURRENCY=3\nGLM_BATCH_ADAPTIVE_ENABLED=true\nGLM_BATCH_ADAPTIVE_SUCCESS_THRESHOLD=8\nGLM_BATCH_ADAPTIVE_INCREASE_COOLDOWN_SECONDS=180\nGLM_BATCH_ADAPTIVE_RATE_LIMIT_COOLDOWN_SECONDS=300\nGLM_BATCH_SPILLOVER_ENABLED=true\nGLM_BATCH_SPILLOVER_BACKLOG_FACTOR=2\nGLM_BATCH_CAPSULES_ENABLED=true\nGLM_BATCH_COGNITIVE_ANALYSIS_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_key\nXUNFEI_API_SECRET=your_xunfei_secret\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# Production URL (for Flutter deeplinks, CORS, email links)\nPRODUCTION_URL=\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\nENABLE_CONTEXT_SEMANTIC_GATING=true\nENABLE_CONTEXT_BRIEFING=true\nENABLE_CONTEXT_FOCUS_METADATA=true\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\nENABLE_ADAPTIVE_PRESENTATION=true\nENABLE_STRUCTURED_NEXT_ACTIONS=true\nENABLE_BLOCKED_TEMPERATURE=true\nENABLE_UX_PRESENTATION_METADATA=true\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\nENABLE_PROACTIVE_INSIGHTS=true\nENABLE_PLAN_REASONING_SUMMARY=true\nENABLE_WEEKLY_LEARNING_REPORT=true\nENABLE_PROGRESS_COMPARISONS=true\nENABLE_AURORA_RUNTIME_V1=true\n\n# Aurora tri-state kill switches (off | shadow | live)\nSPARKLE_MEMORY_INFERRED_WRITE_ENABLED=true\nSPARKLE_MEMORY_INFERRED_DRY_RUN_ENABLED=false\nSPARKLE_AGGREGATOR_ENABLED=true\nSPARKLE_ROUTER_SOCIAL_CONTEXT_READ_ENABLED=true\nSPARKLE_ROUTER_USE_AGGREGATOR_PROVIDER=true\nSPARKLE_PUSH_POLICY_ENABLED=true\nSPARKLE_PUSH_DELIVERY_ENABLED=true\nSPARKLE_WORKING_MEMORY_ENABLED=true\nSPARKLE_LLM_EXTRACTOR_ENABLED=true\nSPARKLE_LLM_EXTRACTOR_DRY_RUN_ENABLED=false\nSPARKLE_CONSOLIDATION_ENABLED=true\nSPARKLE_CONFLICT_RESOLVER_SHADOW_MODE=false\nSPARKLE_ROUTER_SUFFICIENCY_BRANCH_ENABLED=true\nSPARKLE_SKILL_EXTRACT_ENABLED=true\nSPARKLE_SKILL_SELECTION_ENABLED=true\nSPARKLE_SKILL_SHARE_ENABLED=true\nSPARKLE_SKILL_SHARE_MOCK_REVIEW_ENABLED=false\nSPARKLE_PROMPT_SOCIAL_CONTEXT_RENDER_ENABLED=true\nAURORA_STAGE18_AGGREGATOR_MODE=live\nAURORA_STAGE18_PUSH_POLICY_MODE=live\nAURORA_STAGE18_PUSH_DELIVERY_MODE=live\nAURORA_STAGE19_WORKING_MEMORY_MODE=live\nAURORA_STAGE19_LLM_EXTRACTOR_MODE=live\nAURORA_STAGE19_CONSOLIDATION_MODE=live\nAURORA_STAGE21_SKILL_STORE_MODE=live\nAURORA_STAGE21_SKILL_SELECTION_MODE=live\nAURORA_STAGE21_SKILL_SHARE_MODE=live\nAURORA_BAYESIAN_MODE=live\nAURORA_POLICY_COMPILER_MODE=live\nAURORA_REFLECTION_WIRE_MODE=live\nAURORA_SCENE_MODE=live\nAURORA_FORESIGHT_MODE=live\nAURORA_TRAITS_MODE=live\nAURORA_TRAITS_NLP_MODE=live\nAURORA_TRAITS_COLDSTART_MODE=live\nAURORA_SRL_MODE=live\nAURORA_SRL_TRACKER_MODE=live\nAURORA_SRL_BRIDGE_MODE=live\nAURORA_SRL_SCAFFOLDING_CONSUME_MODE=live\nAURORA_METACOG_MODE=live\nAURORA_METACOG_DASHBOARD_MODE=live\nAURORA_METACOG_PROCESS_SCAFFOLDING_MODE=live\nAURORA_METACOG_FSM_COMBINE_MODE=live\nAURORA_IDIOGRAPHIC_MODE=live\nAURORA_STAGE33_MODE=live\nAURORA_STAGE33_SOCIAL_MODE=live\nAURORA_STAGE33_SRL_MODE=live\nAURORA_STAGE33_WM_PROMPT_MODE=live\nAURORA_STAGE33_EVENTS_MODE=live\nAURORA_STAGE34_MODE=live\nAURORA_STAGE34_ERROR_BRIDGE_MODE=live\nAURORA_STAGE34_CAPSULE_MODE=live\nAURORA_STAGE34_JOURNEY_SUBSCRIBERS_ENABLED=live\nAURORA_STAGE35_MODE=live\nAURORA_STAGE35_METACOG_ROUTER_MODE=live\nAURORA_STAGE38_ERR_REPLAN_MODE=live\nAURORA_STAGE38_PUSH_SCHEDULER_MODE=live\nAURORA_DOC_CONTEXT_DOCUMENT_CONTEXT_INJECTION_MODE=live\n\n# Aurora non-MODE parameters (thresholds, budgets, cooldowns, boolean triggers)\n# Stage 23 — Bayesian Learner\nAURORA_BAYESIAN_LIVE_CANARY_PERCENT=5\nAURORA_BAYESIAN_TTL_DAYS=30\n# Stage 24 — Policy Compiler\nAURORA_POLICY_DAILY_BUDGET=2\nAURORA_POLICY_COOLDOWN_HOURS=24\n# Stage 25 — Reflection Wire\nAURORA_REFLECTION_CONTEXT_LIMIT=20\nAURORA_REFLECTION_CONTEXT_MAX_TOKENS=800\nAURORA_REFLECTION_TRIGGER_TOO_DIFFICULT=true\nAURORA_REFLECTION_TRIGGER_UNCLEAR=true\nAURORA_REFLECTION_TRIGGER_ABANDONED=true\nAURORA_REFLECTION_TRIGGER_INTERVENTION_INEFFECTIVE=true\nAURORA_REFLECTION_TRIGGER_PLAN_STALL=true\nAURORA_REFLECTION_TRIGGER_OVERLOAD=true\n# Stage 26 — Scene Model\nAURORA_SCENE_SIMILARITY_THRESHOLD=0.75\nAURORA_SCENE_TIME_WINDOW_HOURS=72\nAURORA_SCENE_QUALITY_THRESHOLD=0.6\n# Stage 27 — Foresight Engine\nAURORA_FORESIGHT_ATTRACTOR=live\nAURORA_FORESIGHT_DEVIATION=live\nAURORA_FORESIGHT_JITAI=live\nAURORA_FORESIGHT_CACHE_TTL_SECONDS=60\nAURORA_FORESIGHT_ATTRACTOR_ALPHA=0.1\nAURORA_FORESIGHT_ATTRACTOR_MIN_CONFIDENCE=0.3\nAURORA_FORESIGHT_DEVIATION_Z_THRESHOLD=1.5\nAURORA_FORESIGHT_JITAI_DAILY_BUDGET=3\nAURORA_FORESIGHT_JITAI_COOLDOWN_HOURS=24\nAURORA_FORESIGHT_JITAI_MISFIRE_THRESHOLD=0.15\n# Stage 28 — Traits\nAURORA_TRAITS_NLP_COOLDOWN_HOURS=24\nAURORA_TRAITS_NLP_BIAS_THRESHOLD=0.10\nAURORA_TRAITS_NLP_MAX_DAYS=30\nAURORA_TRAITS_NLP_MAX_COST_USD=0.003\nAURORA_TRAITS_NLP_P95_MS_BUDGET=800\n# Stage 29 — SRL\nAURORA_SRL_EVENT_LAG_P95_THRESHOLD_SECONDS=5.0\nAURORA_SRL_MISJUDGMENT_THRESHOLD=0.20\nAURORA_SRL_TRACKER_P95_MS_BUDGET=20\nAURORA_SRL_AGGREGATOR_TTL_SECONDS=15\n# Stage 30 — Metacognition\nAURORA_METACOG_CACHE_TTL_SECONDS=60\nAURORA_METACOG_MIN_SAMPLE_SIZE=20\nAURORA_METACOG_PROCESS_TRIGGER_ABS_BIAS=0.30\nAURORA_METACOG_PROCESS_COOLDOWN_HOURS=72\nAURORA_METACOG_P95_MS_BUDGET=100\nAURORA_METACOG_PROXY_REVISION_FREQUENCY=live\nAURORA_METACOG_PROXY_SELF_CORRECTION_RATE=live\nAURORA_METACOG_PROXY_QUESTION_TO_STATEMENT_RATIO=live\nAURORA_METACOG_PROXY_TIME_TO_FIRST_ACTION=live\nAURORA_METACOG_PROXY_COMPLETION_VS_ESTIMATE_DELTA_SIGN=live\nAURORA_IDIOGRAPHIC_TTL_SECONDS=300\n# Stage 37 — LLM Safety\nAURORA_STAGE37_LLM_SAFETY_MODE=live\n# Stage 38 — Error Replan + Push Scheduler\nAURORA_STAGE38_PUSH_SCHEDULER_INTERVAL_MINUTES=5\n# Stage 39 — Scaffolding + Cognitive Load + Galaxy\nAURORA_STAGE39_MODE=live\nAURORA_STAGE39_SCAFFOLDING_PROMPT_MODE=live\nAURORA_STAGE39_COGLOAD_ROUTE_MODE=live\nAURORA_STAGE39_GALAXY_INJECT_MODE=live\n# Stage 40 — Calendar\nAURORA_STAGE40_CALENDAR_MODE=live\n# Document Context\nAURORA_DOC_CONTEXT_MODE=auto\nAURORA_DOC_CONTEXT_AGGRESSIVE_BUDGET_TOKENS=2200\nAURORA_DOC_CONTEXT_SELECTIVE_BUDGET_TOKENS=900\nAURORA_DOC_CONTEXT_AMBIGUOUS_BUDGET_TOKENS=500\n# Privacy\nAURORA_PRIVACY_PII_REDACTION_MODE=live\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# GLM OCR (Document Cleaning via Zhipu)\n# ZHIPU_API_KEY=your_zhipu_api_key\n# ZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n# ZHIPU_OCR_MODEL=glm-ocr\n"}, "1acebfc8c28332a6a3056497798f3c45938ef960": {"t": 1785747985.4253173, "n": 11480, "h": "f1ae3a02cf817650", "c": "# Application Settings\n# ⚠️ Production: ALL values marked \"your_xxx\" or \"replace_with\" MUST be replaced with real secrets.\n# Run `python scripts/check_production_secrets.py` to validate.\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=replace_with_a_32_plus_char_secret_key_value_here # REQUIRED: min 32 chars\nJWT_SECRET=replace_with_a_32_plus_char_jwt_secret_value_here # REQUIRED: min 32 chars\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# Sentry Crash Reporting (leave empty to disable)\nSENTRY_DSN=\nSENTRY_ENVIRONMENT=production\nSENTRY_TRACES_SAMPLE_RATE=0.1\n\n# OpenClaw delegated execution\nOPENCLAW_ENABLED=true\nOPENCLAW_TRANSPORT=gateway_ws\nOPENCLAW_DEFAULT_AGENT_ID=main\nOPENCLAW_GATEWAY_URL=http://127.0.0.1:18789\nOPENCLAW_WS_URL=ws://127.0.0.1:18789\nOPENCLAW_WS_DEVICE_IDENTITY_PATH=/absolute/path/to/.openclaw/device.json\nOPENCLAW_DEFAULT_WORKDIR=/absolute/path/to/Sparkle-project\nOPENCLAW_DEFAULT_TIMEOUT_SECONDS=300\nOPENCLAW_MAX_CONCURRENT_RUNS=3\n\n# Social Login — Google\nGOOGLE_CLIENT_ID=your_google_client_id\n\n# Social Login — Apple\nAPPLE_CLIENT_ID=your_apple_client_id\n\n# Social Login — WeChat\nWECHAT_APP_ID=your_wechat_app_id\nWECHAT_APP_SECRET=your_wechat_app_secret\n\n# Email Service\n# EMAIL_ENABLED defaults to false in development and true in production when omitted.\n# Set EMAIL_ENABLED=false explicitly in production only if email verification/reset flows are intentionally disabled.\nEMAIL_ENABLED=\nSMTP_HOST=smtp.example.com\nSMTP_PORT=587\nSMTP_USER=your_smtp_username\nSMTP_PASSWORD=your_smtp_password\nEMAIL_FROM=no-reply@example.com\nEMAIL_FROM_NAME=Sparkle\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_PLUS=\nLLM_TIER_PRO=\nLLM_TIER_REASONING=\nLLM_TIER_MAX=\nLLM_TIER_GLM_BATCH=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_STANDARD_MODEL=mimo-v2-flash\nXIAOMI_PRO_MODEL=MiMo-V2.5\nXIAOMI_TEMPERATURE=0.3\nXIAOMI_PRO_TEMPERATURE=0.3\n\n# MIMO 编码套餐 (可选,Pro 模型走独立 URL)\nXIAOMI_MIMO_TOKEN_PLAN_API_KEY=\nXIAOMI_MIMO_TOKEN_PLAN_BASE_URL=https://token-plan-cn.xiaomimimo.com/v1\n\n# DeepSeek Configuration (v4 models)\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_AIR_MODEL=glm-4.5-air\nZHIPU_LIGHT_MODEL=glm-4.6\nZHIPU_MAX_MODEL=glm-5\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CODING_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\nOCR_PROVIDER=zhipu\nOCR_BACKUP_PROVIDER=siliconflow\n\n# SiliconFlow Configuration (Embedding/Rerank/翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_OCR_TIMEOUT_SECONDS=120\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nSILICONFLOW_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nTRANSLATION_PRIMARY_PROVIDER=hunyuan\nTRANSLATION_BACKUP_PROVIDER=siliconflow\nTRANSLATION_PROVIDER_TIMEOUT_SECONDS=30\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen3.6-plus\nDASHSCOPE_REASON_MODEL=qwen3.6-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_BACKUP_PROVIDER=siliconflow\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_BACKUP_PROVIDER=siliconflow\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nSTT_ENHANCE_ENABLED=true\n\n# GLM Batch\nGLM_BATCH_ENABLED=true\nGLM_BATCH_QUEUE=glm_batch\nGLM_BATCH_MIN_CONCURRENCY=1\nGLM_BATCH_MAX_CONCURRENCY=6\nGLM_BATCH_PEAK_START_HOUR=14\nGLM_BATCH_PEAK_END_HOUR=18\nGLM_BATCH_PEAK_CONCURRENCY=2\nGLM_BATCH_OFFPEAK_DEFAULT_CONCURRENCY=3\nGLM_BATCH_ADAPTIVE_ENABLED=true\nGLM_BATCH_ADAPTIVE_SUCCESS_THRESHOLD=8\nGLM_BATCH_ADAPTIVE_INCREASE_COOLDOWN_SECONDS=180\nGLM_BATCH_ADAPTIVE_RATE_LIMIT_COOLDOWN_SECONDS=300\nGLM_BATCH_SPILLOVER_ENABLED=true\nGLM_BATCH_SPILLOVER_BACKLOG_FACTOR=2\nGLM_BATCH_CAPSULES_ENABLED=true\nGLM_BATCH_COGNITIVE_ANALYSIS_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_key\nXUNFEI_API_SECRET=your_xunfei_secret\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# Production URL (for Flutter deeplinks, CORS, email links)\nPRODUCTION_URL=\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\nENABLE_CONTEXT_SEMANTIC_GATING=true\nENABLE_CONTEXT_BRIEFING=true\nENABLE_CONTEXT_FOCUS_METADATA=true\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\nENABLE_ADAPTIVE_PRESENTATION=true\nENABLE_STRUCTURED_NEXT_ACTIONS=true\nENABLE_BLOCKED_TEMPERATURE=true\nENABLE_UX_PRESENTATION_METADATA=true\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\nENABLE_PROACTIVE_INSIGHTS=true\nENABLE_PLAN_REASONING_SUMMARY=true\nENABLE_WEEKLY_LEARNING_REPORT=true\nENABLE_PROGRESS_COMPARISONS=true\n\n# Aurora tri-state kill switches (off | shadow | live)\nSPARKLE_MEMORY_INFERRED_WRITE_ENABLED=true\nAURORA_STAGE18_AGGREGATOR_MODE=live\nAURORA_STAGE18_PUSH_POLICY_MODE=live\nAURORA_STAGE18_PUSH_DELIVERY_MODE=live\nAURORA_STAGE19_WORKING_MEMORY_MODE=live\nAURORA_STAGE19_LLM_EXTRACTOR_MODE=live\nAURORA_STAGE19_CONSOLIDATION_MODE=live\nAURORA_STAGE21_SKILL_STORE_MODE=live\nAURORA_STAGE21_SKILL_SELECTION_MODE=live\nAURORA_STAGE21_SKILL_SHARE_MODE=live\nAURORA_BAYESIAN_MODE=live\nAURORA_POLICY_COMPILER_MODE=live\nAURORA_REFLECTION_WIRE_MODE=live\nAURORA_SCENE_MODE=live\nAURORA_FORESIGHT_MODE=live\nAURORA_TRAITS_MODE=live\nAURORA_TRAITS_NLP_MODE=live\nAURORA_TRAITS_COLDSTART_MODE=live\nAURORA_SRL_MODE=live\nAURORA_SRL_TRACKER_MODE=live\nAURORA_SRL_BRIDGE_MODE=live\nAURORA_SRL_SCAFFOLDING_CONSUME_MODE=live\nAURORA_METACOG_MODE=live\nAURORA_METACOG_DASHBOARD_MODE=live\nAURORA_METACOG_PROCESS_SCAFFOLDING_MODE=live\nAURORA_METACOG_FSM_COMBINE_MODE=live\nAURORA_IDIOGRAPHIC_MODE=live\nAURORA_STAGE33_MODE=live\nAURORA_STAGE33_SOCIAL_MODE=live\nAURORA_STAGE33_SRL_MODE=live\nAURORA_STAGE33_WM_PROMPT_MODE=live\nAURORA_STAGE33_EVENTS_MODE=live\nAURORA_STAGE34_MODE=live\nAURORA_STAGE34_ERROR_BRIDGE_MODE=live\nAURORA_STAGE34_CAPSULE_MODE=live\nAURORA_STAGE34_JOURNEY_SUBSCRIBERS_ENABLED=live\nAURORA_STAGE35_MODE=live\nAURORA_STAGE35_METACOG_ROUTER_MODE=live\nAURORA_STAGE38_ERR_REPLAN_MODE=live\nAURORA_STAGE38_PUSH_SCHEDULER_MODE=live\nAURORA_DOC_CONTEXT_DOCUMENT_CONTEXT_INJECTION_MODE=live\n\n# Aurora non-MODE parameters (thresholds, budgets, cooldowns, boolean triggers)\n# Stage 23 — Bayesian Learner\nAURORA_BAYESIAN_LIVE_CANARY_PERCENT=5\nAURORA_BAYESIAN_TTL_DAYS=30\n# Stage 24 — Policy Compiler\nAURORA_POLICY_DAILY_BUDGET=2\nAURORA_POLICY_COOLDOWN_HOURS=24\n# Stage 25 — Reflection Wire\nAURORA_REFLECTION_CONTEXT_LIMIT=20\nAURORA_REFLECTION_CONTEXT_MAX_TOKENS=800\nAURORA_REFLECTION_TRIGGER_TOO_DIFFICULT=true\nAURORA_REFLECTION_TRIGGER_UNCLEAR=true\nAURORA_REFLECTION_TRIGGER_ABANDONED=true\nAURORA_REFLECTION_TRIGGER_INTERVENTION_INEFFECTIVE=true\nAURORA_REFLECTION_TRIGGER_PLAN_STALL=true\nAURORA_REFLECTION_TRIGGER_OVERLOAD=true\n# Stage 26 — Scene Model\nAURORA_SCENE_SIMILARITY_THRESHOLD=0.75\nAURORA_SCENE_TIME_WINDOW_HOURS=72\nAURORA_SCENE_QUALITY_THRESHOLD=0.6\n# Stage 27 — Foresight Engine\nAURORA_FORESIGHT_ATTRACTOR=live\nAURORA_FORESIGHT_DEVIATION=live\nAURORA_FORESIGHT_JITAI=live\nAURORA_FORESIGHT_CACHE_TTL_SECONDS=60\nAURORA_FORESIGHT_ATTRACTOR_ALPHA=0.1\nAURORA_FORESIGHT_ATTRACTOR_MIN_CONFIDENCE=0.3\nAURORA_FORESIGHT_DEVIATION_Z_THRESHOLD=1.5\nAURORA_FORESIGHT_JITAI_DAILY_BUDGET=3\nAURORA_FORESIGHT_JITAI_COOLDOWN_HOURS=24\nAURORA_FORESIGHT_JITAI_MISFIRE_THRESHOLD=0.15\n# Stage 28 — Traits\nAURORA_TRAITS_NLP_COOLDOWN_HOURS=24\nAURORA_TRAITS_NLP_BIAS_THRESHOLD=0.10\nAURORA_TRAITS_NLP_MAX_DAYS=30\nAURORA_TRAITS_NLP_MAX_COST_USD=0.003\nAURORA_TRAITS_NLP_P95_MS_BUDGET=800\n# Stage 29 — SRL\nAURORA_SRL_EVENT_LAG_P95_THRESHOLD_SECONDS=5.0\nAURORA_SRL_MISJUDGMENT_THRESHOLD=0.20\nAURORA_SRL_TRACKER_P95_MS_BUDGET=20\nAURORA_SRL_AGGREGATOR_TTL_SECONDS=15\n# Stage 30 — Metacognition\nAURORA_METACOG_CACHE_TTL_SECONDS=60\nAURORA_METACOG_MIN_SAMPLE_SIZE=20\nAURORA_METACOG_PROCESS_TRIGGER_ABS_BIAS=0.30\nAURORA_METACOG_PROCESS_COOLDOWN_HOURS=72\nAURORA_METACOG_P95_MS_BUDGET=100\nAURORA_METACOG_PROXY_REVISION_FREQUENCY=live\nAURORA_METACOG_PROXY_SELF_CORRECTION_RATE=live\nAURORA_METACOG_PROXY_QUESTION_TO_STATEMENT_RATIO=live\nAURORA_METACOG_PROXY_TIME_TO_FIRST_ACTION=live\nAURORA_METACOG_PROXY_COMPLETION_VS_ESTIMATE_DELTA_SIGN=live\nAURORA_IDIOGRAPHIC_TTL_SECONDS=300\n# Stage 37 — LLM Safety\nAURORA_STAGE37_LLM_SAFETY_MODE=live\n# Stage 38 — Error Replan + Push Scheduler\nAURORA_STAGE38_PUSH_SCHEDULER_INTERVAL_MINUTES=5\n# Stage 39 — Scaffolding + Cognitive Load + Galaxy\nAURORA_STAGE39_MODE=live\nAURORA_STAGE39_SCAFFOLDING_PROMPT_MODE=live\nAURORA_STAGE39_COGLOAD_ROUTE_MODE=live\nAURORA_STAGE39_GALAXY_INJECT_MODE=live\n# Stage 40 — Calendar\nAURORA_STAGE40_CALENDAR_MODE=live\n# Document Context\nAURORA_DOC_CONTEXT_MODE=auto\nAURORA_DOC_CONTEXT_AGGRESSIVE_BUDGET_TOKENS=2200\nAURORA_DOC_CONTEXT_SELECTIVE_BUDGET_TOKENS=900\nAURORA_DOC_CONTEXT_AMBIGUOUS_BUDGET_TOKENS=500\n# Privacy\nAURORA_PRIVACY_PII_REDACTION_MODE=live\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# GLM OCR (Document Cleaning via Zhipu)\n# ZHIPU_API_KEY=your_zhipu_api_key\n# ZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n# ZHIPU_OCR_MODEL=glm-ocr\n"}, "c75e1c6a50a0e04da7ddfc558a90021582172609": {"t": 1785747986.5665207, "n": 11498, "h": "4361c9ef25277a83", "c": "# Application Settings\n# ⚠️ Production: ALL values marked \"your_xxx\" or \"replace_with\" MUST be replaced with real secrets.\n# Run `python scripts/check_production_secrets.py` to validate.\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=replace_with_a_32_plus_char_secret_key_value_here # REQUIRED: min 32 chars\nJWT_SECRET=replace_with_a_32_plus_char_jwt_secret_value_here # REQUIRED: min 32 chars\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# Sentry Crash Reporting (leave empty to disable)\nSENTRY_DSN=\nSENTRY_ENVIRONMENT=production\nSENTRY_TRACES_SAMPLE_RATE=0.1\n\n# OpenClaw delegated execution\nOPENCLAW_ENABLED=true\nOPENCLAW_TRANSPORT=gateway_ws\nOPENCLAW_DEFAULT_AGENT_ID=main\nOPENCLAW_GATEWAY_URL=http://127.0.0.1:18789\nOPENCLAW_WS_URL=ws://127.0.0.1:18789\nOPENCLAW_WS_DEVICE_IDENTITY_PATH=/absolute/path/to/.openclaw/device.json\nOPENCLAW_DEFAULT_WORKDIR=/absolute/path/to/Sparkle-project\nOPENCLAW_DEFAULT_TIMEOUT_SECONDS=300\nOPENCLAW_MAX_CONCURRENT_RUNS=3\n\n# Social Login — Google\nGOOGLE_CLIENT_ID=your_google_client_id\n\n# Social Login — Apple\nAPPLE_CLIENT_ID=your_apple_client_id\n\n# Social Login — WeChat\nWECHAT_APP_ID=your_wechat_app_id\nWECHAT_APP_SECRET=your_wechat_app_secret\n\n# Email Service\n# EMAIL_ENABLED defaults to false in development and true in production when omitted.\n# Set EMAIL_ENABLED=false explicitly in production only if email verification/reset flows are intentionally disabled.\nEMAIL_ENABLED=\nSMTP_HOST=smtp.example.com\nSMTP_PORT=587\nSMTP_USER=your_smtp_username\nSMTP_PASSWORD=your_smtp_password\nEMAIL_FROM=no-reply@example.com\nEMAIL_FROM_NAME=Sparkle\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_PLUS=\nLLM_TIER_PRO=\nLLM_TIER_REASONING=\nLLM_TIER_MAX=\nLLM_TIER_GLM_BATCH=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_STANDARD_MODEL=mimo-v2-flash\nXIAOMI_PRO_MODEL=MiMo-V2.5\nXIAOMI_TEMPERATURE=0.3\nXIAOMI_PRO_TEMPERATURE=0.3\n\n# MIMO 编码套餐 (可选,Pro 模型走独立 URL)\nXIAOMI_MIMO_TOKEN_PLAN_API_KEY=\nXIAOMI_MIMO_TOKEN_PLAN_BASE_URL=https://token-plan-cn.xiaomimimo.com/v1\n\n# DeepSeek Configuration (v4 models)\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_AIR_MODEL=glm-4.5-air\nZHIPU_LIGHT_MODEL=glm-4.6\nZHIPU_MAX_MODEL=glm-5\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CODING_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\nOCR_PROVIDER=zhipu\nOCR_BACKUP_PROVIDER=siliconflow\n\n# SiliconFlow Configuration (Embedding/Rerank/翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_OCR_TIMEOUT_SECONDS=120\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nSILICONFLOW_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nTRANSLATION_PRIMARY_PROVIDER=hunyuan\nTRANSLATION_BACKUP_PROVIDER=siliconflow\nTRANSLATION_PROVIDER_TIMEOUT_SECONDS=30\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen3.6-plus\nDASHSCOPE_REASON_MODEL=qwen3.6-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_BACKUP_PROVIDER=siliconflow\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_BACKUP_PROVIDER=siliconflow\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nSTT_ENHANCE_ENABLED=true\n\n# GLM Batch\nGLM_BATCH_ENABLED=true\nGLM_BATCH_QUEUE=glm_batch\nGLM_BATCH_MIN_CONCURRENCY=1\nGLM_BATCH_MAX_CONCURRENCY=6\nGLM_BATCH_PEAK_START_HOUR=14\nGLM_BATCH_PEAK_END_HOUR=18\nGLM_BATCH_PEAK_CONCURRENCY=2\nGLM_BATCH_OFFPEAK_DEFAULT_CONCURRENCY=3\nGLM_BATCH_ADAPTIVE_ENABLED=true\nGLM_BATCH_ADAPTIVE_SUCCESS_THRESHOLD=8\nGLM_BATCH_ADAPTIVE_INCREASE_COOLDOWN_SECONDS=180\nGLM_BATCH_ADAPTIVE_RATE_LIMIT_COOLDOWN_SECONDS=300\nGLM_BATCH_SPILLOVER_ENABLED=true\nGLM_BATCH_SPILLOVER_BACKLOG_FACTOR=2\nGLM_BATCH_CAPSULES_ENABLED=true\nGLM_BATCH_COGNITIVE_ANALYSIS_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# Production URL (for Flutter deeplinks, CORS, email links)\nPRODUCTION_URL=\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\nENABLE_CONTEXT_SEMANTIC_GATING=true\nENABLE_CONTEXT_BRIEFING=true\nENABLE_CONTEXT_FOCUS_METADATA=true\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\nENABLE_ADAPTIVE_PRESENTATION=true\nENABLE_STRUCTURED_NEXT_ACTIONS=true\nENABLE_BLOCKED_TEMPERATURE=true\nENABLE_UX_PRESENTATION_METADATA=true\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\nENABLE_PROACTIVE_INSIGHTS=true\nENABLE_PLAN_REASONING_SUMMARY=true\nENABLE_WEEKLY_LEARNING_REPORT=true\nENABLE_PROGRESS_COMPARISONS=true\n\n# Aurora tri-state kill switches (off | shadow | live)\nSPARKLE_MEMORY_INFERRED_WRITE_ENABLED=true\nAURORA_STAGE18_AGGREGATOR_MODE=live\nAURORA_STAGE18_PUSH_POLICY_MODE=live\nAURORA_STAGE18_PUSH_DELIVERY_MODE=live\nAURORA_STAGE19_WORKING_MEMORY_MODE=live\nAURORA_STAGE19_LLM_EXTRACTOR_MODE=live\nAURORA_STAGE19_CONSOLIDATION_MODE=live\nAURORA_STAGE21_SKILL_STORE_MODE=live\nAURORA_STAGE21_SKILL_SELECTION_MODE=live\nAURORA_STAGE21_SKILL_SHARE_MODE=live\nAURORA_BAYESIAN_MODE=live\nAURORA_POLICY_COMPILER_MODE=live\nAURORA_REFLECTION_WIRE_MODE=live\nAURORA_SCENE_MODE=live\nAURORA_FORESIGHT_MODE=live\nAURORA_TRAITS_MODE=live\nAURORA_TRAITS_NLP_MODE=live\nAURORA_TRAITS_COLDSTART_MODE=live\nAURORA_SRL_MODE=live\nAURORA_SRL_TRACKER_MODE=live\nAURORA_SRL_BRIDGE_MODE=live\nAURORA_SRL_SCAFFOLDING_CONSUME_MODE=live\nAURORA_METACOG_MODE=live\nAURORA_METACOG_DASHBOARD_MODE=live\nAURORA_METACOG_PROCESS_SCAFFOLDING_MODE=live\nAURORA_METACOG_FSM_COMBINE_MODE=live\nAURORA_IDIOGRAPHIC_MODE=live\nAURORA_STAGE33_MODE=live\nAURORA_STAGE33_SOCIAL_MODE=live\nAURORA_STAGE33_SRL_MODE=live\nAURORA_STAGE33_WM_PROMPT_MODE=live\nAURORA_STAGE33_EVENTS_MODE=live\nAURORA_STAGE34_MODE=live\nAURORA_STAGE34_ERROR_BRIDGE_MODE=live\nAURORA_STAGE34_CAPSULE_MODE=live\nAURORA_STAGE34_JOURNEY_SUBSCRIBERS_ENABLED=live\nAURORA_STAGE35_MODE=live\nAURORA_STAGE35_METACOG_ROUTER_MODE=live\nAURORA_STAGE38_ERR_REPLAN_MODE=live\nAURORA_STAGE38_PUSH_SCHEDULER_MODE=live\nAURORA_DOC_CONTEXT_DOCUMENT_CONTEXT_INJECTION_MODE=live\n\n# Aurora non-MODE parameters (thresholds, budgets, cooldowns, boolean triggers)\n# Stage 23 — Bayesian Learner\nAURORA_BAYESIAN_LIVE_CANARY_PERCENT=5\nAURORA_BAYESIAN_TTL_DAYS=30\n# Stage 24 — Policy Compiler\nAURORA_POLICY_DAILY_BUDGET=2\nAURORA_POLICY_COOLDOWN_HOURS=24\n# Stage 25 — Reflection Wire\nAURORA_REFLECTION_CONTEXT_LIMIT=20\nAURORA_REFLECTION_CONTEXT_MAX_TOKENS=800\nAURORA_REFLECTION_TRIGGER_TOO_DIFFICULT=true\nAURORA_REFLECTION_TRIGGER_UNCLEAR=true\nAURORA_REFLECTION_TRIGGER_ABANDONED=true\nAURORA_REFLECTION_TRIGGER_INTERVENTION_INEFFECTIVE=true\nAURORA_REFLECTION_TRIGGER_PLAN_STALL=true\nAURORA_REFLECTION_TRIGGER_OVERLOAD=true\n# Stage 26 — Scene Model\nAURORA_SCENE_SIMILARITY_THRESHOLD=0.75\nAURORA_SCENE_TIME_WINDOW_HOURS=72\nAURORA_SCENE_QUALITY_THRESHOLD=0.6\n# Stage 27 — Foresight Engine\nAURORA_FORESIGHT_ATTRACTOR=live\nAURORA_FORESIGHT_DEVIATION=live\nAURORA_FORESIGHT_JITAI=live\nAURORA_FORESIGHT_CACHE_TTL_SECONDS=60\nAURORA_FORESIGHT_ATTRACTOR_ALPHA=0.1\nAURORA_FORESIGHT_ATTRACTOR_MIN_CONFIDENCE=0.3\nAURORA_FORESIGHT_DEVIATION_Z_THRESHOLD=1.5\nAURORA_FORESIGHT_JITAI_DAILY_BUDGET=3\nAURORA_FORESIGHT_JITAI_COOLDOWN_HOURS=24\nAURORA_FORESIGHT_JITAI_MISFIRE_THRESHOLD=0.15\n# Stage 28 — Traits\nAURORA_TRAITS_NLP_COOLDOWN_HOURS=24\nAURORA_TRAITS_NLP_BIAS_THRESHOLD=0.10\nAURORA_TRAITS_NLP_MAX_DAYS=30\nAURORA_TRAITS_NLP_MAX_COST_USD=0.003\nAURORA_TRAITS_NLP_P95_MS_BUDGET=800\n# Stage 29 — SRL\nAURORA_SRL_EVENT_LAG_P95_THRESHOLD_SECONDS=5.0\nAURORA_SRL_MISJUDGMENT_THRESHOLD=0.20\nAURORA_SRL_TRACKER_P95_MS_BUDGET=20\nAURORA_SRL_AGGREGATOR_TTL_SECONDS=15\n# Stage 30 — Metacognition\nAURORA_METACOG_CACHE_TTL_SECONDS=60\nAURORA_METACOG_MIN_SAMPLE_SIZE=20\nAURORA_METACOG_PROCESS_TRIGGER_ABS_BIAS=0.30\nAURORA_METACOG_PROCESS_COOLDOWN_HOURS=72\nAURORA_METACOG_P95_MS_BUDGET=100\nAURORA_METACOG_PROXY_REVISION_FREQUENCY=live\nAURORA_METACOG_PROXY_SELF_CORRECTION_RATE=live\nAURORA_METACOG_PROXY_QUESTION_TO_STATEMENT_RATIO=live\nAURORA_METACOG_PROXY_TIME_TO_FIRST_ACTION=live\nAURORA_METACOG_PROXY_COMPLETION_VS_ESTIMATE_DELTA_SIGN=live\nAURORA_IDIOGRAPHIC_TTL_SECONDS=300\n# Stage 37 — LLM Safety\nAURORA_STAGE37_LLM_SAFETY_MODE=live\n# Stage 38 — Error Replan + Push Scheduler\nAURORA_STAGE38_PUSH_SCHEDULER_INTERVAL_MINUTES=5\n# Stage 39 — Scaffolding + Cognitive Load + Galaxy\nAURORA_STAGE39_MODE=live\nAURORA_STAGE39_SCAFFOLDING_PROMPT_MODE=live\nAURORA_STAGE39_COGLOAD_ROUTE_MODE=live\nAURORA_STAGE39_GALAXY_INJECT_MODE=live\n# Stage 40 — Calendar\nAURORA_STAGE40_CALENDAR_MODE=live\n# Document Context\nAURORA_DOC_CONTEXT_MODE=auto\nAURORA_DOC_CONTEXT_AGGRESSIVE_BUDGET_TOKENS=2200\nAURORA_DOC_CONTEXT_SELECTIVE_BUDGET_TOKENS=900\nAURORA_DOC_CONTEXT_AMBIGUOUS_BUDGET_TOKENS=500\n# Privacy\nAURORA_PRIVACY_PII_REDACTION_MODE=live\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# GLM OCR (Document Cleaning via Zhipu)\n# ZHIPU_API_KEY=your_zhipu_api_key\n# ZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n# ZHIPU_OCR_MODEL=glm-ocr\n"}, "276bce8b1bf3924294fb73ac9bc1d3575767443f": {"t": 1785747987.6673331, "n": 8797, "h": "20123192abcc3ca7", "c": "# Application Settings\n# ⚠️ Production: ALL values marked \"your_xxx\" or \"replace_with\" MUST be replaced with real secrets.\n# Run `python scripts/check_production_secrets.py` to validate.\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=replace_with_a_32_plus_char_secret_key_value_here # REQUIRED: min 32 chars\nJWT_SECRET=replace_with_a_32_plus_char_jwt_secret_value_here # REQUIRED: min 32 chars\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# Sentry Crash Reporting (leave empty to disable)\nSENTRY_DSN=\nSENTRY_ENVIRONMENT=production\nSENTRY_TRACES_SAMPLE_RATE=0.1\n\n# OpenClaw delegated execution\nOPENCLAW_ENABLED=true\nOPENCLAW_TRANSPORT=gateway_ws\nOPENCLAW_DEFAULT_AGENT_ID=main\nOPENCLAW_GATEWAY_URL=http://127.0.0.1:18789\nOPENCLAW_WS_URL=ws://127.0.0.1:18789\nOPENCLAW_WS_DEVICE_IDENTITY_PATH=/absolute/path/to/.openclaw/device.json\nOPENCLAW_DEFAULT_WORKDIR=/absolute/path/to/Sparkle-project\nOPENCLAW_DEFAULT_TIMEOUT_SECONDS=300\nOPENCLAW_MAX_CONCURRENT_RUNS=3\n\n# Social Login — Google\nGOOGLE_CLIENT_ID=your_google_client_id\n\n# Social Login — Apple\nAPPLE_CLIENT_ID=your_apple_client_id\n\n# Social Login — WeChat\nWECHAT_APP_ID=your_wechat_app_id\nWECHAT_APP_SECRET=your_wechat_app_secret\n\n# Email Service\n# EMAIL_ENABLED defaults to false in development and true in production when omitted.\n# Set EMAIL_ENABLED=false explicitly in production only if email verification/reset flows are intentionally disabled.\nEMAIL_ENABLED=\nSMTP_HOST=smtp.example.com\nSMTP_PORT=587\nSMTP_USER=your_smtp_username\nSMTP_PASSWORD=your_smtp_password\nEMAIL_FROM=no-reply@example.com\nEMAIL_FROM_NAME=Sparkle\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_PLUS=\nLLM_TIER_PRO=\nLLM_TIER_REASONING=\nLLM_TIER_MAX=\nLLM_TIER_GLM_BATCH=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_STANDARD_MODEL=mimo-v2-flash\nXIAOMI_PRO_MODEL=MiMo-V2.5\nXIAOMI_TEMPERATURE=0.3\nXIAOMI_PRO_TEMPERATURE=0.3\n\n# MIMO 编码套餐 (可选,Pro 模型走独立 URL)\nXIAOMI_MIMO_TOKEN_PLAN_API_KEY=\nXIAOMI_MIMO_TOKEN_PLAN_BASE_URL=https://token-plan-cn.xiaomimimo.com/v1\n\n# DeepSeek Configuration (v4 models)\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_AIR_MODEL=glm-4.5-air\nZHIPU_LIGHT_MODEL=glm-4.6\nZHIPU_MAX_MODEL=glm-5\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CODING_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\nOCR_PROVIDER=zhipu\nOCR_BACKUP_PROVIDER=siliconflow\n\n# SiliconFlow Configuration (Embedding/Rerank/翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_OCR_TIMEOUT_SECONDS=120\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nSILICONFLOW_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nTRANSLATION_PRIMARY_PROVIDER=hunyuan\nTRANSLATION_BACKUP_PROVIDER=siliconflow\nTRANSLATION_PROVIDER_TIMEOUT_SECONDS=30\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen3.6-plus\nDASHSCOPE_REASON_MODEL=qwen3.6-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_BACKUP_PROVIDER=siliconflow\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_BACKUP_PROVIDER=siliconflow\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nSTT_ENHANCE_ENABLED=true\n\n# GLM Batch\nGLM_BATCH_ENABLED=true\nGLM_BATCH_QUEUE=glm_batch\nGLM_BATCH_MIN_CONCURRENCY=1\nGLM_BATCH_MAX_CONCURRENCY=6\nGLM_BATCH_PEAK_START_HOUR=14\nGLM_BATCH_PEAK_END_HOUR=18\nGLM_BATCH_PEAK_CONCURRENCY=2\nGLM_BATCH_OFFPEAK_DEFAULT_CONCURRENCY=3\nGLM_BATCH_ADAPTIVE_ENABLED=true\nGLM_BATCH_ADAPTIVE_SUCCESS_THRESHOLD=8\nGLM_BATCH_ADAPTIVE_INCREASE_COOLDOWN_SECONDS=180\nGLM_BATCH_ADAPTIVE_RATE_LIMIT_COOLDOWN_SECONDS=300\nGLM_BATCH_SPILLOVER_ENABLED=true\nGLM_BATCH_SPILLOVER_BACKLOG_FACTOR=2\nGLM_BATCH_CAPSULES_ENABLED=true\nGLM_BATCH_COGNITIVE_ANALYSIS_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# Production URL (for Flutter deeplinks, CORS, email links)\nPRODUCTION_URL=\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\nENABLE_CONTEXT_SEMANTIC_GATING=true\nENABLE_CONTEXT_BRIEFING=true\nENABLE_CONTEXT_FOCUS_METADATA=true\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\nENABLE_ADAPTIVE_PRESENTATION=true\nENABLE_STRUCTURED_NEXT_ACTIONS=true\nENABLE_BLOCKED_TEMPERATURE=true\nENABLE_UX_PRESENTATION_METADATA=true\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\nENABLE_PROACTIVE_INSIGHTS=true\nENABLE_PLAN_REASONING_SUMMARY=true\nENABLE_WEEKLY_LEARNING_REPORT=true\nENABLE_PROGRESS_COMPARISONS=true\n\n# Aurora tri-state kill switches (off | shadow | live)\nSPARKLE_MEMORY_INFERRED_WRITE_ENABLED=true\nAURORA_STAGE18_AGGREGATOR_MODE=live\nAURORA_STAGE18_PUSH_POLICY_MODE=live\nAURORA_STAGE18_PUSH_DELIVERY_MODE=live\nAURORA_STAGE19_WORKING_MEMORY_MODE=live\nAURORA_STAGE19_LLM_EXTRACTOR_MODE=live\nAURORA_STAGE19_CONSOLIDATION_MODE=live\nAURORA_STAGE21_SKILL_STORE_MODE=live\nAURORA_STAGE21_SKILL_SELECTION_MODE=live\nAURORA_STAGE21_SKILL_SHARE_MODE=live\nAURORA_BAYESIAN_MODE=live\nAURORA_POLICY_COMPILER_MODE=live\nAURORA_REFLECTION_WIRE_MODE=live\nAURORA_SCENE_MODE=live\nAURORA_FORESIGHT_MODE=live\nAURORA_TRAITS_MODE=live\nAURORA_TRAITS_NLP_MODE=live\nAURORA_TRAITS_COLDSTART_MODE=live\nAURORA_SRL_MODE=live\nAURORA_SRL_TRACKER_MODE=live\nAURORA_SRL_BRIDGE_MODE=live\nAURORA_SRL_SCAFFOLDING_CONSUME_MODE=live\nAURORA_METACOG_MODE=live\nAURORA_METACOG_DASHBOARD_MODE=live\nAURORA_METACOG_PROCESS_SCAFFOLDING_MODE=live\nAURORA_METACOG_FSM_COMBINE_MODE=live\nAURORA_IDIOGRAPHIC_MODE=live\nAURORA_STAGE33_MODE=live\nAURORA_STAGE33_SOCIAL_MODE=live\nAURORA_STAGE33_SRL_MODE=live\nAURORA_STAGE33_WM_PROMPT_MODE=live\nAURORA_STAGE33_EVENTS_MODE=live\nAURORA_STAGE34_MODE=live\nAURORA_STAGE34_ERROR_BRIDGE_MODE=live\nAURORA_STAGE34_CAPSULE_MODE=live\nAURORA_STAGE34_JOURNEY_SUBSCRIBERS_ENABLED=live\nAURORA_STAGE35_MODE=live\nAURORA_STAGE35_METACOG_ROUTER_MODE=live\nAURORA_STAGE38_ERR_REPLAN_MODE=live\nAURORA_STAGE38_PUSH_SCHEDULER_MODE=live\nAURORA_DOC_CONTEXT_DOCUMENT_CONTEXT_INJECTION_MODE=live\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# GLM OCR (Document Cleaning via Zhipu)\n# ZHIPU_API_KEY=your_zhipu_api_key\n# ZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n# ZHIPU_OCR_MODEL=glm-ocr\n"}, "db2e8a7486ef6b65a52cb728f888789e24f8f5d7": {"t": 1785747988.7918577, "n": 8526, "h": "144865a71dc15c1c", "c": "# Application Settings\n# ⚠️ Production: ALL values marked \"your_xxx\" or \"replace_with\" MUST be replaced with real secrets.\n# Run `python scripts/check_production_secrets.py` to validate.\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=replace_with_a_32_plus_char_secret_key_value_here # REQUIRED: min 32 chars\nJWT_SECRET=replace_with_a_32_plus_char_jwt_secret_value_here # REQUIRED: min 32 chars\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# Sentry Crash Reporting (leave empty to disable)\nSENTRY_DSN=\nSENTRY_ENVIRONMENT=production\nSENTRY_TRACES_SAMPLE_RATE=0.1\n\n# OpenClaw delegated execution\nOPENCLAW_ENABLED=true\nOPENCLAW_TRANSPORT=gateway_ws\nOPENCLAW_DEFAULT_AGENT_ID=main\nOPENCLAW_GATEWAY_URL=http://127.0.0.1:18789\nOPENCLAW_WS_URL=ws://127.0.0.1:18789\nOPENCLAW_WS_DEVICE_IDENTITY_PATH=/absolute/path/to/.openclaw/device.json\nOPENCLAW_DEFAULT_WORKDIR=/absolute/path/to/Sparkle-project\nOPENCLAW_DEFAULT_TIMEOUT_SECONDS=300\nOPENCLAW_MAX_CONCURRENT_RUNS=3\n\n# Social Login — Google\nGOOGLE_CLIENT_ID=your_google_client_id\n\n# Social Login — Apple\nAPPLE_CLIENT_ID=your_apple_client_id\n\n# Social Login — WeChat\nWECHAT_APP_ID=your_wechat_app_id\nWECHAT_APP_SECRET=your_wechat_app_secret\n\n# Email Service\nEMAIL_ENABLED=false\nSMTP_HOST=\nSMTP_PORT=587\nSMTP_USER=\nSMTP_PASSWORD=\nEMAIL_FROM=\nEMAIL_FROM_NAME=Sparkle\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_PLUS=\nLLM_TIER_PRO=\nLLM_TIER_REASONING=\nLLM_TIER_MAX=\nLLM_TIER_GLM_BATCH=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_STANDARD_MODEL=mimo-v2-flash\nXIAOMI_PRO_MODEL=MiMo-V2.5\nXIAOMI_TEMPERATURE=0.3\nXIAOMI_PRO_TEMPERATURE=0.3\n\n# MIMO 编码套餐 (可选,Pro 模型走独立 URL)\nXIAOMI_MIMO_TOKEN_PLAN_API_KEY=\nXIAOMI_MIMO_TOKEN_PLAN_BASE_URL=https://token-plan-cn.xiaomimimo.com/v1\n\n# DeepSeek Configuration (v4 models)\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_AIR_MODEL=glm-4.5-air\nZHIPU_LIGHT_MODEL=glm-4.6\nZHIPU_MAX_MODEL=glm-5\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CODING_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\nOCR_PROVIDER=zhipu\nOCR_BACKUP_PROVIDER=siliconflow\n\n# SiliconFlow Configuration (Embedding/Rerank/翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_OCR_TIMEOUT_SECONDS=120\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nSILICONFLOW_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nTRANSLATION_PRIMARY_PROVIDER=hunyuan\nTRANSLATION_BACKUP_PROVIDER=siliconflow\nTRANSLATION_PROVIDER_TIMEOUT_SECONDS=30\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen3.6-plus\nDASHSCOPE_REASON_MODEL=qwen3.6-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_BACKUP_PROVIDER=siliconflow\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_BACKUP_PROVIDER=siliconflow\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nSTT_ENHANCE_ENABLED=true\n\n# GLM Batch\nGLM_BATCH_ENABLED=true\nGLM_BATCH_QUEUE=glm_batch\nGLM_BATCH_MIN_CONCURRENCY=1\nGLM_BATCH_MAX_CONCURRENCY=6\nGLM_BATCH_PEAK_START_HOUR=14\nGLM_BATCH_PEAK_END_HOUR=18\nGLM_BATCH_PEAK_CONCURRENCY=2\nGLM_BATCH_OFFPEAK_DEFAULT_CONCURRENCY=3\nGLM_BATCH_ADAPTIVE_ENABLED=true\nGLM_BATCH_ADAPTIVE_SUCCESS_THRESHOLD=8\nGLM_BATCH_ADAPTIVE_INCREASE_COOLDOWN_SECONDS=180\nGLM_BATCH_ADAPTIVE_RATE_LIMIT_COOLDOWN_SECONDS=300\nGLM_BATCH_SPILLOVER_ENABLED=true\nGLM_BATCH_SPILLOVER_BACKLOG_FACTOR=2\nGLM_BATCH_CAPSULES_ENABLED=true\nGLM_BATCH_COGNITIVE_ANALYSIS_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# Production URL (for Flutter deeplinks, CORS, email links)\nPRODUCTION_URL=\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\nENABLE_CONTEXT_SEMANTIC_GATING=true\nENABLE_CONTEXT_BRIEFING=true\nENABLE_CONTEXT_FOCUS_METADATA=true\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\nENABLE_ADAPTIVE_PRESENTATION=true\nENABLE_STRUCTURED_NEXT_ACTIONS=true\nENABLE_BLOCKED_TEMPERATURE=true\nENABLE_UX_PRESENTATION_METADATA=true\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\nENABLE_PROACTIVE_INSIGHTS=true\nENABLE_PLAN_REASONING_SUMMARY=true\nENABLE_WEEKLY_LEARNING_REPORT=true\nENABLE_PROGRESS_COMPARISONS=true\n\n# Aurora tri-state kill switches (off | shadow | live)\nSPARKLE_MEMORY_INFERRED_WRITE_ENABLED=true\nAURORA_STAGE18_AGGREGATOR_MODE=live\nAURORA_STAGE18_PUSH_POLICY_MODE=live\nAURORA_STAGE18_PUSH_DELIVERY_MODE=live\nAURORA_STAGE19_WORKING_MEMORY_MODE=live\nAURORA_STAGE19_LLM_EXTRACTOR_MODE=live\nAURORA_STAGE19_CONSOLIDATION_MODE=live\nAURORA_STAGE21_SKILL_STORE_MODE=live\nAURORA_STAGE21_SKILL_SELECTION_MODE=live\nAURORA_STAGE21_SKILL_SHARE_MODE=live\nAURORA_BAYESIAN_MODE=live\nAURORA_POLICY_COMPILER_MODE=live\nAURORA_REFLECTION_WIRE_MODE=live\nAURORA_SCENE_MODE=live\nAURORA_FORESIGHT_MODE=live\nAURORA_TRAITS_MODE=live\nAURORA_TRAITS_NLP_MODE=live\nAURORA_TRAITS_COLDSTART_MODE=live\nAURORA_SRL_MODE=live\nAURORA_SRL_TRACKER_MODE=live\nAURORA_SRL_BRIDGE_MODE=live\nAURORA_SRL_SCAFFOLDING_CONSUME_MODE=live\nAURORA_METACOG_MODE=live\nAURORA_METACOG_DASHBOARD_MODE=live\nAURORA_METACOG_PROCESS_SCAFFOLDING_MODE=live\nAURORA_METACOG_FSM_COMBINE_MODE=live\nAURORA_IDIOGRAPHIC_MODE=live\nAURORA_STAGE33_MODE=live\nAURORA_STAGE33_SOCIAL_MODE=live\nAURORA_STAGE33_SRL_MODE=live\nAURORA_STAGE33_WM_PROMPT_MODE=live\nAURORA_STAGE33_EVENTS_MODE=live\nAURORA_STAGE34_MODE=live\nAURORA_STAGE34_ERROR_BRIDGE_MODE=live\nAURORA_STAGE34_CAPSULE_MODE=live\nAURORA_STAGE34_JOURNEY_SUBSCRIBERS_ENABLED=live\nAURORA_STAGE35_MODE=live\nAURORA_STAGE35_METACOG_ROUTER_MODE=live\nAURORA_STAGE38_ERR_REPLAN_MODE=live\nAURORA_STAGE38_PUSH_SCHEDULER_MODE=live\nAURORA_DOC_CONTEXT_DOCUMENT_CONTEXT_INJECTION_MODE=live\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# GLM OCR (Document Cleaning via Zhipu)\n# ZHIPU_API_KEY=your_zhipu_api_key\n# ZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n# ZHIPU_OCR_MODEL=glm-ocr\n"}, "32b915219c867f46ca325638f58cecda72e95b36": {"t": 1785747990.0423558, "n": 8233, "h": "0bb1d2f555b5c351", "c": "# Application Settings\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=replace_with_a_32_plus_char_secret_key_value_here\nJWT_SECRET=replace_with_a_32_plus_char_jwt_secret_value_here\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# Sentry Crash Reporting (leave empty to disable)\nSENTRY_DSN=\nSENTRY_ENVIRONMENT=production\nSENTRY_TRACES_SAMPLE_RATE=0.1\n\n# OpenClaw delegated execution\nOPENCLAW_ENABLED=true\nOPENCLAW_TRANSPORT=gateway_ws\nOPENCLAW_DEFAULT_AGENT_ID=main\nOPENCLAW_GATEWAY_URL=http://127.0.0.1:18789\nOPENCLAW_WS_URL=ws://127.0.0.1:18789\nOPENCLAW_WS_DEVICE_IDENTITY_PATH=/absolute/path/to/.openclaw/device.json\nOPENCLAW_DEFAULT_WORKDIR=/absolute/path/to/Sparkle-project\nOPENCLAW_DEFAULT_TIMEOUT_SECONDS=300\nOPENCLAW_MAX_CONCURRENT_RUNS=3\n\n# Social Login — Google\nGOOGLE_CLIENT_ID=your_google_client_id\n\n# Social Login — Apple\nAPPLE_CLIENT_ID=your_apple_client_id\n\n# Social Login — WeChat\nWECHAT_APP_ID=your_wechat_app_id\nWECHAT_APP_SECRET=your_wechat_app_secret\n\n# Email Service\nEMAIL_ENABLED=false\nSMTP_HOST=\nSMTP_PORT=587\nSMTP_USER=\nSMTP_PASSWORD=\nEMAIL_FROM=\nEMAIL_FROM_NAME=Sparkle\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_PLUS=\nLLM_TIER_PRO=\nLLM_TIER_REASONING=\nLLM_TIER_MAX=\nLLM_TIER_GLM_BATCH=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_STANDARD_MODEL=mimo-v2-flash\nXIAOMI_PRO_MODEL=MiMo-V2.5\nXIAOMI_TEMPERATURE=0.3\nXIAOMI_PRO_TEMPERATURE=0.3\n\n# MIMO 编码套餐 (可选,Pro 模型走独立 URL)\nXIAOMI_MIMO_TOKEN_PLAN_API_KEY=\nXIAOMI_MIMO_TOKEN_PLAN_BASE_URL=https://token-plan-cn.xiaomimimo.com/v1\n\n# DeepSeek Configuration (v4 models)\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_AIR_MODEL=glm-4.5-air\nZHIPU_LIGHT_MODEL=glm-4.6\nZHIPU_MAX_MODEL=glm-5\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CODING_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\nOCR_PROVIDER=zhipu\nOCR_BACKUP_PROVIDER=siliconflow\n\n# SiliconFlow Configuration (Embedding/Rerank/翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_OCR_TIMEOUT_SECONDS=120\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nSILICONFLOW_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nTRANSLATION_PRIMARY_PROVIDER=hunyuan\nTRANSLATION_BACKUP_PROVIDER=siliconflow\nTRANSLATION_PROVIDER_TIMEOUT_SECONDS=30\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen3.6-plus\nDASHSCOPE_REASON_MODEL=qwen3.6-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_BACKUP_PROVIDER=siliconflow\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_BACKUP_PROVIDER=siliconflow\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nSTT_ENHANCE_ENABLED=true\n\n# GLM Batch\nGLM_BATCH_ENABLED=true\nGLM_BATCH_QUEUE=glm_batch\nGLM_BATCH_MIN_CONCURRENCY=1\nGLM_BATCH_MAX_CONCURRENCY=6\nGLM_BATCH_PEAK_START_HOUR=14\nGLM_BATCH_PEAK_END_HOUR=18\nGLM_BATCH_PEAK_CONCURRENCY=2\nGLM_BATCH_OFFPEAK_DEFAULT_CONCURRENCY=3\nGLM_BATCH_ADAPTIVE_ENABLED=true\nGLM_BATCH_ADAPTIVE_SUCCESS_THRESHOLD=8\nGLM_BATCH_ADAPTIVE_INCREASE_COOLDOWN_SECONDS=180\nGLM_BATCH_ADAPTIVE_RATE_LIMIT_COOLDOWN_SECONDS=300\nGLM_BATCH_SPILLOVER_ENABLED=true\nGLM_BATCH_SPILLOVER_BACKLOG_FACTOR=2\nGLM_BATCH_CAPSULES_ENABLED=true\nGLM_BATCH_COGNITIVE_ANALYSIS_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\nENABLE_CONTEXT_SEMANTIC_GATING=true\nENABLE_CONTEXT_BRIEFING=true\nENABLE_CONTEXT_FOCUS_METADATA=true\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\nENABLE_ADAPTIVE_PRESENTATION=true\nENABLE_STRUCTURED_NEXT_ACTIONS=true\nENABLE_BLOCKED_TEMPERATURE=true\nENABLE_UX_PRESENTATION_METADATA=true\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\nENABLE_PROACTIVE_INSIGHTS=true\nENABLE_PLAN_REASONING_SUMMARY=true\nENABLE_WEEKLY_LEARNING_REPORT=true\nENABLE_PROGRESS_COMPARISONS=true\n\n# Aurora tri-state kill switches (off | shadow | live)\nSPARKLE_MEMORY_INFERRED_WRITE_ENABLED=true\nAURORA_STAGE18_AGGREGATOR_MODE=live\nAURORA_STAGE18_PUSH_POLICY_MODE=live\nAURORA_STAGE18_PUSH_DELIVERY_MODE=live\nAURORA_STAGE19_WORKING_MEMORY_MODE=live\nAURORA_STAGE19_LLM_EXTRACTOR_MODE=live\nAURORA_STAGE19_CONSOLIDATION_MODE=live\nAURORA_STAGE21_SKILL_STORE_MODE=live\nAURORA_STAGE21_SKILL_SELECTION_MODE=live\nAURORA_STAGE21_SKILL_SHARE_MODE=live\nAURORA_BAYESIAN_MODE=live\nAURORA_POLICY_COMPILER_MODE=live\nAURORA_REFLECTION_WIRE_MODE=live\nAURORA_SCENE_MODE=live\nAURORA_FORESIGHT_MODE=live\nAURORA_TRAITS_MODE=live\nAURORA_TRAITS_NLP_MODE=live\nAURORA_TRAITS_COLDSTART_MODE=live\nAURORA_SRL_MODE=live\nAURORA_SRL_TRACKER_MODE=live\nAURORA_SRL_BRIDGE_MODE=live\nAURORA_SRL_SCAFFOLDING_CONSUME_MODE=live\nAURORA_METACOG_MODE=live\nAURORA_METACOG_DASHBOARD_MODE=live\nAURORA_METACOG_PROCESS_SCAFFOLDING_MODE=live\nAURORA_METACOG_FSM_COMBINE_MODE=live\nAURORA_IDIOGRAPHIC_MODE=live\nAURORA_STAGE33_MODE=live\nAURORA_STAGE33_SOCIAL_MODE=live\nAURORA_STAGE33_SRL_MODE=live\nAURORA_STAGE33_WM_PROMPT_MODE=live\nAURORA_STAGE33_EVENTS_MODE=live\nAURORA_STAGE34_MODE=live\nAURORA_STAGE34_ERROR_BRIDGE_MODE=live\nAURORA_STAGE34_CAPSULE_MODE=live\nAURORA_STAGE34_JOURNEY_SUBSCRIBERS_ENABLED=live\nAURORA_STAGE35_MODE=live\nAURORA_STAGE35_METACOG_ROUTER_MODE=live\nAURORA_STAGE38_ERR_REPLAN_MODE=live\nAURORA_STAGE38_PUSH_SCHEDULER_MODE=live\nAURORA_DOC_CONTEXT_DOCUMENT_CONTEXT_INJECTION_MODE=live\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# GLM OCR (Document Cleaning via Zhipu)\n# ZHIPU_API_KEY=your_zhipu_api_key\n# ZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n# ZHIPU_OCR_MODEL=glm-ocr\n"}, "b4e941a5df81eb5ad0230954ed28d4e23205c32c": {"t": 1785747991.1278994, "n": 8119, "h": "15c0ff980a22a36e", "c": "# Application Settings\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=replace_with_a_32_plus_char_secret_key_value_here\nJWT_SECRET=replace_with_a_32_plus_char_jwt_secret_value_here\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# OpenClaw delegated execution\nOPENCLAW_ENABLED=true\nOPENCLAW_TRANSPORT=gateway_ws\nOPENCLAW_DEFAULT_AGENT_ID=main\nOPENCLAW_GATEWAY_URL=http://127.0.0.1:18789\nOPENCLAW_WS_URL=ws://127.0.0.1:18789\nOPENCLAW_WS_DEVICE_IDENTITY_PATH=/absolute/path/to/.openclaw/device.json\nOPENCLAW_DEFAULT_WORKDIR=/absolute/path/to/Sparkle-project\nOPENCLAW_DEFAULT_TIMEOUT_SECONDS=300\nOPENCLAW_MAX_CONCURRENT_RUNS=3\n\n# Social Login — Google\nGOOGLE_CLIENT_ID=your_google_client_id\n\n# Social Login — Apple\nAPPLE_CLIENT_ID=your_apple_client_id\n\n# Social Login — WeChat\nWECHAT_APP_ID=your_wechat_app_id\nWECHAT_APP_SECRET=your_wechat_app_secret\n\n# Email Service\nEMAIL_ENABLED=false\nSMTP_HOST=\nSMTP_PORT=587\nSMTP_USER=\nSMTP_PASSWORD=\nEMAIL_FROM=\nEMAIL_FROM_NAME=Sparkle\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_PLUS=\nLLM_TIER_PRO=\nLLM_TIER_REASONING=\nLLM_TIER_MAX=\nLLM_TIER_GLM_BATCH=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_STANDARD_MODEL=mimo-v2-flash\nXIAOMI_PRO_MODEL=MiMo-V2.5\nXIAOMI_TEMPERATURE=0.3\nXIAOMI_PRO_TEMPERATURE=0.3\n\n# MIMO 编码套餐 (可选,Pro 模型走独立 URL)\nXIAOMI_MIMO_TOKEN_PLAN_API_KEY=\nXIAOMI_MIMO_TOKEN_PLAN_BASE_URL=https://token-plan-cn.xiaomimimo.com/v1\n\n# DeepSeek Configuration (v4 models)\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_AIR_MODEL=glm-4.5-air\nZHIPU_LIGHT_MODEL=glm-4.6\nZHIPU_MAX_MODEL=glm-5\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CODING_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\nOCR_PROVIDER=zhipu\nOCR_BACKUP_PROVIDER=siliconflow\n\n# SiliconFlow Configuration (Embedding/Rerank/翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_OCR_TIMEOUT_SECONDS=120\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nSILICONFLOW_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nTRANSLATION_PRIMARY_PROVIDER=hunyuan\nTRANSLATION_BACKUP_PROVIDER=siliconflow\nTRANSLATION_PROVIDER_TIMEOUT_SECONDS=30\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen3.6-plus\nDASHSCOPE_REASON_MODEL=qwen3.6-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_BACKUP_PROVIDER=siliconflow\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_BACKUP_PROVIDER=siliconflow\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nSTT_ENHANCE_ENABLED=true\n\n# GLM Batch\nGLM_BATCH_ENABLED=true\nGLM_BATCH_QUEUE=glm_batch\nGLM_BATCH_MIN_CONCURRENCY=1\nGLM_BATCH_MAX_CONCURRENCY=6\nGLM_BATCH_PEAK_START_HOUR=14\nGLM_BATCH_PEAK_END_HOUR=18\nGLM_BATCH_PEAK_CONCURRENCY=2\nGLM_BATCH_OFFPEAK_DEFAULT_CONCURRENCY=3\nGLM_BATCH_ADAPTIVE_ENABLED=true\nGLM_BATCH_ADAPTIVE_SUCCESS_THRESHOLD=8\nGLM_BATCH_ADAPTIVE_INCREASE_COOLDOWN_SECONDS=180\nGLM_BATCH_ADAPTIVE_RATE_LIMIT_COOLDOWN_SECONDS=300\nGLM_BATCH_SPILLOVER_ENABLED=true\nGLM_BATCH_SPILLOVER_BACKLOG_FACTOR=2\nGLM_BATCH_CAPSULES_ENABLED=true\nGLM_BATCH_COGNITIVE_ANALYSIS_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\nENABLE_CONTEXT_SEMANTIC_GATING=true\nENABLE_CONTEXT_BRIEFING=true\nENABLE_CONTEXT_FOCUS_METADATA=true\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\nENABLE_ADAPTIVE_PRESENTATION=true\nENABLE_STRUCTURED_NEXT_ACTIONS=true\nENABLE_BLOCKED_TEMPERATURE=true\nENABLE_UX_PRESENTATION_METADATA=true\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\nENABLE_PROACTIVE_INSIGHTS=true\nENABLE_PLAN_REASONING_SUMMARY=true\nENABLE_WEEKLY_LEARNING_REPORT=true\nENABLE_PROGRESS_COMPARISONS=true\n\n# Aurora tri-state kill switches (off | shadow | live)\nSPARKLE_MEMORY_INFERRED_WRITE_ENABLED=true\nAURORA_STAGE18_AGGREGATOR_MODE=live\nAURORA_STAGE18_PUSH_POLICY_MODE=off\nAURORA_STAGE18_PUSH_DELIVERY_MODE=off\nAURORA_STAGE19_WORKING_MEMORY_MODE=off\nAURORA_STAGE19_LLM_EXTRACTOR_MODE=off\nAURORA_STAGE19_CONSOLIDATION_MODE=off\nAURORA_STAGE21_SKILL_STORE_MODE=live\nAURORA_STAGE21_SKILL_SELECTION_MODE=off\nAURORA_STAGE21_SKILL_SHARE_MODE=off\nAURORA_BAYESIAN_MODE=shadow\nAURORA_POLICY_COMPILER_MODE=off\nAURORA_REFLECTION_WIRE_MODE=off\nAURORA_SCENE_MODE=off\nAURORA_FORESIGHT_MODE=off\nAURORA_TRAITS_MODE=off\nAURORA_TRAITS_NLP_MODE=off\nAURORA_TRAITS_COLDSTART_MODE=off\nAURORA_SRL_MODE=off\nAURORA_SRL_TRACKER_MODE=off\nAURORA_SRL_BRIDGE_MODE=off\nAURORA_SRL_SCAFFOLDING_CONSUME_MODE=off\nAURORA_METACOG_MODE=off\nAURORA_METACOG_DASHBOARD_MODE=live\nAURORA_METACOG_PROCESS_SCAFFOLDING_MODE=live\nAURORA_METACOG_FSM_COMBINE_MODE=live\nAURORA_IDIOGRAPHIC_MODE=shadow\nAURORA_STAGE33_MODE=shadow\nAURORA_STAGE33_SOCIAL_MODE=live\nAURORA_STAGE33_SRL_MODE=shadow\nAURORA_STAGE33_WM_PROMPT_MODE=shadow\nAURORA_STAGE33_EVENTS_MODE=shadow\nAURORA_STAGE34_MODE=shadow\nAURORA_STAGE34_ERROR_BRIDGE_MODE=shadow\nAURORA_STAGE34_CAPSULE_MODE=shadow\nAURORA_STAGE34_JOURNEY_SUBSCRIBERS_ENABLED=live\nAURORA_STAGE35_MODE=shadow\nAURORA_STAGE35_METACOG_ROUTER_MODE=shadow\nAURORA_STAGE38_ERR_REPLAN_MODE=shadow\nAURORA_STAGE38_PUSH_SCHEDULER_MODE=shadow\nAURORA_DOC_CONTEXT_DOCUMENT_CONTEXT_INJECTION_MODE=shadow\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# GLM OCR (Document Cleaning via Zhipu)\n# ZHIPU_API_KEY=your_zhipu_api_key\n# ZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n# ZHIPU_OCR_MODEL=glm-ocr\n"}, "2ef5e2a65de952ad3342eb6270370c8f7a522eb0": {"t": 1785747992.2143826, "n": 7762, "h": "cc7725869a395599", "c": "# Application Settings\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=replace_with_a_32_plus_char_secret_key_value_here\nJWT_SECRET=replace_with_a_32_plus_char_jwt_secret_value_here\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# OpenClaw delegated execution\nOPENCLAW_ENABLED=true\nOPENCLAW_TRANSPORT=gateway_ws\nOPENCLAW_DEFAULT_AGENT_ID=main\nOPENCLAW_GATEWAY_URL=http://127.0.0.1:18789\nOPENCLAW_WS_URL=ws://127.0.0.1:18789\nOPENCLAW_WS_DEVICE_IDENTITY_PATH=/absolute/path/to/.openclaw/device.json\nOPENCLAW_DEFAULT_WORKDIR=/absolute/path/to/Sparkle-project\nOPENCLAW_DEFAULT_TIMEOUT_SECONDS=300\nOPENCLAW_MAX_CONCURRENT_RUNS=3\n\n# Social Login — Google\nGOOGLE_CLIENT_ID=your_google_client_id\n\n# Social Login — Apple\nAPPLE_CLIENT_ID=your_apple_client_id\n\n# Social Login — WeChat\nWECHAT_APP_ID=your_wechat_app_id\nWECHAT_APP_SECRET=your_wechat_app_secret\n\n# Email Service\nEMAIL_ENABLED=false\nSMTP_HOST=\nSMTP_PORT=587\nSMTP_USER=\nSMTP_PASSWORD=\nEMAIL_FROM=\nEMAIL_FROM_NAME=Sparkle\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_PLUS=\nLLM_TIER_PRO=\nLLM_TIER_REASONING=\nLLM_TIER_MAX=\nLLM_TIER_GLM_BATCH=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_STANDARD_MODEL=mimo-v2-flash\nXIAOMI_PRO_MODEL=MiMo-V2.5\nXIAOMI_TEMPERATURE=0.3\nXIAOMI_PRO_TEMPERATURE=0.3\n\n# MIMO 编码套餐 (可选,Pro 模型走独立 URL)\nXIAOMI_MIMO_TOKEN_PLAN_API_KEY=\nXIAOMI_MIMO_TOKEN_PLAN_BASE_URL=https://token-plan-cn.xiaomimimo.com/v1\n\n# DeepSeek Configuration (v4 models)\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_AIR_MODEL=glm-4.5-air\nZHIPU_LIGHT_MODEL=glm-4.6\nZHIPU_MAX_MODEL=glm-5\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CODING_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\nOCR_PROVIDER=zhipu\nOCR_BACKUP_PROVIDER=siliconflow\n\n# SiliconFlow Configuration (Embedding/Rerank/翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_OCR_TIMEOUT_SECONDS=120\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nSILICONFLOW_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nTRANSLATION_PRIMARY_PROVIDER=hunyuan\nTRANSLATION_BACKUP_PROVIDER=siliconflow\nTRANSLATION_PROVIDER_TIMEOUT_SECONDS=30\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen3.6-plus\nDASHSCOPE_REASON_MODEL=qwen3.6-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_BACKUP_PROVIDER=siliconflow\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_BACKUP_PROVIDER=siliconflow\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nSTT_ENHANCE_ENABLED=true\n\n# GLM Batch\nGLM_BATCH_ENABLED=true\nGLM_BATCH_QUEUE=glm_batch\nGLM_BATCH_MIN_CONCURRENCY=1\nGLM_BATCH_MAX_CONCURRENCY=6\nGLM_BATCH_PEAK_START_HOUR=14\nGLM_BATCH_PEAK_END_HOUR=18\nGLM_BATCH_PEAK_CONCURRENCY=2\nGLM_BATCH_OFFPEAK_DEFAULT_CONCURRENCY=3\nGLM_BATCH_ADAPTIVE_ENABLED=true\nGLM_BATCH_ADAPTIVE_SUCCESS_THRESHOLD=8\nGLM_BATCH_ADAPTIVE_INCREASE_COOLDOWN_SECONDS=180\nGLM_BATCH_ADAPTIVE_RATE_LIMIT_COOLDOWN_SECONDS=300\nGLM_BATCH_SPILLOVER_ENABLED=true\nGLM_BATCH_SPILLOVER_BACKLOG_FACTOR=2\nGLM_BATCH_CAPSULES_ENABLED=true\nGLM_BATCH_COGNITIVE_ANALYSIS_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\nENABLE_CONTEXT_SEMANTIC_GATING=true\nENABLE_CONTEXT_BRIEFING=true\nENABLE_CONTEXT_FOCUS_METADATA=true\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\nENABLE_ADAPTIVE_PRESENTATION=true\nENABLE_STRUCTURED_NEXT_ACTIONS=true\nENABLE_BLOCKED_TEMPERATURE=true\nENABLE_UX_PRESENTATION_METADATA=true\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\nENABLE_PROACTIVE_INSIGHTS=true\nENABLE_PLAN_REASONING_SUMMARY=true\nENABLE_WEEKLY_LEARNING_REPORT=true\nENABLE_PROGRESS_COMPARISONS=true\n\n# Aurora tri-state kill switches (off | shadow | live)\nSPARKLE_MEMORY_INFERRED_WRITE_ENABLED=true\nAURORA_STAGE18_AGGREGATOR_MODE=live\nAURORA_STAGE18_PUSH_POLICY_MODE=off\nAURORA_STAGE18_PUSH_DELIVERY_MODE=off\nAURORA_STAGE19_WORKING_MEMORY_MODE=off\nAURORA_STAGE19_LLM_EXTRACTOR_MODE=off\nAURORA_STAGE19_CONSOLIDATION_MODE=off\nAURORA_STAGE21_SKILL_STORE_MODE=live\nAURORA_STAGE21_SKILL_SELECTION_MODE=off\nAURORA_STAGE21_SKILL_SHARE_MODE=off\nAURORA_BAYESIAN_MODE=shadow\nAURORA_POLICY_COMPILER_MODE=off\nAURORA_REFLECTION_WIRE_MODE=off\nAURORA_SCENE_MODE=off\nAURORA_FORESIGHT_MODE=off\nAURORA_TRAITS_MODE=off\nAURORA_TRAITS_NLP_MODE=off\nAURORA_TRAITS_COLDSTART_MODE=off\nAURORA_SRL_MODE=off\nAURORA_SRL_TRACKER_MODE=off\nAURORA_SRL_BRIDGE_MODE=off\nAURORA_SRL_SCAFFOLDING_CONSUME_MODE=off\nAURORA_METACOG_MODE=off\nAURORA_METACOG_DASHBOARD_MODE=live\nAURORA_METACOG_PROCESS_SCAFFOLDING_MODE=live\nAURORA_METACOG_FSM_COMBINE_MODE=live\nAURORA_IDIOGRAPHIC_MODE=shadow\nAURORA_STAGE33_MODE=shadow\nAURORA_STAGE33_SOCIAL_MODE=live\nAURORA_STAGE33_SRL_MODE=shadow\nAURORA_STAGE33_WM_PROMPT_MODE=shadow\nAURORA_STAGE33_EVENTS_MODE=shadow\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# GLM OCR (Document Cleaning via Zhipu)\n# ZHIPU_API_KEY=your_zhipu_api_key\n# ZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n# ZHIPU_OCR_MODEL=glm-ocr\n"}, "72693ca653f32acad2a02dfa7755cb2971512f3c": {"t": 1785747993.3203926, "n": 6654, "h": "4b8e0063c7a775c0", "c": "# Application Settings\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=replace_with_a_32_plus_char_secret_key_value_here\nJWT_SECRET=replace_with_a_32_plus_char_jwt_secret_value_here\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# OpenClaw delegated execution\nOPENCLAW_ENABLED=true\nOPENCLAW_TRANSPORT=gateway_ws\nOPENCLAW_DEFAULT_AGENT_ID=main\nOPENCLAW_GATEWAY_URL=http://127.0.0.1:18789\nOPENCLAW_WS_URL=ws://127.0.0.1:18789\nOPENCLAW_WS_DEVICE_IDENTITY_PATH=/absolute/path/to/.openclaw/device.json\nOPENCLAW_DEFAULT_WORKDIR=/absolute/path/to/Sparkle-project\nOPENCLAW_DEFAULT_TIMEOUT_SECONDS=300\nOPENCLAW_MAX_CONCURRENT_RUNS=3\n\n# Social Login — Google\nGOOGLE_CLIENT_ID=your_google_client_id\n\n# Social Login — Apple\nAPPLE_CLIENT_ID=your_apple_client_id\n\n# Social Login — WeChat\nWECHAT_APP_ID=your_wechat_app_id\nWECHAT_APP_SECRET=your_wechat_app_secret\n\n# Email Service\nEMAIL_ENABLED=false\nSMTP_HOST=\nSMTP_PORT=587\nSMTP_USER=\nSMTP_PASSWORD=\nEMAIL_FROM=\nEMAIL_FROM_NAME=Sparkle\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_PLUS=\nLLM_TIER_PRO=\nLLM_TIER_REASONING=\nLLM_TIER_MAX=\nLLM_TIER_GLM_BATCH=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_STANDARD_MODEL=mimo-v2-flash\nXIAOMI_PRO_MODEL=MiMo-V2.5\nXIAOMI_TEMPERATURE=0.3\nXIAOMI_PRO_TEMPERATURE=0.3\n\n# MIMO 编码套餐 (可选,Pro 模型走独立 URL)\nXIAOMI_MIMO_TOKEN_PLAN_API_KEY=\nXIAOMI_MIMO_TOKEN_PLAN_BASE_URL=https://token-plan-cn.xiaomimimo.com/v1\n\n# DeepSeek Configuration (v4 models)\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_AIR_MODEL=glm-4.5-air\nZHIPU_LIGHT_MODEL=glm-4.6\nZHIPU_MAX_MODEL=glm-5\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CODING_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\nOCR_PROVIDER=zhipu\nOCR_BACKUP_PROVIDER=siliconflow\n\n# SiliconFlow Configuration (Embedding/Rerank/翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_OCR_TIMEOUT_SECONDS=120\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nSILICONFLOW_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nTRANSLATION_PRIMARY_PROVIDER=hunyuan\nTRANSLATION_BACKUP_PROVIDER=siliconflow\nTRANSLATION_PROVIDER_TIMEOUT_SECONDS=30\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen3.6-plus\nDASHSCOPE_REASON_MODEL=qwen3.6-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_BACKUP_PROVIDER=siliconflow\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_BACKUP_PROVIDER=siliconflow\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nSTT_ENHANCE_ENABLED=true\n\n# GLM Batch\nGLM_BATCH_ENABLED=true\nGLM_BATCH_QUEUE=glm_batch\nGLM_BATCH_MIN_CONCURRENCY=1\nGLM_BATCH_MAX_CONCURRENCY=6\nGLM_BATCH_PEAK_START_HOUR=14\nGLM_BATCH_PEAK_END_HOUR=18\nGLM_BATCH_PEAK_CONCURRENCY=2\nGLM_BATCH_OFFPEAK_DEFAULT_CONCURRENCY=3\nGLM_BATCH_ADAPTIVE_ENABLED=true\nGLM_BATCH_ADAPTIVE_SUCCESS_THRESHOLD=8\nGLM_BATCH_ADAPTIVE_INCREASE_COOLDOWN_SECONDS=180\nGLM_BATCH_ADAPTIVE_RATE_LIMIT_COOLDOWN_SECONDS=300\nGLM_BATCH_SPILLOVER_ENABLED=true\nGLM_BATCH_SPILLOVER_BACKLOG_FACTOR=2\nGLM_BATCH_CAPSULES_ENABLED=true\nGLM_BATCH_COGNITIVE_ANALYSIS_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\nENABLE_CONTEXT_SEMANTIC_GATING=true\nENABLE_CONTEXT_BRIEFING=true\nENABLE_CONTEXT_FOCUS_METADATA=true\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\nENABLE_ADAPTIVE_PRESENTATION=true\nENABLE_STRUCTURED_NEXT_ACTIONS=true\nENABLE_BLOCKED_TEMPERATURE=true\nENABLE_UX_PRESENTATION_METADATA=true\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\nENABLE_PROACTIVE_INSIGHTS=true\nENABLE_PLAN_REASONING_SUMMARY=true\nENABLE_WEEKLY_LEARNING_REPORT=true\nENABLE_PROGRESS_COMPARISONS=true\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# GLM OCR (Document Cleaning via Zhipu)\n# ZHIPU_API_KEY=your_zhipu_api_key\n# ZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n# ZHIPU_OCR_MODEL=glm-ocr\n"}, "ac4c3f94f4defab3284a5d74ea90a42501e8147d": {"t": 1785747994.4233932, "n": 6557, "h": "f56f543397b54473", "c": "# Application Settings\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=replace_with_a_32_plus_char_secret_key_value_here\nJWT_SECRET=replace_with_a_32_plus_char_jwt_secret_value_here\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# OpenClaw delegated execution\nOPENCLAW_ENABLED=true\nOPENCLAW_TRANSPORT=gateway_ws\nOPENCLAW_DEFAULT_AGENT_ID=main\nOPENCLAW_GATEWAY_URL=http://127.0.0.1:18789\nOPENCLAW_WS_URL=ws://127.0.0.1:18789\nOPENCLAW_WS_DEVICE_IDENTITY_PATH=/absolute/path/to/.openclaw/device.json\nOPENCLAW_DEFAULT_WORKDIR=/absolute/path/to/Sparkle-project\nOPENCLAW_DEFAULT_TIMEOUT_SECONDS=300\nOPENCLAW_MAX_CONCURRENT_RUNS=3\n\n# Social Login — Google\nGOOGLE_CLIENT_ID=your_google_client_id\n\n# Social Login — Apple\nAPPLE_CLIENT_ID=your_apple_client_id\n\n# Social Login — WeChat\nWECHAT_APP_ID=your_wechat_app_id\nWECHAT_APP_SECRET=your_wechat_app_secret\n\n# Email Service\nEMAIL_ENABLED=false\nSMTP_HOST=\nSMTP_PORT=587\nSMTP_USER=\nSMTP_PASSWORD=\nEMAIL_FROM=\nEMAIL_FROM_NAME=Sparkle\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_PLUS=\nLLM_TIER_PRO=\nLLM_TIER_REASONING=\nLLM_TIER_MAX=\nLLM_TIER_GLM_BATCH=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_STANDARD_MODEL=mimo-v2-flash\nXIAOMI_PRO_MODEL=mimo-v2-pro\nXIAOMI_TEMPERATURE=0.3\nXIAOMI_PRO_TEMPERATURE=0.3\n\n# MIMO 编码套餐 (可选,Pro 模型走独立 URL)\nXIAOMI_MIMO_TOKEN_PLAN_API_KEY=\nXIAOMI_MIMO_TOKEN_PLAN_BASE_URL=https://token-plan-cn.xiaomimimo.com/v1\n\n# DeepSeek Specific\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_AIR_MODEL=glm-4.5-air\nZHIPU_LIGHT_MODEL=glm-4.6\nZHIPU_MAX_MODEL=glm-5\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CODING_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\nOCR_PROVIDER=zhipu\nOCR_BACKUP_PROVIDER=siliconflow\n\n# SiliconFlow Configuration (Embedding/Rerank/翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_OCR_TIMEOUT_SECONDS=120\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nSILICONFLOW_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nTRANSLATION_PRIMARY_PROVIDER=hunyuan\nTRANSLATION_BACKUP_PROVIDER=siliconflow\nTRANSLATION_PROVIDER_TIMEOUT_SECONDS=30\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen-plus\nDASHSCOPE_REASON_MODEL=qwen-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_BACKUP_PROVIDER=siliconflow\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_BACKUP_PROVIDER=siliconflow\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nSTT_ENHANCE_ENABLED=true\n\n# GLM Batch\nGLM_BATCH_ENABLED=true\nGLM_BATCH_QUEUE=glm_batch\nGLM_BATCH_MIN_CONCURRENCY=1\nGLM_BATCH_MAX_CONCURRENCY=6\nGLM_BATCH_PEAK_START_HOUR=14\nGLM_BATCH_PEAK_END_HOUR=18\nGLM_BATCH_PEAK_CONCURRENCY=2\nGLM_BATCH_OFFPEAK_DEFAULT_CONCURRENCY=3\nGLM_BATCH_ADAPTIVE_ENABLED=true\nGLM_BATCH_ADAPTIVE_SUCCESS_THRESHOLD=8\nGLM_BATCH_ADAPTIVE_INCREASE_COOLDOWN_SECONDS=180\nGLM_BATCH_ADAPTIVE_RATE_LIMIT_COOLDOWN_SECONDS=300\nGLM_BATCH_SPILLOVER_ENABLED=true\nGLM_BATCH_SPILLOVER_BACKLOG_FACTOR=2\nGLM_BATCH_CAPSULES_ENABLED=true\nGLM_BATCH_COGNITIVE_ANALYSIS_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\nENABLE_CONTEXT_SEMANTIC_GATING=true\nENABLE_CONTEXT_BRIEFING=true\nENABLE_CONTEXT_FOCUS_METADATA=true\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\nENABLE_ADAPTIVE_PRESENTATION=true\nENABLE_STRUCTURED_NEXT_ACTIONS=true\nENABLE_BLOCKED_TEMPERATURE=true\nENABLE_UX_PRESENTATION_METADATA=true\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\nENABLE_PROACTIVE_INSIGHTS=true\nENABLE_PLAN_REASONING_SUMMARY=true\nENABLE_WEEKLY_LEARNING_REPORT=true\nENABLE_PROGRESS_COMPARISONS=true\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# GLM OCR (Document Cleaning via Zhipu)\n# ZHIPU_API_KEY=your_zhipu_api_key\n# ZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n# ZHIPU_OCR_MODEL=glm-ocr\n"}, "393e5fb96529c127b40a507ca0acb78f9e80fde1": {"t": 1785747995.5202835, "n": 6329, "h": "4a5178b9966c1626", "c": "# Application Settings\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=replace_with_a_32_plus_char_secret_key_value_here\nJWT_SECRET=replace_with_a_32_plus_char_jwt_secret_value_here\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# OpenClaw delegated execution\nOPENCLAW_ENABLED=true\nOPENCLAW_TRANSPORT=gateway_ws\nOPENCLAW_DEFAULT_AGENT_ID=main\nOPENCLAW_GATEWAY_URL=http://127.0.0.1:18789\nOPENCLAW_WS_URL=ws://127.0.0.1:18789\nOPENCLAW_WS_DEVICE_IDENTITY_PATH=/absolute/path/to/.openclaw/device.json\nOPENCLAW_DEFAULT_WORKDIR=/absolute/path/to/Sparkle-project\nOPENCLAW_DEFAULT_TIMEOUT_SECONDS=300\nOPENCLAW_MAX_CONCURRENT_RUNS=3\n\n# Social Login — Google\nGOOGLE_CLIENT_ID=your_google_client_id\n\n# Social Login — Apple\nAPPLE_CLIENT_ID=your_apple_client_id\n\n# Social Login — WeChat\nWECHAT_APP_ID=your_wechat_app_id\nWECHAT_APP_SECRET=your_wechat_app_secret\n\n# Email Service\nEMAIL_ENABLED=false\nSMTP_HOST=\nSMTP_PORT=587\nSMTP_USER=\nSMTP_PASSWORD=\nEMAIL_FROM=\nEMAIL_FROM_NAME=Sparkle\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_PLUS=\nLLM_TIER_PRO=\nLLM_TIER_REASONING=\nLLM_TIER_MAX=\nLLM_TIER_GLM_BATCH=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_TEMPERATURE=0.3\n\n# DeepSeek Specific\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_AIR_MODEL=glm-4.5-air\nZHIPU_LIGHT_MODEL=glm-4.6\nZHIPU_MAX_MODEL=glm-5\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CODING_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\nOCR_PROVIDER=zhipu\nOCR_BACKUP_PROVIDER=siliconflow\n\n# SiliconFlow Configuration (Embedding/Rerank/翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_OCR_TIMEOUT_SECONDS=120\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nSILICONFLOW_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nTRANSLATION_PRIMARY_PROVIDER=hunyuan\nTRANSLATION_BACKUP_PROVIDER=siliconflow\nTRANSLATION_PROVIDER_TIMEOUT_SECONDS=30\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen-plus\nDASHSCOPE_REASON_MODEL=qwen-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_BACKUP_PROVIDER=siliconflow\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_BACKUP_PROVIDER=siliconflow\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nSTT_ENHANCE_ENABLED=true\n\n# GLM Batch\nGLM_BATCH_ENABLED=true\nGLM_BATCH_QUEUE=glm_batch\nGLM_BATCH_MIN_CONCURRENCY=1\nGLM_BATCH_MAX_CONCURRENCY=6\nGLM_BATCH_PEAK_START_HOUR=14\nGLM_BATCH_PEAK_END_HOUR=18\nGLM_BATCH_PEAK_CONCURRENCY=2\nGLM_BATCH_OFFPEAK_DEFAULT_CONCURRENCY=3\nGLM_BATCH_ADAPTIVE_ENABLED=true\nGLM_BATCH_ADAPTIVE_SUCCESS_THRESHOLD=8\nGLM_BATCH_ADAPTIVE_INCREASE_COOLDOWN_SECONDS=180\nGLM_BATCH_ADAPTIVE_RATE_LIMIT_COOLDOWN_SECONDS=300\nGLM_BATCH_SPILLOVER_ENABLED=true\nGLM_BATCH_SPILLOVER_BACKLOG_FACTOR=2\nGLM_BATCH_CAPSULES_ENABLED=true\nGLM_BATCH_COGNITIVE_ANALYSIS_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\nENABLE_CONTEXT_SEMANTIC_GATING=true\nENABLE_CONTEXT_BRIEFING=true\nENABLE_CONTEXT_FOCUS_METADATA=true\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\nENABLE_ADAPTIVE_PRESENTATION=true\nENABLE_STRUCTURED_NEXT_ACTIONS=true\nENABLE_BLOCKED_TEMPERATURE=true\nENABLE_UX_PRESENTATION_METADATA=true\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\nENABLE_PROACTIVE_INSIGHTS=true\nENABLE_PLAN_REASONING_SUMMARY=true\nENABLE_WEEKLY_LEARNING_REPORT=true\nENABLE_PROGRESS_COMPARISONS=true\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# GLM OCR (Document Cleaning via Zhipu)\n# ZHIPU_API_KEY=your_zhipu_api_key\n# ZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n# ZHIPU_OCR_MODEL=glm-ocr\n"}, "dae0d684b771f310672a478d94774de5488d0c90": {"t": 1785747996.6507468, "n": 5933, "h": "f00bd94a89d0a118", "c": "# Application Settings\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=replace_with_a_32_plus_char_secret_key_value_here\nJWT_SECRET=replace_with_a_32_plus_char_jwt_secret_value_here\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# Social Login — Google\nGOOGLE_CLIENT_ID=your_google_client_id\n\n# Social Login — Apple\nAPPLE_CLIENT_ID=your_apple_client_id\n\n# Social Login — WeChat\nWECHAT_APP_ID=your_wechat_app_id\nWECHAT_APP_SECRET=your_wechat_app_secret\n\n# Email Service\nEMAIL_ENABLED=false\nSMTP_HOST=\nSMTP_PORT=587\nSMTP_USER=\nSMTP_PASSWORD=\nEMAIL_FROM=\nEMAIL_FROM_NAME=Sparkle\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_PLUS=\nLLM_TIER_PRO=\nLLM_TIER_REASONING=\nLLM_TIER_MAX=\nLLM_TIER_GLM_BATCH=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_TEMPERATURE=0.3\n\n# DeepSeek Specific\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_AIR_MODEL=glm-4.5-air\nZHIPU_LIGHT_MODEL=glm-4.6\nZHIPU_MAX_MODEL=glm-5\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CODING_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\nOCR_PROVIDER=zhipu\nOCR_BACKUP_PROVIDER=siliconflow\n\n# SiliconFlow Configuration (Embedding/Rerank/翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_OCR_TIMEOUT_SECONDS=120\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nSILICONFLOW_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nTRANSLATION_PRIMARY_PROVIDER=hunyuan\nTRANSLATION_BACKUP_PROVIDER=siliconflow\nTRANSLATION_PROVIDER_TIMEOUT_SECONDS=30\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen-plus\nDASHSCOPE_REASON_MODEL=qwen-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_BACKUP_PROVIDER=siliconflow\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_BACKUP_PROVIDER=siliconflow\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nSTT_ENHANCE_ENABLED=true\n\n# GLM Batch\nGLM_BATCH_ENABLED=true\nGLM_BATCH_QUEUE=glm_batch\nGLM_BATCH_MIN_CONCURRENCY=1\nGLM_BATCH_MAX_CONCURRENCY=6\nGLM_BATCH_PEAK_START_HOUR=14\nGLM_BATCH_PEAK_END_HOUR=18\nGLM_BATCH_PEAK_CONCURRENCY=2\nGLM_BATCH_OFFPEAK_DEFAULT_CONCURRENCY=3\nGLM_BATCH_ADAPTIVE_ENABLED=true\nGLM_BATCH_ADAPTIVE_SUCCESS_THRESHOLD=8\nGLM_BATCH_ADAPTIVE_INCREASE_COOLDOWN_SECONDS=180\nGLM_BATCH_ADAPTIVE_RATE_LIMIT_COOLDOWN_SECONDS=300\nGLM_BATCH_SPILLOVER_ENABLED=true\nGLM_BATCH_SPILLOVER_BACKLOG_FACTOR=2\nGLM_BATCH_CAPSULES_ENABLED=true\nGLM_BATCH_COGNITIVE_ANALYSIS_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\nENABLE_CONTEXT_SEMANTIC_GATING=true\nENABLE_CONTEXT_BRIEFING=true\nENABLE_CONTEXT_FOCUS_METADATA=true\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\nENABLE_ADAPTIVE_PRESENTATION=true\nENABLE_STRUCTURED_NEXT_ACTIONS=true\nENABLE_BLOCKED_TEMPERATURE=true\nENABLE_UX_PRESENTATION_METADATA=true\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\nENABLE_PROACTIVE_INSIGHTS=true\nENABLE_PLAN_REASONING_SUMMARY=true\nENABLE_WEEKLY_LEARNING_REPORT=true\nENABLE_PROGRESS_COMPARISONS=true\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# GLM OCR (Document Cleaning via Zhipu)\n# ZHIPU_API_KEY=your_zhipu_api_key\n# ZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n# ZHIPU_OCR_MODEL=glm-ocr\n"}, "449f93f6bfa99e19aaf7ed12fa0871b59d1c673e": {"t": 1785747997.7503002, "n": 5794, "h": "dc1da7f13f6a62d5", "c": "# Application Settings\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=replace_with_a_32_plus_char_secret_key_value_here\nJWT_SECRET=replace_with_a_32_plus_char_jwt_secret_value_here\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# Social Login — Google\nGOOGLE_CLIENT_ID=your_google_client_id\n\n# Social Login — Apple\nAPPLE_CLIENT_ID=your_apple_client_id\n\n# Social Login — WeChat\nWECHAT_APP_ID=your_wechat_app_id\nWECHAT_APP_SECRET=your_wechat_app_secret\n\n# Email Service\nEMAIL_ENABLED=false\nSMTP_HOST=\nSMTP_PORT=587\nSMTP_USER=\nSMTP_PASSWORD=\nEMAIL_FROM=\nEMAIL_FROM_NAME=Sparkle\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_REASONING=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_TEMPERATURE=0.3\n\n# DeepSeek Specific\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CODING_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\nOCR_PROVIDER=zhipu\nOCR_BACKUP_PROVIDER=siliconflow\n\n# SiliconFlow Configuration (Embedding/Rerank/翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_OCR_TIMEOUT_SECONDS=120\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nSILICONFLOW_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nTRANSLATION_PRIMARY_PROVIDER=hunyuan\nTRANSLATION_BACKUP_PROVIDER=siliconflow\nTRANSLATION_PROVIDER_TIMEOUT_SECONDS=30\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen-plus\nDASHSCOPE_REASON_MODEL=qwen-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_BACKUP_PROVIDER=siliconflow\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_BACKUP_PROVIDER=siliconflow\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nSTT_ENHANCE_ENABLED=true\n\n# GLM Batch\nGLM_BATCH_ENABLED=true\nGLM_BATCH_QUEUE=glm_batch\nGLM_BATCH_MIN_CONCURRENCY=1\nGLM_BATCH_MAX_CONCURRENCY=6\nGLM_BATCH_PEAK_START_HOUR=14\nGLM_BATCH_PEAK_END_HOUR=18\nGLM_BATCH_PEAK_CONCURRENCY=2\nGLM_BATCH_OFFPEAK_DEFAULT_CONCURRENCY=3\nGLM_BATCH_ADAPTIVE_ENABLED=true\nGLM_BATCH_ADAPTIVE_SUCCESS_THRESHOLD=8\nGLM_BATCH_ADAPTIVE_INCREASE_COOLDOWN_SECONDS=180\nGLM_BATCH_ADAPTIVE_RATE_LIMIT_COOLDOWN_SECONDS=300\nGLM_BATCH_SPILLOVER_ENABLED=true\nGLM_BATCH_SPILLOVER_BACKLOG_FACTOR=2\nGLM_BATCH_CAPSULES_ENABLED=true\nGLM_BATCH_COGNITIVE_ANALYSIS_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\nENABLE_CONTEXT_SEMANTIC_GATING=true\nENABLE_CONTEXT_BRIEFING=true\nENABLE_CONTEXT_FOCUS_METADATA=true\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\nENABLE_ADAPTIVE_PRESENTATION=true\nENABLE_STRUCTURED_NEXT_ACTIONS=true\nENABLE_BLOCKED_TEMPERATURE=true\nENABLE_UX_PRESENTATION_METADATA=true\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\nENABLE_PROACTIVE_INSIGHTS=true\nENABLE_PLAN_REASONING_SUMMARY=true\nENABLE_WEEKLY_LEARNING_REPORT=true\nENABLE_PROGRESS_COMPARISONS=true\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# GLM OCR (Document Cleaning via Zhipu)\n# ZHIPU_API_KEY=your_zhipu_api_key\n# ZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n# ZHIPU_OCR_MODEL=glm-ocr\n"}, "bb5dcc092834d2e59112f6f6d12fe06f52c8d0cb": {"t": 1785747998.8385584, "n": 5310, "h": "2a04cf9cc95a9af4", "c": "# Application Settings\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=your_secret_key_here\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# Social Login — Google\nGOOGLE_CLIENT_ID=your_google_client_id\n\n# Social Login — Apple\nAPPLE_CLIENT_ID=your_apple_client_id\n\n# Social Login — WeChat\nWECHAT_APP_ID=your_wechat_app_id\nWECHAT_APP_SECRET=your_wechat_app_secret\n\n# Email Service\nEMAIL_ENABLED=false\nSMTP_HOST=\nSMTP_PORT=587\nSMTP_USER=\nSMTP_PASSWORD=\nEMAIL_FROM=\nEMAIL_FROM_NAME=Sparkle\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_REASONING=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_TEMPERATURE=0.3\n\n# DeepSeek Specific\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CODING_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\nOCR_PROVIDER=zhipu\nOCR_BACKUP_PROVIDER=siliconflow\n\n# SiliconFlow Configuration (Embedding/Rerank/翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_OCR_TIMEOUT_SECONDS=120\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nSILICONFLOW_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nTRANSLATION_PRIMARY_PROVIDER=hunyuan\nTRANSLATION_BACKUP_PROVIDER=siliconflow\nTRANSLATION_PROVIDER_TIMEOUT_SECONDS=30\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen-plus\nDASHSCOPE_REASON_MODEL=qwen-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_BACKUP_PROVIDER=siliconflow\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_BACKUP_PROVIDER=siliconflow\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nSTT_ENHANCE_ENABLED=true\n\n# GLM Batch\nGLM_BATCH_ENABLED=true\nGLM_BATCH_QUEUE=glm_batch\nGLM_BATCH_MAX_CONCURRENCY=2\nGLM_BATCH_CAPSULES_ENABLED=true\nGLM_BATCH_COGNITIVE_ANALYSIS_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\nENABLE_CONTEXT_SEMANTIC_GATING=true\nENABLE_CONTEXT_BRIEFING=true\nENABLE_CONTEXT_FOCUS_METADATA=true\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\nENABLE_ADAPTIVE_PRESENTATION=true\nENABLE_STRUCTURED_NEXT_ACTIONS=true\nENABLE_BLOCKED_TEMPERATURE=true\nENABLE_UX_PRESENTATION_METADATA=true\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\nENABLE_PROACTIVE_INSIGHTS=true\nENABLE_PLAN_REASONING_SUMMARY=true\nENABLE_WEEKLY_LEARNING_REPORT=true\nENABLE_PROGRESS_COMPARISONS=true\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# GLM OCR (Document Cleaning via Zhipu)\n# ZHIPU_API_KEY=your_zhipu_api_key\n# ZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n# ZHIPU_OCR_MODEL=glm-ocr\n"}, "45488b3037baa5d5eded9705e84c7bd56f98c6a6": {"t": 1785747999.949685, "n": 4680, "h": "34a18876dc34e9d9", "c": "# Application Settings\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=your_secret_key_here\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# Social Login — Google\nGOOGLE_CLIENT_ID=your_google_client_id\n\n# Social Login — Apple\nAPPLE_CLIENT_ID=your_apple_client_id\n\n# Social Login — WeChat\nWECHAT_APP_ID=your_wechat_app_id\nWECHAT_APP_SECRET=your_wechat_app_secret\n\n# Email Service\nEMAIL_ENABLED=false\nSMTP_HOST=\nSMTP_PORT=587\nSMTP_USER=\nSMTP_PASSWORD=\nEMAIL_FROM=\nEMAIL_FROM_NAME=Sparkle\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_REASONING=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_TEMPERATURE=0.3\n\n# DeepSeek Specific\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\n\n# SiliconFlow Configuration (Embedding/Rerank/翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen-plus\nDASHSCOPE_REASON_MODEL=qwen-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_ENHANCE_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\nENABLE_CONTEXT_SEMANTIC_GATING=true\nENABLE_CONTEXT_BRIEFING=true\nENABLE_CONTEXT_FOCUS_METADATA=true\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\nENABLE_ADAPTIVE_PRESENTATION=true\nENABLE_STRUCTURED_NEXT_ACTIONS=true\nENABLE_BLOCKED_TEMPERATURE=true\nENABLE_UX_PRESENTATION_METADATA=true\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\nENABLE_PROACTIVE_INSIGHTS=true\nENABLE_PLAN_REASONING_SUMMARY=true\nENABLE_WEEKLY_LEARNING_REPORT=true\nENABLE_PROGRESS_COMPARISONS=true\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# GLM OCR (Document Cleaning via Zhipu)\n# ZHIPU_API_KEY=your_zhipu_api_key\n# ZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n# ZHIPU_OCR_MODEL=glm-ocr\n"}, "2828435fbe00ab64b4615563f9eb820db0f00115": {"t": 1785748002.0496142, "n": 4332, "h": "e604931324ad00fc", "c": "# Application Settings\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=your_secret_key_here\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_REASONING=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_TEMPERATURE=0.3\n\n# DeepSeek Specific\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\n\n# SiliconFlow Configuration (Embedding/Rerank/翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen-plus\nDASHSCOPE_REASON_MODEL=qwen-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_ENHANCE_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\nENABLE_CONTEXT_SEMANTIC_GATING=true\nENABLE_CONTEXT_BRIEFING=true\nENABLE_CONTEXT_FOCUS_METADATA=true\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\nENABLE_ADAPTIVE_PRESENTATION=true\nENABLE_STRUCTURED_NEXT_ACTIONS=true\nENABLE_BLOCKED_TEMPERATURE=true\nENABLE_UX_PRESENTATION_METADATA=true\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\nENABLE_PROACTIVE_INSIGHTS=true\nENABLE_PLAN_REASONING_SUMMARY=true\nENABLE_WEEKLY_LEARNING_REPORT=true\nENABLE_PROGRESS_COMPARISONS=true\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# GLM OCR (Document Cleaning via Zhipu)\n# ZHIPU_API_KEY=your_zhipu_api_key\n# ZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n# ZHIPU_OCR_MODEL=glm-ocr\n"}, "6e1b5a3c4c3f24f3c9542dc94f0b726cef072ac7": {"t": 1785748003.126391, "n": 3829, "h": "82c1ca3d3b444747", "c": "# Application Settings\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=your_secret_key_here\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_REASONING=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_TEMPERATURE=0.3\n\n# DeepSeek Specific\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\n\n# SiliconFlow Configuration (Embedding/Rerank/翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen-plus\nDASHSCOPE_REASON_MODEL=qwen-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_ENHANCE_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# GLM OCR (Document Cleaning via Zhipu)\n# ZHIPU_API_KEY=your_zhipu_api_key\n# ZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n# ZHIPU_OCR_MODEL=glm-ocr\n"}, "6f5f8c701ea91037ef96033ac8686c2f9debbebe": {"t": 1785748004.2184238, "n": 3846, "h": "ef34001b8675b9b6", "c": "# Application Settings\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=your_secret_key_here\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_REASONING=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_TEMPERATURE=0.3\n\n# DeepSeek Specific\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\n\n# SiliconFlow Configuration (专家模型:OCR、翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen-plus\nDASHSCOPE_REASON_MODEL=qwen-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_ENHANCE_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# DeepSeek-OCR (Document Cleaning via SiliconFlow)\n# SILICONFLOW_API_KEY=your_siliconflow_api_key\n# SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\n# SILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\n"}, "b715a3287168e1e7dd0eb891c3361142bda9f0e5": {"t": 1785748005.379837, "n": 3923, "h": "0a1fcab3ccd66d37", "c": "# Application Settings\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=your_secret_key_here\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_REASONING=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_TEMPERATURE=0.3\n\n# DeepSeek Specific\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\n\n# SiliconFlow Configuration (专家模型:OCR、翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen-plus\nDASHSCOPE_REASON_MODEL=qwen-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_ENHANCE_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# Proto compatibility flags\nPROTO_READ_NEW_FIRST=true\nPROTO_WRITE_DUAL=true\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# DeepSeek-OCR (Document Cleaning via SiliconFlow)\n# SILICONFLOW_API_KEY=your_siliconflow_api_key\n# SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\n# SILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\n"}, "f5598985931b5624cbdfcfa2ce6733c5519f8a8b": {"t": 1785748006.4463549, "n": 3846, "h": "ef34001b8675b9b6", "c": "# Application Settings\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=your_secret_key_here\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=your_postgres_password\nDATABASE_URL=postgresql+asyncpg://postgres:your_postgres_password@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=your_redis_password\nREDIS_URL=redis://:your_redis_password@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_REASONING=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_TEMPERATURE=0.3\n\n# DeepSeek Specific\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\n\n# SiliconFlow Configuration (专家模型:OCR、翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen-plus\nDASHSCOPE_REASON_MODEL=qwen-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_ENHANCE_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=your_internal_api_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# DeepSeek-OCR (Document Cleaning via SiliconFlow)\n# SILICONFLOW_API_KEY=your_siliconflow_api_key\n# SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\n# SILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\n"}, "e900c0dc6b29e08b2f6064accbf6f0cf2896d1f7": {"t": 1785748008.5721393, "n": 3810, "h": "d2cfcf309d16033e", "c": "# Application Settings\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=dev_secret_key_change_in_production\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=change-me\nDATABASE_URL=postgresql+asyncpg://postgres:change-me@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=change-me\nREDIS_URL=redis://:change-me@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_REASONING=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_TEMPERATURE=0.3\n\n# DeepSeek Specific\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\n\n# SiliconFlow Configuration (专家模型:OCR、翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen-plus\nDASHSCOPE_REASON_MODEL=qwen-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_ENHANCE_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=dev_internal_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# DeepSeek-OCR (Document Cleaning via SiliconFlow)\n# SILICONFLOW_API_KEY=your_siliconflow_api_key\n# SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\n# SILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\n"}, "97348646db58911e6aff63efc12fc075bba15fc5": {"t": 1785748009.7294881, "n": 3810, "h": "976b9b8965418c5f", "c": "# Application Settings\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=dev_secret_key_change_in_production\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=change-me\nDATABASE_URL=postgresql+asyncpg://postgres:change-me@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=change-me\nREDIS_URL=redis://:change-me@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n# LLM Tier Routing (comma-separated model keys from LLMRouter)\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_REASONING=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_TEMPERATURE=0.3\n\n# DeepSeek Specific\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\n\n# SiliconFlow Configuration (专家模型:OCR、翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen-plus\nDASHSCOPE_REASON_MODEL=qwen-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_ENHANCE_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_APP_ID=your_xunfei_app_id_here\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=iat\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=dev_internal_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# DeepSeek-OCR (Document Cleaning via SiliconFlow)\n# SILICONFLOW_API_KEY=your_siliconflow_api_key\n# SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\n# SILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\n"}, "c7a8c5c5df4c54b89cbbb393fbcd531632a31796": {"t": 1785748010.83144, "n": 3590, "h": "e221c84747f05fd5", "c": "# Application Settings\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=dev_secret_key_change_in_production\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=change-me\nDATABASE_URL=postgresql+asyncpg://postgres:change-me@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=change-me\nREDIS_URL=redis://:change-me@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-turbo\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n\n# XiaoMi MIMO Configuration (快速响应)\nXIAOMI_MIMO_API_KEY=your_xiaomi_mimo_api_key\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_TEMPERATURE=0.3\n\n# DeepSeek Specific\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\n# Zhipu GLM Configuration\n# GLM-4.7-Flash: 30B级模型,支持思考模式,面向Agentic Coding场景\nZHIPU_API_KEY=your_zhipu_api_key\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_TEMPERATURE=0.3\n\n# SiliconFlow Configuration (专家模型:OCR、翻译等)\n# 提供专用模型服务,通过 SPECIALIST tier 访问\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\n\n# Hunyuan Translation (via SiliconFlow)\n# 机器翻译专用模型\nHUNYUAN_API_KEY=your_siliconflow_api_key\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen-plus\nDASHSCOPE_REASON_MODEL=qwen-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_MODEL=qwen3-rerank\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_ENHANCE_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=iat\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=dev_internal_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# DeepSeek-OCR (Document Cleaning via SiliconFlow)\n# SILICONFLOW_API_KEY=your_siliconflow_api_key\n# SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\n# SILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\n"}, "66b613eb243b43de545aa9ffda4a3d77cefd1f23": {"t": 1785748012.3465812, "n": 2715, "h": "6ee2091178996f7e", "c": "# Application Settings\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=dev_secret_key_change_in_production\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=change-me\nDATABASE_URL=postgresql+asyncpg://postgres:change-me@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=change-me\nREDIS_URL=redis://:change-me@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-turbo\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n\n# DeepSeek Specific\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen-plus\nDASHSCOPE_REASON_MODEL=qwen-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=siliconflow\nEMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=siliconflow\nRERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_ENHANCE_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=iat\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# WebSocket Settings\nWS_ALLOW_QUERY_TOKEN=true\n\n# Internal API\nINTERNAL_API_KEY=dev_internal_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# DeepSeek-OCR (Document Cleaning via SiliconFlow)\n# SILICONFLOW_API_KEY=your_siliconflow_api_key\n# SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\n# SILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\n"}, "ac79c9a61b48cd2303cd22f7b712a6bf092788e5": {"t": 1785748013.431119, "n": 2667, "h": "9d7ede48b3ad1467", "c": "# Application Settings\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=dev_secret_key_change_in_production\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=change-me\nDATABASE_URL=postgresql+asyncpg://postgres:change-me@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=change-me\nREDIS_URL=redis://:change-me@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-turbo\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n\n# DeepSeek Specific\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen-plus\nDASHSCOPE_REASON_MODEL=qwen-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=siliconflow\nEMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=siliconflow\nRERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_ENHANCE_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=iat\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# Internal API\nINTERNAL_API_KEY=dev_internal_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\n\n# DeepSeek-OCR (Document Cleaning via SiliconFlow)\n# SILICONFLOW_API_KEY=your_siliconflow_api_key\n# SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\n# SILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\n"}, "e2129dac23c1990948fc3564383c9bde479289a4": {"t": 1785748014.5016088, "n": 2761, "h": "3c9a298d526e5d75", "c": "# Application Settings\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=dev_secret_key_change_in_production\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=change-me\nDATABASE_URL=postgresql+asyncpg://postgres:change-me@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=change-me\nREDIS_URL=redis://:change-me@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-turbo\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n\n# DeepSeek Specific\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen-plus\nDASHSCOPE_REASON_MODEL=qwen-plus\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=siliconflow\nEMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=siliconflow\nRERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_ENHANCE_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=iat\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# Internal API\nINTERNAL_API_KEY=dev_internal_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_CHAT_MODEL=tencent/Hunyuan-A13B-Instruct\n# HUNYUAN_REASON_MODEL=tencent/Hunyuan-A13B-Instruct\n# LLM_PROVIDER=hunyuan # 可选:设置为默认提供商\n\n# DeepSeek-OCR (Document Cleaning via SiliconFlow)\n# SILICONFLOW_API_KEY=your_siliconflow_api_key\n# SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\n# SILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\n"}, "760b2c09e4e4266030e6dc03439f2f88abea2605": {"t": 1785748015.607503, "n": 2591, "h": "23a79d6c0ad06d72", "c": "# Application Settings\nAPP_NAME=Sparkle\nENVIRONMENT=development\nDEBUG=True\nSECRET_KEY=dev_secret_key_change_in_production\n\n# Database Settings (canonical)\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=change-me\nDATABASE_URL=postgresql+asyncpg://postgres:change-me@sparkle_db:5432/sparkle\n\n# Redis Settings\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_PASSWORD=change-me\nREDIS_URL=redis://:change-me@sparkle_redis:6379/0\n\n# CORS Settings\nBACKEND_CORS_ORIGINS=[\"http://localhost:3000\", \"http://localhost:8000\"]\n\n# JWT Settings\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# LLM Service (DeepSeek / Qwen / OpenAI)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=your_qwen_api_key\nLLM_MODEL_NAME=qwen-turbo\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n\n# DeepSeek Specific\nDEEPSEEK_API_KEY=your_deepseek_api_key\nDEEPSEEK_BASE_URL=https://api.deepseek.com\n\n# DashScope (Aliyun)\nDASHSCOPE_API_KEY=your_dashscope_api_key\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow\nSILICONFLOW_API_KEY=your_siliconflow_api_key\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Embedding Service\nEMBEDDING_PROVIDER=siliconflow\nEMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=siliconflow\nRERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# STT (Speech to Text) Service\nSTT_PROVIDER=xunfei\nSTT_ENHANCE_ENABLED=true\n\n# XunFei (科大讯飞) STT Configuration\nXUNFEI_API_KEY=your_xunfei_api_key_here\nXUNFEI_API_SECRET=your_xunfei_api_secret_here\nXUNFEI_STT_DOMAIN=iat\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# Internal API\nINTERNAL_API_KEY=dev_internal_key\nGATEWAY_INTERNAL_URL=http://localhost:8080\n\n# gRPC Server\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=True\n\n# Hunyuan Translation (via SiliconFlow)\n# HUNYUAN_API_KEY=your_siliconflow_api_key\n# HUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\n# HUNYUAN_CHAT_MODEL=tencent/Hunyuan-A13B-Instruct\n# HUNYUAN_REASON_MODEL=tencent/Hunyuan-A13B-Instruct\n# LLM_PROVIDER=hunyuan # 可选:设置为默认提供商\n\n# DeepSeek-OCR (Document Cleaning via SiliconFlow)\n# SILICONFLOW_API_KEY=your_siliconflow_api_key\n# SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\n# SILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\n"}}, ".env.production.example": {"64262a2815277936193ab706ebf73cbec02b9b0c": {"t": 1785747105.252603, "n": 21987, "h": "4c6d968d98e39358", "c": "# =============================================================================\n# Sparkle Production Environment Template\n# =============================================================================\n# Copy this file to .env on your production server and fill in ALL values.\n#\n# Markers:\n# [MUST CHANGE] Secrets that require unique, strong values. Startup will\n# fail if these contain placeholder prefixes like \"your_\" or\n# \"replace_with\".\n# [RECOMMENDED] Has safe defaults but should be reviewed for your deployment.\n# [OPTIONAL] Can be left as-is unless customization is needed.\n#\n# SECURITY: Never commit this file with real values.\n# Use a secrets manager (GitHub Secrets, Vault, AWS SSM) for sensitive values.\n#\n# Validation: python scripts/check_production_secrets.py\n# =============================================================================\n\n# ---------------------------------------------------------------------------\n# Core Application\n# ---------------------------------------------------------------------------\nENVIRONMENT=production\n# [MUST CHANGE] Must be False in production (enforced by settings validator)\nDEBUG=False\nAPP_NAME=Sparkle\nSERVICE_ROLE=api # api | grpc | worker | beat | celery-glm-batch\n\n# ---------------------------------------------------------------------------\n# Security Secrets [MUST CHANGE - ALL OF THESE]\n# ---------------------------------------------------------------------------\n# [MUST CHANGE] Minimum 32 characters.\n# Generate: python -c \"import secrets; print(secrets.token_urlsafe(32))\"\nSECRET_KEY=<generate-32-plus-char-secret-key>\n# [MUST CHANGE] JWT signing secret (minimum 32 characters)\nJWT_SECRET=<generate-32-plus-char-jwt-secret>\n# [MUST CHANGE] Admin secret for protected management endpoints\nADMIN_SECRET=<generate-strong-admin-secret>\n# [MUST CHANGE] Internal API key for service-to-service authentication\nINTERNAL_API_KEY=<generate-strong-internal-api-key>\n\n# ---------------------------------------------------------------------------\n# JWT Configuration [RECOMMENDED]\n# ---------------------------------------------------------------------------\n# Production should use RS256 for asymmetric signing. Generate RSA key pair:\n# openssl genpkey -algorithm RSA -out jwt_private.pem -pkeyopt rsa_keygen_bits:4096\n# openssl rsa -in jwt_private.pem -pubout -out jwt_public.pem\nALGORITHM=RS256\nJWT_PRIVATE_KEY=<paste-PEM-encoded-RSA-private-key>\nJWT_PUBLIC_KEY=<paste-PEM-encoded-RSA-public-key>\nJWT_ISSUER=sparkle-gateway\nJWT_AUDIENCE=sparkle-app\nACCESS_TOKEN_EXPIRE_MINUTES=30\nREFRESH_TOKEN_EXPIRE_DAYS=7\n# [RECOMMENDED] Key version for rotation grace periods\nSPARKLE_JWT_KEY_VERSION=v1\nSPARKLE_JWT_PREVIOUS_KEY=\n\n# ---------------------------------------------------------------------------\n# PostgreSQL Database [MUST CHANGE]\n# ---------------------------------------------------------------------------\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=sparkle_app\n# [MUST CHANGE] Strong, unique password\nPOSTGRES_PASSWORD=<generate-strong-postgres-password>\nDATABASE_URL=postgresql+asyncpg://sparkle_app:<POSTGRES_PASSWORD>@sparkle_db:5432/sparkle\n# Aliases used by docker-compose.prod.yml\nDB_HOST=sparkle_db\nDB_PORT=5432\nDB_NAME=sparkle\nDB_USER=sparkle_app\nDB_PASSWORD=<same-as-POSTGRES_PASSWORD>\n\n# [MUST CHANGE] Per-service database URLs (required when SPARKLE_RBAC_ENABLED=true)\nSPARKLE_RBAC_ENABLED=true\nSPARKLE_GATEWAY_DATABASE_URL=postgresql://sparkle_gateway:<generate-password>@sparkle_db:5432/sparkle\nSPARKLE_ENGINE_DATABASE_URL=postgresql+asyncpg://sparkle_engine:<generate-password>@sparkle_db:5432/sparkle\nSPARKLE_CELERY_DATABASE_URL=postgresql+asyncpg://sparkle_celery:<generate-password>@sparkle_db:5432/sparkle\n\n# PostgreSQL tuning [RECOMMENDED - adjust based on server RAM]\nPOSTGRES_MAX_CONNECTIONS=200\nPOSTGRES_SHARED_BUFFERS=256MB\nPOSTGRES_EFFECTIVE_CACHE_SIZE=768MB\nPOSTGRES_WORK_MEM=16MB\nPOSTGRES_MAINTENANCE_WORK_MEM=128MB\nPOSTGRES_MAX_WAL_SIZE=2GB\n\n# Database pool settings [RECOMMENDED]\nDB_POOL_SIZE=20\nDB_MAX_OVERFLOW=40\nDB_POOL_RECYCLE=3600\nDB_POOL_TIMEOUT=30\nDB_ECHO=False\n\n# ---------------------------------------------------------------------------\n# Redis [MUST CHANGE]\n# ---------------------------------------------------------------------------\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\n# [MUST CHANGE] Strong, unique password\nREDIS_PASSWORD=<generate-strong-redis-password>\nREDIS_URL=redis://:<REDIS_PASSWORD>@sparkle_redis:6379/0\nREDIS_FAIL_CLOSED=true\n\n# [RECOMMENDED] Per-service Redis credentials for RBAC isolation\nSPARKLE_GATEWAY_REDIS_PASSWORD=<generate-or-use-REDIS_PASSWORD>\nSPARKLE_ENGINE_REDIS_PASSWORD=<generate-or-use-REDIS_PASSWORD>\nSPARKLE_CELERY_REDIS_PASSWORD=<generate-or-use-REDIS_PASSWORD>\n\n# Celery Redis URLs\nCELERY_BROKER_URL=redis://:<REDIS_PASSWORD>@sparkle_redis:6379/1\nCELERY_RESULT_BACKEND=redis://:<REDIS_PASSWORD>@sparkle_redis:6379/2\n\n# ---------------------------------------------------------------------------\n# MinIO Object Storage [MUST CHANGE]\n# ---------------------------------------------------------------------------\nMINIO_ROOT_USER=<generate-minio-root-user>\n# [MUST CHANGE] Strong, unique password (not \"minioadmin\")\nMINIO_ROOT_PASSWORD=<generate-minio-root-password>\nMINIO_ENDPOINT=minio:9000\nMINIO_ACCESS_KEY=<generate-minio-access-key>\n# [MUST CHANGE] Must not be \"minioadmin\" in production\nMINIO_SECRET_KEY=<generate-minio-secret-key>\nMINIO_BUCKET=sparkle-files\n# [RECOMMENDED] Set to true in production; requires MinIO behind a TLS proxy\nMINIO_USE_SSL=false\nMINIO_AUTO_CREATE_BUCKET=true\n# [RECOMMENDED] Public-facing endpoint for presigned URLs\nMINIO_PUBLIC_ENDPOINT=\n\n# Per-bucket credentials [RECOMMENDED]\nMINIO_UPLOADS_BUCKET=sparkle-uploads\nMINIO_UPLOADS_ACCESS_KEY=sparkle_uploads\nMINIO_UPLOADS_SECRET_KEY=<generate-uploads-secret>\nMINIO_EXPORTS_BUCKET=sparkle-exports\nMINIO_EXPORTS_ACCESS_KEY=sparkle_exports\nMINIO_EXPORTS_SECRET_KEY=<generate-exports-secret>\nMINIO_BACKUPS_BUCKET=sparkle-backups\nMINIO_BACKUPS_ACCESS_KEY=sparkle_backups\nMINIO_BACKUPS_SECRET_KEY=<generate-backups-secret>\n\n# File service policy [RECOMMENDED]\nFILE_MAX_UPLOAD_SIZE=52428800\nFILE_PRESIGN_EXPIRES_SECONDS=420\nFILE_GC_INTERVAL_MINUTES=60\nFILE_GC_GRACE_HOURS=24\nFILE_GC_BATCH_SIZE=200\n\n# ---------------------------------------------------------------------------\n# LLM Provider Configuration [MUST CHANGE - at least one provider required]\n# ---------------------------------------------------------------------------\nLLM_PROVIDER=qwen\n# [MUST CHANGE] At least one LLM API key is required in production\nLLM_API_KEY=<your-llm-api-key>\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n\n# LLM Tier Routing [OPTIONAL] - comma-separated model keys from LLMRouter\nLLM_TIER_FREE=\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_PLUS=\nLLM_TIER_PRO=\nLLM_TIER_REASONING=\nLLM_TIER_MAX=\nLLM_TIER_GLM_BATCH=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO [OPTIONAL]\nXIAOMI_MIMO_API_KEY=\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_STANDARD_MODEL=mimo-v2-flash\nXIAOMI_PRO_MODEL=MiMo-V2.5\nXIAOMI_TEMPERATURE=0.3\nXIAOMI_PRO_TEMPERATURE=0.3\nXIAOMI_MIMO_TOKEN_PLAN_API_KEY=\nXIAOMI_MIMO_TOKEN_PLAN_BASE_URL=https://token-plan-cn.xiaomimimo.com/v1\n\n# DeepSeek [OPTIONAL]\nDEEPSEEK_API_KEY=\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM [OPTIONAL]\nZHIPU_API_KEY=\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CODING_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_AIR_MODEL=glm-4.5-air\nZHIPU_LIGHT_MODEL=glm-4.6\nZHIPU_MAX_MODEL=glm-5\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\n\n# DashScope (Aliyun) [OPTIONAL]\nDASHSCOPE_API_KEY=\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen3.6-plus\nDASHSCOPE_REASON_MODEL=qwen3.6-plus\nDASHSCOPE_FAST_MODEL=qwen3.6-flash\nDASHSCOPE_STANDARD_MODEL=qwen3.5-flash\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow [OPTIONAL]\nSILICONFLOW_API_KEY=\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_FREE_MODEL=Qwen/Qwen3.5-4B\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_OCR_TIMEOUT_SECONDS=120\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Translation (Hunyuan via SiliconFlow) [OPTIONAL]\nHUNYUAN_API_KEY=\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nSILICONFLOW_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nTRANSLATION_PRIMARY_PROVIDER=hunyuan\nTRANSLATION_BACKUP_PROVIDER=siliconflow\nTRANSLATION_PROVIDER_TIMEOUT_SECONDS=30\n\n# Embedding & Reranking [RECOMMENDED]\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_BACKUP_PROVIDER=siliconflow\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_BACKUP_PROVIDER=siliconflow\nRERANK_MODEL=qwen3-rerank\n\n# OCR [RECOMMENDED]\nOCR_PROVIDER=zhipu\nOCR_BACKUP_PROVIDER=siliconflow\n\n# ---------------------------------------------------------------------------\n# STT (Speech-to-Text) [OPTIONAL]\n# ---------------------------------------------------------------------------\nSTT_PROVIDER=zhipu\nSTT_BACKUP_PROVIDER=xunfei\nSTT_ENHANCE_ENABLED=true\n\n# XunFei STT\nXUNFEI_APP_ID=\nXUNFEI_API_KEY=\nXUNFEI_API_SECRET=\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# Zhipu ASR\nZHIPU_ASR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_ASR_MODEL=glm-asr-2512\nZHIPU_ASR_SAMPLE_RATE=16000\nZHIPU_ASR_STREAM_SEGMENT_SECONDS=4\nZHIPU_ASR_MAX_AUDIO_SECONDS=30\nZHIPU_ASR_MAX_FILE_SIZE_BYTES=26214400\nZHIPU_ASR_REQUEST_TIMEOUT_SECONDS=90\n\n# ---------------------------------------------------------------------------\n# GLM Batch [OPTIONAL]\n# ---------------------------------------------------------------------------\nGLM_BATCH_ENABLED=true\nGLM_BATCH_QUEUE=glm_batch\nGLM_BATCH_MIN_CONCURRENCY=1\nGLM_BATCH_MAX_CONCURRENCY=6\nGLM_BATCH_PEAK_START_HOUR=14\nGLM_BATCH_PEAK_END_HOUR=18\nGLM_BATCH_PEAK_CONCURRENCY=2\nGLM_BATCH_OFFPEAK_DEFAULT_CONCURRENCY=3\nGLM_BATCH_ADAPTIVE_ENABLED=true\nGLM_BATCH_ADAPTIVE_SUCCESS_THRESHOLD=8\nGLM_BATCH_ADAPTIVE_INCREASE_COOLDOWN_SECONDS=180\nGLM_BATCH_ADAPTIVE_RATE_LIMIT_COOLDOWN_SECONDS=300\nGLM_BATCH_SPILLOVER_ENABLED=true\nGLM_BATCH_SPILLOVER_BACKLOG_FACTOR=2\nGLM_BATCH_CAPSULES_ENABLED=true\nGLM_BATCH_COGNITIVE_ANALYSIS_ENABLED=true\n\n# ---------------------------------------------------------------------------\n# Social Login [OPTIONAL - fill when ready for app store]\n# ---------------------------------------------------------------------------\nGOOGLE_CLIENT_ID=\nAPPLE_CLIENT_ID=\nWECHAT_APP_ID=\nWECHAT_APP_SECRET=\n\n# ---------------------------------------------------------------------------\n# Email / SMTP [MUST CHANGE if EMAIL_ENABLED=true]\n# ---------------------------------------------------------------------------\nEMAIL_ENABLED=true\nSMTP_HOST=smtp.example.com\nSMTP_PORT=587\nSMTP_USER=<your-smtp-username>\nSMTP_PASSWORD=<your-smtp-password>\nEMAIL_FROM=no-reply@example.com\nEMAIL_FROM_NAME=Sparkle\n\n# ---------------------------------------------------------------------------\n# gRPC Server (Agent Service) [MUST CHANGE for TLS]\n# ---------------------------------------------------------------------------\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=False\nGRPC_REQUIRE_TLS=false\nGRPC_TLS_CERT_PATH=/run/secrets/grpc_server.crt\nGRPC_TLS_KEY_PATH=/run/secrets/grpc_server.key\nGRPC_TLS_CA_CERT_PATH=\n\n# gRPC Client (Gateway -> Agent) [RECOMMENDED for mTLS]\nAGENT_TLS_ENABLED=false\n# AGENT_TLS_CA_CERT=/run/secrets/grpc_ca.crt\n# AGENT_TLS_CLIENT_CERT=/run/secrets/grpc_client.crt\n# AGENT_TLS_CLIENT_KEY=/run/secrets/grpc_client.key\n# AGENT_TLS_SERVER_NAME=sparkle-agent\n# AGENT_TLS_INSECURE=false\n\n# ---------------------------------------------------------------------------\n# Service URLs [MUST CHANGE]\n# ---------------------------------------------------------------------------\n# [MUST CHANGE] Production HTTPS URL for deeplinks, CORS, and email links.\n# Must be HTTPS. The settings validator rejects non-HTTPS values.\nPRODUCTION_URL=https://sparkle.example.com\nBACKEND_URL=http://backend:8000\nGATEWAY_INTERNAL_URL=http://gateway_blue:8080\n\n# CORS origins (JSON array format or comma-separated)\n# [MUST CHANGE] Must contain only HTTPS origins in production\nBACKEND_CORS_ORIGINS=[\"https://sparkle.example.com\"]\n\n# ---------------------------------------------------------------------------\n# Gateway Security [MUST CHANGE]\n# ---------------------------------------------------------------------------\n# [MUST CHANGE] Trusted proxy IPs/CIDRs. Set to your load balancer IP(s).\n# Comma-separated. Required in production — gateway crashes without it.\nTRUSTED_PROXIES=10.0.0.1/32\n# [MUST CHANGE] Comma-separated allowed CORS origins for the gateway.\nALLOWED_ORIGINS=https://sparkle.example.com,https://app.sparkle.example.com\n# Reject tokens when Redis is unavailable (fail-closed strategy)\nREDIS_FAIL_CLOSED=true\n# Disable passing auth tokens via WebSocket query strings in production\nALLOW_WS_QUERY_TOKEN=false\n\n# WebSocket\nWS_ALLOW_QUERY_TOKEN=false\n\n# ---------------------------------------------------------------------------\n# Container Identity [OPTIONAL]\n# ---------------------------------------------------------------------------\nSPARKLE_APP_UID=10001\nSPARKLE_APP_GID=10001\n\n# ---------------------------------------------------------------------------\n# OpenTelemetry [OPTIONAL]\n# ---------------------------------------------------------------------------\nOTEL_EXPORTER_OTLP_ENDPOINT=http://tempo:4317\n\n# ---------------------------------------------------------------------------\n# Sentry [OPTIONAL - recommended for crash reporting]\n# ---------------------------------------------------------------------------\nSENTRY_DSN=\nSENTRY_ENVIRONMENT=production\nSENTRY_TRACES_SAMPLE_RATE=0.1\n\n# ---------------------------------------------------------------------------\n# Image Tags for docker-compose.prod.yml [RECOMMENDED]\n# ---------------------------------------------------------------------------\nIMAGE_TAG=latest\nGATEWAY_IMAGE=ghcr.io/<your-org>/sparkle-gateway\nBACKEND_IMAGE=ghcr.io/<your-org>/sparkle-backend\n\n# ---------------------------------------------------------------------------\n# Chaos Engineering [OPTIONAL - keep disabled in production]\n# ---------------------------------------------------------------------------\nCHAOS_ENABLED=false\nCHAOS_ALLOW_PROD=false\n\n# ---------------------------------------------------------------------------\n# Observability Stack [MUST CHANGE]\n# ---------------------------------------------------------------------------\nGRAFANA_ADMIN_USER=admin\nGRAFANA_ADMIN_PASSWORD=<generate-strong-grafana-password>\n\n# Alertmanager [MUST CHANGE - webhook URLs required for production]\n# The docker-compose.prod.yml enforces these via ?-interpolation.\nALERTMANAGER_DEFAULT_WEBHOOK_URL=<your-default-webhook-url>\nALERTMANAGER_CRITICAL_WEBHOOK_URL=<your-critical-webhook-url>\nALERTMANAGER_WARNING_WEBHOOK_URL=<your-warning-webhook-url>\nALERTMANAGER_EMAIL_TO=ops@example.com\nALERTMANAGER_EMAIL_FROM=sparkle-alerts@example.com\nALERTMANAGER_SMTP_SMARTHOST=smtp.example.com:587\nALERTMANAGER_SMTP_AUTH_USERNAME=\nALERTMANAGER_SMTP_AUTH_PASSWORD=\n\n# ---------------------------------------------------------------------------\n# Aurora Adaptive Kernel (tri-state: off | shadow | live)\n# ---------------------------------------------------------------------------\n# All switches default to \"live\" in production. Adjust individually for\n# staged rollouts. See scripts/stage{N}/drill_transitions.sh for testing.\n\nAURORA_DEFAULT_MODE=live\nENABLE_AURORA_RUNTIME_V1=true\n\n# AI Four-Phase Launch switches\nENABLE_CONTEXT_FOCUSING=true\nENABLE_CONTEXT_SEMANTIC_GATING=true\nENABLE_CONTEXT_BRIEFING=true\nENABLE_CONTEXT_FOCUS_METADATA=true\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\nENABLE_ADAPTIVE_PRESENTATION=true\nENABLE_STRUCTURED_NEXT_ACTIONS=true\nENABLE_BLOCKED_TEMPERATURE=true\nENABLE_UX_PRESENTATION_METADATA=true\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\nENABLE_PROACTIVE_INSIGHTS=true\nENABLE_PLAN_REASONING_SUMMARY=true\nENABLE_WEEKLY_LEARNING_REPORT=true\nENABLE_PROGRESS_COMPARISONS=true\n\n# Aurora boolean switches (non-MODE)\nSPARKLE_MEMORY_INFERRED_WRITE_ENABLED=true\nSPARKLE_MEMORY_INFERRED_DRY_RUN_ENABLED=false\nSPARKLE_AGGREGATOR_ENABLED=true\nSPARKLE_ROUTER_SOCIAL_CONTEXT_READ_ENABLED=true\nSPARKLE_ROUTER_USE_AGGREGATOR_PROVIDER=true\nSPARKLE_PUSH_POLICY_ENABLED=true\nSPARKLE_PUSH_DELIVERY_ENABLED=true\nSPARKLE_WORKING_MEMORY_ENABLED=true\nSPARKLE_LLM_EXTRACTOR_ENABLED=true\nSPARKLE_LLM_EXTRACTOR_DRY_RUN_ENABLED=false\nSPARKLE_CONSOLIDATION_ENABLED=true\nSPARKLE_CONFLICT_RESOLVER_SHADOW_MODE=false\nSPARKLE_ROUTER_SUFFICIENCY_BRANCH_ENABLED=true\nSPARKLE_SKILL_EXTRACT_ENABLED=true\nSPARKLE_SKILL_SELECTION_ENABLED=true\nSPARKLE_SKILL_SHARE_ENABLED=true\nSPARKLE_SKILL_SHARE_MOCK_REVIEW_ENABLED=false\nSPARKLE_PROMPT_SOCIAL_CONTEXT_RENDER_ENABLED=true\n\n# Stage 18 - Push System\nAURORA_STAGE18_AGGREGATOR_MODE=live\nAURORA_STAGE18_PUSH_POLICY_MODE=live\nAURORA_STAGE18_PUSH_DELIVERY_MODE=live\n\n# Stage 19 - Working Memory\nAURORA_STAGE19_WORKING_MEMORY_MODE=live\nAURORA_STAGE19_LLM_EXTRACTOR_MODE=live\nAURORA_STAGE19_CONSOLIDATION_MODE=live\n\n# Stage 21 - Skill Store\nAURORA_STAGE21_SKILL_STORE_MODE=live\nAURORA_STAGE21_SKILL_SELECTION_MODE=live\nAURORA_STAGE21_SKILL_SHARE_MODE=live\n\n# Stage 23 - Bayesian Learner\nAURORA_BAYESIAN_MODE=live\nAURORA_BAYESIAN_LIVE_CANARY_PERCENT=5\nAURORA_BAYESIAN_TTL_DAYS=30\n\n# Stage 24 - Policy Compiler\nAURORA_POLICY_COMPILER_MODE=live\nAURORA_POLICY_DAILY_BUDGET=2\nAURORA_POLICY_COOLDOWN_HOURS=24\n\n# Stage 25 - Reflection Wire\nAURORA_REFLECTION_WIRE_MODE=live\nAURORA_REFLECTION_CONTEXT_LIMIT=20\nAURORA_REFLECTION_CONTEXT_MAX_TOKENS=800\nAURORA_REFLECTION_TRIGGER_TOO_DIFFICULT=true\nAURORA_REFLECTION_TRIGGER_UNCLEAR=true\nAURORA_REFLECTION_TRIGGER_ABANDONED=true\nAURORA_REFLECTION_TRIGGER_INTERVENTION_INEFFECTIVE=true\nAURORA_REFLECTION_TRIGGER_PLAN_STALL=true\nAURORA_REFLECTION_TRIGGER_OVERLOAD=true\n\n# Stage 26 - Scene Model\nAURORA_SCENE_MODE=live\nAURORA_SCENE_SIMILARITY_THRESHOLD=0.75\nAURORA_SCENE_TIME_WINDOW_HOURS=72\nAURORA_SCENE_QUALITY_THRESHOLD=0.6\n\n# Stage 27 - Foresight Engine\nAURORA_FORESIGHT_MODE=live\nAURORA_FORESIGHT_ATTRACTOR=live\nAURORA_FORESIGHT_DEVIATION=live\nAURORA_FORESIGHT_JITAI=live\nAURORA_FORESIGHT_CACHE_TTL_SECONDS=60\nAURORA_FORESIGHT_ATTRACTOR_ALPHA=0.1\nAURORA_FORESIGHT_ATTRACTOR_MIN_CONFIDENCE=0.3\nAURORA_FORESIGHT_DEVIATION_Z_THRESHOLD=1.5\nAURORA_FORESIGHT_JITAI_DAILY_BUDGET=3\nAURORA_FORESIGHT_JITAI_COOLDOWN_HOURS=24\nAURORA_FORESIGHT_JITAI_MISFIRE_THRESHOLD=0.15\n\n# Stage 28 - Traits\nAURORA_TRAITS_MODE=live\nAURORA_TRAITS_NLP_MODE=live\nAURORA_TRAITS_COLDSTART_MODE=live\nAURORA_TRAITS_NLP_COOLDOWN_HOURS=24\nAURORA_TRAITS_NLP_BIAS_THRESHOLD=0.10\nAURORA_TRAITS_NLP_MAX_DAYS=30\nAURORA_TRAITS_NLP_MAX_COST_USD=0.003\nAURORA_TRAITS_NLP_P95_MS_BUDGET=800\n\n# Stage 29 - SRL\nAURORA_SRL_MODE=live\nAURORA_SRL_TRACKER_MODE=live\nAURORA_SRL_BRIDGE_MODE=live\nAURORA_SRL_SCAFFOLDING_CONSUME_MODE=live\nAURORA_SRL_EVENT_LAG_P95_THRESHOLD_SECONDS=5.0\nAURORA_SRL_MISJUDGMENT_THRESHOLD=0.20\nAURORA_SRL_TRACKER_P95_MS_BUDGET=20\nAURORA_SRL_AGGREGATOR_TTL_SECONDS=15\n\n# Stage 30 - Metacognition\nAURORA_METACOG_MODE=live\nAURORA_METACOG_DASHBOARD_MODE=live\nAURORA_METACOG_PROCESS_SCAFFOLDING_MODE=live\nAURORA_METACOG_FSM_COMBINE_MODE=live\nAURORA_METACOG_CACHE_TTL_SECONDS=60\nAURORA_METACOG_MIN_SAMPLE_SIZE=20\nAURORA_METACOG_PROCESS_TRIGGER_ABS_BIAS=0.30\nAURORA_METACOG_PROCESS_COOLDOWN_HOURS=72\nAURORA_METACOG_P95_MS_BUDGET=100\nAURORA_METACOG_PROXY_REVISION_FREQUENCY=live\nAURORA_METACOG_PROXY_SELF_CORRECTION_RATE=live\nAURORA_METACOG_PROXY_QUESTION_TO_STATEMENT_RATIO=live\nAURORA_METACOG_PROXY_TIME_TO_FIRST_ACTION=live\nAURORA_METACOG_PROXY_COMPLETION_VS_ESTIMATE_DELTA_SIGN=live\nAURORA_IDIOGRAPHIC_MODE=live\nAURORA_IDIOGRAPHIC_TTL_SECONDS=300\n\n# Dual-Core Router\nAURORA_DUAL_CORE_ROUTER_MODE=live\n\n# Stage 33\nAURORA_STAGE33_MODE=live\nAURORA_STAGE33_SOCIAL_MODE=live\nAURORA_STAGE33_SRL_MODE=live\nAURORA_STAGE33_WM_PROMPT_MODE=live\nAURORA_STAGE33_EVENTS_MODE=live\n\n# Stage 34\nAURORA_STAGE34_MODE=live\nAURORA_STAGE34_ERROR_BRIDGE_MODE=live\nAURORA_STAGE34_CAPSULE_MODE=live\nAURORA_STAGE34_JOURNEY_SUBSCRIBERS_MODE=live\n\n# Stage 35\nAURORA_STAGE35_MODE=live\nAURORA_STAGE35_METACOG_ROUTER_MODE=live\n\n# Stage 37 - LLM Safety\nAURORA_STAGE37_LLM_SAFETY_MODE=live\n\n# Stage 38 - Error Replan + Push Scheduler\nAURORA_STAGE38_ERR_REPLAN_MODE=live\nAURORA_STAGE38_PUSH_SCHEDULER_MODE=live\nAURORA_STAGE38_PUSH_SCHEDULER_INTERVAL_MINUTES=5\n\n# Stage 39 - Scaffolding + Cognitive Load + Galaxy\nAURORA_STAGE39_MODE=live\nAURORA_STAGE39_SCAFFOLDING_PROMPT_MODE=live\nAURORA_STAGE39_COGLOAD_ROUTE_MODE=live\nAURORA_STAGE39_GALAXY_INJECT_MODE=live\n\n# Stage 40 - Calendar\nAURORA_STAGE40_CALENDAR_MODE=live\n\n# Document Context\nAURORA_DOC_CONTEXT_MODE=auto\nAURORA_DOC_CONTEXT_AGGRESSIVE_BUDGET_TOKENS=2200\nAURORA_DOC_CONTEXT_SELECTIVE_BUDGET_TOKENS=900\nAURORA_DOC_CONTEXT_AMBIGUOUS_BUDGET_TOKENS=500\nAURORA_DOC_CONTEXT_DOCUMENT_CONTEXT_INJECTION_MODE=live\n\n# Privacy\nAURORA_PRIVACY_PII_REDACTION_MODE=live\n\n# ---------------------------------------------------------------------------\n# SLO Auto-Degrade Kill Switches [OPTIONAL]\n# ---------------------------------------------------------------------------\nSLO_AUTO_LLM_DEGRADE_MODE=off\nSLO_AUTO_REDIS_FALLBACK_MODE=off\nSLO_AUTO_DB_THROTTLE_MODE=off\nSLO_AUTO_EVENT_BUS_THROTTLE_MODE=off\nSLO_AUTO_RATE_LIMIT_TIGHTEN_MODE=off\n"}, "04f96d77397284cf6b9e8b3d6211e70c49f044dc": {"t": 1785747983.2231212, "n": 21987, "h": "4c6d968d98e39358", "c": "# =============================================================================\n# Sparkle Production Environment Template\n# =============================================================================\n# Copy this file to .env on your production server and fill in ALL values.\n#\n# Markers:\n# [MUST CHANGE] Secrets that require unique, strong values. Startup will\n# fail if these contain placeholder prefixes like \"your_\" or\n# \"replace_with\".\n# [RECOMMENDED] Has safe defaults but should be reviewed for your deployment.\n# [OPTIONAL] Can be left as-is unless customization is needed.\n#\n# SECURITY: Never commit this file with real values.\n# Use a secrets manager (GitHub Secrets, Vault, AWS SSM) for sensitive values.\n#\n# Validation: python scripts/check_production_secrets.py\n# =============================================================================\n\n# ---------------------------------------------------------------------------\n# Core Application\n# ---------------------------------------------------------------------------\nENVIRONMENT=production\n# [MUST CHANGE] Must be False in production (enforced by settings validator)\nDEBUG=False\nAPP_NAME=Sparkle\nSERVICE_ROLE=api # api | grpc | worker | beat | celery-glm-batch\n\n# ---------------------------------------------------------------------------\n# Security Secrets [MUST CHANGE - ALL OF THESE]\n# ---------------------------------------------------------------------------\n# [MUST CHANGE] Minimum 32 characters.\n# Generate: python -c \"import secrets; print(secrets.token_urlsafe(32))\"\nSECRET_KEY=<generate-32-plus-char-secret-key>\n# [MUST CHANGE] JWT signing secret (minimum 32 characters)\nJWT_SECRET=<generate-32-plus-char-jwt-secret>\n# [MUST CHANGE] Admin secret for protected management endpoints\nADMIN_SECRET=<generate-strong-admin-secret>\n# [MUST CHANGE] Internal API key for service-to-service authentication\nINTERNAL_API_KEY=<generate-strong-internal-api-key>\n\n# ---------------------------------------------------------------------------\n# JWT Configuration [RECOMMENDED]\n# ---------------------------------------------------------------------------\n# Production should use RS256 for asymmetric signing. Generate RSA key pair:\n# openssl genpkey -algorithm RSA -out jwt_private.pem -pkeyopt rsa_keygen_bits:4096\n# openssl rsa -in jwt_private.pem -pubout -out jwt_public.pem\nALGORITHM=RS256\nJWT_PRIVATE_KEY=<paste-PEM-encoded-RSA-private-key>\nJWT_PUBLIC_KEY=<paste-PEM-encoded-RSA-public-key>\nJWT_ISSUER=sparkle-gateway\nJWT_AUDIENCE=sparkle-app\nACCESS_TOKEN_EXPIRE_MINUTES=30\nREFRESH_TOKEN_EXPIRE_DAYS=7\n# [RECOMMENDED] Key version for rotation grace periods\nSPARKLE_JWT_KEY_VERSION=v1\nSPARKLE_JWT_PREVIOUS_KEY=\n\n# ---------------------------------------------------------------------------\n# PostgreSQL Database [MUST CHANGE]\n# ---------------------------------------------------------------------------\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=sparkle_app\n# [MUST CHANGE] Strong, unique password\nPOSTGRES_PASSWORD=<generate-strong-postgres-password>\nDATABASE_URL=postgresql+asyncpg://sparkle_app:<POSTGRES_PASSWORD>@sparkle_db:5432/sparkle\n# Aliases used by docker-compose.prod.yml\nDB_HOST=sparkle_db\nDB_PORT=5432\nDB_NAME=sparkle\nDB_USER=sparkle_app\nDB_PASSWORD=<same-as-POSTGRES_PASSWORD>\n\n# [MUST CHANGE] Per-service database URLs (required when SPARKLE_RBAC_ENABLED=true)\nSPARKLE_RBAC_ENABLED=true\nSPARKLE_GATEWAY_DATABASE_URL=postgresql://sparkle_gateway:<generate-password>@sparkle_db:5432/sparkle\nSPARKLE_ENGINE_DATABASE_URL=postgresql+asyncpg://sparkle_engine:<generate-password>@sparkle_db:5432/sparkle\nSPARKLE_CELERY_DATABASE_URL=postgresql+asyncpg://sparkle_celery:<generate-password>@sparkle_db:5432/sparkle\n\n# PostgreSQL tuning [RECOMMENDED - adjust based on server RAM]\nPOSTGRES_MAX_CONNECTIONS=200\nPOSTGRES_SHARED_BUFFERS=256MB\nPOSTGRES_EFFECTIVE_CACHE_SIZE=768MB\nPOSTGRES_WORK_MEM=16MB\nPOSTGRES_MAINTENANCE_WORK_MEM=128MB\nPOSTGRES_MAX_WAL_SIZE=2GB\n\n# Database pool settings [RECOMMENDED]\nDB_POOL_SIZE=20\nDB_MAX_OVERFLOW=40\nDB_POOL_RECYCLE=3600\nDB_POOL_TIMEOUT=30\nDB_ECHO=False\n\n# ---------------------------------------------------------------------------\n# Redis [MUST CHANGE]\n# ---------------------------------------------------------------------------\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\n# [MUST CHANGE] Strong, unique password\nREDIS_PASSWORD=<generate-strong-redis-password>\nREDIS_URL=redis://:<REDIS_PASSWORD>@sparkle_redis:6379/0\nREDIS_FAIL_CLOSED=true\n\n# [RECOMMENDED] Per-service Redis credentials for RBAC isolation\nSPARKLE_GATEWAY_REDIS_PASSWORD=<generate-or-use-REDIS_PASSWORD>\nSPARKLE_ENGINE_REDIS_PASSWORD=<generate-or-use-REDIS_PASSWORD>\nSPARKLE_CELERY_REDIS_PASSWORD=<generate-or-use-REDIS_PASSWORD>\n\n# Celery Redis URLs\nCELERY_BROKER_URL=redis://:<REDIS_PASSWORD>@sparkle_redis:6379/1\nCELERY_RESULT_BACKEND=redis://:<REDIS_PASSWORD>@sparkle_redis:6379/2\n\n# ---------------------------------------------------------------------------\n# MinIO Object Storage [MUST CHANGE]\n# ---------------------------------------------------------------------------\nMINIO_ROOT_USER=<generate-minio-root-user>\n# [MUST CHANGE] Strong, unique password (not \"minioadmin\")\nMINIO_ROOT_PASSWORD=<generate-minio-root-password>\nMINIO_ENDPOINT=minio:9000\nMINIO_ACCESS_KEY=<generate-minio-access-key>\n# [MUST CHANGE] Must not be \"minioadmin\" in production\nMINIO_SECRET_KEY=<generate-minio-secret-key>\nMINIO_BUCKET=sparkle-files\n# [RECOMMENDED] Set to true in production; requires MinIO behind a TLS proxy\nMINIO_USE_SSL=false\nMINIO_AUTO_CREATE_BUCKET=true\n# [RECOMMENDED] Public-facing endpoint for presigned URLs\nMINIO_PUBLIC_ENDPOINT=\n\n# Per-bucket credentials [RECOMMENDED]\nMINIO_UPLOADS_BUCKET=sparkle-uploads\nMINIO_UPLOADS_ACCESS_KEY=sparkle_uploads\nMINIO_UPLOADS_SECRET_KEY=<generate-uploads-secret>\nMINIO_EXPORTS_BUCKET=sparkle-exports\nMINIO_EXPORTS_ACCESS_KEY=sparkle_exports\nMINIO_EXPORTS_SECRET_KEY=<generate-exports-secret>\nMINIO_BACKUPS_BUCKET=sparkle-backups\nMINIO_BACKUPS_ACCESS_KEY=sparkle_backups\nMINIO_BACKUPS_SECRET_KEY=<generate-backups-secret>\n\n# File service policy [RECOMMENDED]\nFILE_MAX_UPLOAD_SIZE=52428800\nFILE_PRESIGN_EXPIRES_SECONDS=420\nFILE_GC_INTERVAL_MINUTES=60\nFILE_GC_GRACE_HOURS=24\nFILE_GC_BATCH_SIZE=200\n\n# ---------------------------------------------------------------------------\n# LLM Provider Configuration [MUST CHANGE - at least one provider required]\n# ---------------------------------------------------------------------------\nLLM_PROVIDER=qwen\n# [MUST CHANGE] At least one LLM API key is required in production\nLLM_API_KEY=<your-llm-api-key>\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n\n# LLM Tier Routing [OPTIONAL] - comma-separated model keys from LLMRouter\nLLM_TIER_FREE=\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_PLUS=\nLLM_TIER_PRO=\nLLM_TIER_REASONING=\nLLM_TIER_MAX=\nLLM_TIER_GLM_BATCH=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO [OPTIONAL]\nXIAOMI_MIMO_API_KEY=\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_STANDARD_MODEL=mimo-v2-flash\nXIAOMI_PRO_MODEL=MiMo-V2.5\nXIAOMI_TEMPERATURE=0.3\nXIAOMI_PRO_TEMPERATURE=0.3\nXIAOMI_MIMO_TOKEN_PLAN_API_KEY=\nXIAOMI_MIMO_TOKEN_PLAN_BASE_URL=https://token-plan-cn.xiaomimimo.com/v1\n\n# DeepSeek [OPTIONAL]\nDEEPSEEK_API_KEY=\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM [OPTIONAL]\nZHIPU_API_KEY=\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CODING_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_AIR_MODEL=glm-4.5-air\nZHIPU_LIGHT_MODEL=glm-4.6\nZHIPU_MAX_MODEL=glm-5\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\n\n# DashScope (Aliyun) [OPTIONAL]\nDASHSCOPE_API_KEY=\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen3.6-plus\nDASHSCOPE_REASON_MODEL=qwen3.6-plus\nDASHSCOPE_FAST_MODEL=qwen3.6-flash\nDASHSCOPE_STANDARD_MODEL=qwen3.5-flash\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow [OPTIONAL]\nSILICONFLOW_API_KEY=\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_FREE_MODEL=Qwen/Qwen3.5-4B\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_OCR_TIMEOUT_SECONDS=120\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Translation (Hunyuan via SiliconFlow) [OPTIONAL]\nHUNYUAN_API_KEY=\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nSILICONFLOW_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nTRANSLATION_PRIMARY_PROVIDER=hunyuan\nTRANSLATION_BACKUP_PROVIDER=siliconflow\nTRANSLATION_PROVIDER_TIMEOUT_SECONDS=30\n\n# Embedding & Reranking [RECOMMENDED]\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_BACKUP_PROVIDER=siliconflow\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_BACKUP_PROVIDER=siliconflow\nRERANK_MODEL=qwen3-rerank\n\n# OCR [RECOMMENDED]\nOCR_PROVIDER=zhipu\nOCR_BACKUP_PROVIDER=siliconflow\n\n# ---------------------------------------------------------------------------\n# STT (Speech-to-Text) [OPTIONAL]\n# ---------------------------------------------------------------------------\nSTT_PROVIDER=zhipu\nSTT_BACKUP_PROVIDER=xunfei\nSTT_ENHANCE_ENABLED=true\n\n# XunFei STT\nXUNFEI_APP_ID=\nXUNFEI_API_KEY=\nXUNFEI_API_SECRET=\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# Zhipu ASR\nZHIPU_ASR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_ASR_MODEL=glm-asr-2512\nZHIPU_ASR_SAMPLE_RATE=16000\nZHIPU_ASR_STREAM_SEGMENT_SECONDS=4\nZHIPU_ASR_MAX_AUDIO_SECONDS=30\nZHIPU_ASR_MAX_FILE_SIZE_BYTES=26214400\nZHIPU_ASR_REQUEST_TIMEOUT_SECONDS=90\n\n# ---------------------------------------------------------------------------\n# GLM Batch [OPTIONAL]\n# ---------------------------------------------------------------------------\nGLM_BATCH_ENABLED=true\nGLM_BATCH_QUEUE=glm_batch\nGLM_BATCH_MIN_CONCURRENCY=1\nGLM_BATCH_MAX_CONCURRENCY=6\nGLM_BATCH_PEAK_START_HOUR=14\nGLM_BATCH_PEAK_END_HOUR=18\nGLM_BATCH_PEAK_CONCURRENCY=2\nGLM_BATCH_OFFPEAK_DEFAULT_CONCURRENCY=3\nGLM_BATCH_ADAPTIVE_ENABLED=true\nGLM_BATCH_ADAPTIVE_SUCCESS_THRESHOLD=8\nGLM_BATCH_ADAPTIVE_INCREASE_COOLDOWN_SECONDS=180\nGLM_BATCH_ADAPTIVE_RATE_LIMIT_COOLDOWN_SECONDS=300\nGLM_BATCH_SPILLOVER_ENABLED=true\nGLM_BATCH_SPILLOVER_BACKLOG_FACTOR=2\nGLM_BATCH_CAPSULES_ENABLED=true\nGLM_BATCH_COGNITIVE_ANALYSIS_ENABLED=true\n\n# ---------------------------------------------------------------------------\n# Social Login [OPTIONAL - fill when ready for app store]\n# ---------------------------------------------------------------------------\nGOOGLE_CLIENT_ID=\nAPPLE_CLIENT_ID=\nWECHAT_APP_ID=\nWECHAT_APP_SECRET=\n\n# ---------------------------------------------------------------------------\n# Email / SMTP [MUST CHANGE if EMAIL_ENABLED=true]\n# ---------------------------------------------------------------------------\nEMAIL_ENABLED=true\nSMTP_HOST=smtp.example.com\nSMTP_PORT=587\nSMTP_USER=<your-smtp-username>\nSMTP_PASSWORD=<your-smtp-password>\nEMAIL_FROM=no-reply@example.com\nEMAIL_FROM_NAME=Sparkle\n\n# ---------------------------------------------------------------------------\n# gRPC Server (Agent Service) [MUST CHANGE for TLS]\n# ---------------------------------------------------------------------------\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=False\nGRPC_REQUIRE_TLS=false\nGRPC_TLS_CERT_PATH=/run/secrets/grpc_server.crt\nGRPC_TLS_KEY_PATH=/run/secrets/grpc_server.key\nGRPC_TLS_CA_CERT_PATH=\n\n# gRPC Client (Gateway -> Agent) [RECOMMENDED for mTLS]\nAGENT_TLS_ENABLED=false\n# AGENT_TLS_CA_CERT=/run/secrets/grpc_ca.crt\n# AGENT_TLS_CLIENT_CERT=/run/secrets/grpc_client.crt\n# AGENT_TLS_CLIENT_KEY=/run/secrets/grpc_client.key\n# AGENT_TLS_SERVER_NAME=sparkle-agent\n# AGENT_TLS_INSECURE=false\n\n# ---------------------------------------------------------------------------\n# Service URLs [MUST CHANGE]\n# ---------------------------------------------------------------------------\n# [MUST CHANGE] Production HTTPS URL for deeplinks, CORS, and email links.\n# Must be HTTPS. The settings validator rejects non-HTTPS values.\nPRODUCTION_URL=https://sparkle.example.com\nBACKEND_URL=http://backend:8000\nGATEWAY_INTERNAL_URL=http://gateway_blue:8080\n\n# CORS origins (JSON array format or comma-separated)\n# [MUST CHANGE] Must contain only HTTPS origins in production\nBACKEND_CORS_ORIGINS=[\"https://sparkle.example.com\"]\n\n# ---------------------------------------------------------------------------\n# Gateway Security [MUST CHANGE]\n# ---------------------------------------------------------------------------\n# [MUST CHANGE] Trusted proxy IPs/CIDRs. Set to your load balancer IP(s).\n# Comma-separated. Required in production — gateway crashes without it.\nTRUSTED_PROXIES=10.0.0.1/32\n# [MUST CHANGE] Comma-separated allowed CORS origins for the gateway.\nALLOWED_ORIGINS=https://sparkle.example.com,https://app.sparkle.example.com\n# Reject tokens when Redis is unavailable (fail-closed strategy)\nREDIS_FAIL_CLOSED=true\n# Disable passing auth tokens via WebSocket query strings in production\nALLOW_WS_QUERY_TOKEN=false\n\n# WebSocket\nWS_ALLOW_QUERY_TOKEN=false\n\n# ---------------------------------------------------------------------------\n# Container Identity [OPTIONAL]\n# ---------------------------------------------------------------------------\nSPARKLE_APP_UID=10001\nSPARKLE_APP_GID=10001\n\n# ---------------------------------------------------------------------------\n# OpenTelemetry [OPTIONAL]\n# ---------------------------------------------------------------------------\nOTEL_EXPORTER_OTLP_ENDPOINT=http://tempo:4317\n\n# ---------------------------------------------------------------------------\n# Sentry [OPTIONAL - recommended for crash reporting]\n# ---------------------------------------------------------------------------\nSENTRY_DSN=\nSENTRY_ENVIRONMENT=production\nSENTRY_TRACES_SAMPLE_RATE=0.1\n\n# ---------------------------------------------------------------------------\n# Image Tags for docker-compose.prod.yml [RECOMMENDED]\n# ---------------------------------------------------------------------------\nIMAGE_TAG=latest\nGATEWAY_IMAGE=ghcr.io/<your-org>/sparkle-gateway\nBACKEND_IMAGE=ghcr.io/<your-org>/sparkle-backend\n\n# ---------------------------------------------------------------------------\n# Chaos Engineering [OPTIONAL - keep disabled in production]\n# ---------------------------------------------------------------------------\nCHAOS_ENABLED=false\nCHAOS_ALLOW_PROD=false\n\n# ---------------------------------------------------------------------------\n# Observability Stack [MUST CHANGE]\n# ---------------------------------------------------------------------------\nGRAFANA_ADMIN_USER=admin\nGRAFANA_ADMIN_PASSWORD=<generate-strong-grafana-password>\n\n# Alertmanager [MUST CHANGE - webhook URLs required for production]\n# The docker-compose.prod.yml enforces these via ?-interpolation.\nALERTMANAGER_DEFAULT_WEBHOOK_URL=<your-default-webhook-url>\nALERTMANAGER_CRITICAL_WEBHOOK_URL=<your-critical-webhook-url>\nALERTMANAGER_WARNING_WEBHOOK_URL=<your-warning-webhook-url>\nALERTMANAGER_EMAIL_TO=ops@example.com\nALERTMANAGER_EMAIL_FROM=sparkle-alerts@example.com\nALERTMANAGER_SMTP_SMARTHOST=smtp.example.com:587\nALERTMANAGER_SMTP_AUTH_USERNAME=\nALERTMANAGER_SMTP_AUTH_PASSWORD=\n\n# ---------------------------------------------------------------------------\n# Aurora Adaptive Kernel (tri-state: off | shadow | live)\n# ---------------------------------------------------------------------------\n# All switches default to \"live\" in production. Adjust individually for\n# staged rollouts. See scripts/stage{N}/drill_transitions.sh for testing.\n\nAURORA_DEFAULT_MODE=live\nENABLE_AURORA_RUNTIME_V1=true\n\n# AI Four-Phase Launch switches\nENABLE_CONTEXT_FOCUSING=true\nENABLE_CONTEXT_SEMANTIC_GATING=true\nENABLE_CONTEXT_BRIEFING=true\nENABLE_CONTEXT_FOCUS_METADATA=true\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\nENABLE_ADAPTIVE_PRESENTATION=true\nENABLE_STRUCTURED_NEXT_ACTIONS=true\nENABLE_BLOCKED_TEMPERATURE=true\nENABLE_UX_PRESENTATION_METADATA=true\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\nENABLE_PROACTIVE_INSIGHTS=true\nENABLE_PLAN_REASONING_SUMMARY=true\nENABLE_WEEKLY_LEARNING_REPORT=true\nENABLE_PROGRESS_COMPARISONS=true\n\n# Aurora boolean switches (non-MODE)\nSPARKLE_MEMORY_INFERRED_WRITE_ENABLED=true\nSPARKLE_MEMORY_INFERRED_DRY_RUN_ENABLED=false\nSPARKLE_AGGREGATOR_ENABLED=true\nSPARKLE_ROUTER_SOCIAL_CONTEXT_READ_ENABLED=true\nSPARKLE_ROUTER_USE_AGGREGATOR_PROVIDER=true\nSPARKLE_PUSH_POLICY_ENABLED=true\nSPARKLE_PUSH_DELIVERY_ENABLED=true\nSPARKLE_WORKING_MEMORY_ENABLED=true\nSPARKLE_LLM_EXTRACTOR_ENABLED=true\nSPARKLE_LLM_EXTRACTOR_DRY_RUN_ENABLED=false\nSPARKLE_CONSOLIDATION_ENABLED=true\nSPARKLE_CONFLICT_RESOLVER_SHADOW_MODE=false\nSPARKLE_ROUTER_SUFFICIENCY_BRANCH_ENABLED=true\nSPARKLE_SKILL_EXTRACT_ENABLED=true\nSPARKLE_SKILL_SELECTION_ENABLED=true\nSPARKLE_SKILL_SHARE_ENABLED=true\nSPARKLE_SKILL_SHARE_MOCK_REVIEW_ENABLED=false\nSPARKLE_PROMPT_SOCIAL_CONTEXT_RENDER_ENABLED=true\n\n# Stage 18 - Push System\nAURORA_STAGE18_AGGREGATOR_MODE=live\nAURORA_STAGE18_PUSH_POLICY_MODE=live\nAURORA_STAGE18_PUSH_DELIVERY_MODE=live\n\n# Stage 19 - Working Memory\nAURORA_STAGE19_WORKING_MEMORY_MODE=live\nAURORA_STAGE19_LLM_EXTRACTOR_MODE=live\nAURORA_STAGE19_CONSOLIDATION_MODE=live\n\n# Stage 21 - Skill Store\nAURORA_STAGE21_SKILL_STORE_MODE=live\nAURORA_STAGE21_SKILL_SELECTION_MODE=live\nAURORA_STAGE21_SKILL_SHARE_MODE=live\n\n# Stage 23 - Bayesian Learner\nAURORA_BAYESIAN_MODE=live\nAURORA_BAYESIAN_LIVE_CANARY_PERCENT=5\nAURORA_BAYESIAN_TTL_DAYS=30\n\n# Stage 24 - Policy Compiler\nAURORA_POLICY_COMPILER_MODE=live\nAURORA_POLICY_DAILY_BUDGET=2\nAURORA_POLICY_COOLDOWN_HOURS=24\n\n# Stage 25 - Reflection Wire\nAURORA_REFLECTION_WIRE_MODE=live\nAURORA_REFLECTION_CONTEXT_LIMIT=20\nAURORA_REFLECTION_CONTEXT_MAX_TOKENS=800\nAURORA_REFLECTION_TRIGGER_TOO_DIFFICULT=true\nAURORA_REFLECTION_TRIGGER_UNCLEAR=true\nAURORA_REFLECTION_TRIGGER_ABANDONED=true\nAURORA_REFLECTION_TRIGGER_INTERVENTION_INEFFECTIVE=true\nAURORA_REFLECTION_TRIGGER_PLAN_STALL=true\nAURORA_REFLECTION_TRIGGER_OVERLOAD=true\n\n# Stage 26 - Scene Model\nAURORA_SCENE_MODE=live\nAURORA_SCENE_SIMILARITY_THRESHOLD=0.75\nAURORA_SCENE_TIME_WINDOW_HOURS=72\nAURORA_SCENE_QUALITY_THRESHOLD=0.6\n\n# Stage 27 - Foresight Engine\nAURORA_FORESIGHT_MODE=live\nAURORA_FORESIGHT_ATTRACTOR=live\nAURORA_FORESIGHT_DEVIATION=live\nAURORA_FORESIGHT_JITAI=live\nAURORA_FORESIGHT_CACHE_TTL_SECONDS=60\nAURORA_FORESIGHT_ATTRACTOR_ALPHA=0.1\nAURORA_FORESIGHT_ATTRACTOR_MIN_CONFIDENCE=0.3\nAURORA_FORESIGHT_DEVIATION_Z_THRESHOLD=1.5\nAURORA_FORESIGHT_JITAI_DAILY_BUDGET=3\nAURORA_FORESIGHT_JITAI_COOLDOWN_HOURS=24\nAURORA_FORESIGHT_JITAI_MISFIRE_THRESHOLD=0.15\n\n# Stage 28 - Traits\nAURORA_TRAITS_MODE=live\nAURORA_TRAITS_NLP_MODE=live\nAURORA_TRAITS_COLDSTART_MODE=live\nAURORA_TRAITS_NLP_COOLDOWN_HOURS=24\nAURORA_TRAITS_NLP_BIAS_THRESHOLD=0.10\nAURORA_TRAITS_NLP_MAX_DAYS=30\nAURORA_TRAITS_NLP_MAX_COST_USD=0.003\nAURORA_TRAITS_NLP_P95_MS_BUDGET=800\n\n# Stage 29 - SRL\nAURORA_SRL_MODE=live\nAURORA_SRL_TRACKER_MODE=live\nAURORA_SRL_BRIDGE_MODE=live\nAURORA_SRL_SCAFFOLDING_CONSUME_MODE=live\nAURORA_SRL_EVENT_LAG_P95_THRESHOLD_SECONDS=5.0\nAURORA_SRL_MISJUDGMENT_THRESHOLD=0.20\nAURORA_SRL_TRACKER_P95_MS_BUDGET=20\nAURORA_SRL_AGGREGATOR_TTL_SECONDS=15\n\n# Stage 30 - Metacognition\nAURORA_METACOG_MODE=live\nAURORA_METACOG_DASHBOARD_MODE=live\nAURORA_METACOG_PROCESS_SCAFFOLDING_MODE=live\nAURORA_METACOG_FSM_COMBINE_MODE=live\nAURORA_METACOG_CACHE_TTL_SECONDS=60\nAURORA_METACOG_MIN_SAMPLE_SIZE=20\nAURORA_METACOG_PROCESS_TRIGGER_ABS_BIAS=0.30\nAURORA_METACOG_PROCESS_COOLDOWN_HOURS=72\nAURORA_METACOG_P95_MS_BUDGET=100\nAURORA_METACOG_PROXY_REVISION_FREQUENCY=live\nAURORA_METACOG_PROXY_SELF_CORRECTION_RATE=live\nAURORA_METACOG_PROXY_QUESTION_TO_STATEMENT_RATIO=live\nAURORA_METACOG_PROXY_TIME_TO_FIRST_ACTION=live\nAURORA_METACOG_PROXY_COMPLETION_VS_ESTIMATE_DELTA_SIGN=live\nAURORA_IDIOGRAPHIC_MODE=live\nAURORA_IDIOGRAPHIC_TTL_SECONDS=300\n\n# Dual-Core Router\nAURORA_DUAL_CORE_ROUTER_MODE=live\n\n# Stage 33\nAURORA_STAGE33_MODE=live\nAURORA_STAGE33_SOCIAL_MODE=live\nAURORA_STAGE33_SRL_MODE=live\nAURORA_STAGE33_WM_PROMPT_MODE=live\nAURORA_STAGE33_EVENTS_MODE=live\n\n# Stage 34\nAURORA_STAGE34_MODE=live\nAURORA_STAGE34_ERROR_BRIDGE_MODE=live\nAURORA_STAGE34_CAPSULE_MODE=live\nAURORA_STAGE34_JOURNEY_SUBSCRIBERS_MODE=live\n\n# Stage 35\nAURORA_STAGE35_MODE=live\nAURORA_STAGE35_METACOG_ROUTER_MODE=live\n\n# Stage 37 - LLM Safety\nAURORA_STAGE37_LLM_SAFETY_MODE=live\n\n# Stage 38 - Error Replan + Push Scheduler\nAURORA_STAGE38_ERR_REPLAN_MODE=live\nAURORA_STAGE38_PUSH_SCHEDULER_MODE=live\nAURORA_STAGE38_PUSH_SCHEDULER_INTERVAL_MINUTES=5\n\n# Stage 39 - Scaffolding + Cognitive Load + Galaxy\nAURORA_STAGE39_MODE=live\nAURORA_STAGE39_SCAFFOLDING_PROMPT_MODE=live\nAURORA_STAGE39_COGLOAD_ROUTE_MODE=live\nAURORA_STAGE39_GALAXY_INJECT_MODE=live\n\n# Stage 40 - Calendar\nAURORA_STAGE40_CALENDAR_MODE=live\n\n# Document Context\nAURORA_DOC_CONTEXT_MODE=auto\nAURORA_DOC_CONTEXT_AGGRESSIVE_BUDGET_TOKENS=2200\nAURORA_DOC_CONTEXT_SELECTIVE_BUDGET_TOKENS=900\nAURORA_DOC_CONTEXT_AMBIGUOUS_BUDGET_TOKENS=500\nAURORA_DOC_CONTEXT_DOCUMENT_CONTEXT_INJECTION_MODE=live\n\n# Privacy\nAURORA_PRIVACY_PII_REDACTION_MODE=live\n\n# ---------------------------------------------------------------------------\n# SLO Auto-Degrade Kill Switches [OPTIONAL]\n# ---------------------------------------------------------------------------\nSLO_AUTO_LLM_DEGRADE_MODE=off\nSLO_AUTO_REDIS_FALLBACK_MODE=off\nSLO_AUTO_DB_THROTTLE_MODE=off\nSLO_AUTO_EVENT_BUS_THROTTLE_MODE=off\nSLO_AUTO_RATE_LIMIT_TIGHTEN_MODE=off\n"}, "f25fcc5850b54fa4be1e7cc496f96bd4afabf36a": {"t": 1785747984.5163395, "n": 21288, "h": "7490ef229c66b623", "c": "# =============================================================================\n# Sparkle Production Environment Template\n# =============================================================================\n# Copy this file to .env on your production server and fill in ALL values.\n#\n# Markers:\n# [MUST CHANGE] Secrets that require unique, strong values. Startup will\n# fail if these contain placeholder prefixes like \"your_\" or\n# \"replace_with\".\n# [RECOMMENDED] Has safe defaults but should be reviewed for your deployment.\n# [OPTIONAL] Can be left as-is unless customization is needed.\n#\n# SECURITY: Never commit this file with real values.\n# Use a secrets manager (GitHub Secrets, Vault, AWS SSM) for sensitive values.\n#\n# Validation: python scripts/check_production_secrets.py\n# =============================================================================\n\n# ---------------------------------------------------------------------------\n# Core Application\n# ---------------------------------------------------------------------------\nENVIRONMENT=production\n# [MUST CHANGE] Must be False in production (enforced by settings validator)\nDEBUG=False\nAPP_NAME=Sparkle\nSERVICE_ROLE=api # api | grpc | worker | beat | celery-glm-batch\n\n# ---------------------------------------------------------------------------\n# Security Secrets [MUST CHANGE - ALL OF THESE]\n# ---------------------------------------------------------------------------\n# [MUST CHANGE] Minimum 32 characters.\n# Generate: python -c \"import secrets; print(secrets.token_urlsafe(32))\"\nSECRET_KEY=<generate-32-plus-char-secret-key>\n# [MUST CHANGE] JWT signing secret (minimum 32 characters)\nJWT_SECRET=<generate-32-plus-char-jwt-secret>\n# [MUST CHANGE] Admin secret for protected management endpoints\nADMIN_SECRET=<generate-strong-admin-secret>\n# [MUST CHANGE] Internal API key for service-to-service authentication\nINTERNAL_API_KEY=<generate-strong-internal-api-key>\n\n# ---------------------------------------------------------------------------\n# JWT Configuration [RECOMMENDED]\n# ---------------------------------------------------------------------------\n# Production should use RS256 for asymmetric signing. Generate RSA key pair:\n# openssl genpkey -algorithm RSA -out jwt_private.pem -pkeyopt rsa_keygen_bits:4096\n# openssl rsa -in jwt_private.pem -pubout -out jwt_public.pem\nALGORITHM=RS256\nJWT_PRIVATE_KEY=<paste-PEM-encoded-RSA-private-key>\nJWT_PUBLIC_KEY=<paste-PEM-encoded-RSA-public-key>\nJWT_ISSUER=sparkle-gateway\nJWT_AUDIENCE=sparkle-app\nACCESS_TOKEN_EXPIRE_MINUTES=30\nREFRESH_TOKEN_EXPIRE_DAYS=7\n# [RECOMMENDED] Key version for rotation grace periods\nSPARKLE_JWT_KEY_VERSION=v1\nSPARKLE_JWT_PREVIOUS_KEY=\n\n# ---------------------------------------------------------------------------\n# PostgreSQL Database [MUST CHANGE]\n# ---------------------------------------------------------------------------\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=sparkle_app\n# [MUST CHANGE] Strong, unique password\nPOSTGRES_PASSWORD=<generate-strong-postgres-password>\nDATABASE_URL=postgresql+asyncpg://sparkle_app:<POSTGRES_PASSWORD>@sparkle_db:5432/sparkle\n# Aliases used by docker-compose.prod.yml\nDB_HOST=sparkle_db\nDB_PORT=5432\nDB_NAME=sparkle\nDB_USER=sparkle_app\nDB_PASSWORD=<same-as-POSTGRES_PASSWORD>\n\n# [MUST CHANGE] Per-service database URLs (required when SPARKLE_RBAC_ENABLED=true)\nSPARKLE_RBAC_ENABLED=true\nSPARKLE_GATEWAY_DATABASE_URL=postgresql://sparkle_gateway:<generate-password>@sparkle_db:5432/sparkle\nSPARKLE_ENGINE_DATABASE_URL=postgresql+asyncpg://sparkle_engine:<generate-password>@sparkle_db:5432/sparkle\nSPARKLE_CELERY_DATABASE_URL=postgresql+asyncpg://sparkle_celery:<generate-password>@sparkle_db:5432/sparkle\n\n# PostgreSQL tuning [RECOMMENDED - adjust based on server RAM]\nPOSTGRES_MAX_CONNECTIONS=200\nPOSTGRES_SHARED_BUFFERS=256MB\nPOSTGRES_EFFECTIVE_CACHE_SIZE=768MB\nPOSTGRES_WORK_MEM=16MB\nPOSTGRES_MAINTENANCE_WORK_MEM=128MB\nPOSTGRES_MAX_WAL_SIZE=2GB\n\n# Database pool settings [RECOMMENDED]\nDB_POOL_SIZE=20\nDB_MAX_OVERFLOW=40\nDB_POOL_RECYCLE=3600\nDB_POOL_TIMEOUT=30\nDB_ECHO=False\n\n# ---------------------------------------------------------------------------\n# Redis [MUST CHANGE]\n# ---------------------------------------------------------------------------\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\n# [MUST CHANGE] Strong, unique password\nREDIS_PASSWORD=<generate-strong-redis-password>\nREDIS_URL=redis://:<REDIS_PASSWORD>@sparkle_redis:6379/0\nREDIS_FAIL_CLOSED=true\n\n# [RECOMMENDED] Per-service Redis credentials for RBAC isolation\nSPARKLE_GATEWAY_REDIS_PASSWORD=<generate-or-use-REDIS_PASSWORD>\nSPARKLE_ENGINE_REDIS_PASSWORD=<generate-or-use-REDIS_PASSWORD>\nSPARKLE_CELERY_REDIS_PASSWORD=<generate-or-use-REDIS_PASSWORD>\n\n# Celery Redis URLs\nCELERY_BROKER_URL=redis://:<REDIS_PASSWORD>@sparkle_redis:6379/1\nCELERY_RESULT_BACKEND=redis://:<REDIS_PASSWORD>@sparkle_redis:6379/2\n\n# ---------------------------------------------------------------------------\n# MinIO Object Storage [MUST CHANGE]\n# ---------------------------------------------------------------------------\nMINIO_ROOT_USER=<generate-minio-root-user>\n# [MUST CHANGE] Strong, unique password (not \"minioadmin\")\nMINIO_ROOT_PASSWORD=<generate-minio-root-password>\nMINIO_ENDPOINT=minio:9000\nMINIO_ACCESS_KEY=<generate-minio-access-key>\n# [MUST CHANGE] Must not be \"minioadmin\" in production\nMINIO_SECRET_KEY=<generate-minio-secret-key>\nMINIO_BUCKET=sparkle-files\n# [RECOMMENDED] Set to true in production; requires MinIO behind a TLS proxy\nMINIO_USE_SSL=false\nMINIO_AUTO_CREATE_BUCKET=true\n# [RECOMMENDED] Public-facing endpoint for presigned URLs\nMINIO_PUBLIC_ENDPOINT=\n\n# Per-bucket credentials [RECOMMENDED]\nMINIO_UPLOADS_BUCKET=sparkle-uploads\nMINIO_UPLOADS_ACCESS_KEY=sparkle_uploads\nMINIO_UPLOADS_SECRET_KEY=<generate-uploads-secret>\nMINIO_EXPORTS_BUCKET=sparkle-exports\nMINIO_EXPORTS_ACCESS_KEY=sparkle_exports\nMINIO_EXPORTS_SECRET_KEY=<generate-exports-secret>\nMINIO_BACKUPS_BUCKET=sparkle-backups\nMINIO_BACKUPS_ACCESS_KEY=sparkle_backups\nMINIO_BACKUPS_SECRET_KEY=<generate-backups-secret>\n\n# File service policy [RECOMMENDED]\nFILE_MAX_UPLOAD_SIZE=52428800\nFILE_PRESIGN_EXPIRES_SECONDS=420\nFILE_GC_INTERVAL_MINUTES=60\nFILE_GC_GRACE_HOURS=24\nFILE_GC_BATCH_SIZE=200\n\n# ---------------------------------------------------------------------------\n# LLM Provider Configuration [MUST CHANGE - at least one provider required]\n# ---------------------------------------------------------------------------\nLLM_PROVIDER=qwen\n# [MUST CHANGE] At least one LLM API key is required in production\nLLM_API_KEY=<your-llm-api-key>\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n\n# LLM Tier Routing [OPTIONAL] - comma-separated model keys from LLMRouter\nLLM_TIER_FREE=\nLLM_TIER_FREE_FAST=\nLLM_TIER_FREE_REASONING=\nLLM_TIER_FAST=\nLLM_TIER_STANDARD=\nLLM_TIER_PLUS=\nLLM_TIER_PRO=\nLLM_TIER_REASONING=\nLLM_TIER_MAX=\nLLM_TIER_GLM_BATCH=\nLLM_TIER_SPECIALIST=\n\n# XiaoMi MIMO [OPTIONAL]\nXIAOMI_MIMO_API_KEY=\nXIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1\nXIAOMI_CHAT_MODEL=mimo-v2-flash\nXIAOMI_STANDARD_MODEL=mimo-v2-flash\nXIAOMI_PRO_MODEL=MiMo-V2.5\nXIAOMI_TEMPERATURE=0.3\nXIAOMI_PRO_TEMPERATURE=0.3\nXIAOMI_MIMO_TOKEN_PLAN_API_KEY=\nXIAOMI_MIMO_TOKEN_PLAN_BASE_URL=https://token-plan-cn.xiaomimimo.com/v1\n\n# DeepSeek [OPTIONAL]\nDEEPSEEK_API_KEY=\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM [OPTIONAL]\nZHIPU_API_KEY=\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_CODING_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4\nZHIPU_CHAT_MODEL=glm-4.7\nZHIPU_TOOLS_MODEL=glm-4.7\nZHIPU_FLASH_MODEL=glm-4.7-flashx\nGLM_4_7_FLASH_MODEL=glm-4.7-flash\nZHIPU_AIR_MODEL=glm-4.5-air\nZHIPU_LIGHT_MODEL=glm-4.6\nZHIPU_MAX_MODEL=glm-5\nZHIPU_TEMPERATURE=0.3\nZHIPU_OCR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_OCR_MODEL=glm-ocr\nZHIPU_OCR_TIMEOUT_SECONDS=120\n\n# DashScope (Aliyun) [OPTIONAL]\nDASHSCOPE_API_KEY=\nDASHSCOPE_BASE_HTTP_API_URL=https://dashscope.aliyuncs.com/api/v1\nDASHSCOPE_BASE_URL_COMPATIBLE=https://dashscope.aliyuncs.com/compatible-mode/v1\nDASHSCOPE_CHAT_MODEL=qwen3.6-plus\nDASHSCOPE_REASON_MODEL=qwen3.6-plus\nDASHSCOPE_FAST_MODEL=qwen3.6-flash\nDASHSCOPE_STANDARD_MODEL=qwen3.5-flash\nDASHSCOPE_TEMPERATURE=0.7\nDASHSCOPE_EMBEDDING_MODEL=text-embedding-v4\nDASHSCOPE_RERANK_MODEL=qwen3-rerank\n\n# SiliconFlow [OPTIONAL]\nSILICONFLOW_API_KEY=\nSILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1\nSILICONFLOW_FREE_MODEL=Qwen/Qwen3.5-4B\nSILICONFLOW_OCR_MODEL=deepseek-ai/DeepSeek-OCR\nSILICONFLOW_OCR_TIMEOUT_SECONDS=120\nSILICONFLOW_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-4B\nSILICONFLOW_RERANK_MODEL=Qwen/Qwen3-Reranker-4B\n\n# Translation (Hunyuan via SiliconFlow) [OPTIONAL]\nHUNYUAN_API_KEY=\nHUNYUAN_BASE_URL=https://api.siliconflow.cn/v1\nHUNYUAN_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nSILICONFLOW_TRANSLATE_MODEL=tencent/Hunyuan-MT-7B\nTRANSLATION_PRIMARY_PROVIDER=hunyuan\nTRANSLATION_BACKUP_PROVIDER=siliconflow\nTRANSLATION_PROVIDER_TIMEOUT_SECONDS=30\n\n# Embedding & Reranking [RECOMMENDED]\nEMBEDDING_PROVIDER=dashscope\nEMBEDDING_BACKUP_PROVIDER=siliconflow\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\nRERANK_PROVIDER=dashscope\nRERANK_BACKUP_PROVIDER=siliconflow\nRERANK_MODEL=qwen3-rerank\n\n# OCR [RECOMMENDED]\nOCR_PROVIDER=zhipu\nOCR_BACKUP_PROVIDER=siliconflow\n\n# ---------------------------------------------------------------------------\n# STT (Speech-to-Text) [OPTIONAL]\n# ---------------------------------------------------------------------------\nSTT_PROVIDER=zhipu\nSTT_BACKUP_PROVIDER=xunfei\nSTT_ENHANCE_ENABLED=true\n\n# XunFei STT\nXUNFEI_APP_ID=\nXUNFEI_API_KEY=\nXUNFEI_API_SECRET=\nXUNFEI_STT_DOMAIN=slm\nXUNFEI_STT_LANGUAGE=zh-CN\nXUNFEI_STT_SAMPLE_RATE=16000\nXUNFEI_STT_MAX_AUDIO_DURATION=60\nXUNFEI_STT_EOS_MS=6000\n\n# Zhipu ASR\nZHIPU_ASR_BASE_URL=https://open.bigmodel.cn/api/paas/v4\nZHIPU_ASR_MODEL=glm-asr-2512\nZHIPU_ASR_SAMPLE_RATE=16000\nZHIPU_ASR_STREAM_SEGMENT_SECONDS=4\nZHIPU_ASR_MAX_AUDIO_SECONDS=30\nZHIPU_ASR_MAX_FILE_SIZE_BYTES=26214400\nZHIPU_ASR_REQUEST_TIMEOUT_SECONDS=90\n\n# ---------------------------------------------------------------------------\n# GLM Batch [OPTIONAL]\n# ---------------------------------------------------------------------------\nGLM_BATCH_ENABLED=true\nGLM_BATCH_QUEUE=glm_batch\nGLM_BATCH_MIN_CONCURRENCY=1\nGLM_BATCH_MAX_CONCURRENCY=6\nGLM_BATCH_PEAK_START_HOUR=14\nGLM_BATCH_PEAK_END_HOUR=18\nGLM_BATCH_PEAK_CONCURRENCY=2\nGLM_BATCH_OFFPEAK_DEFAULT_CONCURRENCY=3\nGLM_BATCH_ADAPTIVE_ENABLED=true\nGLM_BATCH_ADAPTIVE_SUCCESS_THRESHOLD=8\nGLM_BATCH_ADAPTIVE_INCREASE_COOLDOWN_SECONDS=180\nGLM_BATCH_ADAPTIVE_RATE_LIMIT_COOLDOWN_SECONDS=300\nGLM_BATCH_SPILLOVER_ENABLED=true\nGLM_BATCH_SPILLOVER_BACKLOG_FACTOR=2\nGLM_BATCH_CAPSULES_ENABLED=true\nGLM_BATCH_COGNITIVE_ANALYSIS_ENABLED=true\n\n# ---------------------------------------------------------------------------\n# Social Login [OPTIONAL - fill when ready for app store]\n# ---------------------------------------------------------------------------\nGOOGLE_CLIENT_ID=\nAPPLE_CLIENT_ID=\nWECHAT_APP_ID=\nWECHAT_APP_SECRET=\n\n# ---------------------------------------------------------------------------\n# Email / SMTP [MUST CHANGE if EMAIL_ENABLED=true]\n# ---------------------------------------------------------------------------\nEMAIL_ENABLED=true\nSMTP_HOST=smtp.example.com\nSMTP_PORT=587\nSMTP_USER=<your-smtp-username>\nSMTP_PASSWORD=<your-smtp-password>\nEMAIL_FROM=no-reply@example.com\nEMAIL_FROM_NAME=Sparkle\n\n# ---------------------------------------------------------------------------\n# gRPC Server (Agent Service) [MUST CHANGE for TLS]\n# ---------------------------------------------------------------------------\nGRPC_PORT=50051\nGRPC_ENABLE_REFLECTION=False\nGRPC_REQUIRE_TLS=true\nGRPC_TLS_CERT_PATH=/run/secrets/grpc_server.crt\nGRPC_TLS_KEY_PATH=/run/secrets/grpc_server.key\nGRPC_TLS_CA_CERT_PATH=\n\n# gRPC Client (Gateway -> Agent) [RECOMMENDED for mTLS]\nAGENT_TLS_ENABLED=false\n# AGENT_TLS_CA_CERT=/run/secrets/grpc_ca.crt\n# AGENT_TLS_CLIENT_CERT=/run/secrets/grpc_client.crt\n# AGENT_TLS_CLIENT_KEY=/run/secrets/grpc_client.key\n# AGENT_TLS_SERVER_NAME=sparkle-agent\n# AGENT_TLS_INSECURE=false\n\n# ---------------------------------------------------------------------------\n# Service URLs [MUST CHANGE]\n# ---------------------------------------------------------------------------\n# [MUST CHANGE] Production HTTPS URL for deeplinks, CORS, and email links.\n# Must be HTTPS. The settings validator rejects non-HTTPS values.\nPRODUCTION_URL=https://sparkle.example.com\nBACKEND_URL=http://backend:8000\nGATEWAY_INTERNAL_URL=http://gateway_blue:8080\n\n# CORS origins (JSON array format or comma-separated)\n# [MUST CHANGE] Must contain only HTTPS origins in production\nBACKEND_CORS_ORIGINS=[\"https://sparkle.example.com\"]\n\n# WebSocket\nWS_ALLOW_QUERY_TOKEN=false\n\n# ---------------------------------------------------------------------------\n# Container Identity [OPTIONAL]\n# ---------------------------------------------------------------------------\nSPARKLE_APP_UID=10001\nSPARKLE_APP_GID=10001\n\n# ---------------------------------------------------------------------------\n# OpenTelemetry [OPTIONAL]\n# ---------------------------------------------------------------------------\nOTEL_EXPORTER_OTLP_ENDPOINT=http://tempo:4317\n\n# ---------------------------------------------------------------------------\n# Sentry [OPTIONAL - recommended for crash reporting]\n# ---------------------------------------------------------------------------\nSENTRY_DSN=\nSENTRY_ENVIRONMENT=production\nSENTRY_TRACES_SAMPLE_RATE=0.1\n\n# ---------------------------------------------------------------------------\n# Image Tags for docker-compose.prod.yml [RECOMMENDED]\n# ---------------------------------------------------------------------------\nIMAGE_TAG=latest\nGATEWAY_IMAGE=ghcr.io/<your-org>/sparkle-gateway\nBACKEND_IMAGE=ghcr.io/<your-org>/sparkle-backend\n\n# ---------------------------------------------------------------------------\n# Chaos Engineering [OPTIONAL - keep disabled in production]\n# ---------------------------------------------------------------------------\nCHAOS_ENABLED=false\nCHAOS_ALLOW_PROD=false\n\n# ---------------------------------------------------------------------------\n# Observability Stack [MUST CHANGE]\n# ---------------------------------------------------------------------------\nGRAFANA_ADMIN_USER=admin\nGRAFANA_ADMIN_PASSWORD=<generate-strong-grafana-password>\n\n# Alertmanager [MUST CHANGE - webhook URLs required for production]\n# The docker-compose.prod.yml enforces these via ?-interpolation.\nALERTMANAGER_DEFAULT_WEBHOOK_URL=<your-default-webhook-url>\nALERTMANAGER_CRITICAL_WEBHOOK_URL=<your-critical-webhook-url>\nALERTMANAGER_WARNING_WEBHOOK_URL=<your-warning-webhook-url>\nALERTMANAGER_EMAIL_TO=ops@example.com\nALERTMANAGER_EMAIL_FROM=sparkle-alerts@example.com\nALERTMANAGER_SMTP_SMARTHOST=smtp.example.com:587\nALERTMANAGER_SMTP_AUTH_USERNAME=\nALERTMANAGER_SMTP_AUTH_PASSWORD=\n\n# ---------------------------------------------------------------------------\n# Aurora Adaptive Kernel (tri-state: off | shadow | live)\n# ---------------------------------------------------------------------------\n# All switches default to \"live\" in production. Adjust individually for\n# staged rollouts. See scripts/stage{N}/drill_transitions.sh for testing.\n\nAURORA_DEFAULT_MODE=live\nENABLE_AURORA_RUNTIME_V1=true\n\n# AI Four-Phase Launch switches\nENABLE_CONTEXT_FOCUSING=true\nENABLE_CONTEXT_SEMANTIC_GATING=true\nENABLE_CONTEXT_BRIEFING=true\nENABLE_CONTEXT_FOCUS_METADATA=true\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\nENABLE_ADAPTIVE_PRESENTATION=true\nENABLE_STRUCTURED_NEXT_ACTIONS=true\nENABLE_BLOCKED_TEMPERATURE=true\nENABLE_UX_PRESENTATION_METADATA=true\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\nENABLE_PROACTIVE_INSIGHTS=true\nENABLE_PLAN_REASONING_SUMMARY=true\nENABLE_WEEKLY_LEARNING_REPORT=true\nENABLE_PROGRESS_COMPARISONS=true\n\n# Aurora boolean switches (non-MODE)\nSPARKLE_MEMORY_INFERRED_WRITE_ENABLED=true\nSPARKLE_MEMORY_INFERRED_DRY_RUN_ENABLED=false\nSPARKLE_AGGREGATOR_ENABLED=true\nSPARKLE_ROUTER_SOCIAL_CONTEXT_READ_ENABLED=true\nSPARKLE_ROUTER_USE_AGGREGATOR_PROVIDER=true\nSPARKLE_PUSH_POLICY_ENABLED=true\nSPARKLE_PUSH_DELIVERY_ENABLED=true\nSPARKLE_WORKING_MEMORY_ENABLED=true\nSPARKLE_LLM_EXTRACTOR_ENABLED=true\nSPARKLE_LLM_EXTRACTOR_DRY_RUN_ENABLED=false\nSPARKLE_CONSOLIDATION_ENABLED=true\nSPARKLE_CONFLICT_RESOLVER_SHADOW_MODE=false\nSPARKLE_ROUTER_SUFFICIENCY_BRANCH_ENABLED=true\nSPARKLE_SKILL_EXTRACT_ENABLED=true\nSPARKLE_SKILL_SELECTION_ENABLED=true\nSPARKLE_SKILL_SHARE_ENABLED=true\nSPARKLE_SKILL_SHARE_MOCK_REVIEW_ENABLED=false\nSPARKLE_PROMPT_SOCIAL_CONTEXT_RENDER_ENABLED=true\n\n# Stage 18 - Push System\nAURORA_STAGE18_AGGREGATOR_MODE=live\nAURORA_STAGE18_PUSH_POLICY_MODE=live\nAURORA_STAGE18_PUSH_DELIVERY_MODE=live\n\n# Stage 19 - Working Memory\nAURORA_STAGE19_WORKING_MEMORY_MODE=live\nAURORA_STAGE19_LLM_EXTRACTOR_MODE=live\nAURORA_STAGE19_CONSOLIDATION_MODE=live\n\n# Stage 21 - Skill Store\nAURORA_STAGE21_SKILL_STORE_MODE=live\nAURORA_STAGE21_SKILL_SELECTION_MODE=live\nAURORA_STAGE21_SKILL_SHARE_MODE=live\n\n# Stage 23 - Bayesian Learner\nAURORA_BAYESIAN_MODE=live\nAURORA_BAYESIAN_LIVE_CANARY_PERCENT=5\nAURORA_BAYESIAN_TTL_DAYS=30\n\n# Stage 24 - Policy Compiler\nAURORA_POLICY_COMPILER_MODE=live\nAURORA_POLICY_DAILY_BUDGET=2\nAURORA_POLICY_COOLDOWN_HOURS=24\n\n# Stage 25 - Reflection Wire\nAURORA_REFLECTION_WIRE_MODE=live\nAURORA_REFLECTION_CONTEXT_LIMIT=20\nAURORA_REFLECTION_CONTEXT_MAX_TOKENS=800\nAURORA_REFLECTION_TRIGGER_TOO_DIFFICULT=true\nAURORA_REFLECTION_TRIGGER_UNCLEAR=true\nAURORA_REFLECTION_TRIGGER_ABANDONED=true\nAURORA_REFLECTION_TRIGGER_INTERVENTION_INEFFECTIVE=true\nAURORA_REFLECTION_TRIGGER_PLAN_STALL=true\nAURORA_REFLECTION_TRIGGER_OVERLOAD=true\n\n# Stage 26 - Scene Model\nAURORA_SCENE_MODE=live\nAURORA_SCENE_SIMILARITY_THRESHOLD=0.75\nAURORA_SCENE_TIME_WINDOW_HOURS=72\nAURORA_SCENE_QUALITY_THRESHOLD=0.6\n\n# Stage 27 - Foresight Engine\nAURORA_FORESIGHT_MODE=live\nAURORA_FORESIGHT_ATTRACTOR=live\nAURORA_FORESIGHT_DEVIATION=live\nAURORA_FORESIGHT_JITAI=live\nAURORA_FORESIGHT_CACHE_TTL_SECONDS=60\nAURORA_FORESIGHT_ATTRACTOR_ALPHA=0.1\nAURORA_FORESIGHT_ATTRACTOR_MIN_CONFIDENCE=0.3\nAURORA_FORESIGHT_DEVIATION_Z_THRESHOLD=1.5\nAURORA_FORESIGHT_JITAI_DAILY_BUDGET=3\nAURORA_FORESIGHT_JITAI_COOLDOWN_HOURS=24\nAURORA_FORESIGHT_JITAI_MISFIRE_THRESHOLD=0.15\n\n# Stage 28 - Traits\nAURORA_TRAITS_MODE=live\nAURORA_TRAITS_NLP_MODE=live\nAURORA_TRAITS_COLDSTART_MODE=live\nAURORA_TRAITS_NLP_COOLDOWN_HOURS=24\nAURORA_TRAITS_NLP_BIAS_THRESHOLD=0.10\nAURORA_TRAITS_NLP_MAX_DAYS=30\nAURORA_TRAITS_NLP_MAX_COST_USD=0.003\nAURORA_TRAITS_NLP_P95_MS_BUDGET=800\n\n# Stage 29 - SRL\nAURORA_SRL_MODE=live\nAURORA_SRL_TRACKER_MODE=live\nAURORA_SRL_BRIDGE_MODE=live\nAURORA_SRL_SCAFFOLDING_CONSUME_MODE=live\nAURORA_SRL_EVENT_LAG_P95_THRESHOLD_SECONDS=5.0\nAURORA_SRL_MISJUDGMENT_THRESHOLD=0.20\nAURORA_SRL_TRACKER_P95_MS_BUDGET=20\nAURORA_SRL_AGGREGATOR_TTL_SECONDS=15\n\n# Stage 30 - Metacognition\nAURORA_METACOG_MODE=live\nAURORA_METACOG_DASHBOARD_MODE=live\nAURORA_METACOG_PROCESS_SCAFFOLDING_MODE=live\nAURORA_METACOG_FSM_COMBINE_MODE=live\nAURORA_METACOG_CACHE_TTL_SECONDS=60\nAURORA_METACOG_MIN_SAMPLE_SIZE=20\nAURORA_METACOG_PROCESS_TRIGGER_ABS_BIAS=0.30\nAURORA_METACOG_PROCESS_COOLDOWN_HOURS=72\nAURORA_METACOG_P95_MS_BUDGET=100\nAURORA_METACOG_PROXY_REVISION_FREQUENCY=live\nAURORA_METACOG_PROXY_SELF_CORRECTION_RATE=live\nAURORA_METACOG_PROXY_QUESTION_TO_STATEMENT_RATIO=live\nAURORA_METACOG_PROXY_TIME_TO_FIRST_ACTION=live\nAURORA_METACOG_PROXY_COMPLETION_VS_ESTIMATE_DELTA_SIGN=live\nAURORA_IDIOGRAPHIC_MODE=live\nAURORA_IDIOGRAPHIC_TTL_SECONDS=300\n\n# Dual-Core Router\nAURORA_DUAL_CORE_ROUTER_MODE=live\n\n# Stage 33\nAURORA_STAGE33_MODE=live\nAURORA_STAGE33_SOCIAL_MODE=live\nAURORA_STAGE33_SRL_MODE=live\nAURORA_STAGE33_WM_PROMPT_MODE=live\nAURORA_STAGE33_EVENTS_MODE=live\n\n# Stage 34\nAURORA_STAGE34_MODE=live\nAURORA_STAGE34_ERROR_BRIDGE_MODE=live\nAURORA_STAGE34_CAPSULE_MODE=live\nAURORA_STAGE34_JOURNEY_SUBSCRIBERS_MODE=live\n\n# Stage 35\nAURORA_STAGE35_MODE=live\nAURORA_STAGE35_METACOG_ROUTER_MODE=live\n\n# Stage 37 - LLM Safety\nAURORA_STAGE37_LLM_SAFETY_MODE=live\n\n# Stage 38 - Error Replan + Push Scheduler\nAURORA_STAGE38_ERR_REPLAN_MODE=live\nAURORA_STAGE38_PUSH_SCHEDULER_MODE=live\nAURORA_STAGE38_PUSH_SCHEDULER_INTERVAL_MINUTES=5\n\n# Stage 39 - Scaffolding + Cognitive Load + Galaxy\nAURORA_STAGE39_MODE=live\nAURORA_STAGE39_SCAFFOLDING_PROMPT_MODE=live\nAURORA_STAGE39_COGLOAD_ROUTE_MODE=live\nAURORA_STAGE39_GALAXY_INJECT_MODE=live\n\n# Stage 40 - Calendar\nAURORA_STAGE40_CALENDAR_MODE=live\n\n# Document Context\nAURORA_DOC_CONTEXT_MODE=auto\nAURORA_DOC_CONTEXT_AGGRESSIVE_BUDGET_TOKENS=2200\nAURORA_DOC_CONTEXT_SELECTIVE_BUDGET_TOKENS=900\nAURORA_DOC_CONTEXT_AMBIGUOUS_BUDGET_TOKENS=500\nAURORA_DOC_CONTEXT_DOCUMENT_CONTEXT_INJECTION_MODE=live\n\n# Privacy\nAURORA_PRIVACY_PII_REDACTION_MODE=live\n\n# ---------------------------------------------------------------------------\n# SLO Auto-Degrade Kill Switches [OPTIONAL]\n# ---------------------------------------------------------------------------\nSLO_AUTO_LLM_DEGRADE_MODE=off\nSLO_AUTO_REDIS_FALLBACK_MODE=off\nSLO_AUTO_DB_THROTTLE_MODE=off\nSLO_AUTO_EVENT_BUS_THROTTLE_MODE=off\nSLO_AUTO_RATE_LIMIT_TIGHTEN_MODE=off\n"}, "f011f685250a57861b7109bebb112ae0d5c6e8a0": {"t": 1785747985.6424727, "n": 13057, "h": "3adef57ca2a098d5", "c": "# =============================================================================\n# Sparkle Production Environment Template\n# =============================================================================\n# Copy to .env on the production server and fill ALL values marked REQUIRED.\n# Run: python scripts/check_production_secrets.py to validate (if available).\n#\n# DO NOT commit this file with real secrets. Add .env to .gitignore.\n# =============================================================================\n\n# ─── CRITICAL PRODUCTION OVERRIDES ──────────────────────────────────────────\n\nENVIRONMENT=production\nDEBUG=False\nREDIS_FAIL_CLOSED=true\n\n# ─── SECRETS (REQUIRED — generate with: openssl rand -hex 32) ───────────────\n\nSECRET_KEY=<generate 64-char hex>\nJWT_SECRET=<generate 64-char hex>\nPOSTGRES_PASSWORD=<generate strong password>\nSPARKLE_GATEWAY_DB_PASSWORD=<generate strong password>\nSPARKLE_ENGINE_DB_PASSWORD=<generate strong password>\nSPARKLE_CELERY_DB_PASSWORD=<generate strong password>\nSPARKLE_READONLY_DB_PASSWORD=<generate strong password>\nREDIS_PASSWORD=<generate strong password>\nSPARKLE_GATEWAY_REDIS_PASSWORD=<generate strong password>\nSPARKLE_ENGINE_REDIS_PASSWORD=<generate strong password>\nSPARKLE_CELERY_REDIS_PASSWORD=<generate strong password>\nMINIO_ROOT_PASSWORD=<generate strong password>\nMINIO_UPLOADS_SECRET_KEY=<generate strong password>\nMINIO_EXPORTS_SECRET_KEY=<generate strong password>\nMINIO_BACKUPS_SECRET_KEY=<generate strong password>\nINTERNAL_API_KEY=<generate 64-char hex>\nADMIN_SECRET=<generate 64-char hex>\nGRAFANA_ADMIN_USER=admin\nGRAFANA_ADMIN_PASSWORD=<generate strong password>\n\n# ─── DATABASE ────────────────────────────────────────────────────────────────\n\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nDATABASE_URL=postgresql+asyncpg://postgres:${POSTGRES_PASSWORD}@sparkle_db:5432/sparkle\nSPARKLE_RBAC_ENABLED=true\nSPARKLE_GATEWAY_DATABASE_URL=postgresql://sparkle_gateway:${SPARKLE_GATEWAY_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\nSPARKLE_ENGINE_DATABASE_URL=postgresql+asyncpg://sparkle_engine:${SPARKLE_ENGINE_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\nSPARKLE_CELERY_DATABASE_URL=postgresql+asyncpg://sparkle_celery:${SPARKLE_CELERY_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\nSPARKLE_READONLY_DATABASE_URL=postgresql://sparkle_readonly:${SPARKLE_READONLY_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\n\nDB_HOST=sparkle_db\nDB_PORT=5432\nDB_NAME=sparkle\nDB_USER=postgres\nDB_PASSWORD=${POSTGRES_PASSWORD}\n\n# PostgreSQL tuning (adjust based on server RAM)\nPOSTGRES_MAX_CONNECTIONS=200\nPOSTGRES_SHARED_BUFFERS=256MB\nPOSTGRES_EFFECTIVE_CACHE_SIZE=768MB\nPOSTGRES_WORK_MEM=16MB\nPOSTGRES_MAINTENANCE_WORK_MEM=128MB\nPOSTGRES_MAX_WAL_SIZE=2GB\n\n# ─── REDIS ───────────────────────────────────────────────────────────────────\n\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_URL=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/0\nCELERY_BROKER_URL=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/1\nCELERY_RESULT_BACKEND=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/2\nSPARKLE_GATEWAY_REDIS_URL=redis://gateway:${SPARKLE_GATEWAY_REDIS_PASSWORD}@sparkle_redis:6379/0\nSPARKLE_ENGINE_REDIS_URL=redis://engine:${SPARKLE_ENGINE_REDIS_PASSWORD}@sparkle_redis:6379/0\nSPARKLE_CELERY_REDIS_URL=redis://celery:${SPARKLE_CELERY_REDIS_PASSWORD}@sparkle_redis:6379/1\nSPARKLE_CELERY_BROKER_URL=redis://celery:${SPARKLE_CELERY_REDIS_PASSWORD}@sparkle_redis:6379/1\nSPARKLE_CELERY_RESULT_BACKEND=redis://celery:${SPARKLE_CELERY_REDIS_PASSWORD}@sparkle_redis:6379/2\n\n# ─── MINIO (File Storage) ───────────────────────────────────────────────────\n\nMINIO_ROOT_USER=<choose a username>\nMINIO_ENDPOINT=minio:9000\nMINIO_ACCESS_KEY=${MINIO_ROOT_USER}\nMINIO_SECRET_KEY=${MINIO_ROOT_PASSWORD}\nMINIO_BUCKET=sparkle-files\nMINIO_UPLOADS_BUCKET=sparkle-uploads\nMINIO_EXPORTS_BUCKET=sparkle-exports\nMINIO_BACKUPS_BUCKET=sparkle-backups\nMINIO_UPLOADS_ACCESS_KEY=sparkle_uploads\nMINIO_EXPORTS_ACCESS_KEY=sparkle_exports\nMINIO_BACKUPS_ACCESS_KEY=sparkle_backups\nMINIO_USE_SSL=false\nMINIO_AUTO_CREATE_BUCKET=true\n\n# ─── JWT ─────────────────────────────────────────────────────────────────────\n\nACCESS_TOKEN_EXPIRE_MINUTES=30\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=RS256\n# RSA key pair for RS256 JWT signing (required when ALGORITHM=RS256)\n# Generate: openssl genrsa -out jwt_private.pem 2048 && openssl rsa -in jwt_private.pem -pubout -out jwt_public.pem\nJWT_PRIVATE_KEY=\nJWT_PUBLIC_KEY=\n\n# ─── CORS (REQUIRED — restrict to actual domain) ────────────────────────────\n\nBACKEND_CORS_ORIGINS=[\"https://<your-domain>\"]\n\n# ─── LLM PROVIDERS (REQUIRED — at least one provider must be configured) ────\n\n# Primary: Qwen (DashScope)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=<your qwen api key>\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n\n# DeepSeek\nDEEPSEEK_API_KEY=<your deepseek api key>\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM\nZHIPU_API_KEY=<your zhipu api key>\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n\n# Embedding\nEMBEDDING_PROVIDER=dashscope\nDASHSCOPE_API_KEY=<your dashscope api key>\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\n\n# ─── SOCIAL LOGIN (fill when ready for app store) ───────────────────────────\n\nGOOGLE_CLIENT_ID=\nAPPLE_CLIENT_ID=\nWECHAT_APP_ID=\nWECHAT_APP_SECRET=\n\n# ─── PUSH NOTIFICATIONS (JPush for China) ───────────────────────────────────\n\n# JPUSH_APP_KEY=<your jpush app key>\n# JPUSH_MASTER_SECRET=<your jpush master secret>\n\n# ─── EMAIL (password reset, verification) ────────────────────────────────────\n\nEMAIL_ENABLED=true\nSMTP_HOST=smtp.example.com\nSMTP_PORT=587\nSMTP_USER=<your smtp username>\nSMTP_PASSWORD=<your smtp password>\nEMAIL_FROM=no-reply@<your-domain>\nEMAIL_FROM_NAME=Sparkle\n\n# ─── SENTRY (crash reporting — recommended) ─────────────────────────────────\n\nSENTRY_DSN=<your sentry dsn>\nSENTRY_ENVIRONMENT=production\nSENTRY_TRACES_SAMPLE_RATE=0.1\n\n# ─── PRODUCTION URL ─────────────────────────────────────────────────────────\n\nPRODUCTION_URL=https://<your-domain>\n\n# ─── BACKEND_URL (internal Docker network) ──────────────────────────────────\n\nBACKEND_URL=http://backend:8000\n\n# ─── IMAGE TAGS ─────────────────────────────────────────────────────────────\n\nIMAGE_TAG=latest\nGATEWAY_IMAGE=ghcr.io/your-org/sparkle-gateway\nBACKEND_IMAGE=ghcr.io/your-org/sparkle-backend\n\n# ─── CONTAINER IDENTITY ─────────────────────────────────────────────────────\n\nSPARKLE_APP_UID=10001\nSPARKLE_APP_GID=10001\n\n# ─── FILE SERVICE ───────────────────────────────────────────────────────────\n\nFILE_MAX_UPLOAD_SIZE=52428800\nFILE_PRESIGN_EXPIRES_SECONDS=420\nFILE_GC_INTERVAL_MINUTES=60\nFILE_GC_GRACE_HOURS=24\nFILE_GC_BATCH_SIZE=200\n\n# ─── MONITORING ─────────────────────────────────────────────────────────────\n\nOTEL_EXPORTER_OTLP_ENDPOINT=http://tempo:4317\nALERTMANAGER_EMAIL_TO=ops@<your-domain>\nALERTMANAGER_EMAIL_FROM=sparkle-alerts@<your-domain>\n\n# Alertmanager webhook receivers — REQUIRED for production alerts.\n# The docker-compose.prod.yml enforces these (fails startup if unset).\n# Use your real alert receiver URLs (Slack webhook, PagerDuty, DingTalk, custom, etc.).\nALERTMANAGER_DEFAULT_WEBHOOK_URL=https://hooks.slack.com/services/...\nALERTMANAGER_CRITICAL_WEBHOOK_URL=https://hooks.slack.com/services/...\nALERTMANAGER_WARNING_WEBHOOK_URL=https://hooks.slack.com/services/...\n\n# ─── gRPC TLS ────────────────────────────────────────────────────────────────\n# Python Engine side (GRPC_REQUIRE_TLS): When true, the Python gRPC server loads\n# TLS certs from GRPC_TLS_CERT_PATH / GRPC_TLS_KEY_PATH.\n# Go Gateway side (AGENT_TLS_ENABLED): Separate toggle — must ALSO be set for the\n# gateway to dial the agent over TLS. Both sides must agree.\n# Set AGENT_TLS_ENABLED=true and provide AGENT_TLS_CA_CERT + AGENT_TLS_CLIENT_*\n# when Gateway and Engine run on separate hosts/networks.\n# Generate certs: scripts/generate_grpc_certs.sh (if available)\n\nGRPC_REQUIRE_TLS=true\nAGENT_TLS_ENABLED=false\n# AGENT_TLS_CA_CERT=/run/secrets/grpc_ca.crt\n# AGENT_TLS_CLIENT_CERT=/run/secrets/grpc_client.crt\n# AGENT_TLS_CLIENT_KEY=/run/secrets/grpc_client.key\n# AGENT_TLS_SERVER_NAME=sparkle-agent\n\n# ─── CHAOS ENGINEERING ──────────────────────────────────────────────────────\n\nCHAOS_ENABLED=false\nCHAOS_ALLOW_PROD=false\n\n# ─── STT (Speech to Text) ───────────────────────────────────────────────────\n\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nXUNFEI_APP_ID=<your xunfei app id>\nXUNFEI_API_KEY=<your xunfei key>\nXUNFEI_API_SECRET=<your xunfei secret>\n\n# ─── GLM Batch ──────────────────────────────────────────────────────────────\n\nGLM_BATCH_ENABLED=true\nGLM_BATCH_MAX_CONCURRENCY=6\n\n# ─── Aurora Kill Switches ───────────────────────────────────────────────────\n\n# ─── AURORA ADAPTIVE KERNEL ────────────────────────────────────────────────\n# All Aurora switches use the tri-state protocol: off → shadow → live.\n# New features default to \"shadow\" in production for safe rollout.\n# See scripts/stage{N}/drill_transitions.sh for transition testing.\n\n# OpenClaw delegated execution\n# docker-compose injects host.docker.internal routes for containers automatically.\nOPENCLAW_ENABLED=true\n\nOPENCLAW_TRANSPORT=gateway_ws\n\nOPENCLAW_DEFAULT_AGENT_ID=main\n\nOPENCLAW_DEFAULT_TIMEOUT_SECONDS=300\n\nOPENCLAW_MAX_CONCURRENT_RUNS=3\n\n# gRPC TLS (required when ENVIRONMENT=production for agent service role)\nGRPC_TLS_CERT_PATH=/run/secrets/grpc_server.crt\n\nGRPC_TLS_KEY_PATH=/run/secrets/grpc_server.key\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\n\nENABLE_CONTEXT_SEMANTIC_GATING=true\n\nENABLE_CONTEXT_BRIEFING=true\n\nENABLE_CONTEXT_FOCUS_METADATA=true\n\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\n\nENABLE_ADAPTIVE_PRESENTATION=true\n\nENABLE_STRUCTURED_NEXT_ACTIONS=true\n\nENABLE_BLOCKED_TEMPERATURE=true\n\nENABLE_UX_PRESENTATION_METADATA=true\n\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\n\nENABLE_PROACTIVE_INSIGHTS=true\n\nENABLE_PLAN_REASONING_SUMMARY=true\n\nENABLE_WEEKLY_LEARNING_REPORT=true\n\nENABLE_PROGRESS_COMPARISONS=true\n\nAURORA_BAYESIAN_MODE=shadow\n\nAURORA_POLICY_COMPILER_MODE=shadow\n\nAURORA_REFLECTION_WIRE_MODE=shadow\n\nAURORA_SCENE_MODE=shadow\n\nAURORA_FORESIGHT_MODE=shadow\n\nAURORA_TRAITS_MODE=shadow\n\nAURORA_TRAITS_NLP_MODE=shadow\n\nAURORA_TRAITS_COLDSTART_MODE=shadow\n\nAURORA_SRL_MODE=shadow\n\nAURORA_SRL_TRACKER_MODE=shadow\n\nAURORA_SRL_BRIDGE_MODE=shadow\n\nAURORA_SRL_SCAFFOLDING_CONSUME_MODE=shadow\n\nAURORA_METACOG_MODE=shadow\n\nAURORA_METACOG_DASHBOARD_MODE=shadow\n\nAURORA_METACOG_PROCESS_SCAFFOLDING_MODE=shadow\n\nAURORA_METACOG_FSM_COMBINE_MODE=shadow\n\nAURORA_IDIOGRAPHIC_MODE=shadow\n\nAURORA_DOC_CONTEXT_DOCUMENT_CONTEXT_INJECTION_MODE=shadow\n\n# Aurora non-MODE parameters (thresholds, budgets, cooldowns, boolean triggers)\n# Stage 23 - Bayesian Learner\nAURORA_BAYESIAN_LIVE_CANARY_PERCENT=5\n\nAURORA_BAYESIAN_TTL_DAYS=30\n\n# Stage 24 - Policy Compiler\nAURORA_POLICY_DAILY_BUDGET=2\n\nAURORA_POLICY_COOLDOWN_HOURS=24\n\n# Stage 25 - Reflection Wire\nAURORA_REFLECTION_CONTEXT_LIMIT=20\n\nAURORA_REFLECTION_CONTEXT_MAX_TOKENS=800\n\nAURORA_REFLECTION_TRIGGER_TOO_DIFFICULT=true\n\nAURORA_REFLECTION_TRIGGER_UNCLEAR=true\n\nAURORA_REFLECTION_TRIGGER_ABANDONED=true\n\nAURORA_REFLECTION_TRIGGER_INTERVENTION_INEFFECTIVE=true\n\nAURORA_REFLECTION_TRIGGER_PLAN_STALL=true\n\nAURORA_REFLECTION_TRIGGER_OVERLOAD=true\n\n# Stage 26 - Scene Model\nAURORA_SCENE_SIMILARITY_THRESHOLD=0.75\n\nAURORA_SCENE_TIME_WINDOW_HOURS=72\n\nAURORA_SCENE_QUALITY_THRESHOLD=0.6\n\n# Stage 27 - Foresight Engine\nAURORA_FORESIGHT_ATTRACTOR=live\n\nAURORA_FORESIGHT_DEVIATION=live\n\nAURORA_FORESIGHT_JITAI=live\n\nAURORA_FORESIGHT_CACHE_TTL_SECONDS=60\n\nAURORA_FORESIGHT_ATTRACTOR_ALPHA=0.1\n\nAURORA_FORESIGHT_ATTRACTOR_MIN_CONFIDENCE=0.3\n\nAURORA_FORESIGHT_DEVIATION_Z_THRESHOLD=1.5\n\nAURORA_FORESIGHT_JITAI_DAILY_BUDGET=3\n\nAURORA_FORESIGHT_JITAI_COOLDOWN_HOURS=24\n\nAURORA_FORESIGHT_JITAI_MISFIRE_THRESHOLD=0.15\n\n# Stage 28 - Traits\nAURORA_TRAITS_NLP_COOLDOWN_HOURS=24\n\nAURORA_TRAITS_NLP_BIAS_THRESHOLD=0.10\n\nAURORA_TRAITS_NLP_MAX_DAYS=30\n\nAURORA_TRAITS_NLP_MAX_COST_USD=0.003\n\n# Stage 29 - SRL\nAURORA_SRL_MISJUDGMENT_THRESHOLD=0.20\n\nAURORA_SRL_AGGREGATOR_TTL_SECONDS=15\n\n# Stage 30 - Metacognition\nAURORA_METACOG_CACHE_TTL_SECONDS=60\n\nAURORA_METACOG_MIN_SAMPLE_SIZE=20\n\nAURORA_METACOG_PROCESS_TRIGGER_ABS_BIAS=0.30\n\nAURORA_METACOG_PROCESS_COOLDOWN_HOURS=72\n\nAURORA_METACOG_PROXY_REVISION_FREQUENCY=live\n\nAURORA_METACOG_PROXY_SELF_CORRECTION_RATE=live\n\nAURORA_METACOG_PROXY_QUESTION_TO_STATEMENT_RATIO=live\n\nAURORA_METACOG_PROXY_TIME_TO_FIRST_ACTION=live\n\nAURORA_METACOG_PROXY_COMPLETION_VS_ESTIMATE_DELTA_SIGN=live\n\nAURORA_IDIOGRAPHIC_TTL_SECONDS=300\n\n# Stage 37 - LLM Safety\n# Stage 38 - Error Replan + Push Scheduler\n# Stage 39 - Scaffolding + Cognitive Load + Galaxy\n# Stage 40 - Calendar\n# Document Context\nAURORA_DOC_CONTEXT_MODE=shadow\n\nAURORA_DOC_CONTEXT_AGGRESSIVE_BUDGET_TOKENS=2200\n\nAURORA_DOC_CONTEXT_SELECTIVE_BUDGET_TOKENS=900\n\nAURORA_DOC_CONTEXT_AMBIGUOUS_BUDGET_TOKENS=500\n\n# Privacy\nAURORA_PRIVACY_PII_REDACTION_MODE=shadow\n"}, "8b625f77b52976dd55921f48cd6add09abdf9619": {"t": 1785747986.9322128, "n": 13055, "h": "df617823f1f7c014", "c": "# =============================================================================\n# Sparkle Production Environment Template\n# =============================================================================\n# Copy to .env on the production server and fill ALL values marked REQUIRED.\n# Run: python scripts/check_production_secrets.py to validate (if available).\n#\n# DO NOT commit this file with real secrets. Add .env to .gitignore.\n# =============================================================================\n\n# ─── CRITICAL PRODUCTION OVERRIDES ──────────────────────────────────────────\n\nENVIRONMENT=production\nDEBUG=False\nREDIS_FAIL_CLOSED=true\n\n# ─── SECRETS (REQUIRED — generate with: openssl rand -hex 32) ───────────────\n\nSECRET_KEY=<generate 64-char hex>\nJWT_SECRET=<generate 64-char hex>\nPOSTGRES_PASSWORD=<generate strong password>\nSPARKLE_GATEWAY_DB_PASSWORD=<generate strong password>\nSPARKLE_ENGINE_DB_PASSWORD=<generate strong password>\nSPARKLE_CELERY_DB_PASSWORD=<generate strong password>\nSPARKLE_READONLY_DB_PASSWORD=<generate strong password>\nREDIS_PASSWORD=<generate strong password>\nSPARKLE_GATEWAY_REDIS_PASSWORD=<generate strong password>\nSPARKLE_ENGINE_REDIS_PASSWORD=<generate strong password>\nSPARKLE_CELERY_REDIS_PASSWORD=<generate strong password>\nMINIO_ROOT_PASSWORD=<generate strong password>\nMINIO_UPLOADS_SECRET_KEY=<generate strong password>\nMINIO_EXPORTS_SECRET_KEY=<generate strong password>\nMINIO_BACKUPS_SECRET_KEY=<generate strong password>\nINTERNAL_API_KEY=<generate 64-char hex>\nADMIN_SECRET=<generate 64-char hex>\nGRAFANA_ADMIN_USER=admin\nGRAFANA_ADMIN_PASSWORD=<generate strong password>\n\n# ─── DATABASE ────────────────────────────────────────────────────────────────\n\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nDATABASE_URL=postgresql+asyncpg://postgres:${POSTGRES_PASSWORD}@sparkle_db:5432/sparkle\nSPARKLE_RBAC_ENABLED=true\nSPARKLE_GATEWAY_DATABASE_URL=postgresql://sparkle_gateway:${SPARKLE_GATEWAY_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\nSPARKLE_ENGINE_DATABASE_URL=postgresql+asyncpg://sparkle_engine:${SPARKLE_ENGINE_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\nSPARKLE_CELERY_DATABASE_URL=postgresql+asyncpg://sparkle_celery:${SPARKLE_CELERY_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\nSPARKLE_READONLY_DATABASE_URL=postgresql://sparkle_readonly:${SPARKLE_READONLY_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\n\nDB_HOST=sparkle_db\nDB_PORT=5432\nDB_NAME=sparkle\nDB_USER=postgres\nDB_PASSWORD=${POSTGRES_PASSWORD}\n\n# PostgreSQL tuning (adjust based on server RAM)\nPOSTGRES_MAX_CONNECTIONS=200\nPOSTGRES_SHARED_BUFFERS=256MB\nPOSTGRES_EFFECTIVE_CACHE_SIZE=768MB\nPOSTGRES_WORK_MEM=16MB\nPOSTGRES_MAINTENANCE_WORK_MEM=128MB\nPOSTGRES_MAX_WAL_SIZE=2GB\n\n# ─── REDIS ───────────────────────────────────────────────────────────────────\n\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_URL=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/0\nCELERY_BROKER_URL=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/1\nCELERY_RESULT_BACKEND=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/2\nSPARKLE_GATEWAY_REDIS_URL=redis://gateway:${SPARKLE_GATEWAY_REDIS_PASSWORD}@sparkle_redis:6379/0\nSPARKLE_ENGINE_REDIS_URL=redis://engine:${SPARKLE_ENGINE_REDIS_PASSWORD}@sparkle_redis:6379/0\nSPARKLE_CELERY_REDIS_URL=redis://celery:${SPARKLE_CELERY_REDIS_PASSWORD}@sparkle_redis:6379/1\nSPARKLE_CELERY_BROKER_URL=redis://celery:${SPARKLE_CELERY_REDIS_PASSWORD}@sparkle_redis:6379/1\nSPARKLE_CELERY_RESULT_BACKEND=redis://celery:${SPARKLE_CELERY_REDIS_PASSWORD}@sparkle_redis:6379/2\n\n# ─── MINIO (File Storage) ───────────────────────────────────────────────────\n\nMINIO_ROOT_USER=<choose a username>\nMINIO_ENDPOINT=minio:9000\nMINIO_ACCESS_KEY=${MINIO_ROOT_USER}\nMINIO_SECRET_KEY=${MINIO_ROOT_PASSWORD}\nMINIO_BUCKET=sparkle-files\nMINIO_UPLOADS_BUCKET=sparkle-uploads\nMINIO_EXPORTS_BUCKET=sparkle-exports\nMINIO_BACKUPS_BUCKET=sparkle-backups\nMINIO_UPLOADS_ACCESS_KEY=sparkle_uploads\nMINIO_EXPORTS_ACCESS_KEY=sparkle_exports\nMINIO_BACKUPS_ACCESS_KEY=sparkle_backups\nMINIO_USE_SSL=false\nMINIO_AUTO_CREATE_BUCKET=true\n\n# ─── JWT ─────────────────────────────────────────────────────────────────────\n\nACCESS_TOKEN_EXPIRE_MINUTES=30\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=RS256\n# RSA key pair for RS256 JWT signing (required when ALGORITHM=RS256)\n# Generate: openssl genrsa -out jwt_private.pem 2048 && openssl rsa -in jwt_private.pem -pubout -out jwt_public.pem\nJWT_PRIVATE_KEY=\nJWT_PUBLIC_KEY=\n\n# ─── CORS (REQUIRED — restrict to actual domain) ────────────────────────────\n\nBACKEND_CORS_ORIGINS=[\"https://api.sparkle.com\"]\n\n# ─── LLM PROVIDERS (REQUIRED — at least one provider must be configured) ────\n\n# Primary: Qwen (DashScope)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=<your qwen api key>\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n\n# DeepSeek\nDEEPSEEK_API_KEY=<your deepseek api key>\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM\nZHIPU_API_KEY=<your zhipu api key>\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n\n# Embedding\nEMBEDDING_PROVIDER=dashscope\nDASHSCOPE_API_KEY=<your dashscope api key>\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\n\n# ─── SOCIAL LOGIN (fill when ready for app store) ───────────────────────────\n\nGOOGLE_CLIENT_ID=\nAPPLE_CLIENT_ID=\nWECHAT_APP_ID=\nWECHAT_APP_SECRET=\n\n# ─── PUSH NOTIFICATIONS (JPush for China) ───────────────────────────────────\n\n# JPUSH_APP_KEY=<your jpush app key>\n# JPUSH_MASTER_SECRET=<your jpush master secret>\n\n# ─── EMAIL (password reset, verification) ────────────────────────────────────\n\nEMAIL_ENABLED=true\nSMTP_HOST=smtp.example.com\nSMTP_PORT=587\nSMTP_USER=<your smtp username>\nSMTP_PASSWORD=<your smtp password>\nEMAIL_FROM=no-reply@sparkle.com\nEMAIL_FROM_NAME=Sparkle\n\n# ─── SENTRY (crash reporting — recommended) ─────────────────────────────────\n\nSENTRY_DSN=<your sentry dsn>\nSENTRY_ENVIRONMENT=production\nSENTRY_TRACES_SAMPLE_RATE=0.1\n\n# ─── PRODUCTION URL ─────────────────────────────────────────────────────────\n\nPRODUCTION_URL=https://api.sparkle.com\n\n# ─── BACKEND_URL (internal Docker network) ──────────────────────────────────\n\nBACKEND_URL=http://backend:8000\n\n# ─── IMAGE TAGS ─────────────────────────────────────────────────────────────\n\nIMAGE_TAG=latest\nGATEWAY_IMAGE=ghcr.io/your-org/sparkle-gateway\nBACKEND_IMAGE=ghcr.io/your-org/sparkle-backend\n\n# ─── CONTAINER IDENTITY ─────────────────────────────────────────────────────\n\nSPARKLE_APP_UID=10001\nSPARKLE_APP_GID=10001\n\n# ─── FILE SERVICE ───────────────────────────────────────────────────────────\n\nFILE_MAX_UPLOAD_SIZE=52428800\nFILE_PRESIGN_EXPIRES_SECONDS=420\nFILE_GC_INTERVAL_MINUTES=60\nFILE_GC_GRACE_HOURS=24\nFILE_GC_BATCH_SIZE=200\n\n# ─── MONITORING ─────────────────────────────────────────────────────────────\n\nOTEL_EXPORTER_OTLP_ENDPOINT=http://tempo:4317\nALERTMANAGER_EMAIL_TO=ops@sparkle.com\nALERTMANAGER_EMAIL_FROM=sparkle-alerts@sparkle.com\n\n# Alertmanager webhook receivers — REQUIRED for production alerts.\n# The docker-compose.prod.yml enforces these (fails startup if unset).\n# Use your real alert receiver URLs (Slack webhook, PagerDuty, DingTalk, custom, etc.).\nALERTMANAGER_DEFAULT_WEBHOOK_URL=https://hooks.slack.com/services/...\nALERTMANAGER_CRITICAL_WEBHOOK_URL=https://hooks.slack.com/services/...\nALERTMANAGER_WARNING_WEBHOOK_URL=https://hooks.slack.com/services/...\n\n# ─── gRPC TLS ────────────────────────────────────────────────────────────────\n# Python Engine side (GRPC_REQUIRE_TLS): When true, the Python gRPC server loads\n# TLS certs from GRPC_TLS_CERT_PATH / GRPC_TLS_KEY_PATH.\n# Go Gateway side (AGENT_TLS_ENABLED): Separate toggle — must ALSO be set for the\n# gateway to dial the agent over TLS. Both sides must agree.\n# Set AGENT_TLS_ENABLED=true and provide AGENT_TLS_CA_CERT + AGENT_TLS_CLIENT_*\n# when Gateway and Engine run on separate hosts/networks.\n# Generate certs: scripts/generate_grpc_certs.sh (if available)\n\nGRPC_REQUIRE_TLS=true\nAGENT_TLS_ENABLED=false\n# AGENT_TLS_CA_CERT=/run/secrets/grpc_ca.crt\n# AGENT_TLS_CLIENT_CERT=/run/secrets/grpc_client.crt\n# AGENT_TLS_CLIENT_KEY=/run/secrets/grpc_client.key\n# AGENT_TLS_SERVER_NAME=sparkle-agent\n\n# ─── CHAOS ENGINEERING ──────────────────────────────────────────────────────\n\nCHAOS_ENABLED=false\nCHAOS_ALLOW_PROD=false\n\n# ─── STT (Speech to Text) ───────────────────────────────────────────────────\n\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nXUNFEI_APP_ID=<your xunfei app id>\nXUNFEI_API_KEY=<your xunfei key>\nXUNFEI_API_SECRET=<your xunfei secret>\n\n# ─── GLM Batch ──────────────────────────────────────────────────────────────\n\nGLM_BATCH_ENABLED=true\nGLM_BATCH_MAX_CONCURRENCY=6\n\n# ─── Aurora Kill Switches ───────────────────────────────────────────────────\n\n# ─── AURORA ADAPTIVE KERNEL ────────────────────────────────────────────────\n# All Aurora switches use the tri-state protocol: off → shadow → live.\n# New features default to \"shadow\" in production for safe rollout.\n# See scripts/stage{N}/drill_transitions.sh for transition testing.\n\n# OpenClaw delegated execution\n# docker-compose injects host.docker.internal routes for containers automatically.\nOPENCLAW_ENABLED=true\n\nOPENCLAW_TRANSPORT=gateway_ws\n\nOPENCLAW_DEFAULT_AGENT_ID=main\n\nOPENCLAW_DEFAULT_TIMEOUT_SECONDS=300\n\nOPENCLAW_MAX_CONCURRENT_RUNS=3\n\n# gRPC TLS (required when ENVIRONMENT=production for agent service role)\nGRPC_TLS_CERT_PATH=/run/secrets/grpc_server.crt\n\nGRPC_TLS_KEY_PATH=/run/secrets/grpc_server.key\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\n\nENABLE_CONTEXT_SEMANTIC_GATING=true\n\nENABLE_CONTEXT_BRIEFING=true\n\nENABLE_CONTEXT_FOCUS_METADATA=true\n\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\n\nENABLE_ADAPTIVE_PRESENTATION=true\n\nENABLE_STRUCTURED_NEXT_ACTIONS=true\n\nENABLE_BLOCKED_TEMPERATURE=true\n\nENABLE_UX_PRESENTATION_METADATA=true\n\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\n\nENABLE_PROACTIVE_INSIGHTS=true\n\nENABLE_PLAN_REASONING_SUMMARY=true\n\nENABLE_WEEKLY_LEARNING_REPORT=true\n\nENABLE_PROGRESS_COMPARISONS=true\n\nAURORA_BAYESIAN_MODE=shadow\n\nAURORA_POLICY_COMPILER_MODE=shadow\n\nAURORA_REFLECTION_WIRE_MODE=shadow\n\nAURORA_SCENE_MODE=shadow\n\nAURORA_FORESIGHT_MODE=shadow\n\nAURORA_TRAITS_MODE=shadow\n\nAURORA_TRAITS_NLP_MODE=shadow\n\nAURORA_TRAITS_COLDSTART_MODE=shadow\n\nAURORA_SRL_MODE=shadow\n\nAURORA_SRL_TRACKER_MODE=shadow\n\nAURORA_SRL_BRIDGE_MODE=shadow\n\nAURORA_SRL_SCAFFOLDING_CONSUME_MODE=shadow\n\nAURORA_METACOG_MODE=shadow\n\nAURORA_METACOG_DASHBOARD_MODE=shadow\n\nAURORA_METACOG_PROCESS_SCAFFOLDING_MODE=shadow\n\nAURORA_METACOG_FSM_COMBINE_MODE=shadow\n\nAURORA_IDIOGRAPHIC_MODE=shadow\n\nAURORA_DOC_CONTEXT_DOCUMENT_CONTEXT_INJECTION_MODE=shadow\n\n# Aurora non-MODE parameters (thresholds, budgets, cooldowns, boolean triggers)\n# Stage 23 - Bayesian Learner\nAURORA_BAYESIAN_LIVE_CANARY_PERCENT=5\n\nAURORA_BAYESIAN_TTL_DAYS=30\n\n# Stage 24 - Policy Compiler\nAURORA_POLICY_DAILY_BUDGET=2\n\nAURORA_POLICY_COOLDOWN_HOURS=24\n\n# Stage 25 - Reflection Wire\nAURORA_REFLECTION_CONTEXT_LIMIT=20\n\nAURORA_REFLECTION_CONTEXT_MAX_TOKENS=800\n\nAURORA_REFLECTION_TRIGGER_TOO_DIFFICULT=true\n\nAURORA_REFLECTION_TRIGGER_UNCLEAR=true\n\nAURORA_REFLECTION_TRIGGER_ABANDONED=true\n\nAURORA_REFLECTION_TRIGGER_INTERVENTION_INEFFECTIVE=true\n\nAURORA_REFLECTION_TRIGGER_PLAN_STALL=true\n\nAURORA_REFLECTION_TRIGGER_OVERLOAD=true\n\n# Stage 26 - Scene Model\nAURORA_SCENE_SIMILARITY_THRESHOLD=0.75\n\nAURORA_SCENE_TIME_WINDOW_HOURS=72\n\nAURORA_SCENE_QUALITY_THRESHOLD=0.6\n\n# Stage 27 - Foresight Engine\nAURORA_FORESIGHT_ATTRACTOR=live\n\nAURORA_FORESIGHT_DEVIATION=live\n\nAURORA_FORESIGHT_JITAI=live\n\nAURORA_FORESIGHT_CACHE_TTL_SECONDS=60\n\nAURORA_FORESIGHT_ATTRACTOR_ALPHA=0.1\n\nAURORA_FORESIGHT_ATTRACTOR_MIN_CONFIDENCE=0.3\n\nAURORA_FORESIGHT_DEVIATION_Z_THRESHOLD=1.5\n\nAURORA_FORESIGHT_JITAI_DAILY_BUDGET=3\n\nAURORA_FORESIGHT_JITAI_COOLDOWN_HOURS=24\n\nAURORA_FORESIGHT_JITAI_MISFIRE_THRESHOLD=0.15\n\n# Stage 28 - Traits\nAURORA_TRAITS_NLP_COOLDOWN_HOURS=24\n\nAURORA_TRAITS_NLP_BIAS_THRESHOLD=0.10\n\nAURORA_TRAITS_NLP_MAX_DAYS=30\n\nAURORA_TRAITS_NLP_MAX_COST_USD=0.003\n\n# Stage 29 - SRL\nAURORA_SRL_MISJUDGMENT_THRESHOLD=0.20\n\nAURORA_SRL_AGGREGATOR_TTL_SECONDS=15\n\n# Stage 30 - Metacognition\nAURORA_METACOG_CACHE_TTL_SECONDS=60\n\nAURORA_METACOG_MIN_SAMPLE_SIZE=20\n\nAURORA_METACOG_PROCESS_TRIGGER_ABS_BIAS=0.30\n\nAURORA_METACOG_PROCESS_COOLDOWN_HOURS=72\n\nAURORA_METACOG_PROXY_REVISION_FREQUENCY=live\n\nAURORA_METACOG_PROXY_SELF_CORRECTION_RATE=live\n\nAURORA_METACOG_PROXY_QUESTION_TO_STATEMENT_RATIO=live\n\nAURORA_METACOG_PROXY_TIME_TO_FIRST_ACTION=live\n\nAURORA_METACOG_PROXY_COMPLETION_VS_ESTIMATE_DELTA_SIGN=live\n\nAURORA_IDIOGRAPHIC_TTL_SECONDS=300\n\n# Stage 37 - LLM Safety\n# Stage 38 - Error Replan + Push Scheduler\n# Stage 39 - Scaffolding + Cognitive Load + Galaxy\n# Stage 40 - Calendar\n# Document Context\nAURORA_DOC_CONTEXT_MODE=shadow\n\nAURORA_DOC_CONTEXT_AGGRESSIVE_BUDGET_TOKENS=2200\n\nAURORA_DOC_CONTEXT_SELECTIVE_BUDGET_TOKENS=900\n\nAURORA_DOC_CONTEXT_AMBIGUOUS_BUDGET_TOKENS=500\n\n# Privacy\nAURORA_PRIVACY_PII_REDACTION_MODE=shadow\n"}, "6269816b6d31c87437d5797c7fdd5ae7701d4f14": {"t": 1785747988.0601323, "n": 12841, "h": "c8cab4b888babf74", "c": "# =============================================================================\n# Sparkle Production Environment Template\n# =============================================================================\n# Copy to .env on the production server and fill ALL values marked REQUIRED.\n# Run: python scripts/check_production_secrets.py to validate (if available).\n#\n# DO NOT commit this file with real secrets. Add .env to .gitignore.\n# =============================================================================\n\n# ─── CRITICAL PRODUCTION OVERRIDES ──────────────────────────────────────────\n\nENVIRONMENT=production\nDEBUG=False\nREDIS_FAIL_CLOSED=true\n\n# ─── SECRETS (REQUIRED — generate with: openssl rand -hex 32) ───────────────\n\nSECRET_KEY=<generate 64-char hex>\nJWT_SECRET=<generate 64-char hex>\nPOSTGRES_PASSWORD=<generate strong password>\nSPARKLE_GATEWAY_DB_PASSWORD=<generate strong password>\nSPARKLE_ENGINE_DB_PASSWORD=<generate strong password>\nSPARKLE_CELERY_DB_PASSWORD=<generate strong password>\nSPARKLE_READONLY_DB_PASSWORD=<generate strong password>\nREDIS_PASSWORD=<generate strong password>\nSPARKLE_GATEWAY_REDIS_PASSWORD=<generate strong password>\nSPARKLE_ENGINE_REDIS_PASSWORD=<generate strong password>\nSPARKLE_CELERY_REDIS_PASSWORD=<generate strong password>\nMINIO_ROOT_PASSWORD=<generate strong password>\nMINIO_UPLOADS_SECRET_KEY=<generate strong password>\nMINIO_EXPORTS_SECRET_KEY=<generate strong password>\nMINIO_BACKUPS_SECRET_KEY=<generate strong password>\nINTERNAL_API_KEY=<generate 64-char hex>\nADMIN_SECRET=<generate 64-char hex>\nGRAFANA_ADMIN_USER=admin\nGRAFANA_ADMIN_PASSWORD=<generate strong password>\n\n# ─── DATABASE ────────────────────────────────────────────────────────────────\n\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nDATABASE_URL=postgresql+asyncpg://postgres:${POSTGRES_PASSWORD}@sparkle_db:5432/sparkle\nSPARKLE_RBAC_ENABLED=false\nSPARKLE_GATEWAY_DATABASE_URL=postgresql://sparkle_gateway:${SPARKLE_GATEWAY_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\nSPARKLE_ENGINE_DATABASE_URL=postgresql+asyncpg://sparkle_engine:${SPARKLE_ENGINE_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\nSPARKLE_CELERY_DATABASE_URL=postgresql+asyncpg://sparkle_celery:${SPARKLE_CELERY_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\nSPARKLE_READONLY_DATABASE_URL=postgresql://sparkle_readonly:${SPARKLE_READONLY_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\n\nDB_HOST=sparkle_db\nDB_PORT=5432\nDB_NAME=sparkle\nDB_USER=postgres\nDB_PASSWORD=${POSTGRES_PASSWORD}\n\n# PostgreSQL tuning (adjust based on server RAM)\nPOSTGRES_MAX_CONNECTIONS=200\nPOSTGRES_SHARED_BUFFERS=256MB\nPOSTGRES_EFFECTIVE_CACHE_SIZE=768MB\nPOSTGRES_WORK_MEM=16MB\nPOSTGRES_MAINTENANCE_WORK_MEM=128MB\nPOSTGRES_MAX_WAL_SIZE=2GB\n\n# ─── REDIS ───────────────────────────────────────────────────────────────────\n\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_URL=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/0\nCELERY_BROKER_URL=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/1\nCELERY_RESULT_BACKEND=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/2\nSPARKLE_GATEWAY_REDIS_URL=redis://gateway:${SPARKLE_GATEWAY_REDIS_PASSWORD}@sparkle_redis:6379/0\nSPARKLE_ENGINE_REDIS_URL=redis://engine:${SPARKLE_ENGINE_REDIS_PASSWORD}@sparkle_redis:6379/0\nSPARKLE_CELERY_REDIS_URL=redis://celery:${SPARKLE_CELERY_REDIS_PASSWORD}@sparkle_redis:6379/1\nSPARKLE_CELERY_BROKER_URL=redis://celery:${SPARKLE_CELERY_REDIS_PASSWORD}@sparkle_redis:6379/1\nSPARKLE_CELERY_RESULT_BACKEND=redis://celery:${SPARKLE_CELERY_REDIS_PASSWORD}@sparkle_redis:6379/2\n\n# ─── MINIO (File Storage) ───────────────────────────────────────────────────\n\nMINIO_ROOT_USER=<choose a username>\nMINIO_ENDPOINT=minio:9000\nMINIO_ACCESS_KEY=${MINIO_ROOT_USER}\nMINIO_SECRET_KEY=${MINIO_ROOT_PASSWORD}\nMINIO_BUCKET=sparkle-files\nMINIO_UPLOADS_BUCKET=sparkle-uploads\nMINIO_EXPORTS_BUCKET=sparkle-exports\nMINIO_BACKUPS_BUCKET=sparkle-backups\nMINIO_UPLOADS_ACCESS_KEY=sparkle_uploads\nMINIO_EXPORTS_ACCESS_KEY=sparkle_exports\nMINIO_BACKUPS_ACCESS_KEY=sparkle_backups\nMINIO_USE_SSL=false\nMINIO_AUTO_CREATE_BUCKET=true\n\n# ─── JWT ─────────────────────────────────────────────────────────────────────\n\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# ─── CORS (REQUIRED — restrict to actual domain) ────────────────────────────\n\nBACKEND_CORS_ORIGINS=[\"https://api.sparkle.com\"]\n\n# ─── LLM PROVIDERS (REQUIRED — at least one provider must be configured) ────\n\n# Primary: Qwen (DashScope)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=<your qwen api key>\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n\n# DeepSeek\nDEEPSEEK_API_KEY=<your deepseek api key>\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM\nZHIPU_API_KEY=<your zhipu api key>\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n\n# Embedding\nEMBEDDING_PROVIDER=dashscope\nDASHSCOPE_API_KEY=<your dashscope api key>\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\n\n# ─── SOCIAL LOGIN (fill when ready for app store) ───────────────────────────\n\nGOOGLE_CLIENT_ID=\nAPPLE_CLIENT_ID=\nWECHAT_APP_ID=\nWECHAT_APP_SECRET=\n\n# ─── PUSH NOTIFICATIONS (JPush for China) ───────────────────────────────────\n\n# JPUSH_APP_KEY=<your jpush app key>\n# JPUSH_MASTER_SECRET=<your jpush master secret>\n\n# ─── EMAIL (password reset, verification) ────────────────────────────────────\n\nEMAIL_ENABLED=true\nSMTP_HOST=smtp.example.com\nSMTP_PORT=587\nSMTP_USER=<your smtp username>\nSMTP_PASSWORD=<your smtp password>\nEMAIL_FROM=no-reply@sparkle.com\nEMAIL_FROM_NAME=Sparkle\n\n# ─── SENTRY (crash reporting — recommended) ─────────────────────────────────\n\nSENTRY_DSN=<your sentry dsn>\nSENTRY_ENVIRONMENT=production\nSENTRY_TRACES_SAMPLE_RATE=0.1\n\n# ─── PRODUCTION URL ─────────────────────────────────────────────────────────\n\nPRODUCTION_URL=https://api.sparkle.com\n\n# ─── BACKEND_URL (internal Docker network) ──────────────────────────────────\n\nBACKEND_URL=http://backend:8000\n\n# ─── IMAGE TAGS ─────────────────────────────────────────────────────────────\n\nIMAGE_TAG=latest\nGATEWAY_IMAGE=ghcr.io/your-org/sparkle-gateway\nBACKEND_IMAGE=ghcr.io/your-org/sparkle-backend\n\n# ─── CONTAINER IDENTITY ─────────────────────────────────────────────────────\n\nSPARKLE_APP_UID=10001\nSPARKLE_APP_GID=10001\n\n# ─── FILE SERVICE ───────────────────────────────────────────────────────────\n\nFILE_MAX_UPLOAD_SIZE=52428800\nFILE_PRESIGN_EXPIRES_SECONDS=420\nFILE_GC_INTERVAL_MINUTES=60\nFILE_GC_GRACE_HOURS=24\nFILE_GC_BATCH_SIZE=200\n\n# ─── MONITORING ─────────────────────────────────────────────────────────────\n\nOTEL_EXPORTER_OTLP_ENDPOINT=http://tempo:4317\nALERTMANAGER_EMAIL_TO=ops@sparkle.com\nALERTMANAGER_EMAIL_FROM=sparkle-alerts@sparkle.com\n\n# Alertmanager webhook receivers — REQUIRED for production alerts.\n# The docker-compose.prod.yml enforces these (fails startup if unset).\n# Use your real alert receiver URLs (Slack webhook, PagerDuty, DingTalk, custom, etc.).\nALERTMANAGER_DEFAULT_WEBHOOK_URL=https://hooks.slack.com/services/...\nALERTMANAGER_CRITICAL_WEBHOOK_URL=https://hooks.slack.com/services/...\nALERTMANAGER_WARNING_WEBHOOK_URL=https://hooks.slack.com/services/...\n\n# ─── gRPC TLS ────────────────────────────────────────────────────────────────\n# Python Engine side (GRPC_REQUIRE_TLS): When true, the Python gRPC server loads\n# TLS certs from GRPC_TLS_CERT_PATH / GRPC_TLS_KEY_PATH.\n# Go Gateway side (AGENT_TLS_ENABLED): Separate toggle — must ALSO be set for the\n# gateway to dial the agent over TLS. Both sides must agree.\n# Set AGENT_TLS_ENABLED=true and provide AGENT_TLS_CA_CERT + AGENT_TLS_CLIENT_*\n# when Gateway and Engine run on separate hosts/networks.\n# Generate certs: scripts/generate_grpc_certs.sh (if available)\n\nGRPC_REQUIRE_TLS=false\nAGENT_TLS_ENABLED=false\n# AGENT_TLS_CA_CERT=/run/secrets/grpc_ca.crt\n# AGENT_TLS_CLIENT_CERT=/run/secrets/grpc_client.crt\n# AGENT_TLS_CLIENT_KEY=/run/secrets/grpc_client.key\n# AGENT_TLS_SERVER_NAME=sparkle-agent\n\n# ─── CHAOS ENGINEERING ──────────────────────────────────────────────────────\n\nCHAOS_ENABLED=false\nCHAOS_ALLOW_PROD=false\n\n# ─── STT (Speech to Text) ───────────────────────────────────────────────────\n\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nXUNFEI_APP_ID=<your xunfei app id>\nXUNFEI_API_KEY=<your xunfei key>\nXUNFEI_API_SECRET=<your xunfei secret>\n\n# ─── GLM Batch ──────────────────────────────────────────────────────────────\n\nGLM_BATCH_ENABLED=true\nGLM_BATCH_MAX_CONCURRENCY=6\n\n# ─── Aurora Kill Switches ───────────────────────────────────────────────────\n\n# ─── AURORA ADAPTIVE KERNEL ────────────────────────────────────────────────\n# All Aurora switches use the tri-state protocol: off → shadow → live.\n# New features default to \"shadow\" in production for safe rollout.\n# See scripts/stage{N}/drill_transitions.sh for transition testing.\n\n# OpenClaw delegated execution\n# docker-compose injects host.docker.internal routes for containers automatically.\nOPENCLAW_ENABLED=true\n\nOPENCLAW_TRANSPORT=gateway_ws\n\nOPENCLAW_DEFAULT_AGENT_ID=main\n\nOPENCLAW_DEFAULT_TIMEOUT_SECONDS=300\n\nOPENCLAW_MAX_CONCURRENT_RUNS=3\n\n# gRPC TLS (required when ENVIRONMENT=production for agent service role)\nGRPC_TLS_CERT_PATH=/run/secrets/grpc_server.crt\n\nGRPC_TLS_KEY_PATH=/run/secrets/grpc_server.key\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\n\nENABLE_CONTEXT_SEMANTIC_GATING=true\n\nENABLE_CONTEXT_BRIEFING=true\n\nENABLE_CONTEXT_FOCUS_METADATA=true\n\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\n\nENABLE_ADAPTIVE_PRESENTATION=true\n\nENABLE_STRUCTURED_NEXT_ACTIONS=true\n\nENABLE_BLOCKED_TEMPERATURE=true\n\nENABLE_UX_PRESENTATION_METADATA=true\n\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\n\nENABLE_PROACTIVE_INSIGHTS=true\n\nENABLE_PLAN_REASONING_SUMMARY=true\n\nENABLE_WEEKLY_LEARNING_REPORT=true\n\nENABLE_PROGRESS_COMPARISONS=true\n\nAURORA_BAYESIAN_MODE=shadow\n\nAURORA_POLICY_COMPILER_MODE=shadow\n\nAURORA_REFLECTION_WIRE_MODE=shadow\n\nAURORA_SCENE_MODE=shadow\n\nAURORA_FORESIGHT_MODE=shadow\n\nAURORA_TRAITS_MODE=shadow\n\nAURORA_TRAITS_NLP_MODE=shadow\n\nAURORA_TRAITS_COLDSTART_MODE=shadow\n\nAURORA_SRL_MODE=shadow\n\nAURORA_SRL_TRACKER_MODE=shadow\n\nAURORA_SRL_BRIDGE_MODE=shadow\n\nAURORA_SRL_SCAFFOLDING_CONSUME_MODE=shadow\n\nAURORA_METACOG_MODE=shadow\n\nAURORA_METACOG_DASHBOARD_MODE=shadow\n\nAURORA_METACOG_PROCESS_SCAFFOLDING_MODE=shadow\n\nAURORA_METACOG_FSM_COMBINE_MODE=shadow\n\nAURORA_IDIOGRAPHIC_MODE=shadow\n\nAURORA_DOC_CONTEXT_DOCUMENT_CONTEXT_INJECTION_MODE=shadow\n\n# Aurora non-MODE parameters (thresholds, budgets, cooldowns, boolean triggers)\n# Stage 23 - Bayesian Learner\nAURORA_BAYESIAN_LIVE_CANARY_PERCENT=5\n\nAURORA_BAYESIAN_TTL_DAYS=30\n\n# Stage 24 - Policy Compiler\nAURORA_POLICY_DAILY_BUDGET=2\n\nAURORA_POLICY_COOLDOWN_HOURS=24\n\n# Stage 25 - Reflection Wire\nAURORA_REFLECTION_CONTEXT_LIMIT=20\n\nAURORA_REFLECTION_CONTEXT_MAX_TOKENS=800\n\nAURORA_REFLECTION_TRIGGER_TOO_DIFFICULT=true\n\nAURORA_REFLECTION_TRIGGER_UNCLEAR=true\n\nAURORA_REFLECTION_TRIGGER_ABANDONED=true\n\nAURORA_REFLECTION_TRIGGER_INTERVENTION_INEFFECTIVE=true\n\nAURORA_REFLECTION_TRIGGER_PLAN_STALL=true\n\nAURORA_REFLECTION_TRIGGER_OVERLOAD=true\n\n# Stage 26 - Scene Model\nAURORA_SCENE_SIMILARITY_THRESHOLD=0.75\n\nAURORA_SCENE_TIME_WINDOW_HOURS=72\n\nAURORA_SCENE_QUALITY_THRESHOLD=0.6\n\n# Stage 27 - Foresight Engine\nAURORA_FORESIGHT_ATTRACTOR=live\n\nAURORA_FORESIGHT_DEVIATION=live\n\nAURORA_FORESIGHT_JITAI=live\n\nAURORA_FORESIGHT_CACHE_TTL_SECONDS=60\n\nAURORA_FORESIGHT_ATTRACTOR_ALPHA=0.1\n\nAURORA_FORESIGHT_ATTRACTOR_MIN_CONFIDENCE=0.3\n\nAURORA_FORESIGHT_DEVIATION_Z_THRESHOLD=1.5\n\nAURORA_FORESIGHT_JITAI_DAILY_BUDGET=3\n\nAURORA_FORESIGHT_JITAI_COOLDOWN_HOURS=24\n\nAURORA_FORESIGHT_JITAI_MISFIRE_THRESHOLD=0.15\n\n# Stage 28 - Traits\nAURORA_TRAITS_NLP_COOLDOWN_HOURS=24\n\nAURORA_TRAITS_NLP_BIAS_THRESHOLD=0.10\n\nAURORA_TRAITS_NLP_MAX_DAYS=30\n\nAURORA_TRAITS_NLP_MAX_COST_USD=0.003\n\n# Stage 29 - SRL\nAURORA_SRL_MISJUDGMENT_THRESHOLD=0.20\n\nAURORA_SRL_AGGREGATOR_TTL_SECONDS=15\n\n# Stage 30 - Metacognition\nAURORA_METACOG_CACHE_TTL_SECONDS=60\n\nAURORA_METACOG_MIN_SAMPLE_SIZE=20\n\nAURORA_METACOG_PROCESS_TRIGGER_ABS_BIAS=0.30\n\nAURORA_METACOG_PROCESS_COOLDOWN_HOURS=72\n\nAURORA_METACOG_PROXY_REVISION_FREQUENCY=live\n\nAURORA_METACOG_PROXY_SELF_CORRECTION_RATE=live\n\nAURORA_METACOG_PROXY_QUESTION_TO_STATEMENT_RATIO=live\n\nAURORA_METACOG_PROXY_TIME_TO_FIRST_ACTION=live\n\nAURORA_METACOG_PROXY_COMPLETION_VS_ESTIMATE_DELTA_SIGN=live\n\nAURORA_IDIOGRAPHIC_TTL_SECONDS=300\n\n# Stage 37 - LLM Safety\n# Stage 38 - Error Replan + Push Scheduler\n# Stage 39 - Scaffolding + Cognitive Load + Galaxy\n# Stage 40 - Calendar\n# Document Context\nAURORA_DOC_CONTEXT_MODE=shadow\n\nAURORA_DOC_CONTEXT_AGGRESSIVE_BUDGET_TOKENS=2200\n\nAURORA_DOC_CONTEXT_SELECTIVE_BUDGET_TOKENS=900\n\nAURORA_DOC_CONTEXT_AMBIGUOUS_BUDGET_TOKENS=500\n\n# Privacy\nAURORA_PRIVACY_PII_REDACTION_MODE=shadow\n"}, "3aca83df063a2b43413461517ce19f7ea5168981": {"t": 1785747989.2238762, "n": 12492, "h": "1303b9002a3f8f5c", "c": "# =============================================================================\n# Sparkle Production Environment Template\n# =============================================================================\n# Copy to .env on the production server and fill ALL values marked REQUIRED.\n# Run: python scripts/check_production_secrets.py to validate (if available).\n#\n# DO NOT commit this file with real secrets. Add .env to .gitignore.\n# =============================================================================\n\n# ─── CRITICAL PRODUCTION OVERRIDES ──────────────────────────────────────────\n\nENVIRONMENT=production\nDEBUG=False\nREDIS_FAIL_CLOSED=true\n\n# ─── SECRETS (REQUIRED — generate with: openssl rand -hex 32) ───────────────\n\nSECRET_KEY=<generate 64-char hex>\nJWT_SECRET=<generate 64-char hex>\nPOSTGRES_PASSWORD=<generate strong password>\nSPARKLE_GATEWAY_DB_PASSWORD=<generate strong password>\nSPARKLE_ENGINE_DB_PASSWORD=<generate strong password>\nSPARKLE_CELERY_DB_PASSWORD=<generate strong password>\nSPARKLE_READONLY_DB_PASSWORD=<generate strong password>\nREDIS_PASSWORD=<generate strong password>\nSPARKLE_GATEWAY_REDIS_PASSWORD=<generate strong password>\nSPARKLE_ENGINE_REDIS_PASSWORD=<generate strong password>\nSPARKLE_CELERY_REDIS_PASSWORD=<generate strong password>\nMINIO_ROOT_PASSWORD=<generate strong password>\nMINIO_UPLOADS_SECRET_KEY=<generate strong password>\nMINIO_EXPORTS_SECRET_KEY=<generate strong password>\nMINIO_BACKUPS_SECRET_KEY=<generate strong password>\nINTERNAL_API_KEY=<generate 64-char hex>\nADMIN_SECRET=<generate 64-char hex>\nGRAFANA_ADMIN_USER=admin\nGRAFANA_ADMIN_PASSWORD=<generate strong password>\n\n# ─── DATABASE ────────────────────────────────────────────────────────────────\n\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nDATABASE_URL=postgresql+asyncpg://postgres:${POSTGRES_PASSWORD}@sparkle_db:5432/sparkle\nSPARKLE_RBAC_ENABLED=false\nSPARKLE_GATEWAY_DATABASE_URL=postgresql://sparkle_gateway:${SPARKLE_GATEWAY_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\nSPARKLE_ENGINE_DATABASE_URL=postgresql+asyncpg://sparkle_engine:${SPARKLE_ENGINE_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\nSPARKLE_CELERY_DATABASE_URL=postgresql+asyncpg://sparkle_celery:${SPARKLE_CELERY_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\nSPARKLE_READONLY_DATABASE_URL=postgresql://sparkle_readonly:${SPARKLE_READONLY_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\n\nDB_HOST=sparkle_db\nDB_PORT=5432\nDB_NAME=sparkle\nDB_USER=postgres\nDB_PASSWORD=${POSTGRES_PASSWORD}\n\n# PostgreSQL tuning (adjust based on server RAM)\nPOSTGRES_MAX_CONNECTIONS=200\nPOSTGRES_SHARED_BUFFERS=256MB\nPOSTGRES_EFFECTIVE_CACHE_SIZE=768MB\nPOSTGRES_WORK_MEM=16MB\nPOSTGRES_MAINTENANCE_WORK_MEM=128MB\nPOSTGRES_MAX_WAL_SIZE=2GB\n\n# ─── REDIS ───────────────────────────────────────────────────────────────────\n\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_URL=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/0\nCELERY_BROKER_URL=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/1\nCELERY_RESULT_BACKEND=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/2\nSPARKLE_GATEWAY_REDIS_URL=redis://gateway:${SPARKLE_GATEWAY_REDIS_PASSWORD}@sparkle_redis:6379/0\nSPARKLE_ENGINE_REDIS_URL=redis://engine:${SPARKLE_ENGINE_REDIS_PASSWORD}@sparkle_redis:6379/0\nSPARKLE_CELERY_REDIS_URL=redis://celery:${SPARKLE_CELERY_REDIS_PASSWORD}@sparkle_redis:6379/1\nSPARKLE_CELERY_BROKER_URL=redis://celery:${SPARKLE_CELERY_REDIS_PASSWORD}@sparkle_redis:6379/1\nSPARKLE_CELERY_RESULT_BACKEND=redis://celery:${SPARKLE_CELERY_REDIS_PASSWORD}@sparkle_redis:6379/2\n\n# ─── MINIO (File Storage) ───────────────────────────────────────────────────\n\nMINIO_ROOT_USER=<choose a username>\nMINIO_ENDPOINT=minio:9000\nMINIO_ACCESS_KEY=${MINIO_ROOT_USER}\nMINIO_SECRET_KEY=${MINIO_ROOT_PASSWORD}\nMINIO_BUCKET=sparkle-files\nMINIO_UPLOADS_BUCKET=sparkle-uploads\nMINIO_EXPORTS_BUCKET=sparkle-exports\nMINIO_BACKUPS_BUCKET=sparkle-backups\nMINIO_UPLOADS_ACCESS_KEY=sparkle_uploads\nMINIO_EXPORTS_ACCESS_KEY=sparkle_exports\nMINIO_BACKUPS_ACCESS_KEY=sparkle_backups\nMINIO_USE_SSL=false\nMINIO_AUTO_CREATE_BUCKET=true\n\n# ─── JWT ─────────────────────────────────────────────────────────────────────\n\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# ─── CORS (REQUIRED — restrict to actual domain) ────────────────────────────\n\nBACKEND_CORS_ORIGINS=[\"https://api.sparkle.com\"]\n\n# ─── LLM PROVIDERS (REQUIRED — at least one provider must be configured) ────\n\n# Primary: Qwen (DashScope)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=<your qwen api key>\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n\n# DeepSeek\nDEEPSEEK_API_KEY=<your deepseek api key>\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM\nZHIPU_API_KEY=<your zhipu api key>\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n\n# Embedding\nEMBEDDING_PROVIDER=dashscope\nDASHSCOPE_API_KEY=<your dashscope api key>\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\n\n# ─── SOCIAL LOGIN (fill when ready for app store) ───────────────────────────\n\nGOOGLE_CLIENT_ID=\nAPPLE_CLIENT_ID=\nWECHAT_APP_ID=\nWECHAT_APP_SECRET=\n\n# ─── PUSH NOTIFICATIONS (JPush for China) ───────────────────────────────────\n\n# JPUSH_APP_KEY=<your jpush app key>\n# JPUSH_MASTER_SECRET=<your jpush master secret>\n\n# ─── EMAIL (password reset, verification) ────────────────────────────────────\n\nEMAIL_ENABLED=true\nSMTP_HOST=smtp.example.com\nSMTP_PORT=587\nSMTP_USER=<your smtp username>\nSMTP_PASSWORD=<your smtp password>\nEMAIL_FROM=no-reply@sparkle.com\nEMAIL_FROM_NAME=Sparkle\n\n# ─── SENTRY (crash reporting — recommended) ─────────────────────────────────\n\nSENTRY_DSN=<your sentry dsn>\nSENTRY_ENVIRONMENT=production\nSENTRY_TRACES_SAMPLE_RATE=0.1\n\n# ─── PRODUCTION URL ─────────────────────────────────────────────────────────\n\nPRODUCTION_URL=https://api.sparkle.com\n\n# ─── BACKEND_URL (internal Docker network) ──────────────────────────────────\n\nBACKEND_URL=http://backend:8000\n\n# ─── IMAGE TAGS ─────────────────────────────────────────────────────────────\n\nIMAGE_TAG=latest\nGATEWAY_IMAGE=ghcr.io/your-org/sparkle-gateway\nBACKEND_IMAGE=ghcr.io/your-org/sparkle-backend\n\n# ─── CONTAINER IDENTITY ─────────────────────────────────────────────────────\n\nSPARKLE_APP_UID=10001\nSPARKLE_APP_GID=10001\n\n# ─── FILE SERVICE ───────────────────────────────────────────────────────────\n\nFILE_MAX_UPLOAD_SIZE=52428800\nFILE_PRESIGN_EXPIRES_SECONDS=420\nFILE_GC_INTERVAL_MINUTES=60\nFILE_GC_GRACE_HOURS=24\nFILE_GC_BATCH_SIZE=200\n\n# ─── MONITORING ─────────────────────────────────────────────────────────────\n\nOTEL_EXPORTER_OTLP_ENDPOINT=http://tempo:4317\nALERTMANAGER_EMAIL_TO=ops@sparkle.com\nALERTMANAGER_EMAIL_FROM=sparkle-alerts@sparkle.com\n\n# Alertmanager webhook receivers — REQUIRED for production alerts.\n# The docker-compose.prod.yml enforces these (fails startup if unset).\n# Use your real alert receiver URLs (Slack webhook, PagerDuty, DingTalk, custom, etc.).\nALERTMANAGER_DEFAULT_WEBHOOK_URL=https://hooks.slack.com/services/...\nALERTMANAGER_CRITICAL_WEBHOOK_URL=https://hooks.slack.com/services/...\nALERTMANAGER_WARNING_WEBHOOK_URL=https://hooks.slack.com/services/...\n\n# ─── gRPC TLS ────────────────────────────────────────────────────────────────\n# false = Gateway and Python Engine communicate over plain-text gRPC.\n# Safe when both run in the same Docker network (default).\n# true = Requires TLS certs at GRPC_TLS_CERT_PATH / GRPC_TLS_KEY_PATH.\n# Required when Gateway and Engine run on separate hosts/networks.\n# Generate certs: scripts/generate_grpc_certs.sh (if available)\n\nGRPC_REQUIRE_TLS=false\n\n# ─── CHAOS ENGINEERING ──────────────────────────────────────────────────────\n\nCHAOS_ENABLED=false\nCHAOS_ALLOW_PROD=false\n\n# ─── STT (Speech to Text) ───────────────────────────────────────────────────\n\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nXUNFEI_APP_ID=<your xunfei app id>\nXUNFEI_API_KEY=<your xunfei key>\nXUNFEI_API_SECRET=<your xunfei secret>\n\n# ─── GLM Batch ──────────────────────────────────────────────────────────────\n\nGLM_BATCH_ENABLED=true\nGLM_BATCH_MAX_CONCURRENCY=6\n\n# ─── Aurora Kill Switches ───────────────────────────────────────────────────\n\n# ─── AURORA ADAPTIVE KERNEL ────────────────────────────────────────────────\n# All Aurora switches use the tri-state protocol: off → shadow → live.\n# New features default to \"shadow\" in production for safe rollout.\n# See scripts/stage{N}/drill_transitions.sh for transition testing.\n\n# OpenClaw delegated execution\n# docker-compose injects host.docker.internal routes for containers automatically.\nOPENCLAW_ENABLED=true\n\nOPENCLAW_TRANSPORT=gateway_ws\n\nOPENCLAW_DEFAULT_AGENT_ID=main\n\nOPENCLAW_DEFAULT_TIMEOUT_SECONDS=300\n\nOPENCLAW_MAX_CONCURRENT_RUNS=3\n\n# gRPC TLS (required when ENVIRONMENT=production for agent service role)\nGRPC_TLS_CERT_PATH=/run/secrets/grpc_server.crt\n\nGRPC_TLS_KEY_PATH=/run/secrets/grpc_server.key\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\n\nENABLE_CONTEXT_SEMANTIC_GATING=true\n\nENABLE_CONTEXT_BRIEFING=true\n\nENABLE_CONTEXT_FOCUS_METADATA=true\n\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\n\nENABLE_ADAPTIVE_PRESENTATION=true\n\nENABLE_STRUCTURED_NEXT_ACTIONS=true\n\nENABLE_BLOCKED_TEMPERATURE=true\n\nENABLE_UX_PRESENTATION_METADATA=true\n\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\n\nENABLE_PROACTIVE_INSIGHTS=true\n\nENABLE_PLAN_REASONING_SUMMARY=true\n\nENABLE_WEEKLY_LEARNING_REPORT=true\n\nENABLE_PROGRESS_COMPARISONS=true\n\nAURORA_BAYESIAN_MODE=shadow\n\nAURORA_POLICY_COMPILER_MODE=shadow\n\nAURORA_REFLECTION_WIRE_MODE=shadow\n\nAURORA_SCENE_MODE=shadow\n\nAURORA_FORESIGHT_MODE=shadow\n\nAURORA_TRAITS_MODE=shadow\n\nAURORA_TRAITS_NLP_MODE=shadow\n\nAURORA_TRAITS_COLDSTART_MODE=shadow\n\nAURORA_SRL_MODE=shadow\n\nAURORA_SRL_TRACKER_MODE=shadow\n\nAURORA_SRL_BRIDGE_MODE=shadow\n\nAURORA_SRL_SCAFFOLDING_CONSUME_MODE=shadow\n\nAURORA_METACOG_MODE=shadow\n\nAURORA_METACOG_DASHBOARD_MODE=shadow\n\nAURORA_METACOG_PROCESS_SCAFFOLDING_MODE=shadow\n\nAURORA_METACOG_FSM_COMBINE_MODE=shadow\n\nAURORA_IDIOGRAPHIC_MODE=shadow\n\nAURORA_DOC_CONTEXT_DOCUMENT_CONTEXT_INJECTION_MODE=shadow\n\n# Aurora non-MODE parameters (thresholds, budgets, cooldowns, boolean triggers)\n# Stage 23 - Bayesian Learner\nAURORA_BAYESIAN_LIVE_CANARY_PERCENT=5\n\nAURORA_BAYESIAN_TTL_DAYS=30\n\n# Stage 24 - Policy Compiler\nAURORA_POLICY_DAILY_BUDGET=2\n\nAURORA_POLICY_COOLDOWN_HOURS=24\n\n# Stage 25 - Reflection Wire\nAURORA_REFLECTION_CONTEXT_LIMIT=20\n\nAURORA_REFLECTION_CONTEXT_MAX_TOKENS=800\n\nAURORA_REFLECTION_TRIGGER_TOO_DIFFICULT=true\n\nAURORA_REFLECTION_TRIGGER_UNCLEAR=true\n\nAURORA_REFLECTION_TRIGGER_ABANDONED=true\n\nAURORA_REFLECTION_TRIGGER_INTERVENTION_INEFFECTIVE=true\n\nAURORA_REFLECTION_TRIGGER_PLAN_STALL=true\n\nAURORA_REFLECTION_TRIGGER_OVERLOAD=true\n\n# Stage 26 - Scene Model\nAURORA_SCENE_SIMILARITY_THRESHOLD=0.75\n\nAURORA_SCENE_TIME_WINDOW_HOURS=72\n\nAURORA_SCENE_QUALITY_THRESHOLD=0.6\n\n# Stage 27 - Foresight Engine\nAURORA_FORESIGHT_ATTRACTOR=live\n\nAURORA_FORESIGHT_DEVIATION=live\n\nAURORA_FORESIGHT_JITAI=live\n\nAURORA_FORESIGHT_CACHE_TTL_SECONDS=60\n\nAURORA_FORESIGHT_ATTRACTOR_ALPHA=0.1\n\nAURORA_FORESIGHT_ATTRACTOR_MIN_CONFIDENCE=0.3\n\nAURORA_FORESIGHT_DEVIATION_Z_THRESHOLD=1.5\n\nAURORA_FORESIGHT_JITAI_DAILY_BUDGET=3\n\nAURORA_FORESIGHT_JITAI_COOLDOWN_HOURS=24\n\nAURORA_FORESIGHT_JITAI_MISFIRE_THRESHOLD=0.15\n\n# Stage 28 - Traits\nAURORA_TRAITS_NLP_COOLDOWN_HOURS=24\n\nAURORA_TRAITS_NLP_BIAS_THRESHOLD=0.10\n\nAURORA_TRAITS_NLP_MAX_DAYS=30\n\nAURORA_TRAITS_NLP_MAX_COST_USD=0.003\n\n# Stage 29 - SRL\nAURORA_SRL_MISJUDGMENT_THRESHOLD=0.20\n\nAURORA_SRL_AGGREGATOR_TTL_SECONDS=15\n\n# Stage 30 - Metacognition\nAURORA_METACOG_CACHE_TTL_SECONDS=60\n\nAURORA_METACOG_MIN_SAMPLE_SIZE=20\n\nAURORA_METACOG_PROCESS_TRIGGER_ABS_BIAS=0.30\n\nAURORA_METACOG_PROCESS_COOLDOWN_HOURS=72\n\nAURORA_METACOG_PROXY_REVISION_FREQUENCY=live\n\nAURORA_METACOG_PROXY_SELF_CORRECTION_RATE=live\n\nAURORA_METACOG_PROXY_QUESTION_TO_STATEMENT_RATIO=live\n\nAURORA_METACOG_PROXY_TIME_TO_FIRST_ACTION=live\n\nAURORA_METACOG_PROXY_COMPLETION_VS_ESTIMATE_DELTA_SIGN=live\n\nAURORA_IDIOGRAPHIC_TTL_SECONDS=300\n\n# Stage 37 - LLM Safety\n# Stage 38 - Error Replan + Push Scheduler\n# Stage 39 - Scaffolding + Cognitive Load + Galaxy\n# Stage 40 - Calendar\n# Document Context\nAURORA_DOC_CONTEXT_MODE=shadow\n\nAURORA_DOC_CONTEXT_AGGRESSIVE_BUDGET_TOKENS=2200\n\nAURORA_DOC_CONTEXT_SELECTIVE_BUDGET_TOKENS=900\n\nAURORA_DOC_CONTEXT_AMBIGUOUS_BUDGET_TOKENS=500\n\n# Privacy\nAURORA_PRIVACY_PII_REDACTION_MODE=shadow\n"}, "626d62363d53b0f48228f2d9d19aebb272ddee1b": {"t": 1785747990.3528953, "n": 12135, "h": "25f8f8ff2f760025", "c": "# =============================================================================\n# Sparkle Production Environment Template\n# =============================================================================\n# Copy to .env on the production server and fill ALL values marked REQUIRED.\n# Run: python scripts/check_production_secrets.py to validate (if available).\n#\n# DO NOT commit this file with real secrets. Add .env to .gitignore.\n# =============================================================================\n\n# ─── CRITICAL PRODUCTION OVERRIDES ──────────────────────────────────────────\n\nENVIRONMENT=production\nDEBUG=False\nREDIS_FAIL_CLOSED=true\n\n# ─── SECRETS (REQUIRED — generate with: openssl rand -hex 32) ───────────────\n\nSECRET_KEY=<generate 64-char hex>\nJWT_SECRET=<generate 64-char hex>\nPOSTGRES_PASSWORD=<generate strong password>\nSPARKLE_GATEWAY_DB_PASSWORD=<generate strong password>\nSPARKLE_ENGINE_DB_PASSWORD=<generate strong password>\nSPARKLE_CELERY_DB_PASSWORD=<generate strong password>\nSPARKLE_READONLY_DB_PASSWORD=<generate strong password>\nREDIS_PASSWORD=<generate strong password>\nSPARKLE_GATEWAY_REDIS_PASSWORD=<generate strong password>\nSPARKLE_ENGINE_REDIS_PASSWORD=<generate strong password>\nSPARKLE_CELERY_REDIS_PASSWORD=<generate strong password>\nMINIO_ROOT_PASSWORD=<generate strong password>\nMINIO_UPLOADS_SECRET_KEY=<generate strong password>\nMINIO_EXPORTS_SECRET_KEY=<generate strong password>\nMINIO_BACKUPS_SECRET_KEY=<generate strong password>\nINTERNAL_API_KEY=<generate 64-char hex>\nADMIN_SECRET=<generate 64-char hex>\nGRAFANA_ADMIN_USER=admin\nGRAFANA_ADMIN_PASSWORD=<generate strong password>\n\n# ─── DATABASE ────────────────────────────────────────────────────────────────\n\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nDATABASE_URL=postgresql+asyncpg://postgres:${POSTGRES_PASSWORD}@sparkle_db:5432/sparkle\nSPARKLE_RBAC_ENABLED=false\nSPARKLE_GATEWAY_DATABASE_URL=postgresql://sparkle_gateway:${SPARKLE_GATEWAY_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\nSPARKLE_ENGINE_DATABASE_URL=postgresql+asyncpg://sparkle_engine:${SPARKLE_ENGINE_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\nSPARKLE_CELERY_DATABASE_URL=postgresql+asyncpg://sparkle_celery:${SPARKLE_CELERY_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\nSPARKLE_READONLY_DATABASE_URL=postgresql://sparkle_readonly:${SPARKLE_READONLY_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\n\nDB_HOST=sparkle_db\nDB_PORT=5432\nDB_NAME=sparkle\nDB_USER=postgres\nDB_PASSWORD=${POSTGRES_PASSWORD}\n\n# PostgreSQL tuning (adjust based on server RAM)\nPOSTGRES_MAX_CONNECTIONS=200\nPOSTGRES_SHARED_BUFFERS=256MB\nPOSTGRES_EFFECTIVE_CACHE_SIZE=768MB\nPOSTGRES_WORK_MEM=16MB\nPOSTGRES_MAINTENANCE_WORK_MEM=128MB\nPOSTGRES_MAX_WAL_SIZE=2GB\n\n# ─── REDIS ───────────────────────────────────────────────────────────────────\n\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_URL=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/0\nCELERY_BROKER_URL=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/1\nCELERY_RESULT_BACKEND=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/2\nSPARKLE_GATEWAY_REDIS_URL=redis://gateway:${SPARKLE_GATEWAY_REDIS_PASSWORD}@sparkle_redis:6379/0\nSPARKLE_ENGINE_REDIS_URL=redis://engine:${SPARKLE_ENGINE_REDIS_PASSWORD}@sparkle_redis:6379/0\nSPARKLE_CELERY_REDIS_URL=redis://celery:${SPARKLE_CELERY_REDIS_PASSWORD}@sparkle_redis:6379/1\nSPARKLE_CELERY_BROKER_URL=redis://celery:${SPARKLE_CELERY_REDIS_PASSWORD}@sparkle_redis:6379/1\nSPARKLE_CELERY_RESULT_BACKEND=redis://celery:${SPARKLE_CELERY_REDIS_PASSWORD}@sparkle_redis:6379/2\n\n# ─── MINIO (File Storage) ───────────────────────────────────────────────────\n\nMINIO_ROOT_USER=<choose a username>\nMINIO_ENDPOINT=minio:9000\nMINIO_ACCESS_KEY=${MINIO_ROOT_USER}\nMINIO_SECRET_KEY=${MINIO_ROOT_PASSWORD}\nMINIO_BUCKET=sparkle-files\nMINIO_UPLOADS_BUCKET=sparkle-uploads\nMINIO_EXPORTS_BUCKET=sparkle-exports\nMINIO_BACKUPS_BUCKET=sparkle-backups\nMINIO_UPLOADS_ACCESS_KEY=sparkle_uploads\nMINIO_EXPORTS_ACCESS_KEY=sparkle_exports\nMINIO_BACKUPS_ACCESS_KEY=sparkle_backups\nMINIO_USE_SSL=false\nMINIO_AUTO_CREATE_BUCKET=true\n\n# ─── JWT ─────────────────────────────────────────────────────────────────────\n\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# ─── CORS (REQUIRED — restrict to actual domain) ────────────────────────────\n\nBACKEND_CORS_ORIGINS=[\"https://api.sparkle.com\"]\n\n# ─── LLM PROVIDERS (REQUIRED — at least one provider must be configured) ────\n\n# Primary: Qwen (DashScope)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=<your qwen api key>\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n\n# DeepSeek\nDEEPSEEK_API_KEY=<your deepseek api key>\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM\nZHIPU_API_KEY=<your zhipu api key>\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n\n# Embedding\nEMBEDDING_PROVIDER=dashscope\nDASHSCOPE_API_KEY=<your dashscope api key>\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\n\n# ─── SOCIAL LOGIN (fill when ready for app store) ───────────────────────────\n\nGOOGLE_CLIENT_ID=\nAPPLE_CLIENT_ID=\nWECHAT_APP_ID=\nWECHAT_APP_SECRET=\n\n# ─── PUSH NOTIFICATIONS (JPush for China) ───────────────────────────────────\n\n# JPUSH_APP_KEY=<your jpush app key>\n# JPUSH_MASTER_SECRET=<your jpush master secret>\n\n# ─── EMAIL (password reset, verification) ────────────────────────────────────\n\nEMAIL_ENABLED=true\nSMTP_HOST=smtp.example.com\nSMTP_PORT=587\nSMTP_USER=<your smtp username>\nSMTP_PASSWORD=<your smtp password>\nEMAIL_FROM=no-reply@sparkle.com\nEMAIL_FROM_NAME=Sparkle\n\n# ─── SENTRY (crash reporting — recommended) ─────────────────────────────────\n\nSENTRY_DSN=<your sentry dsn>\nSENTRY_ENVIRONMENT=production\nSENTRY_TRACES_SAMPLE_RATE=0.1\n\n# ─── PRODUCTION URL ─────────────────────────────────────────────────────────\n\nPRODUCTION_URL=https://api.sparkle.com\n\n# ─── BACKEND_URL (internal Docker network) ──────────────────────────────────\n\nBACKEND_URL=http://backend:8000\n\n# ─── IMAGE TAGS ─────────────────────────────────────────────────────────────\n\nIMAGE_TAG=latest\nGATEWAY_IMAGE=ghcr.io/your-org/sparkle-gateway\nBACKEND_IMAGE=ghcr.io/your-org/sparkle-backend\n\n# ─── CONTAINER IDENTITY ─────────────────────────────────────────────────────\n\nSPARKLE_APP_UID=10001\nSPARKLE_APP_GID=10001\n\n# ─── FILE SERVICE ───────────────────────────────────────────────────────────\n\nFILE_MAX_UPLOAD_SIZE=52428800\nFILE_PRESIGN_EXPIRES_SECONDS=420\nFILE_GC_INTERVAL_MINUTES=60\nFILE_GC_GRACE_HOURS=24\nFILE_GC_BATCH_SIZE=200\n\n# ─── MONITORING ─────────────────────────────────────────────────────────────\n\nOTEL_EXPORTER_OTLP_ENDPOINT=http://tempo:4317\nALERTMANAGER_EMAIL_TO=ops@sparkle.com\nALERTMANAGER_EMAIL_FROM=sparkle-alerts@sparkle.com\n\n# Alertmanager webhook receivers — REQUIRED for production alerts.\n# The docker-compose.prod.yml enforces these (fails startup if unset).\n# Use your real alert receiver URLs (Slack webhook, PagerDuty, DingTalk, custom, etc.).\nALERTMANAGER_DEFAULT_WEBHOOK_URL=https://hooks.slack.com/services/...\nALERTMANAGER_CRITICAL_WEBHOOK_URL=https://hooks.slack.com/services/...\nALERTMANAGER_WARNING_WEBHOOK_URL=https://hooks.slack.com/services/...\n\n# ─── gRPC TLS (set to true only for multi-node deployments) ─────────────────\n\nGRPC_REQUIRE_TLS=false\n\n# ─── CHAOS ENGINEERING ──────────────────────────────────────────────────────\n\nCHAOS_ENABLED=false\nCHAOS_ALLOW_PROD=false\n\n# ─── STT (Speech to Text) ───────────────────────────────────────────────────\n\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nXUNFEI_APP_ID=<your xunfei app id>\nXUNFEI_API_KEY=<your xunfei key>\nXUNFEI_API_SECRET=<your xunfei secret>\n\n# ─── GLM Batch ──────────────────────────────────────────────────────────────\n\nGLM_BATCH_ENABLED=true\nGLM_BATCH_MAX_CONCURRENCY=6\n\n# ─── Aurora Kill Switches ───────────────────────────────────────────────────\n\n# ─── AURORA ADAPTIVE KERNEL ────────────────────────────────────────────────\n# All Aurora switches use the tri-state protocol: off → shadow → live.\n# New features default to \"shadow\" in production for safe rollout.\n# See scripts/stage{N}/drill_transitions.sh for transition testing.\n\n# OpenClaw delegated execution\n# docker-compose injects host.docker.internal routes for containers automatically.\nOPENCLAW_ENABLED=true\n\nOPENCLAW_TRANSPORT=gateway_ws\n\nOPENCLAW_DEFAULT_AGENT_ID=main\n\nOPENCLAW_DEFAULT_TIMEOUT_SECONDS=300\n\nOPENCLAW_MAX_CONCURRENT_RUNS=3\n\n# gRPC TLS (required when ENVIRONMENT=production for agent service role)\nGRPC_TLS_CERT_PATH=/run/secrets/grpc_server.crt\n\nGRPC_TLS_KEY_PATH=/run/secrets/grpc_server.key\n\n# AI Four-Phase Launch\nENABLE_CONTEXT_FOCUSING=true\n\nENABLE_CONTEXT_SEMANTIC_GATING=true\n\nENABLE_CONTEXT_BRIEFING=true\n\nENABLE_CONTEXT_FOCUS_METADATA=true\n\nENABLE_SESSION_FEEDBACK_ADAPTATION=true\n\nENABLE_ADAPTIVE_PRESENTATION=true\n\nENABLE_STRUCTURED_NEXT_ACTIONS=true\n\nENABLE_BLOCKED_TEMPERATURE=true\n\nENABLE_UX_PRESENTATION_METADATA=true\n\nENABLE_PERCEPTIBLE_INTELLIGENCE=true\n\nENABLE_PROACTIVE_INSIGHTS=true\n\nENABLE_PLAN_REASONING_SUMMARY=true\n\nENABLE_WEEKLY_LEARNING_REPORT=true\n\nENABLE_PROGRESS_COMPARISONS=true\n\nAURORA_BAYESIAN_MODE=shadow\n\nAURORA_POLICY_COMPILER_MODE=shadow\n\nAURORA_REFLECTION_WIRE_MODE=shadow\n\nAURORA_SCENE_MODE=shadow\n\nAURORA_FORESIGHT_MODE=shadow\n\nAURORA_TRAITS_MODE=shadow\n\nAURORA_TRAITS_NLP_MODE=shadow\n\nAURORA_TRAITS_COLDSTART_MODE=shadow\n\nAURORA_SRL_MODE=shadow\n\nAURORA_SRL_TRACKER_MODE=shadow\n\nAURORA_SRL_BRIDGE_MODE=shadow\n\nAURORA_SRL_SCAFFOLDING_CONSUME_MODE=shadow\n\nAURORA_METACOG_MODE=shadow\n\nAURORA_METACOG_DASHBOARD_MODE=shadow\n\nAURORA_METACOG_PROCESS_SCAFFOLDING_MODE=shadow\n\nAURORA_METACOG_FSM_COMBINE_MODE=shadow\n\nAURORA_IDIOGRAPHIC_MODE=shadow\n\nAURORA_DOC_CONTEXT_DOCUMENT_CONTEXT_INJECTION_MODE=shadow\n\n# Aurora non-MODE parameters (thresholds, budgets, cooldowns, boolean triggers)\n# Stage 23 - Bayesian Learner\nAURORA_BAYESIAN_LIVE_CANARY_PERCENT=5\n\nAURORA_BAYESIAN_TTL_DAYS=30\n\n# Stage 24 - Policy Compiler\nAURORA_POLICY_DAILY_BUDGET=2\n\nAURORA_POLICY_COOLDOWN_HOURS=24\n\n# Stage 25 - Reflection Wire\nAURORA_REFLECTION_CONTEXT_LIMIT=20\n\nAURORA_REFLECTION_CONTEXT_MAX_TOKENS=800\n\nAURORA_REFLECTION_TRIGGER_TOO_DIFFICULT=true\n\nAURORA_REFLECTION_TRIGGER_UNCLEAR=true\n\nAURORA_REFLECTION_TRIGGER_ABANDONED=true\n\nAURORA_REFLECTION_TRIGGER_INTERVENTION_INEFFECTIVE=true\n\nAURORA_REFLECTION_TRIGGER_PLAN_STALL=true\n\nAURORA_REFLECTION_TRIGGER_OVERLOAD=true\n\n# Stage 26 - Scene Model\nAURORA_SCENE_SIMILARITY_THRESHOLD=0.75\n\nAURORA_SCENE_TIME_WINDOW_HOURS=72\n\nAURORA_SCENE_QUALITY_THRESHOLD=0.6\n\n# Stage 27 - Foresight Engine\nAURORA_FORESIGHT_ATTRACTOR=live\n\nAURORA_FORESIGHT_DEVIATION=live\n\nAURORA_FORESIGHT_JITAI=live\n\nAURORA_FORESIGHT_CACHE_TTL_SECONDS=60\n\nAURORA_FORESIGHT_ATTRACTOR_ALPHA=0.1\n\nAURORA_FORESIGHT_ATTRACTOR_MIN_CONFIDENCE=0.3\n\nAURORA_FORESIGHT_DEVIATION_Z_THRESHOLD=1.5\n\nAURORA_FORESIGHT_JITAI_DAILY_BUDGET=3\n\nAURORA_FORESIGHT_JITAI_COOLDOWN_HOURS=24\n\nAURORA_FORESIGHT_JITAI_MISFIRE_THRESHOLD=0.15\n\n# Stage 28 - Traits\nAURORA_TRAITS_NLP_COOLDOWN_HOURS=24\n\nAURORA_TRAITS_NLP_BIAS_THRESHOLD=0.10\n\nAURORA_TRAITS_NLP_MAX_DAYS=30\n\nAURORA_TRAITS_NLP_MAX_COST_USD=0.003\n\n# Stage 29 - SRL\nAURORA_SRL_MISJUDGMENT_THRESHOLD=0.20\n\nAURORA_SRL_AGGREGATOR_TTL_SECONDS=15\n\n# Stage 30 - Metacognition\nAURORA_METACOG_CACHE_TTL_SECONDS=60\n\nAURORA_METACOG_MIN_SAMPLE_SIZE=20\n\nAURORA_METACOG_PROCESS_TRIGGER_ABS_BIAS=0.30\n\nAURORA_METACOG_PROCESS_COOLDOWN_HOURS=72\n\nAURORA_METACOG_PROXY_REVISION_FREQUENCY=live\n\nAURORA_METACOG_PROXY_SELF_CORRECTION_RATE=live\n\nAURORA_METACOG_PROXY_QUESTION_TO_STATEMENT_RATIO=live\n\nAURORA_METACOG_PROXY_TIME_TO_FIRST_ACTION=live\n\nAURORA_METACOG_PROXY_COMPLETION_VS_ESTIMATE_DELTA_SIGN=live\n\nAURORA_IDIOGRAPHIC_TTL_SECONDS=300\n\n# Stage 37 - LLM Safety\n# Stage 38 - Error Replan + Push Scheduler\n# Stage 39 - Scaffolding + Cognitive Load + Galaxy\n# Stage 40 - Calendar\n# Document Context\nAURORA_DOC_CONTEXT_MODE=shadow\n\nAURORA_DOC_CONTEXT_AGGRESSIVE_BUDGET_TOKENS=2200\n\nAURORA_DOC_CONTEXT_SELECTIVE_BUDGET_TOKENS=900\n\nAURORA_DOC_CONTEXT_AMBIGUOUS_BUDGET_TOKENS=500\n\n# Privacy\nAURORA_PRIVACY_PII_REDACTION_MODE=shadow\n"}, "bd15bd48daf90a77b04511598cc8a1fe0cf04e90": {"t": 1785747991.4643912, "n": 8068, "h": "fe1ff9b1075d7a32", "c": "# =============================================================================\n# Sparkle Production Environment Template\n# =============================================================================\n# Copy to .env on the production server and fill ALL values marked REQUIRED.\n# Run: python scripts/check_production_secrets.py to validate (if available).\n#\n# DO NOT commit this file with real secrets. Add .env to .gitignore.\n# =============================================================================\n\n# ─── CRITICAL PRODUCTION OVERRIDES ──────────────────────────────────────────\n\nENVIRONMENT=production\nDEBUG=False\nREDIS_FAIL_CLOSED=true\n\n# ─── SECRETS (REQUIRED — generate with: openssl rand -hex 32) ───────────────\n\nSECRET_KEY=<generate 64-char hex>\nJWT_SECRET=<generate 64-char hex>\nPOSTGRES_PASSWORD=<generate strong password>\nSPARKLE_GATEWAY_DB_PASSWORD=<generate strong password>\nSPARKLE_ENGINE_DB_PASSWORD=<generate strong password>\nSPARKLE_CELERY_DB_PASSWORD=<generate strong password>\nSPARKLE_READONLY_DB_PASSWORD=<generate strong password>\nREDIS_PASSWORD=<generate strong password>\nSPARKLE_GATEWAY_REDIS_PASSWORD=<generate strong password>\nSPARKLE_ENGINE_REDIS_PASSWORD=<generate strong password>\nSPARKLE_CELERY_REDIS_PASSWORD=<generate strong password>\nMINIO_ROOT_PASSWORD=<generate strong password>\nMINIO_UPLOADS_SECRET_KEY=<generate strong password>\nMINIO_EXPORTS_SECRET_KEY=<generate strong password>\nMINIO_BACKUPS_SECRET_KEY=<generate strong password>\nINTERNAL_API_KEY=<generate 64-char hex>\nADMIN_SECRET=<generate 64-char hex>\nGRAFANA_ADMIN_USER=admin\nGRAFANA_ADMIN_PASSWORD=<generate strong password>\n\n# ─── DATABASE ────────────────────────────────────────────────────────────────\n\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nDATABASE_URL=postgresql+asyncpg://postgres:${POSTGRES_PASSWORD}@sparkle_db:5432/sparkle\nSPARKLE_RBAC_ENABLED=false\nSPARKLE_GATEWAY_DATABASE_URL=postgresql://sparkle_gateway:${SPARKLE_GATEWAY_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\nSPARKLE_ENGINE_DATABASE_URL=postgresql+asyncpg://sparkle_engine:${SPARKLE_ENGINE_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\nSPARKLE_CELERY_DATABASE_URL=postgresql+asyncpg://sparkle_celery:${SPARKLE_CELERY_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\nSPARKLE_READONLY_DATABASE_URL=postgresql://sparkle_readonly:${SPARKLE_READONLY_DB_PASSWORD}@sparkle_db:5432/sparkle?sslmode=require\n\nDB_HOST=sparkle_db\nDB_PORT=5432\nDB_NAME=sparkle\nDB_USER=postgres\nDB_PASSWORD=${POSTGRES_PASSWORD}\n\n# PostgreSQL tuning (adjust based on server RAM)\nPOSTGRES_MAX_CONNECTIONS=200\nPOSTGRES_SHARED_BUFFERS=256MB\nPOSTGRES_EFFECTIVE_CACHE_SIZE=768MB\nPOSTGRES_WORK_MEM=16MB\nPOSTGRES_MAINTENANCE_WORK_MEM=128MB\nPOSTGRES_MAX_WAL_SIZE=2GB\n\n# ─── REDIS ───────────────────────────────────────────────────────────────────\n\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_URL=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/0\nCELERY_BROKER_URL=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/1\nCELERY_RESULT_BACKEND=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/2\nSPARKLE_GATEWAY_REDIS_URL=redis://gateway:${SPARKLE_GATEWAY_REDIS_PASSWORD}@sparkle_redis:6379/0\nSPARKLE_ENGINE_REDIS_URL=redis://engine:${SPARKLE_ENGINE_REDIS_PASSWORD}@sparkle_redis:6379/0\nSPARKLE_CELERY_REDIS_URL=redis://celery:${SPARKLE_CELERY_REDIS_PASSWORD}@sparkle_redis:6379/1\nSPARKLE_CELERY_BROKER_URL=redis://celery:${SPARKLE_CELERY_REDIS_PASSWORD}@sparkle_redis:6379/1\nSPARKLE_CELERY_RESULT_BACKEND=redis://celery:${SPARKLE_CELERY_REDIS_PASSWORD}@sparkle_redis:6379/2\n\n# ─── MINIO (File Storage) ───────────────────────────────────────────────────\n\nMINIO_ROOT_USER=<choose a username>\nMINIO_ENDPOINT=minio:9000\nMINIO_ACCESS_KEY=${MINIO_ROOT_USER}\nMINIO_SECRET_KEY=${MINIO_ROOT_PASSWORD}\nMINIO_BUCKET=sparkle-files\nMINIO_UPLOADS_BUCKET=sparkle-uploads\nMINIO_EXPORTS_BUCKET=sparkle-exports\nMINIO_BACKUPS_BUCKET=sparkle-backups\nMINIO_UPLOADS_ACCESS_KEY=sparkle_uploads\nMINIO_EXPORTS_ACCESS_KEY=sparkle_exports\nMINIO_BACKUPS_ACCESS_KEY=sparkle_backups\nMINIO_USE_SSL=false\nMINIO_AUTO_CREATE_BUCKET=true\n\n# ─── JWT ─────────────────────────────────────────────────────────────────────\n\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# ─── CORS (REQUIRED — restrict to actual domain) ────────────────────────────\n\nBACKEND_CORS_ORIGINS=[\"https://api.sparkle.com\"]\n\n# ─── LLM PROVIDERS (REQUIRED — at least one provider must be configured) ────\n\n# Primary: Qwen (DashScope)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=<your qwen api key>\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n\n# DeepSeek\nDEEPSEEK_API_KEY=<your deepseek api key>\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM\nZHIPU_API_KEY=<your zhipu api key>\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n\n# Embedding\nEMBEDDING_PROVIDER=dashscope\nDASHSCOPE_API_KEY=<your dashscope api key>\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\n\n# ─── SOCIAL LOGIN (fill when ready for app store) ───────────────────────────\n\nGOOGLE_CLIENT_ID=\nAPPLE_CLIENT_ID=\nWECHAT_APP_ID=\nWECHAT_APP_SECRET=\n\n# ─── PUSH NOTIFICATIONS (JPush for China) ───────────────────────────────────\n\n# JPUSH_APP_KEY=<your jpush app key>\n# JPUSH_MASTER_SECRET=<your jpush master secret>\n\n# ─── EMAIL (password reset, verification) ────────────────────────────────────\n\nEMAIL_ENABLED=true\nSMTP_HOST=smtp.example.com\nSMTP_PORT=587\nSMTP_USER=<your smtp username>\nSMTP_PASSWORD=<your smtp password>\nEMAIL_FROM=no-reply@sparkle.com\nEMAIL_FROM_NAME=Sparkle\n\n# ─── SENTRY (crash reporting — recommended) ─────────────────────────────────\n\nSENTRY_DSN=<your sentry dsn>\nSENTRY_ENVIRONMENT=production\nSENTRY_TRACES_SAMPLE_RATE=0.1\n\n# ─── PRODUCTION URL ─────────────────────────────────────────────────────────\n\nPRODUCTION_URL=https://api.sparkle.com\n\n# ─── BACKEND_URL (internal Docker network) ──────────────────────────────────\n\nBACKEND_URL=http://backend:8000\n\n# ─── IMAGE TAGS ─────────────────────────────────────────────────────────────\n\nIMAGE_TAG=latest\nGATEWAY_IMAGE=ghcr.io/your-org/sparkle-gateway\nBACKEND_IMAGE=ghcr.io/your-org/sparkle-backend\n\n# ─── CONTAINER IDENTITY ─────────────────────────────────────────────────────\n\nSPARKLE_APP_UID=10001\nSPARKLE_APP_GID=10001\n\n# ─── FILE SERVICE ───────────────────────────────────────────────────────────\n\nFILE_MAX_UPLOAD_SIZE=52428800\nFILE_PRESIGN_EXPIRES_SECONDS=420\nFILE_GC_INTERVAL_MINUTES=60\nFILE_GC_GRACE_HOURS=24\nFILE_GC_BATCH_SIZE=200\n\n# ─── MONITORING ─────────────────────────────────────────────────────────────\n\nOTEL_EXPORTER_OTLP_ENDPOINT=http://tempo:4317\nALERTMANAGER_EMAIL_TO=ops@sparkle.com\nALERTMANAGER_EMAIL_FROM=sparkle-alerts@sparkle.com\n\n# Alertmanager webhook receivers — REQUIRED for production alerts.\n# The docker-compose.prod.yml enforces these (fails startup if unset).\n# Use your real alert receiver URLs (Slack webhook, PagerDuty, DingTalk, custom, etc.).\nALERTMANAGER_DEFAULT_WEBHOOK_URL=https://hooks.slack.com/services/...\nALERTMANAGER_CRITICAL_WEBHOOK_URL=https://hooks.slack.com/services/...\nALERTMANAGER_WARNING_WEBHOOK_URL=https://hooks.slack.com/services/...\n\n# ─── gRPC TLS (set to true only for multi-node deployments) ─────────────────\n\nGRPC_REQUIRE_TLS=false\n\n# ─── CHAOS ENGINEERING ──────────────────────────────────────────────────────\n\nCHAOS_ENABLED=false\nCHAOS_ALLOW_PROD=false\n\n# ─── STT (Speech to Text) ───────────────────────────────────────────────────\n\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nXUNFEI_APP_ID=<your xunfei app id>\nXUNFEI_API_KEY=<your xunfei key>\nXUNFEI_API_SECRET=<your xunfei secret>\n\n# ─── GLM Batch ──────────────────────────────────────────────────────────────\n\nGLM_BATCH_ENABLED=true\nGLM_BATCH_MAX_CONCURRENCY=6\n\n# ─── Aurora Kill Switches ───────────────────────────────────────────────────\n# All default to \"live\" in .env.example. Copy those sections as-is.\n# See backend/.env.example for the complete Aurora configuration.\n"}, "73253cdc4dfed3b998eab02e29445f7827727697": {"t": 1785747992.5629494, "n": 6234, "h": "778fd5abd013baab", "c": "# =============================================================================\n# Sparkle Production Environment Template\n# =============================================================================\n# Copy to .env on the production server and fill ALL values marked REQUIRED.\n# Run: python scripts/check_production_secrets.py to validate (if available).\n#\n# DO NOT commit this file with real secrets. Add .env to .gitignore.\n# =============================================================================\n\n# ─── CRITICAL PRODUCTION OVERRIDES ──────────────────────────────────────────\n\nENVIRONMENT=production\nDEBUG=False\nREDIS_FAIL_CLOSED=true\n\n# ─── SECRETS (REQUIRED — generate with: openssl rand -hex 32) ───────────────\n\nSECRET_KEY=<generate 64-char hex>\nJWT_SECRET=<generate 64-char hex>\nPOSTGRES_PASSWORD=<generate strong password>\nREDIS_PASSWORD=<generate strong password>\nMINIO_ROOT_PASSWORD=<generate strong password>\nMINIO_SECRET_KEY=<same as MINIO_ROOT_PASSWORD>\nINTERNAL_API_KEY=<generate 64-char hex>\nADMIN_SECRET=<generate 64-char hex>\nGRAFANA_ADMIN_PASSWORD=<generate strong password>\n\n# ─── DATABASE ────────────────────────────────────────────────────────────────\n\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nDATABASE_URL=postgresql+asyncpg://postgres:${POSTGRES_PASSWORD}@sparkle_db:5432/sparkle\n\nDB_HOST=sparkle_db\nDB_PORT=5432\nDB_NAME=sparkle\nDB_USER=postgres\nDB_PASSWORD=${POSTGRES_PASSWORD}\n\n# PostgreSQL tuning (adjust based on server RAM)\nPOSTGRES_MAX_CONNECTIONS=200\nPOSTGRES_SHARED_BUFFERS=256MB\nPOSTGRES_EFFECTIVE_CACHE_SIZE=768MB\nPOSTGRES_WORK_MEM=16MB\nPOSTGRES_MAINTENANCE_WORK_MEM=128MB\nPOSTGRES_MAX_WAL_SIZE=2GB\n\n# ─── REDIS ───────────────────────────────────────────────────────────────────\n\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_URL=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/0\nCELERY_BROKER_URL=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/1\nCELERY_RESULT_BACKEND=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/2\n\n# ─── MINIO (File Storage) ───────────────────────────────────────────────────\n\nMINIO_ROOT_USER=<choose a username>\nMINIO_ENDPOINT=minio:9000\nMINIO_ACCESS_KEY=${MINIO_ROOT_USER}\nMINIO_BUCKET=sparkle-files\nMINIO_USE_SSL=false\nMINIO_AUTO_CREATE_BUCKET=true\n\n# ─── JWT ─────────────────────────────────────────────────────────────────────\n\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# ─── CORS (REQUIRED — restrict to actual domain) ────────────────────────────\n\nBACKEND_CORS_ORIGINS=[\"https://api.sparkle.com\"]\n\n# ─── LLM PROVIDERS (REQUIRED — at least one provider must be configured) ────\n\n# Primary: Qwen (DashScope)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=<your qwen api key>\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n\n# DeepSeek\nDEEPSEEK_API_KEY=<your deepseek api key>\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM\nZHIPU_API_KEY=<your zhipu api key>\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n\n# Embedding\nEMBEDDING_PROVIDER=dashscope\nDASHSCOPE_API_KEY=<your dashscope api key>\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\n\n# ─── SOCIAL LOGIN (fill when ready for app store) ───────────────────────────\n\nGOOGLE_CLIENT_ID=\nAPPLE_CLIENT_ID=\nWECHAT_APP_ID=\nWECHAT_APP_SECRET=\n\n# ─── PUSH NOTIFICATIONS (JPush for China) ───────────────────────────────────\n\n# JPUSH_APP_KEY=<your jpush app key>\n# JPUSH_MASTER_SECRET=<your jpush master secret>\n\n# ─── EMAIL (password reset, verification) ────────────────────────────────────\n\nEMAIL_ENABLED=true\nSMTP_HOST=smtp.example.com\nSMTP_PORT=587\nSMTP_USER=<your smtp username>\nSMTP_PASSWORD=<your smtp password>\nEMAIL_FROM=no-reply@sparkle.com\nEMAIL_FROM_NAME=Sparkle\n\n# ─── SENTRY (crash reporting — recommended) ─────────────────────────────────\n\nSENTRY_DSN=<your sentry dsn>\nSENTRY_ENVIRONMENT=production\nSENTRY_TRACES_SAMPLE_RATE=0.1\n\n# ─── PRODUCTION URL ─────────────────────────────────────────────────────────\n\nPRODUCTION_URL=https://api.sparkle.com\n\n# ─── BACKEND_URL (internal Docker network) ──────────────────────────────────\n\nBACKEND_URL=http://backend:8000\n\n# ─── IMAGE TAGS ─────────────────────────────────────────────────────────────\n\nIMAGE_TAG=latest\nGATEWAY_IMAGE=ghcr.io/your-org/sparkle-gateway\nBACKEND_IMAGE=ghcr.io/your-org/sparkle-backend\n\n# ─── CONTAINER IDENTITY ─────────────────────────────────────────────────────\n\nSPARKLE_APP_UID=10001\nSPARKLE_APP_GID=10001\n\n# ─── FILE SERVICE ───────────────────────────────────────────────────────────\n\nFILE_MAX_UPLOAD_SIZE=52428800\nFILE_PRESIGN_EXPIRES_SECONDS=420\nFILE_GC_INTERVAL_MINUTES=60\nFILE_GC_GRACE_HOURS=24\nFILE_GC_BATCH_SIZE=200\n\n# ─── MONITORING ─────────────────────────────────────────────────────────────\n\nOTEL_EXPORTER_OTLP_ENDPOINT=http://tempo:4317\nALERTMANAGER_EMAIL_TO=ops@sparkle.com\nALERTMANAGER_EMAIL_FROM=sparkle-alerts@sparkle.com\n\n# Alertmanager webhook receivers — REQUIRED for production alerts.\n# The docker-compose.prod.yml enforces these (fails startup if unset).\n# Use your real alert receiver URLs (Slack webhook, PagerDuty, DingTalk, custom, etc.).\nALERTMANAGER_DEFAULT_WEBHOOK_URL=https://hooks.slack.com/services/...\nALERTMANAGER_CRITICAL_WEBHOOK_URL=https://hooks.slack.com/services/...\nALERTMANAGER_WARNING_WEBHOOK_URL=https://hooks.slack.com/services/...\n\n# ─── gRPC TLS (set to true only for multi-node deployments) ─────────────────\n\nGRPC_REQUIRE_TLS=false\n\n# ─── CHAOS ENGINEERING ──────────────────────────────────────────────────────\n\nCHAOS_ENABLED=false\nCHAOS_ALLOW_PROD=false\n\n# ─── STT (Speech to Text) ───────────────────────────────────────────────────\n\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nXUNFEI_APP_ID=<your xunfei app id>\nXUNFEI_API_KEY=<your xunfei key>\nXUNFEI_API_SECRET=<your xunfei secret>\n\n# ─── GLM Batch ──────────────────────────────────────────────────────────────\n\nGLM_BATCH_ENABLED=true\nGLM_BATCH_MAX_CONCURRENCY=6\n\n# ─── Aurora Kill Switches ───────────────────────────────────────────────────\n# All default to \"live\" in .env.example. Copy those sections as-is.\n# See backend/.env.example for the complete Aurora configuration.\n"}, "ccf83242e95623e680083b7883d3ce96ab52984a": {"t": 1785747993.6394575, "n": 5796, "h": "8d082a5a943b4a1b", "c": "# =============================================================================\n# Sparkle Production Environment Template\n# =============================================================================\n# Copy to .env on the production server and fill ALL values marked REQUIRED.\n# Run: python scripts/check_production_secrets.py to validate (if available).\n#\n# DO NOT commit this file with real secrets. Add .env to .gitignore.\n# =============================================================================\n\n# ─── CRITICAL PRODUCTION OVERRIDES ──────────────────────────────────────────\n\nENVIRONMENT=production\nDEBUG=False\nREDIS_FAIL_CLOSED=true\n\n# ─── SECRETS (REQUIRED — generate with: openssl rand -hex 32) ───────────────\n\nSECRET_KEY=<generate 64-char hex>\nJWT_SECRET=<generate 64-char hex>\nPOSTGRES_PASSWORD=<generate strong password>\nREDIS_PASSWORD=<generate strong password>\nMINIO_ROOT_PASSWORD=<generate strong password>\nMINIO_SECRET_KEY=<same as MINIO_ROOT_PASSWORD>\nINTERNAL_API_KEY=<generate 64-char hex>\nADMIN_SECRET=<generate 64-char hex>\nGRAFANA_ADMIN_PASSWORD=<generate strong password>\n\n# ─── DATABASE ────────────────────────────────────────────────────────────────\n\nPOSTGRES_HOST=sparkle_db\nPOSTGRES_PORT=5432\nPOSTGRES_DB=sparkle\nPOSTGRES_USER=postgres\nDATABASE_URL=postgresql+asyncpg://postgres:${POSTGRES_PASSWORD}@sparkle_db:5432/sparkle\n\nDB_HOST=sparkle_db\nDB_PORT=5432\nDB_NAME=sparkle\nDB_USER=postgres\nDB_PASSWORD=${POSTGRES_PASSWORD}\n\n# PostgreSQL tuning (adjust based on server RAM)\nPOSTGRES_MAX_CONNECTIONS=200\nPOSTGRES_SHARED_BUFFERS=256MB\nPOSTGRES_EFFECTIVE_CACHE_SIZE=768MB\nPOSTGRES_WORK_MEM=16MB\nPOSTGRES_MAINTENANCE_WORK_MEM=128MB\nPOSTGRES_MAX_WAL_SIZE=2GB\n\n# ─── REDIS ───────────────────────────────────────────────────────────────────\n\nREDIS_HOST=sparkle_redis\nREDIS_PORT=6379\nREDIS_URL=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/0\nCELERY_BROKER_URL=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/1\nCELERY_RESULT_BACKEND=redis://:${REDIS_PASSWORD}@sparkle_redis:6379/2\n\n# ─── MINIO (File Storage) ───────────────────────────────────────────────────\n\nMINIO_ROOT_USER=<choose a username>\nMINIO_ENDPOINT=minio:9000\nMINIO_ACCESS_KEY=${MINIO_ROOT_USER}\nMINIO_BUCKET=sparkle-files\nMINIO_USE_SSL=false\nMINIO_AUTO_CREATE_BUCKET=true\n\n# ─── JWT ─────────────────────────────────────────────────────────────────────\n\nACCESS_TOKEN_EXPIRE_MINUTES=1440\nREFRESH_TOKEN_EXPIRE_DAYS=30\nALGORITHM=HS256\n\n# ─── CORS (REQUIRED — restrict to actual domain) ────────────────────────────\n\nBACKEND_CORS_ORIGINS=[\"https://api.sparkle.com\"]\n\n# ─── LLM PROVIDERS (REQUIRED — at least one provider must be configured) ────\n\n# Primary: Qwen (DashScope)\nLLM_PROVIDER=qwen\nLLM_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\nLLM_API_KEY=<your qwen api key>\nLLM_MODEL_NAME=qwen-plus\nLLM_REASON_MODEL_NAME=deepseek-reasoner\n\n# DeepSeek\nDEEPSEEK_API_KEY=<your deepseek api key>\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_CHAT_MODEL=deepseek-v4-flash\nDEEPSEEK_REASON_MODEL=deepseek-v4-pro\n\n# Zhipu GLM\nZHIPU_API_KEY=<your zhipu api key>\nZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n\n# Embedding\nEMBEDDING_PROVIDER=dashscope\nDASHSCOPE_API_KEY=<your dashscope api key>\nEMBEDDING_MODEL=text-embedding-v4\nEMBEDDING_DIM=1024\n\n# ─── SOCIAL LOGIN (fill when ready for app store) ───────────────────────────\n\nGOOGLE_CLIENT_ID=\nAPPLE_CLIENT_ID=\nWECHAT_APP_ID=\nWECHAT_APP_SECRET=\n\n# ─── PUSH NOTIFICATIONS (JPush for China) ───────────────────────────────────\n\n# JPUSH_APP_KEY=<your jpush app key>\n# JPUSH_MASTER_SECRET=<your jpush master secret>\n\n# ─── EMAIL (password reset, verification) ────────────────────────────────────\n\nEMAIL_ENABLED=true\nSMTP_HOST=smtp.example.com\nSMTP_PORT=587\nSMTP_USER=<your smtp username>\nSMTP_PASSWORD=<your smtp password>\nEMAIL_FROM=no-reply@sparkle.com\nEMAIL_FROM_NAME=Sparkle\n\n# ─── SENTRY (crash reporting — recommended) ─────────────────────────────────\n\nSENTRY_DSN=<your sentry dsn>\nSENTRY_ENVIRONMENT=production\nSENTRY_TRACES_SAMPLE_RATE=0.1\n\n# ─── PRODUCTION URL ─────────────────────────────────────────────────────────\n\nPRODUCTION_URL=https://api.sparkle.com\n\n# ─── BACKEND_URL (internal Docker network) ──────────────────────────────────\n\nBACKEND_URL=http://backend:8000\n\n# ─── IMAGE TAGS ─────────────────────────────────────────────────────────────\n\nIMAGE_TAG=latest\nGATEWAY_IMAGE=ghcr.io/your-org/sparkle-gateway\nBACKEND_IMAGE=ghcr.io/your-org/sparkle-backend\n\n# ─── CONTAINER IDENTITY ─────────────────────────────────────────────────────\n\nSPARKLE_APP_UID=10001\nSPARKLE_APP_GID=10001\n\n# ─── FILE SERVICE ───────────────────────────────────────────────────────────\n\nFILE_MAX_UPLOAD_SIZE=52428800\nFILE_PRESIGN_EXPIRES_SECONDS=420\nFILE_GC_INTERVAL_MINUTES=60\nFILE_GC_GRACE_HOURS=24\nFILE_GC_BATCH_SIZE=200\n\n# ─── MONITORING ─────────────────────────────────────────────────────────────\n\nOTEL_EXPORTER_OTLP_ENDPOINT=http://tempo:4317\nALERTMANAGER_EMAIL_TO=ops@sparkle.com\nALERTMANAGER_EMAIL_FROM=sparkle-alerts@sparkle.com\n\n# ─── gRPC TLS (set to true only for multi-node deployments) ─────────────────\n\nGRPC_REQUIRE_TLS=false\n\n# ─── CHAOS ENGINEERING ──────────────────────────────────────────────────────\n\nCHAOS_ENABLED=false\nCHAOS_ALLOW_PROD=false\n\n# ─── STT (Speech to Text) ───────────────────────────────────────────────────\n\nSTT_PROVIDER=xunfei\nSTT_BACKUP_PROVIDER=zhipu\nXUNFEI_APP_ID=<your xunfei app id>\nXUNFEI_API_KEY=<your xunfei key>\nXUNFEI_API_SECRET=<your xunfei secret>\n\n# ─── GLM Batch ──────────────────────────────────────────────────────────────\n\nGLM_BATCH_ENABLED=true\nGLM_BATCH_MAX_CONCURRENCY=6\n\n# ─── Aurora Kill Switches ───────────────────────────────────────────────────\n# All default to \"live\" in .env.example. Copy those sections as-is.\n# See backend/.env.example for the complete Aurora configuration.\n"}}}} |