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

# LintCode

> Type alias exported by @botmesh/core.

```ts theme={null}
type LintCode = 
  | "goto-target-missing"
  | "invalid-timeout"
  | "empty-choice"
  | "unreachable-step"
  | "unreachable-flow"
  | "empty-trigger"
  | "duplicate-trigger"
  | "flow-id-collision"
  | "persistent-memory-store"
  | "duplicate-choice"
  | "ambiguous-choice"
  | "missing-timeout"
  | "wait-never-expires"
  | "form-state-collision";
```

Defined in: [flows/lint.ts:53](https://github.com/andresayac/botmesh/blob/main/packages/core/src/flows/lint.ts#L53)

Stable diagnostic codes.

| code | severity | meaning |
| - | - | - |
| `goto-target-missing` | error | `goto('x')` (or a `guard` redirect / `choose` option `goto`) targets a conversation that is not registered |
| `invalid-timeout` | error | a step `timeout` the runtime cannot parse (`'2 minutos'`) |
| `empty-choice` | error | `choose()` without options — every answer is rejected |
| `unreachable-step` | warning | steps after an unconditional `goto` (or an end step) |
| `unreachable-flow` | warning / info | no trigger can start it and no reachable flow jumps to it (info when reachable code could still `c.goto()` it) |
| `empty-trigger` | warning / info | `[]` never matches (info for a flow entered only by `goto()`/`c.goto()`); an empty regex matches everything (`''` is rejected at registration) |
| `duplicate-trigger` | warning | a route never fires: an earlier route in dispatch order owns the same pattern |
| `flow-id-collision` | warning | two different flows/conversations share one id; only the last one runs |
| `persistent-memory-store` | warning | `.persistent()` with only the RAM store: checkpoints die on restart |
| `duplicate-choice` | warning | `choose()` options with the same (normalized) key or label |
| `ambiguous-choice` | warning | typing an option's key/label picks a different option |
| `missing-timeout` | info | ask/choose falls back to the built-in 5-minute wait |
| `wait-never-expires` | info | ask/choose with a `0` timeout never expires |
| `form-state-collision` | warning | a `form()` stores its answers under a `c.state` key another ask/choose/form of the same flow also writes |

Wait checks (`invalid-timeout`, `missing-timeout`, `wait-never-expires`) also cover `form()` steps.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.