> ## Documentation Index
> Fetch the complete documentation index at: https://docs.plazbot.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Deploy

> Desplegar un worker al workspace

Compila y despliega un archivo TypeScript como worker en tu workspace.

## Uso

```bash theme={null}
plazbot workers deploy <archivo>
```

## Argumentos

| Argumento   | Descripcion                       |
| ----------- | --------------------------------- |
| `<archivo>` | Ruta al archivo `.ts` del worker. |

## Opciones

| Opcion                 | Descripcion                                                              |
| ---------------------- | ------------------------------------------------------------------------ |
| `--name <nombre>`      | Sobreescribe el nombre del worker (por defecto se extrae del `define*`). |
| `--description <desc>` | Sobreescribe la descripcion/reference.                                   |
| `--dev`                | Despliega en el entorno de desarrollo.                                   |

## Ejemplo

```bash theme={null}
# Desplegar un worker
plazbot workers deploy ./consultar-inventario.ts

# Desplegar con nombre custom
plazbot workers deploy ./mi-worker.ts --name "mi-herramienta-custom"

# Desplegar en entorno de desarrollo
plazbot workers deploy ./reporte.ts --dev
```

## Que sucede al desplegar

1. El CLI lee el archivo `.ts` y analiza el codigo para extraer metadata (nombre, tipo, cron, parametros).
2. Compila el TypeScript a JavaScript (strip de tipos, conversion de imports).
3. Hace upsert en la base de datos: si el worker ya existe (mismo nombre), lo actualiza; si no, lo crea.
4. Si es un webhook, genera automaticamente la URL publica.
5. Activa el worker con status `active`.

## Archivo TypeScript

El archivo debe importar y exportar una funcion `define*` del SDK:

```typescript theme={null}
import { defineTool } from 'plz/workers'

export default defineTool({
  name: 'mi-herramienta',
  reference: 'Descripcion de la herramienta',
  agents: ['id_agente'],
  parameters: [
    { name: 'param1', type: 'string', description: 'Un parametro' }
  ],

  async run(payload, plz) {
    return { success: true }
  }
})
```

<Tip>
  Si el worker tiene secrets (usa `plz.env.MI_SECRET`), asegurate de configurarlos antes con `plazbot workers secret set MI_SECRET valor`.
</Tip>
