Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions .github/workflows/format.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -40,13 +40,17 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup pnpm

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript
- name: Ensure formatting
working-directory: ./typescript
run: |
npm ci
npm run format:check
pnpm install --frozen-lockfile
Comment thread
CarsonRoscoe marked this conversation as resolved.
pnpm run format:check
27 changes: 18 additions & 9 deletions .github/workflows/lint.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -52,35 +52,44 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript
- name: Ensure Linting
working-directory: ./typescript
run: |
npm ci
npm run lint
pnpm install --frozen-lockfile
pnpm run lint

check-package-lock:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Check if package-lock.json changed
- name: Check if pnpm-lock.yaml changed
working-directory: ./typescript
run: |
npm install
if [ -n "$(git diff package-lock.json)" ]; then
echo "Error: package-lock.json was modified after running npm install. Please commit the updated package-lock.json file."
git diff package-lock.json
pnpm install
if [ -n "$(git diff pnpm-lock.yaml)" ]; then
echo "Error: pnpm-lock.yaml was modified after running pnpm install. Please commit the updated pnpm-lock.yaml file."
git diff pnpm-lock.yaml
exit 1
fi

Expand Down
16 changes: 10 additions & 6 deletions .github/workflows/publish_docs.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,19 +9,23 @@ jobs:
steps:
- uses: actions/checkout@v3

- name: Set up Node 18
uses: actions/setup-node@v4
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install and Build JSDocs
working-directory: ./typescript
run: |
npm ci
npm run build
npm run docs
pnpm install --frozen-lockfile
pnpm run build
pnpm run docs

- name: Build AgentKit JSDocs
run: |
Expand Down
17 changes: 11 additions & 6 deletions .github/workflows/publish_nightly.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -35,11 +35,16 @@ jobs:
with:
ref: nightly

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install jq
Expand All@@ -48,8 +53,8 @@ jobs:
- name: Install dependencies and build packages
run: |
cd typescript
npm ci
npm run build
pnpm install --frozen-lockfile
pnpm run build

- name: Find NPM packages
id: find-npm-packages
Expand All@@ -76,11 +81,11 @@ jobs:
LATEST_NIGHTLY=$(echo "$ALL_VERSIONS" | jq -r '.[]' 2>/dev/null | grep -E "nightly\.[0-9]{8}\.[0-9]+$" | sort -V | tail -n1 || echo "")
TODAY=$(date +%Y%m%d)
if [ -z "$LATEST_NIGHTLY" ]; then
npm version prerelease --preid=nightly.$TODAY --no-git-tag-version
pnpm version prerelease --preid=nightly.$TODAY --no-git-tag-version
else
BUILD_NUM=$(echo $LATEST_NIGHTLY | grep -Eo '[0-9]+$')
NEXT_BUILD=$((BUILD_NUM + 1))
npm version "$(echo $LATEST_NIGHTLY | cut -d'-' -f1)-nightly.$TODAY.$NEXT_BUILD" --no-git-tag-version
pnpm version "$(echo $LATEST_NIGHTLY | cut -d'-' -f1)-nightly.$TODAY.$NEXT_BUILD" --no-git-tag-version
fi
fi
cd - > /dev/null
Expand All@@ -92,7 +97,7 @@ jobs:
cd typescript
for pkg in ${{ steps.find-npm-packages.outputs.packages }}; do
if [ -f "$pkg/package.json" ] && ! grep -q '"private": true' "$pkg/package.json"; then
cd $pkg && npm publish --tag nightly --provenance --access public
cd $pkg && pnpm publish --tag nightly --provenance --access public
cd - > /dev/null
fi
done
Expand Down
15 changes: 11 additions & 4 deletions .github/workflows/publish_npm_manual.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,17 +18,24 @@ jobs:
id-token: write
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install, build and publish package
working-directory: ./typescript/${{ inputs.directory }}
run: |
npm ci
npm run build
npm publish --provenance --access public
pnpm install --frozen-lockfile
pnpm run build
pnpm publish --provenance --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
13 changes: 10 additions & 3 deletions .github/workflows/unit_tests.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -47,13 +47,20 @@ jobs:
node-version: ["18", "20"]
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install and test AgentKit.js
working-directory: ./typescript
run: |
npm ci
npm run test
pnpm install --frozen-lockfile
pnpm run test
13 changes: 9 additions & 4 deletions .github/workflows/version_publish_npm.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,25 +17,30 @@ jobs:
- name: Clone repository
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install dependencies
run: npm ci
run: pnpm install --frozen-lockfile
working-directory: ./typescript

- name: Version and/or Publish to NPM
uses: changesets/action@06245a4e0a36c064a573d4150030f5ec548e4fcc
with:
commit: "chore: version typescript packages"
title: "chore: version typescript packages"
version: npm run changeset:version
publish: npm run publish
version: pnpm run changeset:version
publish: pnpm run publish
cwd: ./typescript
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down
6 changes: 5 additions & 1 deletion .gitignore
Original file line numberDiff line numberDiff line change
Expand Up@@ -134,4 +134,8 @@ docs/
!python/coinbase-agentkit/docs/
!python/framework-extensions/langchain/docs/

.to-publish-pypi
.to-publish-pypi

# pnpm
typescript/.pnpm-store
typescript/.pnp.*
33 changes: 19 additions & 14 deletions CONTRIBUTING-TYPESCRIPT.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,18 +15,23 @@ This guide covers TypeScript-specific setup and development for AgentKit.

## Development Setup

AgentKit uses Node.js v18.x or higher and npm 8.x or higher.
AgentKit uses Node.js v18.x or higher and pnpm 10.7.x or higher.

You can run the following commands in your terminal to check your local Node.js and npm versions:
You can run the following commands in your terminal to check your local Node.js and pnpm versions:

```bash
node --version
npm --version
pnpm --version
```

If the versions are not correct or you don't have Node.js or npm installed, download through [nvm](https://github.com/nvm-sh/nvm).
If the versions are not correct or you don't have Node.js or pnpm installed, download Node.Js through [fnm](https://github.com/Schniz/fnm) and then install [pnpm](https://pnpm.io/installation).

Once you have these installed, make sure you install the project dependencies by running `npm install` from the root of the TypeScript monorepo, in other words, from the root `typescript/` folder.
Once you have these installed, make sure you install the project dependencies by running `pnpm install` from the root of the TypeScript monorepo, in other words, from the root `typescript/` folder.

> **Note for existing contributors**: If you previously contributed when this was an npm turbo monorepo, you'll need to remove existing node_modules directories and reinstall dependencies with pnpm. From the `typescript/` directory, run:
> ```bash
> find . -name "node_modules" -type d -exec rm -rf {} + && pnpm i
> ```

## Adding an Action Provider

Expand DownExpand Up@@ -184,7 +189,7 @@ You can then run the unit tests with the following command:

```bash
cd typescript/agentkit
npm test
pnpm test
```

