#!/bin/sh
# ==============================================================================
#

CLAUDE CODE CLI RUNNER
# ==============================================================================
# Purpose: Dynamically maps Anthropic environmental layers to perfectly match
# the hardware and token boundaries calculated by the matrix engine.
# Utilises full parameter paths and aggressive context compression.
# ==============================================================================
# Inherit dynamic runtime metrics forwarded from the parent launcher pipeline
SELECTED_MODEL="$1"
SELECTED_CTX="$2"
CLAUDE_BIN_PATH="$3"
if [ -z "$SELECTED_MODEL" ] || [ -z "$SELECTED_CTX" ] || [ -z "$CLAUDE_BIN_PATH" ]; then
echo "

Execution Error: Missing dynamic context or executable matrix parameters." >&2
exit 1
fi
# 1. DYNAMICALLY COMPUTE CLAUDE BOUNDARIES BASED ON ENGINE CALCULATIONS
# We calculate the safe compaction threshold at exactly 80% of the active server context
# to provide an aggressive buffer against heavy initial Git repository index states.
COMPACT_WINDOW=$(awk -v ctx="$SELECTED_CTX" 'BEGIN {printf "%d", ctx * 0.80}')
# ==============================================================================
# 2. MAP THE ADAPTIVE ANTHROPIC AGENT ENVIRONMENT LAYERS
# ==============================================================================
export ANTHROPIC_MODEL="claude-sonnet-5"
export ANTHROPIC_BASE_URL="http://127.0.0.1:8080"
export ANTHROPIC_DEFAULT_SONNET_MODEL="claude-sonnet-5"
export ANTHROPIC_DEFAULT_OPUS_MODEL="claude-sonnet-5"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="claude-sonnet-5"
export ANTHROPIC_AUTH_TOKEN="ollama"
export ANTHROPIC_SMALL_FAST_MODEL="claude-sonnet-5"
# Apply the dynamic context window settings directly to Claude Code's memory engine
export CLAUDE_CODE_AUTO_COMPACT_WINDOW="$COMPACT_WINDOW"
export CLAUDE_AUTOCOMPACT_PCT_OVERRIDE="80"
export CLAUDE_CODE_DISABLE_1M_CONTEXT="1"
export CLAUDE_CODE_MAX_OUTPUT_TOKENS="2048"
#

THE TRUE LOCAL LOCAL-MODEL FIX:
# Strictly disable cloud-dependent fast-modes to ensure Claude Code
# parses local native JSON tool schemas instead of hallucinating.
export CLAUDE_CODE_DISABLE_FAST_MODE="1"
export CLAUDE_CODE_MAX_CHAT_HISTORY_TOKENS="2048"
export CLAUDE_CODE_DISABLE_GIT_INDEXING="1"
# Set Temperature to low precision to guarantee perfect syntax formatting during edits
export CLAUDE_CODE_MAX_RETRIES="5"
export DISABLE_PROMPT_CACHING="1"
export CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING="1"
export MAX_THINKING_TOKENS="0"
export DISABLE_INTERLEAVED_THINKING="1"
export CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY="1"
export DISABLE_TELEMETRY="1"
export CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY="1"
export ENABLE_TOOL_SEARCH="auto"
export CLAUDE_CODE_GIT_BASH_PATH="/usr/local/bin/bash"
#

FIXES THE CHANNEL SPINNING LOOP & SILENT TIMEOUTS:
export CLAUDE_CODE_DISABLE_CHANNELS="1"
export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS="1"
export MCP_PROTOCOL_NEGOTIATION="1"
export MCP_TOOL_TIMEOUT="60000"
export CLAUDE_CODE_DISABLE_JSON_SCHEMA_VALIDATION="1"
export CLAUDE_CODE_ATTRIBUTION_HEADER="0"
#export CLAUDE_CODE_DISABLE_FILE_WRITER="1"
echo ""
echo "--- Llama.cpp Configuration Loaded ---"
echo "Model Selected : $SELECTED_MODEL (Mapped to Sonnet-5 Profile)"
echo "LAN Endpoint : $ANTHROPIC_BASE_URL"
echo "Calculated CTX : $SELECTED_CTX tokens"
echo "Compact Buffer : $COMPACT_WINDOW tokens (Triggers auto-rolling shift at 80%)"
echo "Executable : $CLAUDE_BIN_PATH"
echo "────────────────────────────────────────────────────────────────────────"
# 3. FIXED: Fire up Claude Code natively utilizing the dynamic variable path parameter!
"$CLAUDE_BIN_PATH" --permission-mode bypassPermissions \
--mcp-config "$HOME/.claude.json"