All checks were successful
ci/woodpecker/pr/ci Pipeline was successful
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
218 lines
6.3 KiB
JSON
218 lines
6.3 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://mosaicstack.dev/schemas/fleet-roster.schema.json",
|
|
"title": "Mosaic Fleet Roster",
|
|
"type": "object",
|
|
"required": ["version", "transport", "agents"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"version": {
|
|
"const": 1
|
|
},
|
|
"transport": {
|
|
"const": "tmux"
|
|
},
|
|
"tmux": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"socket_name": {
|
|
"type": "string",
|
|
"default": "mosaic-fleet"
|
|
},
|
|
"socketName": {
|
|
"type": "string",
|
|
"default": "mosaic-fleet"
|
|
},
|
|
"holder_session": {
|
|
"type": "string",
|
|
"default": "_holder"
|
|
},
|
|
"holderSession": {
|
|
"type": "string",
|
|
"default": "_holder"
|
|
}
|
|
}
|
|
},
|
|
"defaults": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"working_directory": {
|
|
"type": "string",
|
|
"default": "~/src"
|
|
},
|
|
"workingDirectory": {
|
|
"type": "string",
|
|
"default": "~/src"
|
|
}
|
|
}
|
|
},
|
|
"runtimes": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"reset_command": {
|
|
"type": "string"
|
|
},
|
|
"resetCommand": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"agents": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "object",
|
|
"required": ["name", "runtime"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"pattern": "^[A-Za-z0-9_.-]+$"
|
|
},
|
|
"alias": {
|
|
"description": "Optional operator-defined display name for the agent.",
|
|
"type": "string"
|
|
},
|
|
"provider": {
|
|
"description": "Optional agent runtime provider identifier such as openai-codex.",
|
|
"type": "string"
|
|
},
|
|
"runtime": {
|
|
"type": "string"
|
|
},
|
|
"class": {
|
|
"type": "string"
|
|
},
|
|
"host": {
|
|
"description": "Host the agent runs on (hostname or IP). Absent = the fleet host. Used by onboarding-injection to render cross-host comms addresses. Manual cross-host listing is a pre-federation stopgap; federation (W1) auto-discovers later.",
|
|
"type": "string"
|
|
},
|
|
"ssh": {
|
|
"description": "Explicit SSH target (normally user@host) for a cross-host inventory peer. Exact comms rendering requires this whenever the peer's resolved host differs from the current agent's host; the host value is never substituted as an SSH destination.",
|
|
"type": "string"
|
|
},
|
|
"socket": {
|
|
"description": "Optional compatibility declaration of the fleet-wide tmux socket. When present it must exactly equal tmux.socket_name; independent per-agent sockets are rejected because the local fleet runtime provisions every session on the fleet-wide socket.",
|
|
"type": "string"
|
|
},
|
|
"working_directory": {
|
|
"type": "string"
|
|
},
|
|
"workingDirectory": {
|
|
"type": "string"
|
|
},
|
|
"model_hint": {
|
|
"type": "string"
|
|
},
|
|
"modelHint": {
|
|
"type": "string"
|
|
},
|
|
"reasoning_level": {
|
|
"type": "string"
|
|
},
|
|
"reasoningLevel": {
|
|
"type": "string"
|
|
},
|
|
"tool_policy": {
|
|
"type": "string"
|
|
},
|
|
"toolPolicy": {
|
|
"type": "string"
|
|
},
|
|
"persistent_persona": {
|
|
"oneOf": [{ "type": "boolean" }, { "type": "string" }]
|
|
},
|
|
"persistentPersona": {
|
|
"oneOf": [{ "type": "boolean" }, { "type": "string" }]
|
|
},
|
|
"reset_between_tasks": {
|
|
"type": "boolean"
|
|
},
|
|
"resetBetweenTasks": {
|
|
"type": "boolean"
|
|
},
|
|
"kickstart_template": {
|
|
"type": "string"
|
|
},
|
|
"kickstartTemplate": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"connector": {
|
|
"description": "Orchestrator chat connector (F4). Optional — absent means tmux (back-compat). Secrets (access/bot tokens) come from the environment, never this file.",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"oneOf": [
|
|
{
|
|
"properties": { "kind": { "const": "tmux" } },
|
|
"required": ["kind"],
|
|
"not": {
|
|
"anyOf": [{ "required": ["discord"] }, { "required": ["matrix"] }]
|
|
}
|
|
},
|
|
{
|
|
"properties": {
|
|
"kind": { "const": "discord" },
|
|
"discord": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["channel_id"],
|
|
"properties": {
|
|
"channel_id": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "\\S"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"required": ["kind", "discord"],
|
|
"not": { "required": ["matrix"] }
|
|
},
|
|
{
|
|
"properties": {
|
|
"kind": { "const": "matrix" },
|
|
"matrix": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["homeserver_url", "user_id", "room_id"],
|
|
"properties": {
|
|
"homeserver_url": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "\\S"
|
|
},
|
|
"user_id": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "\\S"
|
|
},
|
|
"room_id": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "\\S"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"required": ["kind", "matrix"],
|
|
"not": { "required": ["discord"] }
|
|
}
|
|
],
|
|
"properties": {
|
|
"kind": { "enum": ["tmux", "discord", "matrix"] },
|
|
"matrix": { "type": "object" },
|
|
"discord": { "type": "object" }
|
|
}
|
|
}
|
|
}
|
|
}
|