---
title: "Upgrade"
description: "Move an eve agent from the deprecated @github-tools/sdk/eve import to the eve extension."
canonical_url: "https://github-tools.com/reference/upgrade"
---
# Upgrade

> Move an eve agent from the deprecated @github-tools/sdk/eve import to the eve extension.

To upgrade an eve agent, replace the deprecated `@github-tools/sdk/eve` and `@github-tools/sdk/connect/eve` imports, which register the tools from `agent/tools/`, with `@github-tools/eve-extension`. The extension mounts the same tools from `agent/extensions/` and adds Vercel Connect, `actAs`, `approvers` and the `'auto'` modes. The old imports keep working; new options land only in the extension.

## 1. Install the extension

<code-group>

```bash [pnpm]
pnpm add @github-tools/eve-extension
```

```bash [npm]
npm install @github-tools/eve-extension
```

```bash [yarn]
yarn add @github-tools/eve-extension
```

```bash [bun]
bun add @github-tools/eve-extension
```

</code-group>

The extension brings its own `@github-tools/sdk`, so remove the direct dependency if nothing else in the agent imports it. Keep `eve`, and `@vercel/connect` if you use a connector.

## 2. Replace the tools file

Delete `agent/tools/github.ts` and create `agent/extensions/github.ts` with the same options.

Before:

```ts [agent/tools/github.ts]
import { createGithubTools } from '@github-tools/sdk/eve'

export default createGithubTools({
  preset: 'code-review',
  requireApproval: { createIssue: 'once' },
})
```

After:

```ts [agent/extensions/github.ts]
import githubExtension from '@github-tools/eve-extension'

export default githubExtension({
  preset: 'code-review',
  requireApproval: { createIssue: 'once' },
})
```

With Vercel Connect, the connector moves into the options:

```ts [agent/tools/github.ts]
import { connectGithubTools } from '@github-tools/sdk/connect/eve'

export default connectGithubTools('github/my-connector', { preset: 'maintainer' })
```

```ts [agent/extensions/github.ts]
import githubExtension from '@github-tools/eve-extension'

export default githubExtension({ connector: 'github/my-connector', preset: 'maintainer' })
```

Also remove `build.externalDependencies: ['@vercel/connect']` from `agent/agent.ts` if you added it for the direct import. The extension ships pre-built and doesn't need it.

## 3. Update tool names

The extension prefixes each tool with the mount file's name: `agent/extensions/github.ts` exposes `github__listPullRequests` where the direct import exposed `listPullRequests`. Update any code that matches tool names as strings, such as hooks, channel handlers or evals. Keys in `requireApproval`, `include`, `exclude` and `overrides` stay bare.

## Option mapping

<table>
<thead>
  <tr>
    <th>
      Direct import
    </th>
    
    <th>
      Extension
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        createGithubTools(options)
      </code>
      
       in <code>
        agent/tools/
      </code>
    </td>
    
    <td>
      <code>
        githubExtension(options)
      </code>
      
       in <code>
        agent/extensions/
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        connectGithubTools(connector, options)
      </code>
    </td>
    
    <td>
      <code>
        githubExtension({ connector, ...options })
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        connect
      </code>
      
      , static or <code>
        (call) => params
      </code>
    </td>
    
    <td>
      <code>
        connect
      </code>
      
      , static or <code>
        (ctx, call) => params
      </code>
      
      , where <code>
        ctx
      </code>
      
       is the eve tool context
    </td>
  </tr>
  
  <tr>
    <td>
      A factory per file, such as <code>
        listPullRequests()
      </code>
      
       in <code>
        agent/tools/list_pull_requests.ts
      </code>
    </td>
    
    <td>
      One mount with <code>
        include: ['listPullRequests', ...]
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        token
      </code>
      
      , <code>
        preset
      </code>
      
      , <code>
        include
      </code>
      
      , <code>
        exclude
      </code>
      
      , <code>
        context
      </code>
      
      , <code>
        overrides
      </code>
      
      , <code>
        author
      </code>
      
      , <code>
        committer
      </code>
      
      , <code>
        coAuthors
      </code>
    </td>
    
    <td>
      Unchanged
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        requireApproval
      </code>
      
      : <code>
        true
      </code>
      
      , <code>
        false
      </code>
      
      , <code>
        'always'
      </code>
      
      , <code>
        'once'
      </code>
      
      , <code>
        'never'
      </code>
      
      , predicates
    </td>
    
    <td>
      Unchanged, plus <code>
        'auto'
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      
    </td>
    
    <td>
      New: <code>
        actAs
      </code>
      
      , <code>
        approvers
      </code>
      
      , <code>
        preset: 'auto'
      </code>
      
      , <code>
        evaluation
      </code>
      
      , <code>
        overrides.<tool>.actAs
      </code>
    </td>
  </tr>
</tbody>
</table>

[eve](https://github-tools.com/integrations/eve) documents each option. `@github-tools/sdk/eve-runtime` is not deprecated: it holds the primitives the extension is built from, listed in the [API reference](https://github-tools.com/reference/api#github-toolssdkeve-runtime).


## Sitemap

See the full [sitemap](https://github-tools.com/sitemap.md) for all pages.
