Spaces:
Paused
Paused
| set -e | |
| export HF_TOKEN=${HF_TOKEN} | |
| export HF_DATASET_ID=${HF_DATASET_ID:-""} | |
| export OPCODE_MAX_TOOL_TIMEOUT=300000 | |
| export OPCODE_AUTO_APPROVE=true | |
| echo "=== Sync from HF Dataset ===" | |
| if [ -n "$HF_DATASET_ID" ]; then | |
| git config --global user.email "opencode-bot@huggingface.co" | |
| git config --global user.name "OpenCode Bot" | |
| if [ ! -d "/workspace/.git" ]; then | |
| git clone https://user:${HF_TOKEN}@huggingface.co/datasets/${HF_DATASET_ID} /workspace || mkdir -p /workspace | |
| fi | |
| else | |
| mkdir -p /workspace | |
| fi | |
| cd /workspace | |
| echo "Dataset ready" | |
| echo "=== Optimizing OpenCode Configuration ===" | |
| cat <<EOT > /workspace/opencode.json | |
| { | |
| "\$schema": "https://opencode.ai/config.json", | |
| "server": { | |
| "port": 7860, | |
| "hostname": "0.0.0.0", | |
| "mdns": false, | |
| "openBrowser": false | |
| }, | |
| "provider": { | |
| "openai": { | |
| "options": { | |
| "timeout": 3600000 | |
| } | |
| }, | |
| "anthropic": { | |
| "options": { | |
| "timeout": 3600000 | |
| } | |
| }, | |
| "openrouter": { | |
| "options": { | |
| "timeout": 3600000 | |
| } | |
| }, | |
| "huggingface": { | |
| "options": { | |
| "timeout": 3600000 | |
| } | |
| } | |
| } | |
| } | |
| EOT | |
| sync_to_dataset() { | |
| echo "=== Saving Workspace to HF Dataset ===" | |
| if [ -n "$HF_DATASET_ID" ] && [ -d "/workspace/.git" ]; then | |
| cd /workspace | |
| git add . | |
| git diff-index --quiet HEAD -- || git commit -m "Auto-backup from OpenCode [\$(date)]" | |
| git push https://user:${HF_TOKEN}@huggingface.co/datasets/${HF_DATASET_ID} main || echo "Push failed" | |
| fi | |
| } | |
| trap sync_to_dataset SIGTERM SIGINT EXIT | |
| exec opencode "$@" | |