* feat(agents): increase step limit to 150 * test(agents): update step limit assertions to 150 * docs(adr): add ADR-029 agent step limit 100 to 150 * docs(project-map): update tree with PR#68 changes * docs(handoff): add PR 69 handoff for agent steps 150 * docs(project-map): fix PR tags to PR#69 (actual PR number) --------- Co-authored-by: opencode-agent <agent@opencode.local>
394 lines
No EOL
11 KiB
JSON
394 lines
No EOL
11 KiB
JSON
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"plugin": [
|
|
[
|
|
"@mathew-cf/opencode-memory",
|
|
{
|
|
"memoryDir": "{env:OPENCODE_MEMORY_DIR}"
|
|
}
|
|
]
|
|
],
|
|
"skills": {
|
|
"paths": [
|
|
".opencode/skills"
|
|
]
|
|
},
|
|
"compaction": {
|
|
"auto": true,
|
|
"prune": true,
|
|
"reserved": 100000
|
|
},
|
|
"disabled_providers": [],
|
|
"provider": {
|
|
"new_api": {
|
|
"name": "new api",
|
|
"npm": "@ai-sdk/openai-compatible",
|
|
"options": {
|
|
"baseURL": "{env:AI_PROVIDER_BASE_URL}",
|
|
"apiKey": "{env:AI_PROVIDER_API_KEY}"
|
|
},
|
|
"models": {
|
|
"gemini-3.5-flash": {
|
|
"name": "Gemini 3.5 Flash",
|
|
"reasoning": true,
|
|
"attachment": true,
|
|
"modalities": {
|
|
"input": [
|
|
"text",
|
|
"image"
|
|
],
|
|
"output": [
|
|
"text"
|
|
]
|
|
},
|
|
"limit": {
|
|
"context": 250000,
|
|
"input": 250000,
|
|
"output": 16384
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"openrouter": {
|
|
"models": {
|
|
"deepseek/deepseek-v4-flash": {
|
|
"name": "DeepSeek V4 Flash",
|
|
"reasoning": true,
|
|
"modalities": {
|
|
"input": [
|
|
"text"
|
|
],
|
|
"output": [
|
|
"text"
|
|
]
|
|
},
|
|
"limit": {
|
|
"context": 250000,
|
|
"input": 250000,
|
|
"output": 16384
|
|
},
|
|
"variants": {
|
|
"low": {
|
|
"options": {
|
|
"reasoning": {
|
|
"effort": "low"
|
|
}
|
|
}
|
|
},
|
|
"medium": {
|
|
"options": {
|
|
"reasoning": {
|
|
"effort": "medium"
|
|
}
|
|
}
|
|
},
|
|
"high": {
|
|
"options": {
|
|
"reasoning": {
|
|
"effort": "high"
|
|
}
|
|
}
|
|
},
|
|
"max": {
|
|
"options": {
|
|
"reasoning": {
|
|
"effort": "xhigh"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"deepseek/deepseek-v4-pro": {
|
|
"name": "DeepSeek V4 Pro",
|
|
"reasoning": true,
|
|
"modalities": {
|
|
"input": [
|
|
"text"
|
|
],
|
|
"output": [
|
|
"text"
|
|
]
|
|
},
|
|
"limit": {
|
|
"context": 250000,
|
|
"input": 250000,
|
|
"output": 16384
|
|
},
|
|
"variants": {
|
|
"low": {
|
|
"options": {
|
|
"reasoning": {
|
|
"effort": "low"
|
|
}
|
|
}
|
|
},
|
|
"medium": {
|
|
"options": {
|
|
"reasoning": {
|
|
"effort": "medium"
|
|
}
|
|
}
|
|
},
|
|
"high": {
|
|
"options": {
|
|
"reasoning": {
|
|
"effort": "high"
|
|
}
|
|
}
|
|
},
|
|
"max": {
|
|
"options": {
|
|
"reasoning": {
|
|
"effort": "xhigh"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"permission": {
|
|
"edit": "allow",
|
|
"external_directory": "allow",
|
|
"doom_loop": "deny",
|
|
"read": {
|
|
"*.env": "deny",
|
|
".env": "deny",
|
|
"**/.env": "deny",
|
|
"**/.env*": "deny",
|
|
"**/id_ed25519": "deny",
|
|
"**/id_rsa": "deny",
|
|
"**/id_ed25519.pub": "allow"
|
|
},
|
|
"bash": {
|
|
"cat .env*": "deny",
|
|
"*cat */.env*": "deny",
|
|
"env": "deny",
|
|
"printenv*": "deny",
|
|
"declare*": "deny",
|
|
"set": "deny",
|
|
"git add *": "allow",
|
|
"git commit *": "allow",
|
|
"git push *": "allow",
|
|
"git checkout *": "allow",
|
|
"git branch *": "allow",
|
|
"git status*": "allow",
|
|
"git diff*": "allow",
|
|
"git log*": "allow",
|
|
"git pull*": "allow",
|
|
"git -C * add *": "allow",
|
|
"git -C * commit *": "allow",
|
|
"git -C * push *": "allow",
|
|
"git -C * checkout *": "allow",
|
|
"git -C * branch *": "allow",
|
|
"git -C * status*": "allow",
|
|
"git -C * diff*": "allow",
|
|
"git -C * log*": "allow",
|
|
"git -C * reset *": "deny",
|
|
"git -C * clean *": "deny",
|
|
"git -C * branch -D *": "ask",
|
|
"git -C * branch -d *": "ask",
|
|
"git -C * push --delete *": "ask",
|
|
"git -C * push origin --delete *": "ask",
|
|
"gh pr create*": "allow",
|
|
"gh pr merge*": "allow",
|
|
"gh pr list*": "allow",
|
|
"gh pr status*": "allow",
|
|
"gh run*": "allow",
|
|
"gh issue*": "allow",
|
|
"gh pr diff*": "allow",
|
|
"gh pr view*": "allow",
|
|
"gh pr comment*": "allow",
|
|
"gh pr review*": "allow",
|
|
"gh api repos/*/actions/runs*": "allow",
|
|
"gh api repos/*/issues*": "allow",
|
|
"gh run list*": "allow",
|
|
"gh run view*": "allow",
|
|
"docker ps*": "allow",
|
|
"docker logs*": "allow",
|
|
"uv run pytest*": "allow",
|
|
"uv run ruff*": "allow",
|
|
"uv run poe*": "allow",
|
|
"uv *": "allow",
|
|
"npx *": "allow",
|
|
"npm *": "allow",
|
|
"python*": "allow",
|
|
"python3 *pipeline-status.py*": "deny",
|
|
"python3 .opencode/scripts/pipeline-status.py*": "deny",
|
|
"python3 */pipeline-status.py*": "deny",
|
|
"python *pipeline-status.py*": "deny",
|
|
"python */pipeline-status.py*": "deny",
|
|
"python3 *spec-status.py*": "deny",
|
|
"python3 .opencode/scripts/spec-status.py*": "deny",
|
|
"python3 */spec-status.py*": "deny",
|
|
"python *spec-status.py*": "deny",
|
|
"python */spec-status.py*": "deny",
|
|
"mkdir*": "allow",
|
|
"git branch -D *": "ask",
|
|
"git branch -d *": "ask",
|
|
"git push --delete *": "ask",
|
|
"git push origin --delete *": "ask",
|
|
"gh repo delete *": "deny",
|
|
"gh pr close *": "ask",
|
|
"docker restart *": "ask",
|
|
"docker stop *": "ask",
|
|
"docker rm *": "ask",
|
|
"docker exec *": "ask",
|
|
"docker system prune*": "ask",
|
|
"docker volume rm *": "ask",
|
|
"rm *": "ask",
|
|
"del *": "ask",
|
|
"Remove-Item *": "ask",
|
|
"git reset *": "deny",
|
|
"git clean *": "deny",
|
|
"vastai *": "ask",
|
|
"vastai show*": "allow",
|
|
"vastai search*": "allow",
|
|
"kill *": "ask",
|
|
"nohup *": "ask",
|
|
|
|
"cat *id_ed25519*": "deny",
|
|
"*cat *ssh/id_ed25519*": "deny",
|
|
"ssh * mkfs*": "deny",
|
|
"ssh * dd *": "deny",
|
|
"ssh * fdisk*": "deny",
|
|
|
|
"ssh * hostname": "allow",
|
|
"ssh * uname *": "allow",
|
|
"ssh * df *": "allow",
|
|
"ssh * du *": "allow",
|
|
"ssh * free *": "allow",
|
|
"ssh * ls *": "allow",
|
|
"ssh * cat /etc/*": "allow",
|
|
"ssh * tail *": "allow",
|
|
"ssh * head *": "allow",
|
|
"ssh * grep *": "allow",
|
|
"ssh * find *": "allow",
|
|
"ssh * ps *": "allow",
|
|
"ssh * systemctl status *": "allow",
|
|
"ssh * docker ps*": "allow",
|
|
"ssh * docker logs*": "allow",
|
|
"ssh * docker inspect*": "allow",
|
|
"ssh * docker images*": "allow",
|
|
"ssh * docker stats*": "allow",
|
|
"ssh * git pull*": "allow",
|
|
"ssh * netstat *": "allow",
|
|
"ssh * ss *": "allow",
|
|
"ssh * uptime": "allow",
|
|
"ssh * uptime*": "allow",
|
|
"ssh * whoami": "allow",
|
|
"ssh * ip *": "allow",
|
|
"ssh * powershell -Command Get-*": "allow",
|
|
"ssh * powershell -Command Test-*": "allow",
|
|
|
|
"ssh * cat *.env*": "ask",
|
|
"ssh * cat .env*": "ask",
|
|
"ssh * rm *": "ask",
|
|
"ssh * rmdir *": "ask",
|
|
"ssh * docker restart*": "ask",
|
|
"ssh * docker stop*": "ask",
|
|
"ssh * docker rm*": "ask",
|
|
"ssh * docker rmi*": "ask",
|
|
"ssh * docker update*": "ask",
|
|
"ssh * systemctl restart*": "ask",
|
|
"ssh * systemctl stop*": "ask",
|
|
"ssh * apt *": "ask",
|
|
"ssh * yum *": "ask",
|
|
"ssh * mv *": "ask",
|
|
"ssh * chmod *": "ask",
|
|
"ssh * chown *": "ask",
|
|
"ssh * reboot*": "ask",
|
|
"ssh * shutdown*": "ask",
|
|
"ssh * powershell -Command Set-*": "ask",
|
|
"ssh * powershell -Command New-*": "ask",
|
|
"ssh * powershell -Command Remove-*": "ask",
|
|
"ssh * powershell -Command Restart-*": "ask",
|
|
"ssh * powershell -Command Stop-*": "ask",
|
|
|
|
"ssh *": "ask",
|
|
|
|
"git commit *": "deny",
|
|
"gh pr create *": "deny",
|
|
"gh pr merge *": "deny",
|
|
"gh issue create *": "deny"
|
|
}
|
|
},
|
|
"agent": {
|
|
"general": {
|
|
"steps": 150,
|
|
"tools": {
|
|
"commit": true,
|
|
"create_pr": true,
|
|
"create_issue": true,
|
|
"merge_pr": false,
|
|
"post_review": false,
|
|
"post_docs_review": false
|
|
}
|
|
},
|
|
"reviewer": {
|
|
"tools": {
|
|
"commit": false,
|
|
"create_pr": false,
|
|
"create_issue": false,
|
|
"merge_pr": false,
|
|
"post_review": true,
|
|
"post_docs_review": false
|
|
}
|
|
},
|
|
"docs-reviewer": {
|
|
"tools": {
|
|
"commit": true,
|
|
"create_pr": false,
|
|
"create_issue": false,
|
|
"merge_pr": false,
|
|
"post_review": false,
|
|
"post_docs_review": true
|
|
}
|
|
},
|
|
"memory-syncer": {
|
|
"tools": {
|
|
"commit": false,
|
|
"create_pr": false,
|
|
"create_issue": false,
|
|
"merge_pr": false,
|
|
"post_review": false,
|
|
"post_docs_review": false
|
|
}
|
|
}
|
|
},
|
|
"mcp": {
|
|
"browser": {
|
|
"type": "local",
|
|
"command": [
|
|
"npx",
|
|
"-y",
|
|
"@modelcontextprotocol/server-puppeteer"
|
|
],
|
|
"enabled": true
|
|
},
|
|
"context7": {
|
|
"type": "local",
|
|
"command": [
|
|
"npx",
|
|
"-y",
|
|
"@upstash/context7-mcp",
|
|
"--api-key",
|
|
"{env:CONTEXT7_API_KEY}"
|
|
],
|
|
"enabled": true
|
|
},
|
|
"antidetect-browser": {
|
|
"type": "remote",
|
|
"url": "{env:ANTIDETECT_BROWSER_MCP_URL}",
|
|
"enabled": true,
|
|
"timeout": 300000
|
|
},
|
|
"integrations": {
|
|
"type": "remote",
|
|
"url": "https://integrations.sh/mcp",
|
|
"enabled": true,
|
|
"timeout": 300000
|
|
}
|
|
}
|
|
} |