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

# Límites

> Límites de la plataforma Jelou Functions: archivos, tamaños, timeouts, cron, tokens, memoria y herramientas.

## Despliegue

| Límite                      | Valor                                |
| --------------------------- | ------------------------------------ |
| Archivos por despliegue     | 20                                   |
| Tamaño por archivo          | 256 KB                               |
| Tamaño total del despliegue | 1 MB                                 |
| Extensiones permitidas      | `.ts`, `.js`, `.json`, `.md`, `.txt` |
| Entrypoint requerido        | `index.ts`                           |

## Ejecución

| Límite              | Valor        |
| ------------------- | ------------ |
| Timeout máximo      | 120 segundos |
| Timeout por defecto | 30 segundos  |

El timeout se configura con `config.timeout` en milisegundos:

```typescript theme={null}
export default define({
  description: "Operación lenta",
  input: z.object({}),
  config: { timeout: 60_000 }, // 60 segundos
  handler: async (_input, ctx) => {
    // operación que toma hasta 60s
    return { ok: true };
  },
});
```

## Herramientas (tools)

| Límite              | Valor                                     |
| ------------------- | ----------------------------------------- |
| Nombre de tool      | Max 64 caracteres, patrón `[a-zA-Z0-9_-]` |
| Descripción de tool | Max 1024 caracteres                       |

```typescript theme={null}
// ✓ Nombres válidos
define({ name: "consultar-saldo", ... })
define({ name: "search_products", ... })
define({ name: "myTool123", ... })

// ✗ Nombres inválidos
define({ name: "mi tool", ... })       // espacios no permitidos
define({ name: "tool.name", ... })     // punto no permitido
define({ name: "", ... })              // vacío
```

## Cron

| Límite                | Valor                                          |
| --------------------- | ---------------------------------------------- |
| Schedules por función | 10 (agregado entre todos los tools en `app()`) |
| Nombre de schedule    | Max 64 caracteres                              |
| botId de schedule     | Max 128 caracteres                             |

```typescript theme={null}
config: {
  cron: [
    { expression: "0 9 * * *", timezone: "America/Guayaquil", name: "recordatorio-mañana" },
    { expression: "0 15 * * *", timezone: "America/Guayaquil", name: "recordatorio-tarde" },
  ],
}
```

<Warning>
  En modo `app()`, el límite de 10 schedules es **agregado** entre todos los tools. Si un tool usa 6 schedules, los demás tools solo pueden usar 4 en total.
</Warning>

## Tokens

| Límite                 | Valor                |
| ---------------------- | -------------------- |
| Tamaño máximo de token | 4 KB                 |
| Tokens por función     | Sin límite explícito |

## Memoria (`ctx.memory`)

| Límite           | Valor                                                        |
| ---------------- | ------------------------------------------------------------ |
| Valor de `set()` | Max 255 caracteres (usar `setJson()` para datos más grandes) |
| TTL máximo       | 86,400 segundos (24 horas)                                   |
| Alcance          | Por sesión (socketId)                                        |

```typescript theme={null}
// ✓ Correcto
await ctx.memory.set("paso", "confirmacion", 3600);

// ✗ Error: excede 255 caracteres
await ctx.memory.set("datos", jsonMuyLargo, 3600);

// ✓ Usar setJson para datos grandes
await ctx.memory.setJson("datos", { items: [...] }, 3600);
```

## Secrets

| Límite            | Valor                                         |
| ----------------- | --------------------------------------------- |
| Formato de clave  | `UPPER_SNAKE_CASE` (`^[A-Z][A-Z0-9_]*$`)      |
| Prefijo bloqueado | `__FN_` (variables internas de la plataforma) |

## Archivos excluidos del despliegue

Los siguientes se excluyen automáticamente:

* `node_modules/`
* `.git/`
* `.env`
* `dist/`
* `.jelou/`
* Archivos ocultos (que empiezan con `.`)
