- ExecutionMode enum: SshCli (orchestrator dispatches) | HttpPull (agent pulls) - SSH CLI executor: spawn remote agents via ssh + CLI template - Local subprocess as SSH special case (localhost) - HostConfig with capability matching and load-based selection - Dispatch loop: scan created tasks → select host → execute → update - CliAdapterConfig: CLI templates for Codex and Claude Code - Structured prompt construction (Issue → goal/constraints/validation) - Output parsers: Codex JSON, Claude Code JSON, raw fallback - TaskStatus::ReviewPending + review_count loop limit - Forgejo webhook: pull_request (opened→review_pending, merged→completed) - Forgejo webhook: push events (task/* branch → last_activity_at) - HTTP API: dequeue only returns http_pull tasks - HTTP API: status update only for http_pull mode - Token auth config for http_pull agents - Adapter module rewritten: AgentAdapter trait removed → config-driven CLI templates - New fields: execution_mode, assigned_host, branch_name, pr_title, last_activity_at, review_count - 30/30 tests pass
39 lines
1 KiB
TOML
39 lines
1 KiB
TOML
[server]
|
|
bind = "0.0.0.0"
|
|
port = 9090
|
|
|
|
[forgejo]
|
|
url = "https://git.0x08.org"
|
|
token = "" # Forgejo API token
|
|
webhook_secret = "" # Webhook shared secret
|
|
|
|
[orchestrator]
|
|
db_path = "data/agent-fleet.db"
|
|
heartbeat_interval_secs = 60
|
|
heartbeat_timeout_threshold = 3
|
|
task_timeout_secs = 1800
|
|
default_max_retries = 2
|
|
dispatch_interval_secs = 10
|
|
# http_pull_token = "" # Bearer token for http_pull agent APIs
|
|
|
|
# Remote hosts for ssh_cli execution mode
|
|
# [[hosts]]
|
|
# host_id = "host-worker-01"
|
|
# hostname = "192.168.1.100"
|
|
# ssh_user = "deploy"
|
|
# ssh_port = 22
|
|
# ssh_key_path = "/home/deploy/.ssh/id_ed25519"
|
|
# work_dir = "/opt/agent-workspace"
|
|
# agents = [
|
|
# { agent_type = "codex-cli", max_concurrency = 2, capabilities = ["code:rust", "code:python"] },
|
|
# { agent_type = "claude-code", max_concurrency = 1, capabilities = ["code:rust"] },
|
|
# ]
|
|
|
|
# [[hosts]]
|
|
# host_id = "local"
|
|
# hostname = "localhost"
|
|
# ssh_user = "runner"
|
|
# work_dir = "/tmp/agent-workspace"
|
|
# agents = [
|
|
# { agent_type = "codex-cli", max_concurrency = 1, capabilities = ["code:rust"] },
|
|
# ]
|