Agent Defaults Update
[MODE:SIDEEFFECTS] Tier: base. Not idempotent (last write wins).
Replaces (not merges) the Player's agent_defaults JSON. Maps to Rails PUT /api/agent_defaults (Api::AgentDefaultsController#update). Requires API key scope agents:write. Update is wrapped in Player#with_lock to avoid concurrent stomp.
When to use
- Setting platform-wide LLM provider/model preference.
- Configuring
provider_overrides(per-provider API keys / endpoints). - Updating runtime tuning fields — temperature, max_tokens, system prompt, etc.
When NOT to use
- Tweaking a single Agent — use
fibe_resource_mutate(resource:"agent", operation:"update"). - Resetting to admin defaults — use
fibe_agent_defaults_reset.
Inputs
| Field | Type | Required | Notes |
|---|---|---|---|
agent_defaults | object | yes | Replacement JSON (full state) |
Output
The updated payload (same shape as fibe_agent_defaults_get).
Behavior
- Authorizes via
agents:writeAPI key scope. - Normalizes via
AgentDefaultsNormalizer.normalize(validates shape, coerces enums). - Locks the Player row.
- Writes the new defaults atomically.
Gotchas
- Replacement, not merge. To keep existing fields, fetch current via
fibe_agent_defaults_getfirst, deep-merge yourself, then send. provider_overridesmay include API keys — make sure you're connected to the right tenant.- Without
agents:writescope: 403. - Normalizer rejects unknown enum values (e.g., misspelled provider names) with
ParameterMissing/InvalidParameter. - Existing Agents that already have explicit overrides keep them; defaults only apply to fields NOT set on the Agent.
Related
fibe_agent_defaults_get— read current state first.fibe_agent_defaults_reset— start over.fibe_resource_mutate(resource:"agent", operation:"update")— per-Agent overrides.