1 line
32 KiB
JSON
1 line
32 KiB
JSON
{"repo": "bytechminds/meritrankeragent", "files": {"app/.env.local.example": {"9ca521e695168fe8eda868cac5ae6e1f5cf227b4": {"t": 1785747085.0019677, "n": 6485, "h": "6507e9618074ceac", "c": "APP_ENV=local\nLOG_LEVEL=INFO\nAGENT_LOG_LEVEL=INFO\nAGENT_LOG_FORMAT=pretty_and_json_file\nAGENT_LOG_FILE_ENABLED=true\n# off | preview | full (production always forces off)\nAGENT_LOCAL_LOG_CONTENT=preview\nAGENT_DETAILED_LOGS=false\nAGENT_OBSERVABILITY_ENABLED=true\nMODEL_PROVIDER=mock\n\n# LLM routing\nENABLE_REAL_LLM=true\nLLM_DEFAULT_PROVIDER=mock\n\n# Orchestrated path (recommended): YAML llm_routes.yaml + model_registry.yaml + env\n# deployment vars below are primary for model selection.\n# LLM_ROLE_CONFIG_JSON is LEGACY — used ONLY when ENABLE_ORCHESTRATED_DOUBT_SOLVER=false.\n#\n# Preferred alias-based legacy JSON (no API keys, no inline deployments):\n# LLM_ROLE_CONFIG_JSON={\"classifier.default\":\"doubt_solver_classifier\",\"classifier.strong\":\"doubt_solver_classifier_strong\",\"math.basic\":\"openai_gpt_4_1_mini\",\"math.intermediate\":\"openai_gpt_4_1_mini\",\"math.advanced\":\"deepseek_v4pro\",\"reasoning.basic\":\"openai_gpt_4_1_mini\",\"reasoning.intermediate\":\"openai_o4_mini\",\"reasoning.advanced\":\"openai_o4_mini\",\"general.default\":\"openai_gpt_4_1_mini\",\"current_affairs.default\":\"openai_gpt_4_1_mini\",\"doubt_solver_classifier\":\"doubt_solver_classifier\",\"doubt_solver_generator\":\"general_fast_generator\"}\n#\n# Deprecated inline provider format (do not use — stale deployments):\n# LLM_ROLE_CONFIG_JSON={\"doubt_solver_classifier\":{\"provider\":\"azure_openai\",\"model_label\":\"classifier\",\"deployment\":\"gpt-4.1-mini\",\"temperature\":0,\"max_tokens\":650,\"supports_streaming\":false}}\nLLM_ROLE_CONFIG_JSON={}\n\n# Orchestrated doubt solver — uses YAML routes/registry (ignores LLM_ROLE_CONFIG_JSON)\nENABLE_ORCHESTRATED_DOUBT_SOLVER=false\n\n# Azure OpenAI (required when provider=azure_openai)\n# Endpoint must end with /openai/v1 for azure_foundry_v1 profile.\nAZURE_OPENAI_ENDPOINT=\nAZURE_OPENAI_API_KEY=\nAZURE_OPENAI_API_VERSION=\n\n# Azure deployment names — must match Azure portal / Foundry deployment names.\n# Public model names (e.g. o4-mini, o3) may NOT equal your deployment name.\n# Example: if Azure deployment is named \"meritranker-o4-mini\", set:\n# AZURE_OPENAI_DEPLOYMENT_O4_MINI=meritranker-o4-mini\nAZURE_OPENAI_DEPLOYMENT_GPT_4_1=gpt-4.1\nAZURE_OPENAI_DEPLOYMENT_GPT_4_1_MINI=gpt-4.1-mini\nAZURE_OPENAI_DEPLOYMENT_O4_MINI=o4-mini\nAZURE_OPENAI_DEPLOYMENT_O3=o3\n# When true, send reasoning_effort to Azure reasoning models that opt in via\n# model_registry send_reasoning_effort. Default false — metadata only.\nAZURE_OPENAI_SEND_REASONING_EFFORT=false\n# Optional GPT-5.x fallback — leave blank until provisioned in Azure\nAZURE_OPENAI_DEPLOYMENT_GPT_5_4=\nAZURE_OPENAI_DEPLOYMENT_GPT_5_4_MINI=\nAZURE_OPENAI_DEPLOYMENT_GPT_5_5=\n\n# OpenAI native (required when provider=openai)\nOPENAI_API_KEY=\nOPENAI_BASE_URL=\n\n# Bedrock Knowledge Base retrieval (Part 7)\nENABLE_KB_RETRIEVAL=false\nBEDROCK_KB_ID=\nBEDROCK_KB_REGION=\nBEDROCK_KB_MAX_RESULTS=5\nBEDROCK_KB_MIN_SCORE=\n\n# DynamoDB record fetch (Part 8)\nENABLE_DYNAMODB_FETCH=false\nDYNAMODB_QUESTION_TABLE=\nDYNAMODB_PATTERN_TABLE=\nDYNAMODB_DEFAULT_INDEX=\nDYNAMODB_REGION=\n\n# Context builder (Part 9)\nDOUBT_SOLVER_MAX_CONTEXT_CHARS=6000\nCONTEXT_TOPIC_HINT_CONFIDENCE_THRESHOLD=0.85\nCONTEXT_MAX_RETRIEVAL_TAGS=10\nDOUBT_SOLVER_CLASSIFIER_CONFIDENCE_THRESHOLD=0.93\n\n# DeepSeek (optional — provider_not_configured at invoke time if key missing)\nDEEPSEEK_API_KEY=\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_TIMEOUT_SECONDS=60\nDEEPSEEK_DEFAULT_MODEL=deepseek-chat\nDEEPSEEK_REASONER_MODEL=deepseek-reasoner\nDEEPSEEK_ADVANCED_MODEL=deepseek-reasoner\nDEEPSEEK_V4PRO_MODEL=deepseek-reasoner\nLLM_ENABLE_DEEPSEEK_ROUTES=false\n\n# Azure-hosted DeepSeek / Azure AI Foundry compatible deployment (optional)\n# Inactive unless a route selects a deepseek_azure_* model alias.\n# Deployment names must match actual Azure deployment names, not public model names.\nAZURE_DEEPSEEK_API_KEY=\nAZURE_DEEPSEEK_ENDPOINT=\nAZURE_DEEPSEEK_API_VERSION=\nAZURE_DEEPSEEK_TIMEOUT_SECONDS=90\nAZURE_DEEPSEEK_REASONER_DEPLOYMENT=\nAZURE_DEEPSEEK_CHAT_DEPLOYMENT=\nAZURE_DEEPSEEK_ADVANCED_DEPLOYMENT=\n\n# Gemini (optional — provider_not_configured at invoke time if key missing)\nGEMINI_API_KEY=\nGEMINI_BASE_URL=\nGEMINI_TIMEOUT_SECONDS=30\nGEMINI_DEFAULT_MODEL=gemini-2.5-flash-lite\nGEMINI_IMAGE_MODEL=gemini-2.5-flash-lite\nGEMINI_TEXT_MODEL=gemini-2.5-flash\nLLM_ENABLE_GEMINI_ROUTES=false\n\n# Image-question classification (isolated; disabled means no Gemini image call)\nIMAGE_CLASSIFIER_ENABLED=false\nIMAGE_CLASSIFIER_PROVIDER=gemini\nIMAGE_CLASSIFIER_MODEL=gemini-3.1-flash-lite\nGOOGLE_GEMINI_API_KEY=\nIMAGE_CLASSIFIER_TIMEOUT_MS=15000\nIMAGE_CLASSIFIER_MAX_IMAGE_BYTES=8388608\nIMAGE_CLASSIFIER_MAX_OUTPUT_TOKENS=1400\nIMAGE_CLASSIFIER_CACHE_TTL_SECONDS=300\nIMAGE_CLASSIFIER_MIN_CONFIDENCE=0.65\nIMAGE_CLASSIFIER_MAX_DIMENSION=2400\n\n# Generator answer quality (validation + one rewrite on failure)\nANSWER_QUALITY_VALIDATION_ENABLED=true\nANSWER_QUALITY_REWRITE_ENABLED=true\nANSWER_QUALITY_MATH_INTERMEDIATE_MAX_CHARS=2200\nANSWER_QUALITY_MAX_REWRITE_ATTEMPTS=1\nANSWER_QUALITY_MAX_VISIBLE_STEPS=8\nANSWER_QUALITY_MAX_DISPLAY_MATH_BLOCKS=6\nANSWER_QUALITY_MAX_MATH_LINE_CHARS=300\n\n# Adaptive verified streaming. `adaptive` permits live provider chunks only for an\n# explicitly low-risk profile; all other answers are privately generated, verified,\n# and replayed as Markdown-safe chunks.\nANSWER_DELIVERY_POLICY=adaptive\nANSWER_LIVE_STREAM_MIN_CLASSIFIER_CONFIDENCE=0.93\nANSWER_LIVE_STREAM_MIN_IMAGE_CONFIDENCE=0.90\nANSWER_LIVE_STREAM_MIN_PATTERN_CONFIDENCE=0.90\nANSWER_LIVE_STREAM_MAX_DIFFICULTY=basic\nANSWER_VERIFIER_ENABLED=true\nANSWER_VERIFIER_MAX_REPAIR_ATTEMPTS=1\nANSWER_REPLAY_MAX_CHUNK_CHARS=600\nANSWER_STREAM_HEARTBEAT_INTERVAL_SECONDS=10\n# Production guard only. Keep false unless a reviewed production rollout approves it.\nANSWER_ALLOW_ALWAYS_LIVE_IN_PRODUCTION=false\n\n# Web search\nWEB_SEARCH_ENABLED=false\nWEB_SEARCH_PROVIDER=tavily\nTAVILY_API_KEY=\nWEB_SEARCH_TIMEOUT_SECONDS=8\nWEB_SEARCH_MAX_RESULTS=5\nWEB_SEARCH_MAX_CONTEXT_CHARS=2500\nWEB_SEARCH_SOURCE_STRICTNESS=authoritative_first\nWEB_SEARCH_ALLOW_GENERIC_FALLBACK=false\nWEB_SEARCH_ALLOW_EXAM_PREP_FALLBACK=true\nWEB_SEARCH_EXAM_PREP_MAX_SELECTED_RESULTS=2\nWEB_SEARCH_REQUIRE_OFFICIAL_FOR_EXAM_UPDATES=true\nWEB_SEARCH_REQUIRE_TRUSTED_FOR_CURRENT_AFFAIRS=true\nWEB_SEARCH_MIN_TRUSTED_RESULTS=1\nWEB_SEARCH_DEFAULT_RECENT_DAYS=30\nWEB_SEARCH_SEARCH_DEPTH=basic\nWEB_SEARCH_MAX_SELECTED_RESULTS=3\nWEB_SEARCH_RERANK_MIN_SCORE=0.65\nWEB_SEARCH_ENABLE_EXTRACT=false\nWEB_SEARCH_EXTRACT_MAX_URLS=2\nWEB_SEARCH_EXTRACT_DEPTH=basic\n\n# AWS credentials\nAWS_REGION=\n"}, "4e90dbca0144b677a7489733b15a365fcf6dab1b": {"t": 1785770317.8528957, "n": 6485, "h": "6507e9618074ceac", "c": "APP_ENV=local\nLOG_LEVEL=INFO\nAGENT_LOG_LEVEL=INFO\nAGENT_LOG_FORMAT=pretty_and_json_file\nAGENT_LOG_FILE_ENABLED=true\n# off | preview | full (production always forces off)\nAGENT_LOCAL_LOG_CONTENT=preview\nAGENT_DETAILED_LOGS=false\nAGENT_OBSERVABILITY_ENABLED=true\nMODEL_PROVIDER=mock\n\n# LLM routing\nENABLE_REAL_LLM=true\nLLM_DEFAULT_PROVIDER=mock\n\n# Orchestrated path (recommended): YAML llm_routes.yaml + model_registry.yaml + env\n# deployment vars below are primary for model selection.\n# LLM_ROLE_CONFIG_JSON is LEGACY — used ONLY when ENABLE_ORCHESTRATED_DOUBT_SOLVER=false.\n#\n# Preferred alias-based legacy JSON (no API keys, no inline deployments):\n# LLM_ROLE_CONFIG_JSON={\"classifier.default\":\"doubt_solver_classifier\",\"classifier.strong\":\"doubt_solver_classifier_strong\",\"math.basic\":\"openai_gpt_4_1_mini\",\"math.intermediate\":\"openai_gpt_4_1_mini\",\"math.advanced\":\"deepseek_v4pro\",\"reasoning.basic\":\"openai_gpt_4_1_mini\",\"reasoning.intermediate\":\"openai_o4_mini\",\"reasoning.advanced\":\"openai_o4_mini\",\"general.default\":\"openai_gpt_4_1_mini\",\"current_affairs.default\":\"openai_gpt_4_1_mini\",\"doubt_solver_classifier\":\"doubt_solver_classifier\",\"doubt_solver_generator\":\"general_fast_generator\"}\n#\n# Deprecated inline provider format (do not use — stale deployments):\n# LLM_ROLE_CONFIG_JSON={\"doubt_solver_classifier\":{\"provider\":\"azure_openai\",\"model_label\":\"classifier\",\"deployment\":\"gpt-4.1-mini\",\"temperature\":0,\"max_tokens\":650,\"supports_streaming\":false}}\nLLM_ROLE_CONFIG_JSON={}\n\n# Orchestrated doubt solver — uses YAML routes/registry (ignores LLM_ROLE_CONFIG_JSON)\nENABLE_ORCHESTRATED_DOUBT_SOLVER=false\n\n# Azure OpenAI (required when provider=azure_openai)\n# Endpoint must end with /openai/v1 for azure_foundry_v1 profile.\nAZURE_OPENAI_ENDPOINT=\nAZURE_OPENAI_API_KEY=\nAZURE_OPENAI_API_VERSION=\n\n# Azure deployment names — must match Azure portal / Foundry deployment names.\n# Public model names (e.g. o4-mini, o3) may NOT equal your deployment name.\n# Example: if Azure deployment is named \"meritranker-o4-mini\", set:\n# AZURE_OPENAI_DEPLOYMENT_O4_MINI=meritranker-o4-mini\nAZURE_OPENAI_DEPLOYMENT_GPT_4_1=gpt-4.1\nAZURE_OPENAI_DEPLOYMENT_GPT_4_1_MINI=gpt-4.1-mini\nAZURE_OPENAI_DEPLOYMENT_O4_MINI=o4-mini\nAZURE_OPENAI_DEPLOYMENT_O3=o3\n# When true, send reasoning_effort to Azure reasoning models that opt in via\n# model_registry send_reasoning_effort. Default false — metadata only.\nAZURE_OPENAI_SEND_REASONING_EFFORT=false\n# Optional GPT-5.x fallback — leave blank until provisioned in Azure\nAZURE_OPENAI_DEPLOYMENT_GPT_5_4=\nAZURE_OPENAI_DEPLOYMENT_GPT_5_4_MINI=\nAZURE_OPENAI_DEPLOYMENT_GPT_5_5=\n\n# OpenAI native (required when provider=openai)\nOPENAI_API_KEY=\nOPENAI_BASE_URL=\n\n# Bedrock Knowledge Base retrieval (Part 7)\nENABLE_KB_RETRIEVAL=false\nBEDROCK_KB_ID=\nBEDROCK_KB_REGION=\nBEDROCK_KB_MAX_RESULTS=5\nBEDROCK_KB_MIN_SCORE=\n\n# DynamoDB record fetch (Part 8)\nENABLE_DYNAMODB_FETCH=false\nDYNAMODB_QUESTION_TABLE=\nDYNAMODB_PATTERN_TABLE=\nDYNAMODB_DEFAULT_INDEX=\nDYNAMODB_REGION=\n\n# Context builder (Part 9)\nDOUBT_SOLVER_MAX_CONTEXT_CHARS=6000\nCONTEXT_TOPIC_HINT_CONFIDENCE_THRESHOLD=0.85\nCONTEXT_MAX_RETRIEVAL_TAGS=10\nDOUBT_SOLVER_CLASSIFIER_CONFIDENCE_THRESHOLD=0.93\n\n# DeepSeek (optional — provider_not_configured at invoke time if key missing)\nDEEPSEEK_API_KEY=\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_TIMEOUT_SECONDS=60\nDEEPSEEK_DEFAULT_MODEL=deepseek-chat\nDEEPSEEK_REASONER_MODEL=deepseek-reasoner\nDEEPSEEK_ADVANCED_MODEL=deepseek-reasoner\nDEEPSEEK_V4PRO_MODEL=deepseek-reasoner\nLLM_ENABLE_DEEPSEEK_ROUTES=false\n\n# Azure-hosted DeepSeek / Azure AI Foundry compatible deployment (optional)\n# Inactive unless a route selects a deepseek_azure_* model alias.\n# Deployment names must match actual Azure deployment names, not public model names.\nAZURE_DEEPSEEK_API_KEY=\nAZURE_DEEPSEEK_ENDPOINT=\nAZURE_DEEPSEEK_API_VERSION=\nAZURE_DEEPSEEK_TIMEOUT_SECONDS=90\nAZURE_DEEPSEEK_REASONER_DEPLOYMENT=\nAZURE_DEEPSEEK_CHAT_DEPLOYMENT=\nAZURE_DEEPSEEK_ADVANCED_DEPLOYMENT=\n\n# Gemini (optional — provider_not_configured at invoke time if key missing)\nGEMINI_API_KEY=\nGEMINI_BASE_URL=\nGEMINI_TIMEOUT_SECONDS=30\nGEMINI_DEFAULT_MODEL=gemini-2.5-flash-lite\nGEMINI_IMAGE_MODEL=gemini-2.5-flash-lite\nGEMINI_TEXT_MODEL=gemini-2.5-flash\nLLM_ENABLE_GEMINI_ROUTES=false\n\n# Image-question classification (isolated; disabled means no Gemini image call)\nIMAGE_CLASSIFIER_ENABLED=false\nIMAGE_CLASSIFIER_PROVIDER=gemini\nIMAGE_CLASSIFIER_MODEL=gemini-3.1-flash-lite\nGOOGLE_GEMINI_API_KEY=\nIMAGE_CLASSIFIER_TIMEOUT_MS=15000\nIMAGE_CLASSIFIER_MAX_IMAGE_BYTES=8388608\nIMAGE_CLASSIFIER_MAX_OUTPUT_TOKENS=1400\nIMAGE_CLASSIFIER_CACHE_TTL_SECONDS=300\nIMAGE_CLASSIFIER_MIN_CONFIDENCE=0.65\nIMAGE_CLASSIFIER_MAX_DIMENSION=2400\n\n# Generator answer quality (validation + one rewrite on failure)\nANSWER_QUALITY_VALIDATION_ENABLED=true\nANSWER_QUALITY_REWRITE_ENABLED=true\nANSWER_QUALITY_MATH_INTERMEDIATE_MAX_CHARS=2200\nANSWER_QUALITY_MAX_REWRITE_ATTEMPTS=1\nANSWER_QUALITY_MAX_VISIBLE_STEPS=8\nANSWER_QUALITY_MAX_DISPLAY_MATH_BLOCKS=6\nANSWER_QUALITY_MAX_MATH_LINE_CHARS=300\n\n# Adaptive verified streaming. `adaptive` permits live provider chunks only for an\n# explicitly low-risk profile; all other answers are privately generated, verified,\n# and replayed as Markdown-safe chunks.\nANSWER_DELIVERY_POLICY=adaptive\nANSWER_LIVE_STREAM_MIN_CLASSIFIER_CONFIDENCE=0.93\nANSWER_LIVE_STREAM_MIN_IMAGE_CONFIDENCE=0.90\nANSWER_LIVE_STREAM_MIN_PATTERN_CONFIDENCE=0.90\nANSWER_LIVE_STREAM_MAX_DIFFICULTY=basic\nANSWER_VERIFIER_ENABLED=true\nANSWER_VERIFIER_MAX_REPAIR_ATTEMPTS=1\nANSWER_REPLAY_MAX_CHUNK_CHARS=600\nANSWER_STREAM_HEARTBEAT_INTERVAL_SECONDS=10\n# Production guard only. Keep false unless a reviewed production rollout approves it.\nANSWER_ALLOW_ALWAYS_LIVE_IN_PRODUCTION=false\n\n# Web search\nWEB_SEARCH_ENABLED=false\nWEB_SEARCH_PROVIDER=tavily\nTAVILY_API_KEY=\nWEB_SEARCH_TIMEOUT_SECONDS=8\nWEB_SEARCH_MAX_RESULTS=5\nWEB_SEARCH_MAX_CONTEXT_CHARS=2500\nWEB_SEARCH_SOURCE_STRICTNESS=authoritative_first\nWEB_SEARCH_ALLOW_GENERIC_FALLBACK=false\nWEB_SEARCH_ALLOW_EXAM_PREP_FALLBACK=true\nWEB_SEARCH_EXAM_PREP_MAX_SELECTED_RESULTS=2\nWEB_SEARCH_REQUIRE_OFFICIAL_FOR_EXAM_UPDATES=true\nWEB_SEARCH_REQUIRE_TRUSTED_FOR_CURRENT_AFFAIRS=true\nWEB_SEARCH_MIN_TRUSTED_RESULTS=1\nWEB_SEARCH_DEFAULT_RECENT_DAYS=30\nWEB_SEARCH_SEARCH_DEPTH=basic\nWEB_SEARCH_MAX_SELECTED_RESULTS=3\nWEB_SEARCH_RERANK_MIN_SCORE=0.65\nWEB_SEARCH_ENABLE_EXTRACT=false\nWEB_SEARCH_EXTRACT_MAX_URLS=2\nWEB_SEARCH_EXTRACT_DEPTH=basic\n\n# AWS credentials\nAWS_REGION=\n"}, "aef8307622813884ef7e13db8852c5110f7382a2": {"t": 1785770319.4644706, "n": 6254, "h": "2958d2fe628a670d", "c": "APP_ENV=local\nLOG_LEVEL=INFO\nMODEL_PROVIDER=mock\n\n# LLM routing\nENABLE_REAL_LLM=false\nLLM_DEFAULT_PROVIDER=mock\n\n# Orchestrated path (recommended): YAML llm_routes.yaml + model_registry.yaml + env\n# deployment vars below are primary for model selection.\n# LLM_ROLE_CONFIG_JSON is LEGACY — used ONLY when ENABLE_ORCHESTRATED_DOUBT_SOLVER=false.\n#\n# Preferred alias-based legacy JSON (no API keys, no inline deployments):\n# LLM_ROLE_CONFIG_JSON={\"classifier.default\":\"doubt_solver_classifier\",\"classifier.strong\":\"doubt_solver_classifier_strong\",\"math.basic\":\"openai_gpt_4_1_mini\",\"math.intermediate\":\"openai_gpt_4_1_mini\",\"math.advanced\":\"deepseek_v4pro\",\"reasoning.basic\":\"openai_gpt_4_1_mini\",\"reasoning.intermediate\":\"openai_o4_mini\",\"reasoning.advanced\":\"openai_o4_mini\",\"general.default\":\"openai_gpt_4_1_mini\",\"current_affairs.default\":\"openai_gpt_4_1_mini\",\"doubt_solver_classifier\":\"doubt_solver_classifier\",\"doubt_solver_generator\":\"general_fast_generator\"}\n#\n# Deprecated inline provider format (do not use — stale deployments):\n# LLM_ROLE_CONFIG_JSON={\"doubt_solver_classifier\":{\"provider\":\"azure_openai\",\"model_label\":\"classifier\",\"deployment\":\"gpt-4.1-mini\",\"temperature\":0,\"max_tokens\":650,\"supports_streaming\":false}}\nLLM_ROLE_CONFIG_JSON={}\n\n# Orchestrated doubt solver — uses YAML routes/registry (ignores LLM_ROLE_CONFIG_JSON)\nENABLE_ORCHESTRATED_DOUBT_SOLVER=false\n\n# Azure OpenAI (required when provider=azure_openai)\n# Endpoint must end with /openai/v1 for azure_foundry_v1 profile.\nAZURE_OPENAI_ENDPOINT=\nAZURE_OPENAI_API_KEY=\nAZURE_OPENAI_API_VERSION=\n\n# Azure deployment names — must match Azure portal / Foundry deployment names.\n# Public model names (e.g. o4-mini, o3) may NOT equal your deployment name.\n# Example: if Azure deployment is named \"meritranker-o4-mini\", set:\n# AZURE_OPENAI_DEPLOYMENT_O4_MINI=meritranker-o4-mini\nAZURE_OPENAI_DEPLOYMENT_GPT_4_1=gpt-4.1\nAZURE_OPENAI_DEPLOYMENT_GPT_4_1_MINI=gpt-4.1-mini\nAZURE_OPENAI_DEPLOYMENT_O4_MINI=o4-mini\nAZURE_OPENAI_DEPLOYMENT_O3=o3\n# When true, send reasoning_effort to Azure reasoning models that opt in via\n# model_registry send_reasoning_effort. Default false — metadata only.\nAZURE_OPENAI_SEND_REASONING_EFFORT=false\n# Optional GPT-5.x fallback — leave blank until provisioned in Azure\nAZURE_OPENAI_DEPLOYMENT_GPT_5_4=\nAZURE_OPENAI_DEPLOYMENT_GPT_5_4_MINI=\nAZURE_OPENAI_DEPLOYMENT_GPT_5_5=\n\n# OpenAI native (required when provider=openai)\nOPENAI_API_KEY=\nOPENAI_BASE_URL=\n\n# Bedrock Knowledge Base retrieval (Part 7)\nENABLE_KB_RETRIEVAL=false\nBEDROCK_KB_ID=\nBEDROCK_KB_REGION=\nBEDROCK_KB_MAX_RESULTS=5\nBEDROCK_KB_MIN_SCORE=\n\n# DynamoDB record fetch (Part 8)\nENABLE_DYNAMODB_FETCH=false\nDYNAMODB_QUESTION_TABLE=\nDYNAMODB_PATTERN_TABLE=\nDYNAMODB_DEFAULT_INDEX=\nDYNAMODB_REGION=\n\n# Context builder (Part 9)\nDOUBT_SOLVER_MAX_CONTEXT_CHARS=6000\nCONTEXT_TOPIC_HINT_CONFIDENCE_THRESHOLD=0.85\nCONTEXT_MAX_RETRIEVAL_TAGS=10\nDOUBT_SOLVER_CLASSIFIER_CONFIDENCE_THRESHOLD=0.93\n\n# DeepSeek (optional — provider_not_configured at invoke time if key missing)\nDEEPSEEK_API_KEY=\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_TIMEOUT_SECONDS=60\nDEEPSEEK_DEFAULT_MODEL=deepseek-chat\nDEEPSEEK_REASONER_MODEL=deepseek-reasoner\nDEEPSEEK_ADVANCED_MODEL=deepseek-reasoner\nDEEPSEEK_V4PRO_MODEL=deepseek-reasoner\nLLM_ENABLE_DEEPSEEK_ROUTES=false\n\n# Azure-hosted DeepSeek / Azure AI Foundry compatible deployment (optional)\n# Inactive unless a route selects a deepseek_azure_* model alias.\n# Deployment names must match actual Azure deployment names, not public model names.\nAZURE_DEEPSEEK_API_KEY=\nAZURE_DEEPSEEK_ENDPOINT=\nAZURE_DEEPSEEK_API_VERSION=\nAZURE_DEEPSEEK_TIMEOUT_SECONDS=90\nAZURE_DEEPSEEK_REASONER_DEPLOYMENT=\nAZURE_DEEPSEEK_CHAT_DEPLOYMENT=\nAZURE_DEEPSEEK_ADVANCED_DEPLOYMENT=\n\n# Gemini (optional — provider_not_configured at invoke time if key missing)\nGEMINI_API_KEY=\nGEMINI_BASE_URL=\nGEMINI_TIMEOUT_SECONDS=30\nGEMINI_DEFAULT_MODEL=gemini-2.5-flash-lite\nGEMINI_IMAGE_MODEL=gemini-2.5-flash-lite\nGEMINI_TEXT_MODEL=gemini-2.5-flash\nLLM_ENABLE_GEMINI_ROUTES=false\n\n# Image-question classification (isolated; disabled means no Gemini image call)\nIMAGE_CLASSIFIER_ENABLED=false\nIMAGE_CLASSIFIER_PROVIDER=gemini\nIMAGE_CLASSIFIER_MODEL=gemini-3.1-flash-lite\nGOOGLE_GEMINI_API_KEY=\nIMAGE_CLASSIFIER_TIMEOUT_MS=15000\nIMAGE_CLASSIFIER_MAX_IMAGE_BYTES=8388608\nIMAGE_CLASSIFIER_MAX_OUTPUT_TOKENS=1400\nIMAGE_CLASSIFIER_CACHE_TTL_SECONDS=300\nIMAGE_CLASSIFIER_MIN_CONFIDENCE=0.65\nIMAGE_CLASSIFIER_MAX_DIMENSION=2400\n\n# Generator answer quality (validation + one rewrite on failure)\nANSWER_QUALITY_VALIDATION_ENABLED=true\nANSWER_QUALITY_REWRITE_ENABLED=true\nANSWER_QUALITY_MATH_INTERMEDIATE_MAX_CHARS=2200\nANSWER_QUALITY_MAX_REWRITE_ATTEMPTS=1\nANSWER_QUALITY_MAX_VISIBLE_STEPS=8\nANSWER_QUALITY_MAX_DISPLAY_MATH_BLOCKS=6\nANSWER_QUALITY_MAX_MATH_LINE_CHARS=300\n\n# Adaptive verified streaming. `adaptive` permits live provider chunks only for an\n# explicitly low-risk profile; all other answers are privately generated, verified,\n# and replayed as Markdown-safe chunks.\nANSWER_DELIVERY_POLICY=adaptive\nANSWER_LIVE_STREAM_MIN_CLASSIFIER_CONFIDENCE=0.93\nANSWER_LIVE_STREAM_MIN_IMAGE_CONFIDENCE=0.90\nANSWER_LIVE_STREAM_MIN_PATTERN_CONFIDENCE=0.90\nANSWER_LIVE_STREAM_MAX_DIFFICULTY=basic\nANSWER_VERIFIER_ENABLED=true\nANSWER_VERIFIER_MAX_REPAIR_ATTEMPTS=1\nANSWER_REPLAY_MAX_CHUNK_CHARS=600\nANSWER_STREAM_HEARTBEAT_INTERVAL_SECONDS=10\n# Production guard only. Keep false unless a reviewed production rollout approves it.\nANSWER_ALLOW_ALWAYS_LIVE_IN_PRODUCTION=false\n\n# Web search\nWEB_SEARCH_ENABLED=false\nWEB_SEARCH_PROVIDER=tavily\nTAVILY_API_KEY=\nWEB_SEARCH_TIMEOUT_SECONDS=8\nWEB_SEARCH_MAX_RESULTS=5\nWEB_SEARCH_MAX_CONTEXT_CHARS=2500\nWEB_SEARCH_SOURCE_STRICTNESS=authoritative_first\nWEB_SEARCH_ALLOW_GENERIC_FALLBACK=false\nWEB_SEARCH_ALLOW_EXAM_PREP_FALLBACK=true\nWEB_SEARCH_EXAM_PREP_MAX_SELECTED_RESULTS=2\nWEB_SEARCH_REQUIRE_OFFICIAL_FOR_EXAM_UPDATES=true\nWEB_SEARCH_REQUIRE_TRUSTED_FOR_CURRENT_AFFAIRS=true\nWEB_SEARCH_MIN_TRUSTED_RESULTS=1\nWEB_SEARCH_DEFAULT_RECENT_DAYS=30\nWEB_SEARCH_SEARCH_DEPTH=basic\nWEB_SEARCH_MAX_SELECTED_RESULTS=3\nWEB_SEARCH_RERANK_MIN_SCORE=0.65\nWEB_SEARCH_ENABLE_EXTRACT=false\nWEB_SEARCH_EXTRACT_MAX_URLS=2\nWEB_SEARCH_EXTRACT_DEPTH=basic\n\n# AWS credentials\nAWS_REGION=\n"}, "dd7f208a15bb986c78a7a06193e1ea817dfc8942": {"t": 1785770320.891998, "n": 5116, "h": "3bd02ded5cff3404", "c": "APP_ENV=local\nLOG_LEVEL=INFO\nMODEL_PROVIDER=mock\n\n# LLM routing\nENABLE_REAL_LLM=false\nLLM_DEFAULT_PROVIDER=mock\n\n# Orchestrated path (recommended): YAML llm_routes.yaml + model_registry.yaml + env\n# deployment vars below are primary for model selection.\n# LLM_ROLE_CONFIG_JSON is LEGACY — used ONLY when ENABLE_ORCHESTRATED_DOUBT_SOLVER=false.\n#\n# Preferred alias-based legacy JSON (no API keys, no inline deployments):\n# LLM_ROLE_CONFIG_JSON={\"classifier.default\":\"doubt_solver_classifier\",\"classifier.strong\":\"doubt_solver_classifier_strong\",\"math.basic\":\"openai_gpt_4_1_mini\",\"math.intermediate\":\"openai_gpt_4_1_mini\",\"math.advanced\":\"deepseek_v4pro\",\"reasoning.basic\":\"openai_gpt_4_1_mini\",\"reasoning.intermediate\":\"openai_o4_mini\",\"reasoning.advanced\":\"openai_o4_mini\",\"general.default\":\"openai_gpt_4_1_mini\",\"current_affairs.default\":\"openai_gpt_4_1_mini\",\"doubt_solver_classifier\":\"doubt_solver_classifier\",\"doubt_solver_generator\":\"general_fast_generator\"}\n#\n# Deprecated inline provider format (do not use — stale deployments):\n# LLM_ROLE_CONFIG_JSON={\"doubt_solver_classifier\":{\"provider\":\"azure_openai\",\"model_label\":\"classifier\",\"deployment\":\"gpt-4.1-mini\",\"temperature\":0,\"max_tokens\":650,\"supports_streaming\":false}}\nLLM_ROLE_CONFIG_JSON={}\n\n# Orchestrated doubt solver — uses YAML routes/registry (ignores LLM_ROLE_CONFIG_JSON)\nENABLE_ORCHESTRATED_DOUBT_SOLVER=false\n\n# Azure OpenAI (required when provider=azure_openai)\n# Endpoint must end with /openai/v1 for azure_foundry_v1 profile.\nAZURE_OPENAI_ENDPOINT=\nAZURE_OPENAI_API_KEY=\nAZURE_OPENAI_API_VERSION=\n\n# Azure deployment names — must match Azure portal / Foundry deployment names.\n# Public model names (e.g. o4-mini, o3) may NOT equal your deployment name.\n# Example: if Azure deployment is named \"meritranker-o4-mini\", set:\n# AZURE_OPENAI_DEPLOYMENT_O4_MINI=meritranker-o4-mini\nAZURE_OPENAI_DEPLOYMENT_GPT_4_1=gpt-4.1\nAZURE_OPENAI_DEPLOYMENT_GPT_4_1_MINI=gpt-4.1-mini\nAZURE_OPENAI_DEPLOYMENT_O4_MINI=o4-mini\nAZURE_OPENAI_DEPLOYMENT_O3=o3\n# When true, send reasoning_effort to Azure reasoning models that opt in via\n# model_registry send_reasoning_effort. Default false — metadata only.\nAZURE_OPENAI_SEND_REASONING_EFFORT=false\n# Optional GPT-5.x fallback — leave blank until provisioned in Azure\nAZURE_OPENAI_DEPLOYMENT_GPT_5_4=\nAZURE_OPENAI_DEPLOYMENT_GPT_5_4_MINI=\nAZURE_OPENAI_DEPLOYMENT_GPT_5_5=\n\n# OpenAI native (required when provider=openai)\nOPENAI_API_KEY=\nOPENAI_BASE_URL=\n\n# Bedrock Knowledge Base retrieval (Part 7)\nENABLE_KB_RETRIEVAL=false\nBEDROCK_KB_ID=\nBEDROCK_KB_REGION=\nBEDROCK_KB_MAX_RESULTS=5\nBEDROCK_KB_MIN_SCORE=\n\n# DynamoDB record fetch (Part 8)\nENABLE_DYNAMODB_FETCH=false\nDYNAMODB_QUESTION_TABLE=\nDYNAMODB_PATTERN_TABLE=\nDYNAMODB_DEFAULT_INDEX=\nDYNAMODB_REGION=\n\n# Context builder (Part 9)\nDOUBT_SOLVER_MAX_CONTEXT_CHARS=6000\nCONTEXT_TOPIC_HINT_CONFIDENCE_THRESHOLD=0.85\nCONTEXT_MAX_RETRIEVAL_TAGS=10\nDOUBT_SOLVER_CLASSIFIER_CONFIDENCE_THRESHOLD=0.93\n\n# DeepSeek (optional — provider_not_configured at invoke time if key missing)\nDEEPSEEK_API_KEY=\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_TIMEOUT_SECONDS=60\nDEEPSEEK_DEFAULT_MODEL=deepseek-chat\nDEEPSEEK_REASONER_MODEL=deepseek-reasoner\nDEEPSEEK_ADVANCED_MODEL=deepseek-reasoner\nDEEPSEEK_V4PRO_MODEL=deepseek-reasoner\nLLM_ENABLE_DEEPSEEK_ROUTES=false\n\n# Azure-hosted DeepSeek / Azure AI Foundry compatible deployment (optional)\n# Inactive unless a route selects a deepseek_azure_* model alias.\n# Deployment names must match actual Azure deployment names, not public model names.\nAZURE_DEEPSEEK_API_KEY=\nAZURE_DEEPSEEK_ENDPOINT=\nAZURE_DEEPSEEK_API_VERSION=\nAZURE_DEEPSEEK_TIMEOUT_SECONDS=90\nAZURE_DEEPSEEK_REASONER_DEPLOYMENT=\nAZURE_DEEPSEEK_CHAT_DEPLOYMENT=\nAZURE_DEEPSEEK_ADVANCED_DEPLOYMENT=\n\n# Gemini (optional — provider_not_configured at invoke time if key missing)\nGEMINI_API_KEY=\nGEMINI_BASE_URL=\nGEMINI_TIMEOUT_SECONDS=30\nGEMINI_DEFAULT_MODEL=gemini-2.5-flash-lite\nGEMINI_IMAGE_MODEL=gemini-2.5-flash-lite\nGEMINI_TEXT_MODEL=gemini-2.5-flash\nLLM_ENABLE_GEMINI_ROUTES=false\n\n# Generator answer quality (validation + one rewrite on failure)\nANSWER_QUALITY_VALIDATION_ENABLED=true\nANSWER_QUALITY_REWRITE_ENABLED=true\nANSWER_QUALITY_MATH_INTERMEDIATE_MAX_CHARS=2200\nANSWER_QUALITY_MAX_REWRITE_ATTEMPTS=1\nANSWER_QUALITY_MAX_VISIBLE_STEPS=8\nANSWER_QUALITY_MAX_DISPLAY_MATH_BLOCKS=6\nANSWER_QUALITY_MAX_MATH_LINE_CHARS=300\n\n# Web search\nWEB_SEARCH_ENABLED=false\nWEB_SEARCH_PROVIDER=tavily\nTAVILY_API_KEY=\nWEB_SEARCH_TIMEOUT_SECONDS=8\nWEB_SEARCH_MAX_RESULTS=5\nWEB_SEARCH_MAX_CONTEXT_CHARS=2500\nWEB_SEARCH_SOURCE_STRICTNESS=authoritative_first\nWEB_SEARCH_ALLOW_GENERIC_FALLBACK=false\nWEB_SEARCH_ALLOW_EXAM_PREP_FALLBACK=true\nWEB_SEARCH_EXAM_PREP_MAX_SELECTED_RESULTS=2\nWEB_SEARCH_REQUIRE_OFFICIAL_FOR_EXAM_UPDATES=true\nWEB_SEARCH_REQUIRE_TRUSTED_FOR_CURRENT_AFFAIRS=true\nWEB_SEARCH_MIN_TRUSTED_RESULTS=1\nWEB_SEARCH_DEFAULT_RECENT_DAYS=30\nWEB_SEARCH_SEARCH_DEPTH=basic\nWEB_SEARCH_MAX_SELECTED_RESULTS=3\nWEB_SEARCH_RERANK_MIN_SCORE=0.65\nWEB_SEARCH_ENABLE_EXTRACT=false\nWEB_SEARCH_EXTRACT_MAX_URLS=2\nWEB_SEARCH_EXTRACT_DEPTH=basic\n\n# AWS credentials\nAWS_REGION=\n"}, "f55ad08c20e383e76b9a6180b95203cff36a9650": {"t": 1785770322.2139654, "n": 3963, "h": "7d92d5a3060d46bd", "c": "APP_ENV=local\nLOG_LEVEL=INFO\nMODEL_PROVIDER=mock\n\n# LLM routing\nENABLE_REAL_LLM=false\nLLM_DEFAULT_PROVIDER=mock\n\n# Orchestrated path (recommended): YAML llm_routes.yaml + model_registry.yaml are primary.\n# LLM_ROLE_CONFIG_JSON is used ONLY when ENABLE_ORCHESTRATED_DOUBT_SOLVER=false (legacy path).\n# Preferred format: role → model alias (strings), not raw provider deployments.\n# Example (alias-based, legacy model_router path):\n# LLM_ROLE_CONFIG_JSON={\"doubt_solver_classifier\":\"doubt_solver_classifier\",\"doubt_solver_generator\":\"general_fast_generator\",\"classifier.default\":\"doubt_solver_classifier\",\"classifier.strong\":\"doubt_solver_classifier_strong\",\"math.intermediate\":\"math_intermediate_generator\",\"experimental.gemini.text\":\"gemini_flash_text\"}\n# Legacy inline provider format (deprecated — use aliases above):\n# LLM_ROLE_CONFIG_JSON={\"doubt_solver_classifier\":{\"provider\":\"azure_openai\",\"model_label\":\"classifier\",\"deployment\":\"gpt-4.1-mini\",\"temperature\":0,\"max_tokens\":650,\"supports_streaming\":false}}\nLLM_ROLE_CONFIG_JSON={}\n\n# Orchestrated doubt solver — uses YAML routes/registry (ignores LLM_ROLE_CONFIG_JSON)\nENABLE_ORCHESTRATED_DOUBT_SOLVER=false\n\n# Azure OpenAI (required when provider=azure_openai)\n# Endpoint must end with /openai/v1 for azure_foundry_v1 profile.\nAZURE_OPENAI_ENDPOINT=\nAZURE_OPENAI_API_KEY=\nAZURE_OPENAI_API_VERSION=\n\n# Azure deployment names — must match Azure portal deployment names (not public model names).\n# Leave GPT-5.x blank until actually provisioned in Azure.\nAZURE_OPENAI_DEPLOYMENT_GPT_4_1=gpt-4.1\nAZURE_OPENAI_DEPLOYMENT_GPT_4_1_MINI=gpt-4.1-mini\nAZURE_OPENAI_DEPLOYMENT_GPT_5_4=\nAZURE_OPENAI_DEPLOYMENT_GPT_5_4_MINI=\nAZURE_OPENAI_DEPLOYMENT_GPT_5_5=\n\n# OpenAI native (required when provider=openai)\nOPENAI_API_KEY=\nOPENAI_BASE_URL=\n\n# Bedrock Knowledge Base retrieval (Part 7)\nENABLE_KB_RETRIEVAL=false\nBEDROCK_KB_ID=\nBEDROCK_KB_REGION=\nBEDROCK_KB_MAX_RESULTS=5\nBEDROCK_KB_MIN_SCORE=\n\n# DynamoDB record fetch (Part 8)\nENABLE_DYNAMODB_FETCH=false\nDYNAMODB_QUESTION_TABLE=\nDYNAMODB_PATTERN_TABLE=\nDYNAMODB_DEFAULT_INDEX=\nDYNAMODB_REGION=\n\n# Context builder (Part 9)\nDOUBT_SOLVER_MAX_CONTEXT_CHARS=6000\nCONTEXT_TOPIC_HINT_CONFIDENCE_THRESHOLD=0.85\nCONTEXT_MAX_RETRIEVAL_TAGS=10\nDOUBT_SOLVER_CLASSIFIER_CONFIDENCE_THRESHOLD=0.93\n\n# DeepSeek (optional — provider_not_configured at invoke time if key missing)\nDEEPSEEK_API_KEY=\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_TIMEOUT_SECONDS=60\nDEEPSEEK_DEFAULT_MODEL=deepseek-chat\nDEEPSEEK_REASONER_MODEL=deepseek-reasoner\nDEEPSEEK_ADVANCED_MODEL=deepseek-reasoner\nLLM_ENABLE_DEEPSEEK_ROUTES=false\n\n# Gemini (optional — provider_not_configured at invoke time if key missing)\nGEMINI_API_KEY=\nGEMINI_BASE_URL=\nGEMINI_TIMEOUT_SECONDS=30\nGEMINI_DEFAULT_MODEL=gemini-2.5-flash-lite\nGEMINI_IMAGE_MODEL=gemini-2.5-flash-lite\nGEMINI_TEXT_MODEL=gemini-2.5-flash\nLLM_ENABLE_GEMINI_ROUTES=false\n\n# Generator answer quality (validation + one rewrite on failure)\nANSWER_QUALITY_VALIDATION_ENABLED=true\nANSWER_QUALITY_REWRITE_ENABLED=true\nANSWER_QUALITY_MATH_INTERMEDIATE_MAX_CHARS=2200\nANSWER_QUALITY_MAX_REWRITE_ATTEMPTS=1\nANSWER_QUALITY_MAX_VISIBLE_STEPS=8\nANSWER_QUALITY_MAX_DISPLAY_MATH_BLOCKS=6\nANSWER_QUALITY_MAX_MATH_LINE_CHARS=300\n\n# Web search\nWEB_SEARCH_ENABLED=false\nWEB_SEARCH_PROVIDER=tavily\nTAVILY_API_KEY=\nWEB_SEARCH_TIMEOUT_SECONDS=8\nWEB_SEARCH_MAX_RESULTS=5\nWEB_SEARCH_MAX_CONTEXT_CHARS=2500\nWEB_SEARCH_SOURCE_STRICTNESS=authoritative_first\nWEB_SEARCH_ALLOW_GENERIC_FALLBACK=false\nWEB_SEARCH_ALLOW_EXAM_PREP_FALLBACK=true\nWEB_SEARCH_EXAM_PREP_MAX_SELECTED_RESULTS=2\nWEB_SEARCH_REQUIRE_OFFICIAL_FOR_EXAM_UPDATES=true\nWEB_SEARCH_REQUIRE_TRUSTED_FOR_CURRENT_AFFAIRS=true\nWEB_SEARCH_MIN_TRUSTED_RESULTS=1\nWEB_SEARCH_DEFAULT_RECENT_DAYS=30\nWEB_SEARCH_SEARCH_DEPTH=basic\nWEB_SEARCH_MAX_SELECTED_RESULTS=3\nWEB_SEARCH_RERANK_MIN_SCORE=0.65\nWEB_SEARCH_ENABLE_EXTRACT=false\nWEB_SEARCH_EXTRACT_MAX_URLS=2\nWEB_SEARCH_EXTRACT_DEPTH=basic\n\n# AWS credentials\nAWS_REGION=\n"}, "b15e11c0e760059f36af8fd6306dd4af750a1bd5": {"t": 1785770323.7965174, "n": 2530, "h": "0fe00afbe15e1677", "c": "APP_ENV=local\nLOG_LEVEL=INFO\nMODEL_PROVIDER=mock\n\n# LLM routing\nENABLE_REAL_LLM=false\nLLM_DEFAULT_PROVIDER=mock\n# JSON map of role → provider config. Example with both Part 2 classifier and Part 3 generator:\n# LLM_ROLE_CONFIG_JSON={\"doubt_solver_classifier\": {\"provider\": \"azure_openai\", \"model_label\": \"classifier-model\", \"deployment\": \"YOUR_AZURE_CLASSIFIER_DEPLOYMENT\", \"temperature\": 0, \"max_tokens\": 500, \"supports_streaming\": false}, \"doubt_solver_generator\": {\"provider\": \"azure_openai\", \"model_label\": \"generator-model\", \"deployment\": \"YOUR_AZURE_GENERATOR_DEPLOYMENT\", \"temperature\": 0.2, \"max_tokens\": 1200, \"supports_streaming\": false}}\nLLM_ROLE_CONFIG_JSON={}\n\n# Azure OpenAI (required when provider=azure_openai)\nAZURE_OPENAI_ENDPOINT=\nAZURE_OPENAI_API_KEY=\nAZURE_OPENAI_API_VERSION=\n\n# OpenAI native (required when provider=openai)\nOPENAI_API_KEY=\nOPENAI_BASE_URL=\n\n# Bedrock Knowledge Base retrieval (Part 7)\n# Set ENABLE_KB_RETRIEVAL=true to activate. BEDROCK_KB_ID is required when enabled.\nENABLE_KB_RETRIEVAL=false\nBEDROCK_KB_ID=\n# BEDROCK_KB_REGION defaults to AWS_REGION if not set (boto3 default chain applies).\nBEDROCK_KB_REGION=\nBEDROCK_KB_MAX_RESULTS=5\n# Optional: filter results below this similarity score threshold (e.g. 0.7).\n# Leave empty to return all results regardless of score.\nBEDROCK_KB_MIN_SCORE=\n\n# DynamoDB record fetch (Part 8)\n# Set ENABLE_DYNAMODB_FETCH=true to activate. Table names are required when enabled.\nENABLE_DYNAMODB_FETCH=false\nDYNAMODB_QUESTION_TABLE=\nDYNAMODB_PATTERN_TABLE=\n# Optional: default GSI/LSI name for index-based queries.\nDYNAMODB_DEFAULT_INDEX=\n# Optional: AWS region for DynamoDB client. Defaults to AWS_REGION or boto3 chain.\nDYNAMODB_REGION=\n\n# Context builder (Part 9)\n# Hard cap on the context string (chars) passed to the answer generator.\n# Reduce this value to lower prompt token cost; increase for richer context.\nDOUBT_SOLVER_MAX_CONTEXT_CHARS=6000\n\n# AWS credentials (required for ENABLE_KB_RETRIEVAL=true or ENABLE_DYNAMODB_FETCH=true)\n#\n# boto3 uses its standard credential chain:\n# 1. Environment vars below\n# 2. ~/.aws/credentials (shared credentials file)\n# 3. ~/.aws/config (profile config)\n# 4. IAM instance role (EC2, ECS, Lambda)\n#\n# For local dev: export these in your shell or fill them in here.\n# WARNING: NEVER commit real AWS keys. This file is gitignored.\n#\nAWS_REGION=\n# AWS_ACCESS_KEY_ID=\n# AWS_SECRET_ACCESS_KEY=\n# AWS_SESSION_TOKEN=\n#\n# If using AWS SSO or a named profile, set AWS_PROFILE instead:\n# AWS_PROFILE=\n"}}}} |