Check out the [Testing](#testing) section to learn how to manually test your new action provider.
Expand DownExpand Up@@ -224,23 +229,23 @@ A good way to test new actions locally is by using the chatbot example in `types
The flow is:

1. Make your change as described in the [Adding an Agentic Action](#adding-an-agentic-action) section
2. From `typescript/`, run `npm run build && npm i`
3. In `typescript/examples/langchain-cdp-chatbot`, run `npm run start`
2. From `typescript/`, run `pnpm run build && pnpm i`
3. In `typescript/examples/langchain-cdp-chatbot`, run `pnpm run start`
4. You can now interact with your new action via the chatbot!

### Running Tests

From the package you are working in, you can run:

```bash
npm test
pnpm test
```

For example, to run all tests in the `@coinbase/agentkit` package, you can run:

```bash
cd typescript/agentkit
npm test
pnpm test
```

## Code Style
Expand All@@ -249,13 +254,13 @@ We use ESLint and Prettier for linting and formatting. Run:

```bash
# Format code
npm run format
pnpm run format

# Lint code
npm run lint
pnpm run lint

# Fix linting issues
npm run lint:fix
pnpm run lint:fix
```

## Documentation
Expand All@@ -276,7 +281,7 @@ Changesets are stored in the `.changeset` directory. Each changeset is stored as
To add a changeset, use `changesets` to create it for you:

```bash
npm run changeset
pnpm run changeset
```

This will kick off an interactive prompt to help you create the changeset. Use the arrow keys to navigate the different options, and press the `Space` key to select an option. You should select the package(s) you are making a change to – most of the time this will be `@coinbase/agentkit`. Once selected, hit `Enter`. You'll then be prompted to specify the type of change you are making (major, minor or patch), starting with major. Most of the time you will not be making a major change, so hitting `Enter` will progress to the next step. If you're adding a new feature, you should select `minor`. If you're fixing a bug, you should select `patch`. Once selected, you will be prompted to provide a summary of your changes. This should be a short, specific description in the past tense (see above for examples).
Expand Down
9 changes: 6 additions & 3 deletions typescript/agentkit/package.json
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,9 +17,8 @@
"format": "prettier -c .prettierrc --write \"**/*.{ts,js,cjs,json,md}\"",
"format:check": "prettier -c .prettierrc --check \"**/*.{ts,js,cjs,json,md}\"",
"check": "tsc --noEmit",
"test": "npx jest --no-cache --testMatch='**/*.test.ts'",
"test:dry-run": "npm install && npm ci && npm publish --dry-run",
"test:e2e": "npx jest --no-cache --testMatch=**/e2e.ts --coverageThreshold '{}'",
"test": "jest --no-cache --testMatch='**/*.test.ts'",
"test:e2e": "jest --no-cache --testMatch=**/e2e.ts --coverageThreshold '{}'",
"test:types": "tsd --files src/tests/types.test-d.ts",
"clean": "rm -rf dist/*",
"prepack": "tsc",
Expand DownExpand Up@@ -47,6 +46,9 @@
"@privy-io/server-auth": "^1.18.4",
"@solana/spl-token": "^0.4.12",
"@solana/web3.js": "^1.98.0",
"bs58": "^4.0.1",
"decimal.js": "^10.5.0",
"ethers": "^6.13.5",
"md5": "^2.3.0",
"opensea-js": "^7.1.18",
"reflect-metadata": "^0.2.2",
Expand All@@ -60,6 +62,7 @@
"@types/ora": "^3.2.0",
"@types/prompts": "^2.4.9",
"@types/secp256k1": "^4.0.6",
"abitype": "^1.0.8",
"http-server": "^14.1.1",
"jest": "^29.7.0",
"mock-fs": "^5.2.0",
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions .github/workflows/format.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -40,13 +40,17 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup pnpm

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript
- name: Ensure formatting
working-directory: ./typescript
run: |
npm ci
npm run format:check
pnpm install --frozen-lockfile
Comment thread
CarsonRoscoe marked this conversation as resolved.
pnpm run format:check
27 changes: 18 additions & 9 deletions .github/workflows/lint.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -52,35 +52,44 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript
- name: Ensure Linting
working-directory: ./typescript
run: |
npm ci
npm run lint
pnpm install --frozen-lockfile
pnpm run lint

check-package-lock:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Check if package-lock.json changed
- name: Check if pnpm-lock.yaml changed
working-directory: ./typescript
run: |
npm install
if [ -n "$(git diff package-lock.json)" ]; then
echo "Error: package-lock.json was modified after running npm install. Please commit the updated package-lock.json file."
git diff package-lock.json
pnpm install
if [ -n "$(git diff pnpm-lock.yaml)" ]; then
echo "Error: pnpm-lock.yaml was modified after running pnpm install. Please commit the updated pnpm-lock.yaml file."
git diff pnpm-lock.yaml
exit 1
fi

Expand Down
16 changes: 10 additions & 6 deletions .github/workflows/publish_docs.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,19 +9,23 @@ jobs:
steps:
- uses: actions/checkout@v3

- name: Set up Node 18
uses: actions/setup-node@v4
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install and Build JSDocs
working-directory: ./typescript
run: |
npm ci
npm run build
npm run docs
pnpm install --frozen-lockfile
pnpm run build
pnpm run docs

- name: Build AgentKit JSDocs
run: |
Expand Down
17 changes: 11 additions & 6 deletions .github/workflows/publish_nightly.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -35,11 +35,16 @@ jobs:
with:
ref: nightly

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install jq
Expand All@@ -48,8 +53,8 @@ jobs:
- name: Install dependencies and build packages
run: |
cd typescript
npm ci
npm run build
pnpm install --frozen-lockfile
pnpm run build

- name: Find NPM packages
id: find-npm-packages
Expand All@@ -76,11 +81,11 @@ jobs:
LATEST_NIGHTLY=$(echo "$ALL_VERSIONS" | jq -r '.[]' 2>/dev/null | grep -E "nightly\.[0-9]{8}\.[0-9]+$" | sort -V | tail -n1 || echo "")
TODAY=$(date +%Y%m%d)
if [ -z "$LATEST_NIGHTLY" ]; then
npm version prerelease --preid=nightly.$TODAY --no-git-tag-version
pnpm version prerelease --preid=nightly.$TODAY --no-git-tag-version
else
BUILD_NUM=$(echo $LATEST_NIGHTLY | grep -Eo '[0-9]+$')
NEXT_BUILD=$((BUILD_NUM + 1))
npm version "$(echo $LATEST_NIGHTLY | cut -d'-' -f1)-nightly.$TODAY.$NEXT_BUILD" --no-git-tag-version
pnpm version "$(echo $LATEST_NIGHTLY | cut -d'-' -f1)-nightly.$TODAY.$NEXT_BUILD" --no-git-tag-version
fi
fi
cd - > /dev/null
Expand All@@ -92,7 +97,7 @@ jobs:
cd typescript
for pkg in ${{ steps.find-npm-packages.outputs.packages }}; do
if [ -f "$pkg/package.json" ] && ! grep -q '"private": true' "$pkg/package.json"; then
cd $pkg && npm publish --tag nightly --provenance --access public
cd $pkg && pnpm publish --tag nightly --provenance --access public
cd - > /dev/null
fi
done
Expand Down
15 changes: 11 additions & 4 deletions .github/workflows/publish_npm_manual.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,17 +18,24 @@ jobs:
id-token: write
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install, build and publish package
working-directory: ./typescript/${{ inputs.directory }}
run: |
npm ci
npm run build
npm publish --provenance --access public
pnpm install --frozen-lockfile
pnpm run build
pnpm publish --provenance --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
13 changes: 10 additions & 3 deletions .github/workflows/unit_tests.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -47,13 +47,20 @@ jobs:
node-version: ["18", "20"]
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install and test AgentKit.js
working-directory: ./typescript
run: |
npm ci
npm run test
pnpm install --frozen-lockfile
pnpm run test
13 changes: 9 additions & 4 deletions .github/workflows/version_publish_npm.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,25 +17,30 @@ jobs:
- name: Clone repository
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install dependencies
run: npm ci
run: pnpm install --frozen-lockfile
working-directory: ./typescript

- name: Version and/or Publish to NPM
uses: changesets/action@06245a4e0a36c064a573d4150030f5ec548e4fcc
with:
commit: "chore: version typescript packages"
title: "chore: version typescript packages"
version: npm run changeset:version
publish: npm run publish
version: pnpm run changeset:version
publish: pnpm run publish
cwd: ./typescript
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down
6 changes: 5 additions & 1 deletion .gitignore
Original file line numberDiff line numberDiff line change
Expand Up@@ -134,4 +134,8 @@ docs/
!python/coinbase-agentkit/docs/
!python/framework-extensions/langchain/docs/

.to-publish-pypi
.to-publish-pypi

# pnpm
typescript/.pnpm-store
typescript/.pnp.*
33 changes: 19 additions & 14 deletions CONTRIBUTING-TYPESCRIPT.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,18 +15,23 @@ This guide covers TypeScript-specific setup and development for AgentKit.

## Development Setup

AgentKit uses Node.js v18.x or higher and npm 8.x or higher.
AgentKit uses Node.js v18.x or higher and pnpm 10.7.x or higher.

You can run the following commands in your terminal to check your local Node.js and npm versions:
You can run the following commands in your terminal to check your local Node.js and pnpm versions:

```bash
node --version
npm --version
pnpm --version
```

If the versions are not correct or you don't have Node.js or npm installed, download through [nvm](https://github.com/nvm-sh/nvm).
If the versions are not correct or you don't have Node.js or pnpm installed, download Node.Js through [fnm](https://github.com/Schniz/fnm) and then install [pnpm](https://pnpm.io/installation).

Once you have these installed, make sure you install the project dependencies by running `npm install` from the root of the TypeScript monorepo, in other words, from the root `typescript/` folder.
Once you have these installed, make sure you install the project dependencies by running `pnpm install` from the root of the TypeScript monorepo, in other words, from the root `typescript/` folder.

> **Note for existing contributors**: If you previously contributed when this was an npm turbo monorepo, you'll need to remove existing node_modules directories and reinstall dependencies with pnpm. From the `typescript/` directory, run:
> ```bash
> find . -name "node_modules" -type d -exec rm -rf {} + && pnpm i
> ```

## Adding an Action Provider

Expand DownExpand Up@@ -184,7 +189,7 @@ You can then run the unit tests with the following command:

```bash
cd typescript/agentkit
npm test
pnpm test
```

Check out the [Testing](#testing) section to learn how to manually test your new action provider.
Expand DownExpand Up@@ -224,23 +229,23 @@ A good way to test new actions locally is by using the chatbot example in `types
The flow is:

1. Make your change as described in the [Adding an Agentic Action](#adding-an-agentic-action) section
2. From `typescript/`, run `npm run build && npm i`
3. In `typescript/examples/langchain-cdp-chatbot`, run `npm run start`
2. From `typescript/`, run `pnpm run build && pnpm i`
3. In `typescript/examples/langchain-cdp-chatbot`, run `pnpm run start`
4. You can now interact with your new action via the chatbot!

### Running Tests

From the package you are working in, you can run:

```bash
npm test
pnpm test
```

For example, to run all tests in the `@coinbase/agentkit` package, you can run:

```bash
cd typescript/agentkit
npm test
pnpm test
```

## Code Style
Expand All@@ -249,13 +254,13 @@ We use ESLint and Prettier for linting and formatting. Run:

```bash
# Format code
npm run format
pnpm run format

# Lint code
npm run lint
pnpm run lint

# Fix linting issues
npm run lint:fix
pnpm run lint:fix
```

## Documentation
Expand All@@ -276,7 +281,7 @@ Changesets are stored in the `.changeset` directory. Each changeset is stored as
To add a changeset, use `changesets` to create it for you:

```bash
npm run changeset
pnpm run changeset
```

This will kick off an interactive prompt to help you create the changeset. Use the arrow keys to navigate the different options, and press the `Space` key to select an option. You should select the package(s) you are making a change to – most of the time this will be `@coinbase/agentkit`. Once selected, hit `Enter`. You'll then be prompted to specify the type of change you are making (major, minor or patch), starting with major. Most of the time you will not be making a major change, so hitting `Enter` will progress to the next step. If you're adding a new feature, you should select `minor`. If you're fixing a bug, you should select `patch`. Once selected, you will be prompted to provide a summary of your changes. This should be a short, specific description in the past tense (see above for examples).
Expand Down
9 changes: 6 additions & 3 deletions typescript/agentkit/package.json
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,9 +17,8 @@
"format": "prettier -c .prettierrc --write \"**/*.{ts,js,cjs,json,md}\"",
"format:check": "prettier -c .prettierrc --check \"**/*.{ts,js,cjs,json,md}\"",
"check": "tsc --noEmit",
"test": "npx jest --no-cache --testMatch='**/*.test.ts'",
"test:dry-run": "npm install && npm ci && npm publish --dry-run",
"test:e2e": "npx jest --no-cache --testMatch=**/e2e.ts --coverageThreshold '{}'",
"test": "jest --no-cache --testMatch='**/*.test.ts'",
"test:e2e": "jest --no-cache --testMatch=**/e2e.ts --coverageThreshold '{}'",
"test:types": "tsd --files src/tests/types.test-d.ts",
"clean": "rm -rf dist/*",
"prepack": "tsc",
Expand DownExpand Up@@ -47,6 +46,9 @@
"@privy-io/server-auth": "^1.18.4",
"@solana/spl-token": "^0.4.12",
"@solana/web3.js": "^1.98.0",
"bs58": "^4.0.1",
"decimal.js": "^10.5.0",
"ethers": "^6.13.5",
"md5": "^2.3.0",
"opensea-js": "^7.1.18",
"reflect-metadata": "^0.2.2",
Expand All@@ -60,6 +62,7 @@
"@types/ora": "^3.2.0",
"@types/prompts": "^2.4.9",
"@types/secp256k1": "^4.0.6",
"abitype": "^1.0.8",
"http-server": "^14.1.1",
"jest": "^29.7.0",
"mock-fs": "^5.2.0",
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions .github/workflows/format.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -40,13 +40,17 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup pnpm

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript
- name: Ensure formatting
working-directory: ./typescript
run: |
npm ci
npm run format:check
pnpm install --frozen-lockfile
Comment thread
CarsonRoscoe marked this conversation as resolved.
pnpm run format:check
27 changes: 18 additions & 9 deletions .github/workflows/lint.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -52,35 +52,44 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript
- name: Ensure Linting
working-directory: ./typescript
run: |
npm ci
npm run lint
pnpm install --frozen-lockfile
pnpm run lint

check-package-lock:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Check if package-lock.json changed
- name: Check if pnpm-lock.yaml changed
working-directory: ./typescript
run: |
npm install
if [ -n "$(git diff package-lock.json)" ]; then
echo "Error: package-lock.json was modified after running npm install. Please commit the updated package-lock.json file."
git diff package-lock.json
pnpm install
if [ -n "$(git diff pnpm-lock.yaml)" ]; then
echo "Error: pnpm-lock.yaml was modified after running pnpm install. Please commit the updated pnpm-lock.yaml file."
git diff pnpm-lock.yaml
exit 1
fi

Expand Down
16 changes: 10 additions & 6 deletions .github/workflows/publish_docs.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,19 +9,23 @@ jobs:
steps:
- uses: actions/checkout@v3

- name: Set up Node 18
uses: actions/setup-node@v4
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install and Build JSDocs
working-directory: ./typescript
run: |
npm ci
npm run build
npm run docs
pnpm install --frozen-lockfile
pnpm run build
pnpm run docs

- name: Build AgentKit JSDocs
run: |
Expand Down
17 changes: 11 additions & 6 deletions .github/workflows/publish_nightly.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -35,11 +35,16 @@ jobs:
with:
ref: nightly

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install jq
Expand All@@ -48,8 +53,8 @@ jobs:
- name: Install dependencies and build packages
run: |
cd typescript
npm ci
npm run build
pnpm install --frozen-lockfile
pnpm run build

- name: Find NPM packages
id: find-npm-packages
Expand All@@ -76,11 +81,11 @@ jobs:
LATEST_NIGHTLY=$(echo "$ALL_VERSIONS" | jq -r '.[]' 2>/dev/null | grep -E "nightly\.[0-9]{8}\.[0-9]+$" | sort -V | tail -n1 || echo "")
TODAY=$(date +%Y%m%d)
if [ -z "$LATEST_NIGHTLY" ]; then
npm version prerelease --preid=nightly.$TODAY --no-git-tag-version
pnpm version prerelease --preid=nightly.$TODAY --no-git-tag-version
else
BUILD_NUM=$(echo $LATEST_NIGHTLY | grep -Eo '[0-9]+$')
NEXT_BUILD=$((BUILD_NUM + 1))
npm version "$(echo $LATEST_NIGHTLY | cut -d'-' -f1)-nightly.$TODAY.$NEXT_BUILD" --no-git-tag-version
pnpm version "$(echo $LATEST_NIGHTLY | cut -d'-' -f1)-nightly.$TODAY.$NEXT_BUILD" --no-git-tag-version
fi
fi
cd - > /dev/null
Expand All@@ -92,7 +97,7 @@ jobs:
cd typescript
for pkg in ${{ steps.find-npm-packages.outputs.packages }}; do
if [ -f "$pkg/package.json" ] && ! grep -q '"private": true' "$pkg/package.json"; then
cd $pkg && npm publish --tag nightly --provenance --access public
cd $pkg && pnpm publish --tag nightly --provenance --access public
cd - > /dev/null
fi
done
Expand Down
15 changes: 11 additions & 4 deletions .github/workflows/publish_npm_manual.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,17 +18,24 @@ jobs:
id-token: write
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install, build and publish package
working-directory: ./typescript/${{ inputs.directory }}
run: |
npm ci
npm run build
npm publish --provenance --access public
pnpm install --frozen-lockfile
pnpm run build
pnpm publish --provenance --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
13 changes: 10 additions & 3 deletions .github/workflows/unit_tests.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -47,13 +47,20 @@ jobs:
node-version: ["18", "20"]
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install and test AgentKit.js
working-directory: ./typescript
run: |
npm ci
npm run test
pnpm install --frozen-lockfile
pnpm run test
13 changes: 9 additions & 4 deletions .github/workflows/version_publish_npm.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,25 +17,30 @@ jobs:
- name: Clone repository
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install dependencies
run: npm ci
run: pnpm install --frozen-lockfile
working-directory: ./typescript

- name: Version and/or Publish to NPM
uses: changesets/action@06245a4e0a36c064a573d4150030f5ec548e4fcc
with:
commit: "chore: version typescript packages"
title: "chore: version typescript packages"
version: npm run changeset:version
publish: npm run publish
version: pnpm run changeset:version
publish: pnpm run publish
cwd: ./typescript
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down
6 changes: 5 additions & 1 deletion .gitignore
Original file line numberDiff line numberDiff line change
Expand Up@@ -134,4 +134,8 @@ docs/
!python/coinbase-agentkit/docs/
!python/framework-extensions/langchain/docs/

.to-publish-pypi
.to-publish-pypi

# pnpm
typescript/.pnpm-store
typescript/.pnp.*
33 changes: 19 additions & 14 deletions CONTRIBUTING-TYPESCRIPT.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,18 +15,23 @@ This guide covers TypeScript-specific setup and development for AgentKit.

## Development Setup

AgentKit uses Node.js v18.x or higher and npm 8.x or higher.
AgentKit uses Node.js v18.x or higher and pnpm 10.7.x or higher.

You can run the following commands in your terminal to check your local Node.js and npm versions:
You can run the following commands in your terminal to check your local Node.js and pnpm versions:

```bash
node --version
npm --version
pnpm --version
```

If the versions are not correct or you don't have Node.js or npm installed, download through [nvm](https://github.com/nvm-sh/nvm).
If the versions are not correct or you don't have Node.js or pnpm installed, download Node.Js through [fnm](https://github.com/Schniz/fnm) and then install [pnpm](https://pnpm.io/installation).

Once you have these installed, make sure you install the project dependencies by running `npm install` from the root of the TypeScript monorepo, in other words, from the root `typescript/` folder.
Once you have these installed, make sure you install the project dependencies by running `pnpm install` from the root of the TypeScript monorepo, in other words, from the root `typescript/` folder.

> **Note for existing contributors**: If you previously contributed when this was an npm turbo monorepo, you'll need to remove existing node_modules directories and reinstall dependencies with pnpm. From the `typescript/` directory, run:
> ```bash
> find . -name "node_modules" -type d -exec rm -rf {} + && pnpm i
> ```

## Adding an Action Provider

Expand DownExpand Up@@ -184,7 +189,7 @@ You can then run the unit tests with the following command:

```bash
cd typescript/agentkit
npm test
pnpm test
```

Check out the [Testing](#testing) section to learn how to manually test your new action provider.
Expand DownExpand Up@@ -224,23 +229,23 @@ A good way to test new actions locally is by using the chatbot example in `types
The flow is:

1. Make your change as described in the [Adding an Agentic Action](#adding-an-agentic-action) section
2. From `typescript/`, run `npm run build && npm i`
3. In `typescript/examples/langchain-cdp-chatbot`, run `npm run start`
2. From `typescript/`, run `pnpm run build && pnpm i`
3. In `typescript/examples/langchain-cdp-chatbot`, run `pnpm run start`
4. You can now interact with your new action via the chatbot!

### Running Tests

From the package you are working in, you can run:

```bash
npm test
pnpm test
```

For example, to run all tests in the `@coinbase/agentkit` package, you can run:

```bash
cd typescript/agentkit
npm test
pnpm test
```

## Code Style
Expand All@@ -249,13 +254,13 @@ We use ESLint and Prettier for linting and formatting. Run:

```bash
# Format code
npm run format
pnpm run format

# Lint code
npm run lint
pnpm run lint

# Fix linting issues
npm run lint:fix
pnpm run lint:fix
```

## Documentation
Expand All@@ -276,7 +281,7 @@ Changesets are stored in the `.changeset` directory. Each changeset is stored as
To add a changeset, use `changesets` to create it for you:

```bash
npm run changeset
pnpm run changeset
```

This will kick off an interactive prompt to help you create the changeset. Use the arrow keys to navigate the different options, and press the `Space` key to select an option. You should select the package(s) you are making a change to – most of the time this will be `@coinbase/agentkit`. Once selected, hit `Enter`. You'll then be prompted to specify the type of change you are making (major, minor or patch), starting with major. Most of the time you will not be making a major change, so hitting `Enter` will progress to the next step. If you're adding a new feature, you should select `minor`. If you're fixing a bug, you should select `patch`. Once selected, you will be prompted to provide a summary of your changes. This should be a short, specific description in the past tense (see above for examples).
Expand Down
9 changes: 6 additions & 3 deletions typescript/agentkit/package.json
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,9 +17,8 @@
"format": "prettier -c .prettierrc --write \"**/*.{ts,js,cjs,json,md}\"",
"format:check": "prettier -c .prettierrc --check \"**/*.{ts,js,cjs,json,md}\"",
"check": "tsc --noEmit",
"test": "npx jest --no-cache --testMatch='**/*.test.ts'",
"test:dry-run": "npm install && npm ci && npm publish --dry-run",
"test:e2e": "npx jest --no-cache --testMatch=**/e2e.ts --coverageThreshold '{}'",
"test": "jest --no-cache --testMatch='**/*.test.ts'",
"test:e2e": "jest --no-cache --testMatch=**/e2e.ts --coverageThreshold '{}'",
"test:types": "tsd --files src/tests/types.test-d.ts",
"clean": "rm -rf dist/*",
"prepack": "tsc",
Expand DownExpand Up@@ -47,6 +46,9 @@
"@privy-io/server-auth": "^1.18.4",
"@solana/spl-token": "^0.4.12",
"@solana/web3.js": "^1.98.0",
"bs58": "^4.0.1",
"decimal.js": "^10.5.0",
"ethers": "^6.13.5",
"md5": "^2.3.0",
"opensea-js": "^7.1.18",
"reflect-metadata": "^0.2.2",
Expand All@@ -60,6 +62,7 @@
"@types/ora": "^3.2.0",
"@types/prompts": "^2.4.9",
"@types/secp256k1": "^4.0.6",
"abitype": "^1.0.8",
"http-server": "^14.1.1",
"jest": "^29.7.0",
"mock-fs": "^5.2.0",
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions .github/workflows/format.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -40,13 +40,17 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup pnpm

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript
- name: Ensure formatting
working-directory: ./typescript
run: |
npm ci
npm run format:check
pnpm install --frozen-lockfile
Comment thread
CarsonRoscoe marked this conversation as resolved.
pnpm run format:check
27 changes: 18 additions & 9 deletions .github/workflows/lint.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -52,35 +52,44 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript
- name: Ensure Linting
working-directory: ./typescript
run: |
npm ci
npm run lint
pnpm install --frozen-lockfile
pnpm run lint

check-package-lock:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Check if package-lock.json changed
- name: Check if pnpm-lock.yaml changed
working-directory: ./typescript
run: |
npm install
if [ -n "$(git diff package-lock.json)" ]; then
echo "Error: package-lock.json was modified after running npm install. Please commit the updated package-lock.json file."
git diff package-lock.json
pnpm install
if [ -n "$(git diff pnpm-lock.yaml)" ]; then
echo "Error: pnpm-lock.yaml was modified after running pnpm install. Please commit the updated pnpm-lock.yaml file."
git diff pnpm-lock.yaml
exit 1
fi

Expand Down
16 changes: 10 additions & 6 deletions .github/workflows/publish_docs.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,19 +9,23 @@ jobs:
steps:
- uses: actions/checkout@v3

- name: Set up Node 18
uses: actions/setup-node@v4
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install and Build JSDocs
working-directory: ./typescript
run: |
npm ci
npm run build
npm run docs
pnpm install --frozen-lockfile
pnpm run build
pnpm run docs

- name: Build AgentKit JSDocs
run: |
Expand Down
17 changes: 11 additions & 6 deletions .github/workflows/publish_nightly.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -35,11 +35,16 @@ jobs:
with:
ref: nightly

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install jq
Expand All@@ -48,8 +53,8 @@ jobs:
- name: Install dependencies and build packages
run: |
cd typescript
npm ci
npm run build
pnpm install --frozen-lockfile
pnpm run build

- name: Find NPM packages
id: find-npm-packages
Expand All@@ -76,11 +81,11 @@ jobs:
LATEST_NIGHTLY=$(echo "$ALL_VERSIONS" | jq -r '.[]' 2>/dev/null | grep -E "nightly\.[0-9]{8}\.[0-9]+$" | sort -V | tail -n1 || echo "")
TODAY=$(date +%Y%m%d)
if [ -z "$LATEST_NIGHTLY" ]; then
npm version prerelease --preid=nightly.$TODAY --no-git-tag-version
pnpm version prerelease --preid=nightly.$TODAY --no-git-tag-version
else
BUILD_NUM=$(echo $LATEST_NIGHTLY | grep -Eo '[0-9]+$')
NEXT_BUILD=$((BUILD_NUM + 1))
npm version "$(echo $LATEST_NIGHTLY | cut -d'-' -f1)-nightly.$TODAY.$NEXT_BUILD" --no-git-tag-version
pnpm version "$(echo $LATEST_NIGHTLY | cut -d'-' -f1)-nightly.$TODAY.$NEXT_BUILD" --no-git-tag-version
fi
fi
cd - > /dev/null
Expand All@@ -92,7 +97,7 @@ jobs:
cd typescript
for pkg in ${{ steps.find-npm-packages.outputs.packages }}; do
if [ -f "$pkg/package.json" ] && ! grep -q '"private": true' "$pkg/package.json"; then
cd $pkg && npm publish --tag nightly --provenance --access public
cd $pkg && pnpm publish --tag nightly --provenance --access public
cd - > /dev/null
fi
done
Expand Down
15 changes: 11 additions & 4 deletions .github/workflows/publish_npm_manual.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,17 +18,24 @@ jobs:
id-token: write
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install, build and publish package
working-directory: ./typescript/${{ inputs.directory }}
run: |
npm ci
npm run build
npm publish --provenance --access public
pnpm install --frozen-lockfile
pnpm run build
pnpm publish --provenance --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
13 changes: 10 additions & 3 deletions .github/workflows/unit_tests.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -47,13 +47,20 @@ jobs:
node-version: ["18", "20"]
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install and test AgentKit.js
working-directory: ./typescript
run: |
npm ci
npm run test
pnpm install --frozen-lockfile
pnpm run test
13 changes: 9 additions & 4 deletions .github/workflows/version_publish_npm.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,25 +17,30 @@ jobs:
- name: Clone repository
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install dependencies
run: npm ci
run: pnpm install --frozen-lockfile
working-directory: ./typescript

- name: Version and/or Publish to NPM
uses: changesets/action@06245a4e0a36c064a573d4150030f5ec548e4fcc
with:
commit: "chore: version typescript packages"
title: "chore: version typescript packages"
version: npm run changeset:version
publish: npm run publish
version: pnpm run changeset:version
publish: pnpm run publish
cwd: ./typescript
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down
6 changes: 5 additions & 1 deletion .gitignore
Original file line numberDiff line numberDiff line change
Expand Up@@ -134,4 +134,8 @@ docs/
!python/coinbase-agentkit/docs/
!python/framework-extensions/langchain/docs/

.to-publish-pypi
.to-publish-pypi

# pnpm
typescript/.pnpm-store
typescript/.pnp.*
33 changes: 19 additions & 14 deletions CONTRIBUTING-TYPESCRIPT.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,18 +15,23 @@ This guide covers TypeScript-specific setup and development for AgentKit.

## Development Setup

AgentKit uses Node.js v18.x or higher and npm 8.x or higher.
AgentKit uses Node.js v18.x or higher and pnpm 10.7.x or higher.

You can run the following commands in your terminal to check your local Node.js and npm versions:
You can run the following commands in your terminal to check your local Node.js and pnpm versions:

```bash
node --version
npm --version
pnpm --version
```

If the versions are not correct or you don't have Node.js or npm installed, download through [nvm](https://github.com/nvm-sh/nvm).
If the versions are not correct or you don't have Node.js or pnpm installed, download Node.Js through [fnm](https://github.com/Schniz/fnm) and then install [pnpm](https://pnpm.io/installation).

Once you have these installed, make sure you install the project dependencies by running `npm install` from the root of the TypeScript monorepo, in other words, from the root `typescript/` folder.
Once you have these installed, make sure you install the project dependencies by running `pnpm install` from the root of the TypeScript monorepo, in other words, from the root `typescript/` folder.

> **Note for existing contributors**: If you previously contributed when this was an npm turbo monorepo, you'll need to remove existing node_modules directories and reinstall dependencies with pnpm. From the `typescript/` directory, run:
> ```bash
> find . -name "node_modules" -type d -exec rm -rf {} + && pnpm i
> ```

## Adding an Action Provider

Expand DownExpand Up@@ -184,7 +189,7 @@ You can then run the unit tests with the following command:

```bash
cd typescript/agentkit
npm test
pnpm test
```

Check out the [Testing](#testing) section to learn how to manually test your new action provider.
Expand DownExpand Up@@ -224,23 +229,23 @@ A good way to test new actions locally is by using the chatbot example in `types
The flow is:

1. Make your change as described in the [Adding an Agentic Action](#adding-an-agentic-action) section
2. From `typescript/`, run `npm run build && npm i`
3. In `typescript/examples/langchain-cdp-chatbot`, run `npm run start`
2. From `typescript/`, run `pnpm run build && pnpm i`
3. In `typescript/examples/langchain-cdp-chatbot`, run `pnpm run start`
4. You can now interact with your new action via the chatbot!

### Running Tests

From the package you are working in, you can run:

```bash
npm test
pnpm test
```

For example, to run all tests in the `@coinbase/agentkit` package, you can run:

```bash
cd typescript/agentkit
npm test
pnpm test
```

## Code Style
Expand All@@ -249,13 +254,13 @@ We use ESLint and Prettier for linting and formatting. Run:

```bash
# Format code
npm run format
pnpm run format

# Lint code
npm run lint
pnpm run lint

# Fix linting issues
npm run lint:fix
pnpm run lint:fix
```

## Documentation
Expand All@@ -276,7 +281,7 @@ Changesets are stored in the `.changeset` directory. Each changeset is stored as
To add a changeset, use `changesets` to create it for you:

```bash
npm run changeset
pnpm run changeset
```

This will kick off an interactive prompt to help you create the changeset. Use the arrow keys to navigate the different options, and press the `Space` key to select an option. You should select the package(s) you are making a change to – most of the time this will be `@coinbase/agentkit`. Once selected, hit `Enter`. You'll then be prompted to specify the type of change you are making (major, minor or patch), starting with major. Most of the time you will not be making a major change, so hitting `Enter` will progress to the next step. If you're adding a new feature, you should select `minor`. If you're fixing a bug, you should select `patch`. Once selected, you will be prompted to provide a summary of your changes. This should be a short, specific description in the past tense (see above for examples).
Expand Down
9 changes: 6 additions & 3 deletions typescript/agentkit/package.json
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,9 +17,8 @@
"format": "prettier -c .prettierrc --write \"**/*.{ts,js,cjs,json,md}\"",
"format:check": "prettier -c .prettierrc --check \"**/*.{ts,js,cjs,json,md}\"",
"check": "tsc --noEmit",
"test": "npx jest --no-cache --testMatch='**/*.test.ts'",
"test:dry-run": "npm install && npm ci && npm publish --dry-run",
"test:e2e": "npx jest --no-cache --testMatch=**/e2e.ts --coverageThreshold '{}'",
"test": "jest --no-cache --testMatch='**/*.test.ts'",
"test:e2e": "jest --no-cache --testMatch=**/e2e.ts --coverageThreshold '{}'",
"test:types": "tsd --files src/tests/types.test-d.ts",
"clean": "rm -rf dist/*",
"prepack": "tsc",
Expand DownExpand Up@@ -47,6 +46,9 @@
"@privy-io/server-auth": "^1.18.4",
"@solana/spl-token": "^0.4.12",
"@solana/web3.js": "^1.98.0",
"bs58": "^4.0.1",
"decimal.js": "^10.5.0",
"ethers": "^6.13.5",
"md5": "^2.3.0",
"opensea-js": "^7.1.18",
"reflect-metadata": "^0.2.2",
Expand All@@ -60,6 +62,7 @@
"@types/ora": "^3.2.0",
"@types/prompts": "^2.4.9",
"@types/secp256k1": "^4.0.6",
"abitype": "^1.0.8",
"http-server": "^14.1.1",
"jest": "^29.7.0",
"mock-fs": "^5.2.0",
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions .github/workflows/format.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -40,13 +40,17 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup pnpm

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript
- name: Ensure formatting
working-directory: ./typescript
run: |
npm ci
npm run format:check
pnpm install --frozen-lockfile
Comment thread
CarsonRoscoe marked this conversation as resolved.
pnpm run format:check
27 changes: 18 additions & 9 deletions .github/workflows/lint.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -52,35 +52,44 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript
- name: Ensure Linting
working-directory: ./typescript
run: |
npm ci
npm run lint
pnpm install --frozen-lockfile
pnpm run lint

check-package-lock:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Check if package-lock.json changed
- name: Check if pnpm-lock.yaml changed
working-directory: ./typescript
run: |
npm install
if [ -n "$(git diff package-lock.json)" ]; then
echo "Error: package-lock.json was modified after running npm install. Please commit the updated package-lock.json file."
git diff package-lock.json
pnpm install
if [ -n "$(git diff pnpm-lock.yaml)" ]; then
echo "Error: pnpm-lock.yaml was modified after running pnpm install. Please commit the updated pnpm-lock.yaml file."
git diff pnpm-lock.yaml
exit 1
fi

Expand Down
16 changes: 10 additions & 6 deletions .github/workflows/publish_docs.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,19 +9,23 @@ jobs:
steps:
- uses: actions/checkout@v3

- name: Set up Node 18
uses: actions/setup-node@v4
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install and Build JSDocs
working-directory: ./typescript
run: |
npm ci
npm run build
npm run docs
pnpm install --frozen-lockfile
pnpm run build
pnpm run docs

- name: Build AgentKit JSDocs
run: |
Expand Down
17 changes: 11 additions & 6 deletions .github/workflows/publish_nightly.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -35,11 +35,16 @@ jobs:
with:
ref: nightly

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install jq
Expand All@@ -48,8 +53,8 @@ jobs:
- name: Install dependencies and build packages
run: |
cd typescript
npm ci
npm run build
pnpm install --frozen-lockfile
pnpm run build

- name: Find NPM packages
id: find-npm-packages
Expand All@@ -76,11 +81,11 @@ jobs:
LATEST_NIGHTLY=$(echo "$ALL_VERSIONS" | jq -r '.[]' 2>/dev/null | grep -E "nightly\.[0-9]{8}\.[0-9]+$" | sort -V | tail -n1 || echo "")
TODAY=$(date +%Y%m%d)
if [ -z "$LATEST_NIGHTLY" ]; then
npm version prerelease --preid=nightly.$TODAY --no-git-tag-version
pnpm version prerelease --preid=nightly.$TODAY --no-git-tag-version
else
BUILD_NUM=$(echo $LATEST_NIGHTLY | grep -Eo '[0-9]+$')
NEXT_BUILD=$((BUILD_NUM + 1))
npm version "$(echo $LATEST_NIGHTLY | cut -d'-' -f1)-nightly.$TODAY.$NEXT_BUILD" --no-git-tag-version
pnpm version "$(echo $LATEST_NIGHTLY | cut -d'-' -f1)-nightly.$TODAY.$NEXT_BUILD" --no-git-tag-version
fi
fi
cd - > /dev/null
Expand All@@ -92,7 +97,7 @@ jobs:
cd typescript
for pkg in ${{ steps.find-npm-packages.outputs.packages }}; do
if [ -f "$pkg/package.json" ] && ! grep -q '"private": true' "$pkg/package.json"; then
cd $pkg && npm publish --tag nightly --provenance --access public
cd $pkg && pnpm publish --tag nightly --provenance --access public
cd - > /dev/null
fi
done
Expand Down
15 changes: 11 additions & 4 deletions .github/workflows/publish_npm_manual.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,17 +18,24 @@ jobs:
id-token: write
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install, build and publish package
working-directory: ./typescript/${{ inputs.directory }}
run: |
npm ci
npm run build
npm publish --provenance --access public
pnpm install --frozen-lockfile
pnpm run build
pnpm publish --provenance --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
13 changes: 10 additions & 3 deletions .github/workflows/unit_tests.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -47,13 +47,20 @@ jobs:
node-version: ["18", "20"]
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install and test AgentKit.js
working-directory: ./typescript
run: |
npm ci
npm run test
pnpm install --frozen-lockfile
pnpm run test
13 changes: 9 additions & 4 deletions .github/workflows/version_publish_npm.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,25 +17,30 @@ jobs:
- name: Clone repository
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install dependencies
run: npm ci
run: pnpm install --frozen-lockfile
working-directory: ./typescript

- name: Version and/or Publish to NPM
uses: changesets/action@06245a4e0a36c064a573d4150030f5ec548e4fcc
with:
commit: "chore: version typescript packages"
title: "chore: version typescript packages"
version: npm run changeset:version
publish: npm run publish
version: pnpm run changeset:version
publish: pnpm run publish
cwd: ./typescript
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down
6 changes: 5 additions & 1 deletion .gitignore
Original file line numberDiff line numberDiff line change
Expand Up@@ -134,4 +134,8 @@ docs/
!python/coinbase-agentkit/docs/
!python/framework-extensions/langchain/docs/

.to-publish-pypi
.to-publish-pypi

# pnpm
typescript/.pnpm-store
typescript/.pnp.*
33 changes: 19 additions & 14 deletions CONTRIBUTING-TYPESCRIPT.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,18 +15,23 @@ This guide covers TypeScript-specific setup and development for AgentKit.

## Development Setup

AgentKit uses Node.js v18.x or higher and npm 8.x or higher.
AgentKit uses Node.js v18.x or higher and pnpm 10.7.x or higher.

You can run the following commands in your terminal to check your local Node.js and npm versions:
You can run the following commands in your terminal to check your local Node.js and pnpm versions:

```bash
node --version
npm --version
pnpm --version
```

If the versions are not correct or you don't have Node.js or npm installed, download through [nvm](https://github.com/nvm-sh/nvm).
If the versions are not correct or you don't have Node.js or pnpm installed, download Node.Js through [fnm](https://github.com/Schniz/fnm) and then install [pnpm](https://pnpm.io/installation).

Once you have these installed, make sure you install the project dependencies by running `npm install` from the root of the TypeScript monorepo, in other words, from the root `typescript/` folder.
Once you have these installed, make sure you install the project dependencies by running `pnpm install` from the root of the TypeScript monorepo, in other words, from the root `typescript/` folder.

> **Note for existing contributors**: If you previously contributed when this was an npm turbo monorepo, you'll need to remove existing node_modules directories and reinstall dependencies with pnpm. From the `typescript/` directory, run:
> ```bash
> find . -name "node_modules" -type d -exec rm -rf {} + && pnpm i
> ```

## Adding an Action Provider

Expand DownExpand Up@@ -184,7 +189,7 @@ You can then run the unit tests with the following command:

```bash
cd typescript/agentkit
npm test
pnpm test
```

Check out the [Testing](#testing) section to learn how to manually test your new action provider.
Expand DownExpand Up@@ -224,23 +229,23 @@ A good way to test new actions locally is by using the chatbot example in `types
The flow is:

1. Make your change as described in the [Adding an Agentic Action](#adding-an-agentic-action) section
2. From `typescript/`, run `npm run build && npm i`
3. In `typescript/examples/langchain-cdp-chatbot`, run `npm run start`
2. From `typescript/`, run `pnpm run build && pnpm i`
3. In `typescript/examples/langchain-cdp-chatbot`, run `pnpm run start`
4. You can now interact with your new action via the chatbot!

### Running Tests

From the package you are working in, you can run:

```bash
npm test
pnpm test
```

For example, to run all tests in the `@coinbase/agentkit` package, you can run:

```bash
cd typescript/agentkit
npm test
pnpm test
```

## Code Style
Expand All@@ -249,13 +254,13 @@ We use ESLint and Prettier for linting and formatting. Run:

```bash
# Format code
npm run format
pnpm run format

# Lint code
npm run lint
pnpm run lint

# Fix linting issues
npm run lint:fix
pnpm run lint:fix
```

## Documentation
Expand All@@ -276,7 +281,7 @@ Changesets are stored in the `.changeset` directory. Each changeset is stored as
To add a changeset, use `changesets` to create it for you:

```bash
npm run changeset
pnpm run changeset
```

This will kick off an interactive prompt to help you create the changeset. Use the arrow keys to navigate the different options, and press the `Space` key to select an option. You should select the package(s) you are making a change to – most of the time this will be `@coinbase/agentkit`. Once selected, hit `Enter`. You'll then be prompted to specify the type of change you are making (major, minor or patch), starting with major. Most of the time you will not be making a major change, so hitting `Enter` will progress to the next step. If you're adding a new feature, you should select `minor`. If you're fixing a bug, you should select `patch`. Once selected, you will be prompted to provide a summary of your changes. This should be a short, specific description in the past tense (see above for examples).
Expand Down
9 changes: 6 additions & 3 deletions typescript/agentkit/package.json
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,9 +17,8 @@
"format": "prettier -c .prettierrc --write \"**/*.{ts,js,cjs,json,md}\"",
"format:check": "prettier -c .prettierrc --check \"**/*.{ts,js,cjs,json,md}\"",
"check": "tsc --noEmit",
"test": "npx jest --no-cache --testMatch='**/*.test.ts'",
"test:dry-run": "npm install && npm ci && npm publish --dry-run",
"test:e2e": "npx jest --no-cache --testMatch=**/e2e.ts --coverageThreshold '{}'",
"test": "jest --no-cache --testMatch='**/*.test.ts'",
"test:e2e": "jest --no-cache --testMatch=**/e2e.ts --coverageThreshold '{}'",
"test:types": "tsd --files src/tests/types.test-d.ts",
"clean": "rm -rf dist/*",
"prepack": "tsc",
Expand DownExpand Up@@ -47,6 +46,9 @@
"@privy-io/server-auth": "^1.18.4",
"@solana/spl-token": "^0.4.12",
"@solana/web3.js": "^1.98.0",
"bs58": "^4.0.1",
"decimal.js": "^10.5.0",
"ethers": "^6.13.5",
"md5": "^2.3.0",
"opensea-js": "^7.1.18",
"reflect-metadata": "^0.2.2",
Expand All@@ -60,6 +62,7 @@
"@types/ora": "^3.2.0",
"@types/prompts": "^2.4.9",
"@types/secp256k1": "^4.0.6",
"abitype": "^1.0.8",
"http-server": "^14.1.1",
"jest": "^29.7.0",
"mock-fs": "^5.2.0",
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions .github/workflows/format.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -40,13 +40,17 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup pnpm

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript
- name: Ensure formatting
working-directory: ./typescript
run: |
npm ci
npm run format:check
pnpm install --frozen-lockfile
Comment thread
CarsonRoscoe marked this conversation as resolved.
pnpm run format:check
27 changes: 18 additions & 9 deletions .github/workflows/lint.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -52,35 +52,44 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript
- name: Ensure Linting
working-directory: ./typescript
run: |
npm ci
npm run lint
pnpm install --frozen-lockfile
pnpm run lint

check-package-lock:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Check if package-lock.json changed
- name: Check if pnpm-lock.yaml changed
working-directory: ./typescript
run: |
npm install
if [ -n "$(git diff package-lock.json)" ]; then
echo "Error: package-lock.json was modified after running npm install. Please commit the updated package-lock.json file."
git diff package-lock.json
pnpm install
if [ -n "$(git diff pnpm-lock.yaml)" ]; then
echo "Error: pnpm-lock.yaml was modified after running pnpm install. Please commit the updated pnpm-lock.yaml file."
git diff pnpm-lock.yaml
exit 1
fi

Expand Down
16 changes: 10 additions & 6 deletions .github/workflows/publish_docs.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,19 +9,23 @@ jobs:
steps:
- uses: actions/checkout@v3

- name: Set up Node 18
uses: actions/setup-node@v4
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install and Build JSDocs
working-directory: ./typescript
run: |
npm ci
npm run build
npm run docs
pnpm install --frozen-lockfile
pnpm run build
pnpm run docs

- name: Build AgentKit JSDocs
run: |
Expand Down
17 changes: 11 additions & 6 deletions .github/workflows/publish_nightly.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -35,11 +35,16 @@ jobs:
with:
ref: nightly

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install jq
Expand All@@ -48,8 +53,8 @@ jobs:
- name: Install dependencies and build packages
run: |
cd typescript
npm ci
npm run build
pnpm install --frozen-lockfile
pnpm run build

- name: Find NPM packages
id: find-npm-packages
Expand All@@ -76,11 +81,11 @@ jobs:
LATEST_NIGHTLY=$(echo "$ALL_VERSIONS" | jq -r '.[]' 2>/dev/null | grep -E "nightly\.[0-9]{8}\.[0-9]+$" | sort -V | tail -n1 || echo "")
TODAY=$(date +%Y%m%d)
if [ -z "$LATEST_NIGHTLY" ]; then
npm version prerelease --preid=nightly.$TODAY --no-git-tag-version
pnpm version prerelease --preid=nightly.$TODAY --no-git-tag-version
else
BUILD_NUM=$(echo $LATEST_NIGHTLY | grep -Eo '[0-9]+$')
NEXT_BUILD=$((BUILD_NUM + 1))
npm version "$(echo $LATEST_NIGHTLY | cut -d'-' -f1)-nightly.$TODAY.$NEXT_BUILD" --no-git-tag-version
pnpm version "$(echo $LATEST_NIGHTLY | cut -d'-' -f1)-nightly.$TODAY.$NEXT_BUILD" --no-git-tag-version
fi
fi
cd - > /dev/null
Expand All@@ -92,7 +97,7 @@ jobs:
cd typescript
for pkg in ${{ steps.find-npm-packages.outputs.packages }}; do
if [ -f "$pkg/package.json" ] && ! grep -q '"private": true' "$pkg/package.json"; then
cd $pkg && npm publish --tag nightly --provenance --access public
cd $pkg && pnpm publish --tag nightly --provenance --access public
cd - > /dev/null
fi
done
Expand Down
15 changes: 11 additions & 4 deletions .github/workflows/publish_npm_manual.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,17 +18,24 @@ jobs:
id-token: write
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install, build and publish package
working-directory: ./typescript/${{ inputs.directory }}
run: |
npm ci
npm run build
npm publish --provenance --access public
pnpm install --frozen-lockfile
pnpm run build
pnpm publish --provenance --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
13 changes: 10 additions & 3 deletions .github/workflows/unit_tests.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -47,13 +47,20 @@ jobs:
node-version: ["18", "20"]
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install and test AgentKit.js
working-directory: ./typescript
run: |
npm ci
npm run test
pnpm install --frozen-lockfile
pnpm run test
13 changes: 9 additions & 4 deletions .github/workflows/version_publish_npm.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,25 +17,30 @@ jobs:
- name: Clone repository
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install dependencies
run: npm ci
run: pnpm install --frozen-lockfile
working-directory: ./typescript

- name: Version and/or Publish to NPM
uses: changesets/action@06245a4e0a36c064a573d4150030f5ec548e4fcc
with:
commit: "chore: version typescript packages"
title: "chore: version typescript packages"
version: npm run changeset:version
publish: npm run publish
version: pnpm run changeset:version
publish: pnpm run publish
cwd: ./typescript
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down
6 changes: 5 additions & 1 deletion .gitignore
Original file line numberDiff line numberDiff line change
Expand Up@@ -134,4 +134,8 @@ docs/
!python/coinbase-agentkit/docs/
!python/framework-extensions/langchain/docs/

.to-publish-pypi
.to-publish-pypi

# pnpm
typescript/.pnpm-store
typescript/.pnp.*
33 changes: 19 additions & 14 deletions CONTRIBUTING-TYPESCRIPT.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,18 +15,23 @@ This guide covers TypeScript-specific setup and development for AgentKit.

## Development Setup

AgentKit uses Node.js v18.x or higher and npm 8.x or higher.
AgentKit uses Node.js v18.x or higher and pnpm 10.7.x or higher.

You can run the following commands in your terminal to check your local Node.js and npm versions:
You can run the following commands in your terminal to check your local Node.js and pnpm versions:

```bash
node --version
npm --version
pnpm --version
```

If the versions are not correct or you don't have Node.js or npm installed, download through [nvm](https://github.com/nvm-sh/nvm).
If the versions are not correct or you don't have Node.js or pnpm installed, download Node.Js through [fnm](https://github.com/Schniz/fnm) and then install [pnpm](https://pnpm.io/installation).

Once you have these installed, make sure you install the project dependencies by running `npm install` from the root of the TypeScript monorepo, in other words, from the root `typescript/` folder.
Once you have these installed, make sure you install the project dependencies by running `pnpm install` from the root of the TypeScript monorepo, in other words, from the root `typescript/` folder.

> **Note for existing contributors**: If you previously contributed when this was an npm turbo monorepo, you'll need to remove existing node_modules directories and reinstall dependencies with pnpm. From the `typescript/` directory, run:
> ```bash
> find . -name "node_modules" -type d -exec rm -rf {} + && pnpm i
> ```

## Adding an Action Provider

Expand DownExpand Up@@ -184,7 +189,7 @@ You can then run the unit tests with the following command:

```bash
cd typescript/agentkit
npm test
pnpm test
```

Check out the [Testing](#testing) section to learn how to manually test your new action provider.
Expand DownExpand Up@@ -224,23 +229,23 @@ A good way to test new actions locally is by using the chatbot example in `types
The flow is:

1. Make your change as described in the [Adding an Agentic Action](#adding-an-agentic-action) section
2. From `typescript/`, run `npm run build && npm i`
3. In `typescript/examples/langchain-cdp-chatbot`, run `npm run start`
2. From `typescript/`, run `pnpm run build && pnpm i`
3. In `typescript/examples/langchain-cdp-chatbot`, run `pnpm run start`
4. You can now interact with your new action via the chatbot!

### Running Tests

From the package you are working in, you can run:

```bash
npm test
pnpm test
```

For example, to run all tests in the `@coinbase/agentkit` package, you can run:

```bash
cd typescript/agentkit
npm test
pnpm test
```

## Code Style
Expand All@@ -249,13 +254,13 @@ We use ESLint and Prettier for linting and formatting. Run:

```bash
# Format code
npm run format
pnpm run format

# Lint code
npm run lint
pnpm run lint

# Fix linting issues
npm run lint:fix
pnpm run lint:fix
```

## Documentation
Expand All@@ -276,7 +281,7 @@ Changesets are stored in the `.changeset` directory. Each changeset is stored as
To add a changeset, use `changesets` to create it for you:

```bash
npm run changeset
pnpm run changeset
```

This will kick off an interactive prompt to help you create the changeset. Use the arrow keys to navigate the different options, and press the `Space` key to select an option. You should select the package(s) you are making a change to – most of the time this will be `@coinbase/agentkit`. Once selected, hit `Enter`. You'll then be prompted to specify the type of change you are making (major, minor or patch), starting with major. Most of the time you will not be making a major change, so hitting `Enter` will progress to the next step. If you're adding a new feature, you should select `minor`. If you're fixing a bug, you should select `patch`. Once selected, you will be prompted to provide a summary of your changes. This should be a short, specific description in the past tense (see above for examples).
Expand Down
9 changes: 6 additions & 3 deletions typescript/agentkit/package.json
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,9 +17,8 @@
"format": "prettier -c .prettierrc --write \"**/*.{ts,js,cjs,json,md}\"",
"format:check": "prettier -c .prettierrc --check \"**/*.{ts,js,cjs,json,md}\"",
"check": "tsc --noEmit",
"test": "npx jest --no-cache --testMatch='**/*.test.ts'",
"test:dry-run": "npm install && npm ci && npm publish --dry-run",
"test:e2e": "npx jest --no-cache --testMatch=**/e2e.ts --coverageThreshold '{}'",
"test": "jest --no-cache --testMatch='**/*.test.ts'",
"test:e2e": "jest --no-cache --testMatch=**/e2e.ts --coverageThreshold '{}'",
"test:types": "tsd --files src/tests/types.test-d.ts",
"clean": "rm -rf dist/*",
"prepack": "tsc",
Expand DownExpand Up@@ -47,6 +46,9 @@
"@privy-io/server-auth": "^1.18.4",
"@solana/spl-token": "^0.4.12",
"@solana/web3.js": "^1.98.0",
"bs58": "^4.0.1",
"decimal.js": "^10.5.0",
"ethers": "^6.13.5",
"md5": "^2.3.0",
"opensea-js": "^7.1.18",
"reflect-metadata": "^0.2.2",
Expand All@@ -60,6 +62,7 @@
"@types/ora": "^3.2.0",
"@types/prompts": "^2.4.9",
"@types/secp256k1": "^4.0.6",
"abitype": "^1.0.8",
"http-server": "^14.1.1",
"jest": "^29.7.0",
"mock-fs": "^5.2.0",
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions .github/workflows/format.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -40,13 +40,17 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup pnpm

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript
- name: Ensure formatting
working-directory: ./typescript
run: |
npm ci
npm run format:check
pnpm install --frozen-lockfile
Comment thread
CarsonRoscoe marked this conversation as resolved.
pnpm run format:check
27 changes: 18 additions & 9 deletions .github/workflows/lint.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -52,35 +52,44 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript
- name: Ensure Linting
working-directory: ./typescript
run: |
npm ci
npm run lint
pnpm install --frozen-lockfile
pnpm run lint

check-package-lock:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Check if package-lock.json changed
- name: Check if pnpm-lock.yaml changed
working-directory: ./typescript
run: |
npm install
if [ -n "$(git diff package-lock.json)" ]; then
echo "Error: package-lock.json was modified after running npm install. Please commit the updated package-lock.json file."
git diff package-lock.json
pnpm install
if [ -n "$(git diff pnpm-lock.yaml)" ]; then
echo "Error: pnpm-lock.yaml was modified after running pnpm install. Please commit the updated pnpm-lock.yaml file."
git diff pnpm-lock.yaml
exit 1
fi

Expand Down
16 changes: 10 additions & 6 deletions .github/workflows/publish_docs.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,19 +9,23 @@ jobs:
steps:
- uses: actions/checkout@v3

- name: Set up Node 18
uses: actions/setup-node@v4
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install and Build JSDocs
working-directory: ./typescript
run: |
npm ci
npm run build
npm run docs
pnpm install --frozen-lockfile
pnpm run build
pnpm run docs

- name: Build AgentKit JSDocs
run: |
Expand Down
17 changes: 11 additions & 6 deletions .github/workflows/publish_nightly.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -35,11 +35,16 @@ jobs:
with:
ref: nightly

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install jq
Expand All@@ -48,8 +53,8 @@ jobs:
- name: Install dependencies and build packages
run: |
cd typescript
npm ci
npm run build
pnpm install --frozen-lockfile
pnpm run build

- name: Find NPM packages
id: find-npm-packages
Expand All@@ -76,11 +81,11 @@ jobs:
LATEST_NIGHTLY=$(echo "$ALL_VERSIONS" | jq -r '.[]' 2>/dev/null | grep -E "nightly\.[0-9]{8}\.[0-9]+$" | sort -V | tail -n1 || echo "")
TODAY=$(date +%Y%m%d)
if [ -z "$LATEST_NIGHTLY" ]; then
npm version prerelease --preid=nightly.$TODAY --no-git-tag-version
pnpm version prerelease --preid=nightly.$TODAY --no-git-tag-version
else
BUILD_NUM=$(echo $LATEST_NIGHTLY | grep -Eo '[0-9]+$')
NEXT_BUILD=$((BUILD_NUM + 1))
npm version "$(echo $LATEST_NIGHTLY | cut -d'-' -f1)-nightly.$TODAY.$NEXT_BUILD" --no-git-tag-version
pnpm version "$(echo $LATEST_NIGHTLY | cut -d'-' -f1)-nightly.$TODAY.$NEXT_BUILD" --no-git-tag-version
fi
fi
cd - > /dev/null
Expand All@@ -92,7 +97,7 @@ jobs:
cd typescript
for pkg in ${{ steps.find-npm-packages.outputs.packages }}; do
if [ -f "$pkg/package.json" ] && ! grep -q '"private": true' "$pkg/package.json"; then
cd $pkg && npm publish --tag nightly --provenance --access public
cd $pkg && pnpm publish --tag nightly --provenance --access public
cd - > /dev/null
fi
done
Expand Down
15 changes: 11 additions & 4 deletions .github/workflows/publish_npm_manual.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,17 +18,24 @@ jobs:
id-token: write
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install, build and publish package
working-directory: ./typescript/${{ inputs.directory }}
run: |
npm ci
npm run build
npm publish --provenance --access public
pnpm install --frozen-lockfile
pnpm run build
pnpm publish --provenance --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
13 changes: 10 additions & 3 deletions .github/workflows/unit_tests.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -47,13 +47,20 @@ jobs:
node-version: ["18", "20"]
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install and test AgentKit.js
working-directory: ./typescript
run: |
npm ci
npm run test
pnpm install --frozen-lockfile
pnpm run test
13 changes: 9 additions & 4 deletions .github/workflows/version_publish_npm.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,25 +17,30 @@ jobs:
- name: Clone repository
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install dependencies
run: npm ci
run: pnpm install --frozen-lockfile
working-directory: ./typescript

- name: Version and/or Publish to NPM
uses: changesets/action@06245a4e0a36c064a573d4150030f5ec548e4fcc
with:
commit: "chore: version typescript packages"
title: "chore: version typescript packages"
version: npm run changeset:version
publish: npm run publish
version: pnpm run changeset:version
publish: pnpm run publish
cwd: ./typescript
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down
6 changes: 5 additions & 1 deletion .gitignore
Original file line numberDiff line numberDiff line change
Expand Up@@ -134,4 +134,8 @@ docs/
!python/coinbase-agentkit/docs/
!python/framework-extensions/langchain/docs/

.to-publish-pypi
.to-publish-pypi

# pnpm
typescript/.pnpm-store
typescript/.pnp.*
33 changes: 19 additions & 14 deletions CONTRIBUTING-TYPESCRIPT.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,18 +15,23 @@ This guide covers TypeScript-specific setup and development for AgentKit.

## Development Setup

AgentKit uses Node.js v18.x or higher and npm 8.x or higher.
AgentKit uses Node.js v18.x or higher and pnpm 10.7.x or higher.

You can run the following commands in your terminal to check your local Node.js and npm versions:
You can run the following commands in your terminal to check your local Node.js and pnpm versions:

```bash
node --version
npm --version
pnpm --version
```

If the versions are not correct or you don't have Node.js or npm installed, download through [nvm](https://github.com/nvm-sh/nvm).
If the versions are not correct or you don't have Node.js or pnpm installed, download Node.Js through [fnm](https://github.com/Schniz/fnm) and then install [pnpm](https://pnpm.io/installation).

Once you have these installed, make sure you install the project dependencies by running `npm install` from the root of the TypeScript monorepo, in other words, from the root `typescript/` folder.
Once you have these installed, make sure you install the project dependencies by running `pnpm install` from the root of the TypeScript monorepo, in other words, from the root `typescript/` folder.

> **Note for existing contributors**: If you previously contributed when this was an npm turbo monorepo, you'll need to remove existing node_modules directories and reinstall dependencies with pnpm. From the `typescript/` directory, run:
> ```bash
> find . -name "node_modules" -type d -exec rm -rf {} + && pnpm i
> ```

## Adding an Action Provider

Expand DownExpand Up@@ -184,7 +189,7 @@ You can then run the unit tests with the following command:

```bash
cd typescript/agentkit
npm test
pnpm test
```

Check out the [Testing](#testing) section to learn how to manually test your new action provider.
Expand DownExpand Up@@ -224,23 +229,23 @@ A good way to test new actions locally is by using the chatbot example in `types
The flow is:

1. Make your change as described in the [Adding an Agentic Action](#adding-an-agentic-action) section
2. From `typescript/`, run `npm run build && npm i`
3. In `typescript/examples/langchain-cdp-chatbot`, run `npm run start`
2. From `typescript/`, run `pnpm run build && pnpm i`
3. In `typescript/examples/langchain-cdp-chatbot`, run `pnpm run start`
4. You can now interact with your new action via the chatbot!

### Running Tests

From the package you are working in, you can run:

```bash
npm test
pnpm test
```

For example, to run all tests in the `@coinbase/agentkit` package, you can run:

```bash
cd typescript/agentkit
npm test
pnpm test
```

## Code Style
Expand All@@ -249,13 +254,13 @@ We use ESLint and Prettier for linting and formatting. Run:

```bash
# Format code
npm run format
pnpm run format

# Lint code
npm run lint
pnpm run lint

# Fix linting issues
npm run lint:fix
pnpm run lint:fix
```

## Documentation
Expand All@@ -276,7 +281,7 @@ Changesets are stored in the `.changeset` directory. Each changeset is stored as
To add a changeset, use `changesets` to create it for you:

```bash
npm run changeset
pnpm run changeset
```

This will kick off an interactive prompt to help you create the changeset. Use the arrow keys to navigate the different options, and press the `Space` key to select an option. You should select the package(s) you are making a change to – most of the time this will be `@coinbase/agentkit`. Once selected, hit `Enter`. You'll then be prompted to specify the type of change you are making (major, minor or patch), starting with major. Most of the time you will not be making a major change, so hitting `Enter` will progress to the next step. If you're adding a new feature, you should select `minor`. If you're fixing a bug, you should select `patch`. Once selected, you will be prompted to provide a summary of your changes. This should be a short, specific description in the past tense (see above for examples).
Expand Down
9 changes: 6 additions & 3 deletions typescript/agentkit/package.json
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,9 +17,8 @@
"format": "prettier -c .prettierrc --write \"**/*.{ts,js,cjs,json,md}\"",
"format:check": "prettier -c .prettierrc --check \"**/*.{ts,js,cjs,json,md}\"",
"check": "tsc --noEmit",
"test": "npx jest --no-cache --testMatch='**/*.test.ts'",
"test:dry-run": "npm install && npm ci && npm publish --dry-run",
"test:e2e": "npx jest --no-cache --testMatch=**/e2e.ts --coverageThreshold '{}'",
"test": "jest --no-cache --testMatch='**/*.test.ts'",
"test:e2e": "jest --no-cache --testMatch=**/e2e.ts --coverageThreshold '{}'",
"test:types": "tsd --files src/tests/types.test-d.ts",
"clean": "rm -rf dist/*",
"prepack": "tsc",
Expand DownExpand Up@@ -47,6 +46,9 @@
"@privy-io/server-auth": "^1.18.4",
"@solana/spl-token": "^0.4.12",
"@solana/web3.js": "^1.98.0",
"bs58": "^4.0.1",
"decimal.js": "^10.5.0",
"ethers": "^6.13.5",
"md5": "^2.3.0",
"opensea-js": "^7.1.18",
"reflect-metadata": "^0.2.2",
Expand All@@ -60,6 +62,7 @@
"@types/ora": "^3.2.0",
"@types/prompts": "^2.4.9",
"@types/secp256k1": "^4.0.6",
"abitype": "^1.0.8",
"http-server": "^14.1.1",
"jest": "^29.7.0",
"mock-fs": "^5.2.0",
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions .github/workflows/format.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -40,13 +40,17 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup pnpm

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript
- name: Ensure formatting
working-directory: ./typescript
run: |
npm ci
npm run format:check
pnpm install --frozen-lockfile
Comment thread
CarsonRoscoe marked this conversation as resolved.
pnpm run format:check
27 changes: 18 additions & 9 deletions .github/workflows/lint.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -52,35 +52,44 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript
- name: Ensure Linting
working-directory: ./typescript
run: |
npm ci
npm run lint
pnpm install --frozen-lockfile
pnpm run lint

check-package-lock:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Check if package-lock.json changed
- name: Check if pnpm-lock.yaml changed
working-directory: ./typescript
run: |
npm install
if [ -n "$(git diff package-lock.json)" ]; then
echo "Error: package-lock.json was modified after running npm install. Please commit the updated package-lock.json file."
git diff package-lock.json
pnpm install
if [ -n "$(git diff pnpm-lock.yaml)" ]; then
echo "Error: pnpm-lock.yaml was modified after running pnpm install. Please commit the updated pnpm-lock.yaml file."
git diff pnpm-lock.yaml
exit 1
fi

Expand Down
16 changes: 10 additions & 6 deletions .github/workflows/publish_docs.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,19 +9,23 @@ jobs:
steps:
- uses: actions/checkout@v3

- name: Set up Node 18
uses: actions/setup-node@v4
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install and Build JSDocs
working-directory: ./typescript
run: |
npm ci
npm run build
npm run docs
pnpm install --frozen-lockfile
pnpm run build
pnpm run docs

- name: Build AgentKit JSDocs
run: |
Expand Down
17 changes: 11 additions & 6 deletions .github/workflows/publish_nightly.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -35,11 +35,16 @@ jobs:
with:
ref: nightly

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install jq
Expand All@@ -48,8 +53,8 @@ jobs:
- name: Install dependencies and build packages
run: |
cd typescript
npm ci
npm run build
pnpm install --frozen-lockfile
pnpm run build

- name: Find NPM packages
id: find-npm-packages
Expand All@@ -76,11 +81,11 @@ jobs:
LATEST_NIGHTLY=$(echo "$ALL_VERSIONS" | jq -r '.[]' 2>/dev/null | grep -E "nightly\.[0-9]{8}\.[0-9]+$" | sort -V | tail -n1 || echo "")
TODAY=$(date +%Y%m%d)
if [ -z "$LATEST_NIGHTLY" ]; then
npm version prerelease --preid=nightly.$TODAY --no-git-tag-version
pnpm version prerelease --preid=nightly.$TODAY --no-git-tag-version
else
BUILD_NUM=$(echo $LATEST_NIGHTLY | grep -Eo '[0-9]+$')
NEXT_BUILD=$((BUILD_NUM + 1))
npm version "$(echo $LATEST_NIGHTLY | cut -d'-' -f1)-nightly.$TODAY.$NEXT_BUILD" --no-git-tag-version
pnpm version "$(echo $LATEST_NIGHTLY | cut -d'-' -f1)-nightly.$TODAY.$NEXT_BUILD" --no-git-tag-version
fi
fi
cd - > /dev/null
Expand All@@ -92,7 +97,7 @@ jobs:
cd typescript
for pkg in ${{ steps.find-npm-packages.outputs.packages }}; do
if [ -f "$pkg/package.json" ] && ! grep -q '"private": true' "$pkg/package.json"; then
cd $pkg && npm publish --tag nightly --provenance --access public
cd $pkg && pnpm publish --tag nightly --provenance --access public
cd - > /dev/null
fi
done
Expand Down
15 changes: 11 additions & 4 deletions .github/workflows/publish_npm_manual.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,17 +18,24 @@ jobs:
id-token: write
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install, build and publish package
working-directory: ./typescript/${{ inputs.directory }}
run: |
npm ci
npm run build
npm publish --provenance --access public
pnpm install --frozen-lockfile
pnpm run build
pnpm publish --provenance --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
13 changes: 10 additions & 3 deletions .github/workflows/unit_tests.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -47,13 +47,20 @@ jobs:
node-version: ["18", "20"]
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install and test AgentKit.js
working-directory: ./typescript
run: |
npm ci
npm run test
pnpm install --frozen-lockfile
pnpm run test
13 changes: 9 additions & 4 deletions .github/workflows/version_publish_npm.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,25 +17,30 @@ jobs:
- name: Clone repository
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "18"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install dependencies
run: npm ci
run: pnpm install --frozen-lockfile
working-directory: ./typescript

- name: Version and/or Publish to NPM
uses: changesets/action@06245a4e0a36c064a573d4150030f5ec548e4fcc
with:
commit: "chore: version typescript packages"
title: "chore: version typescript packages"
version: npm run changeset:version
publish: npm run publish
version: pnpm run changeset:version
publish: pnpm run publish
cwd: ./typescript
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down
6 changes: 5 additions & 1 deletion .gitignore
Original file line numberDiff line numberDiff line change
Expand Up@@ -134,4 +134,8 @@ docs/
!python/coinbase-agentkit/docs/
!python/framework-extensions/langchain/docs/

.to-publish-pypi
.to-publish-pypi

# pnpm
typescript/.pnpm-store
typescript/.pnp.*
33 changes: 19 additions & 14 deletions CONTRIBUTING-TYPESCRIPT.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,18 +15,23 @@ This guide covers TypeScript-specific setup and development for AgentKit.

## Development Setup

AgentKit uses Node.js v18.x or higher and npm 8.x or higher.
AgentKit uses Node.js v18.x or higher and pnpm 10.7.x or higher.

You can run the following commands in your terminal to check your local Node.js and npm versions:
You can run the following commands in your terminal to check your local Node.js and pnpm versions:

```bash
node --version
npm --version
pnpm --version
```

If the versions are not correct or you don't have Node.js or npm installed, download through [nvm](https://github.com/nvm-sh/nvm).
If the versions are not correct or you don't have Node.js or pnpm installed, download Node.Js through [fnm](https://github.com/Schniz/fnm) and then install [pnpm](https://pnpm.io/installation).

Once you have these installed, make sure you install the project dependencies by running `npm install` from the root of the TypeScript monorepo, in other words, from the root `typescript/` folder.
Once you have these installed, make sure you install the project dependencies by running `pnpm install` from the root of the TypeScript monorepo, in other words, from the root `typescript/` folder.

> **Note for existing contributors**: If you previously contributed when this was an npm turbo monorepo, you'll need to remove existing node_modules directories and reinstall dependencies with pnpm. From the `typescript/` directory, run:
> ```bash
> find . -name "node_modules" -type d -exec rm -rf {} + && pnpm i
> ```

## Adding an Action Provider

Expand DownExpand Up@@ -184,7 +189,7 @@ You can then run the unit tests with the following command:

```bash
cd typescript/agentkit
npm test
pnpm test
```

Check out the [Testing](#testing) section to learn how to manually test your new action provider.
Expand DownExpand Up@@ -224,23 +229,23 @@ A good way to test new actions locally is by using the chatbot example in `types
The flow is:

1. Make your change as described in the [Adding an Agentic Action](#adding-an-agentic-action) section
2. From `typescript/`, run `npm run build && npm i`
3. In `typescript/examples/langchain-cdp-chatbot`, run `npm run start`
2. From `typescript/`, run `pnpm run build && pnpm i`
3. In `typescript/examples/langchain-cdp-chatbot`, run `pnpm run start`
4. You can now interact with your new action via the chatbot!

### Running Tests

From the package you are working in, you can run:

```bash
npm test
pnpm test
```

For example, to run all tests in the `@coinbase/agentkit` package, you can run:

```bash
cd typescript/agentkit
npm test
pnpm test
```

## Code Style
Expand All@@ -249,13 +254,13 @@ We use ESLint and Prettier for linting and formatting. Run:

```bash
# Format code
npm run format
pnpm run format

# Lint code
npm run lint
pnpm run lint

# Fix linting issues
npm run lint:fix
pnpm run lint:fix
```

## Documentation
Expand All@@ -276,7 +281,7 @@ Changesets are stored in the `.changeset` directory. Each changeset is stored as
To add a changeset, use `changesets` to create it for you:

```bash
npm run changeset
pnpm run changeset
```

This will kick off an interactive prompt to help you create the changeset. Use the arrow keys to navigate the different options, and press the `Space` key to select an option. You should select the package(s) you are making a change to – most of the time this will be `@coinbase/agentkit`. Once selected, hit `Enter`. You'll then be prompted to specify the type of change you are making (major, minor or patch), starting with major. Most of the time you will not be making a major change, so hitting `Enter` will progress to the next step. If you're adding a new feature, you should select `minor`. If you're fixing a bug, you should select `patch`. Once selected, you will be prompted to provide a summary of your changes. This should be a short, specific description in the past tense (see above for examples).
Expand Down
9 changes: 6 additions & 3 deletions typescript/agentkit/package.json
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,9 +17,8 @@
"format": "prettier -c .prettierrc --write \"**/*.{ts,js,cjs,json,md}\"",
"format:check": "prettier -c .prettierrc --check \"**/*.{ts,js,cjs,json,md}\"",
"check": "tsc --noEmit",
"test": "npx jest --no-cache --testMatch='**/*.test.ts'",
"test:dry-run": "npm install && npm ci && npm publish --dry-run",
"test:e2e": "npx jest --no-cache --testMatch=**/e2e.ts --coverageThreshold '{}'",
"test": "jest --no-cache --testMatch='**/*.test.ts'",
"test:e2e": "jest --no-cache --testMatch=**/e2e.ts --coverageThreshold '{}'",
"test:types": "tsd --files src/tests/types.test-d.ts",
"clean": "rm -rf dist/*",
"prepack": "tsc",
Expand DownExpand Up@@ -47,6 +46,9 @@
"@privy-io/server-auth": "^1.18.4",
"@solana/spl-token": "^0.4.12",
"@solana/web3.js": "^1.98.0",
"bs58": "^4.0.1",
"decimal.js": "^10.5.0",
"ethers": "^6.13.5",
"md5": "^2.3.0",
"opensea-js": "^7.1.18",
"reflect-metadata": "^0.2.2",
Expand All@@ -60,6 +62,7 @@
"@types/ora": "^3.2.0",
"@types/prompts": "^2.4.9",
"@types/secp256k1": "^4.0.6",
"abitype": "^1.0.8",
"http-server": "^14.1.1",
"jest": "^29.7.0",
"mock-fs": "^5.2.0",
Expand Down
Loading