---
title: "@affordances/next/codegen · Affordances"
description: "Affordances gives every page of a Next.js app a JSON view for agents, and turns one action definition into a server action, an HTTP endpoint, a WebMCP tool, and an MCP tool."
url: "https://affordances.vercel.app/docs/reference/api-reference/next/codegen"
image: "https://affordances.vercel.app/og/docs/reference/api-reference/next/codegen"
lang: "en"
---

# @affordances/next/codegen

## Classes

### CodegenError

#### Extends

- `Error`

#### Constructors

##### Constructor

```ts
new CodegenError(message?): CodegenError;
```

###### Parameters

| Parameter  | Type     |
| ---------- | -------- |
| `message?` | `string` |

###### Returns

[`CodegenError`](https://affordances.vercel.app/docs/reference/api-reference/next/codegen#codegenerror)

###### Inherited from

`Error.constructor`

##### Constructor

```ts
new CodegenError(message?, options?): CodegenError;
```

###### Parameters

| Parameter  | Type           |
| ---------- | -------------- |
| `message?` | `string`       |
| `options?` | `ErrorOptions` |

###### Returns

[`CodegenError`](https://affordances.vercel.app/docs/reference/api-reference/next/codegen#codegenerror)

###### Inherited from

`Error.constructor`

#### Properties

| Property | Type     | Default value               | Overrides    |
| -------- | -------- | --------------------------- | ------------ |
| `name`   | `string` | `'AffordancesCodegenError'` | `Error.name` |

## Type Aliases

### RouteEntry

```ts
type RouteEntry = object;
```

#### Properties

##### actions?

```ts
actions?: object;
```

| Name      | Type        |
| --------- | ----------- |
| `exports` | `object`\[] |
| `file`    | `string`    |

##### route

```ts
route: string;
```

##### state?

```ts
state?: string;
```

## Functions

### findAppDir()

```ts
function findAppDir(root): string;
```

#### Parameters

| Parameter | Type     |
| --------- | -------- |
| `root`    | `string` |

#### Returns

`string`

---

### generate()

```ts
function generate(root, options?): RouteEntry[];
```

#### Parameters

| Parameter       | Type                   |
| --------------- | ---------------------- |
| `root`          | `string`               |
| `options?`      | { `name?`: `string`; } |
| `options.name?` | `string`               |

#### Returns

[`RouteEntry`](https://affordances.vercel.app/docs/reference/api-reference/next/codegen#routeentry)\[]

---

### render()

```ts
function render(entries, options?): string;
```

#### Parameters

| Parameter       | Type                                                                                                   |
| --------------- | ------------------------------------------------------------------------------------------------------ |
| `entries`       | [`RouteEntry`](https://affordances.vercel.app/docs/reference/api-reference/next/codegen#routeentry)\[] |
| `options?`      | { `name?`: `string`; }                                                                                 |
| `options.name?` | `string`                                                                                               |

#### Returns

`string`

---

### scan()

```ts
function scan(root): RouteEntry[];
```

#### Parameters

| Parameter | Type     |
| --------- | -------- |
| `root`    | `string` |

#### Returns

[`RouteEntry`](https://affordances.vercel.app/docs/reference/api-reference/next/codegen#routeentry)\[]
