# Actualizar agente

> Actualiza un agente existente desde un archivo JSON.

Fuente: https://developers.plazbot.com/cli/agent/update/

### Actualizar agente

Actualiza un agente con los campos de un archivo JSON. Por defecto solo cambian los campos presentes en el archivo; el resto del agente queda igual. Con `--replace` el archivo reemplaza el agente completo.

```bash
plazbot agent update <agentId> <configPath> [options]
```

### Parámetros

| Parámetro | Flag | Requerido | Descripción |
|-----------|------|-----------|-------------|
| `agentId` | (posicional) | Sí | ID del agente a actualizar. |
| `configPath` | (posicional) | Sí | Ruta al archivo JSON con los campos a cambiar. |
| Reemplazar | `--replace` | No | Reemplaza el agente completo con el archivo: los campos que no estén en el archivo se eliminan. Por defecto: `false`. |
| JSON | `--json` | No | Imprime el resultado como JSON (`{"id","updated","fields","replaced"}`). Por defecto: `false`. |

### Cómo se aplican los cambios

- Sin `--replace`: solo cambian los campos de primer nivel que aparecen en el archivo. Cada uno reemplaza al valor guardado completo. Por ejemplo, si envías `"services"`, la lista entera de servicios se sustituye por la del archivo; si envías `"instructions"`, se sustituye el objeto `instructions` completo.
- Con `--replace`: el archivo se envía tal cual y se convierte en el agente. Todo campo ausente se elimina.

Ejemplo de archivo parcial (`changes.json`) que solo cambia la pregunta inicial:

```json
{
"question": "¡Hola! ¿En qué te puedo ayudar?"
}
```

### Ejemplos

```bash
# Cambiar solo los campos del archivo
plazbot agent update age_AbcDef123 ./changes.json

# Flujo exportar, editar y actualizar
plazbot agent export age_AbcDef123 -o agent.json && plazbot agent update age_AbcDef123 ./agent.json

# Reemplazar el agente completo con el archivo
plazbot agent update age_AbcDef123 ./agent.json --replace

# Actualizar y obtener el resultado en JSON (scripts)
plazbot agent update age_AbcDef123 ./changes.json --json
```

### Resultado

```text
Updating fields: question

Agent updated successfully
```

Con `--replace` la primera línea es `Replacing agent...`.

### Salida JSON

```json
{
"id": "age_AbcDef123",
"updated": true,
"fields": ["question"],
"replaced": false
}
```

> **Tip:** Un archivo creado con [`plazbot agent export`](https://developers.plazbot.com/cli/agent/export) sin `--channels` ni `--ai` no incluye las claves `channels`, `customAIConfig`, `aiProviders` ni `avatarApiKey`, así que al usarlo en `update` (sin `--replace`) los canales y la configuración de IA del agente se mantienen.

> **Importante:** Con `--replace` y un archivo exportado sin `--channels` ni `--ai`, el agente pierde sus canales y su configuración de IA.

### Errores comunes

| Mensaje | Causa | Solución |
|---------|-------|----------|
| `Could not read the config file: ...` | La ruta no existe o no se puede leer. | Revisa la ruta del archivo. |
| `The config file is not valid JSON: ...` | El archivo tiene un error de sintaxis. | Corrige el JSON. |
| `The config file must contain a JSON object.` | El archivo contiene un arreglo u otro valor. | El archivo debe ser un objeto `{ ... }`. |
| `The config file has no fields to update.` | El archivo es `{}`. | Agrega los campos a cambiar, por ejemplo `{"question": "Hi!"}`. |
| `Agent update failed (HTTP 400):` seguido de una lista numerada | La API validó los campos y encontró errores (uno por línea). El texto base puede ser el mensaje de la API. | Corrige los campos; revisa con [`plazbot agent validate`](https://developers.plazbot.com/cli/agent/validate). |
| `Agent age_AbcDef123 was not found in the active workspace.` | El ID no existe en el workspace activo. | Revisa el ID con `plazbot agent list`. |
| `You do not have permission to update this agent.` | Tu sesión no tiene acceso a ese agente. | Revisa el workspace activo con `plazbot whoami`. |
| `You are not signed in.` | No hay sesión activa. | Ejecuta [`plazbot login`](https://developers.plazbot.com/cli/login). |
