mirror of
https://github.com/n8n-io/n8n
synced 2026-04-21 15:47:20 +00:00
chore: Add new ai-node-sdk (#25219)
This commit is contained in:
parent
3cd17485fe
commit
8b0f3efc8f
15 changed files with 188 additions and 5 deletions
20
packages/@n8n/ai-node-sdk/.editorconfig
Normal file
20
packages/@n8n/ai-node-sdk/.editorconfig
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_style = tab
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[package.json]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[*.yml]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
8
packages/@n8n/ai-node-sdk/.gitignore
vendored
Normal file
8
packages/@n8n/ai-node-sdk/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
node_modules
|
||||
.DS_Store
|
||||
.tmp
|
||||
tmp
|
||||
dist
|
||||
npm-debug.log*
|
||||
yarn.lock
|
||||
.vscode/launch.json
|
||||
2
packages/@n8n/ai-node-sdk/.npmignore
Normal file
2
packages/@n8n/ai-node-sdk/.npmignore
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
.DS_Store
|
||||
*.tsbuildinfo
|
||||
24
packages/@n8n/ai-node-sdk/README.md
Normal file
24
packages/@n8n/ai-node-sdk/README.md
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
# @n8n/ai-node-sdk
|
||||
|
||||
SDK for building AI nodes in n8n.
|
||||
|
||||
## Installation
|
||||
|
||||
This package is part of the n8n monorepo and should be installed via the workspace.
|
||||
|
||||
## Usage
|
||||
|
||||
TBD
|
||||
|
||||
## Development
|
||||
|
||||
```bash
|
||||
# Build the package
|
||||
pnpm build
|
||||
|
||||
# Run tests
|
||||
pnpm test
|
||||
|
||||
# Run in watch mode
|
||||
pnpm dev
|
||||
```
|
||||
12
packages/@n8n/ai-node-sdk/eslint.config.mjs
Normal file
12
packages/@n8n/ai-node-sdk/eslint.config.mjs
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
import { defineConfig } from 'eslint/config';
|
||||
import { nodeConfig } from '@n8n/eslint-config/node';
|
||||
|
||||
export default defineConfig(nodeConfig, {
|
||||
rules: {
|
||||
'@typescript-eslint/no-explicit-any': 'warn',
|
||||
'@typescript-eslint/no-unsafe-assignment': 'warn',
|
||||
'@typescript-eslint/no-unsafe-call': 'warn',
|
||||
'@typescript-eslint/no-unsafe-member-access': 'warn',
|
||||
'@typescript-eslint/no-unsafe-return': 'warn',
|
||||
},
|
||||
});
|
||||
6
packages/@n8n/ai-node-sdk/jest.config.js
Normal file
6
packages/@n8n/ai-node-sdk/jest.config.js
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
/** @type {import('jest').Config} */
|
||||
module.exports = {
|
||||
...require('../../../jest.config'),
|
||||
collectCoverageFrom: ['src/**/*.ts'],
|
||||
setupFilesAfterEnv: ['jest-expect-message'],
|
||||
};
|
||||
33
packages/@n8n/ai-node-sdk/package.json
Normal file
33
packages/@n8n/ai-node-sdk/package.json
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"name": "@n8n/ai-node-sdk",
|
||||
"version": "0.1.0",
|
||||
"description": "SDK for building AI nodes in n8n",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"clean": "rimraf dist .turbo",
|
||||
"dev": "pnpm run watch",
|
||||
"typecheck": "tsc --noEmit",
|
||||
"build": "tsc --build tsconfig.build.json && tsc-alias -p tsconfig.build.json",
|
||||
"format": "biome format --write .",
|
||||
"format:check": "biome ci .",
|
||||
"lint": "eslint . --quiet",
|
||||
"lint:fix": "eslint . --fix",
|
||||
"watch": "tsc-watch -p tsconfig.build.json",
|
||||
"test": "jest",
|
||||
"test:unit": "jest",
|
||||
"test:dev": "jest --watch"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
],
|
||||
"devDependencies": {
|
||||
"jest-mock-extended": "^3.0.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"@langchain/core": "catalog:",
|
||||
"langchain": "catalog:",
|
||||
"@n8n/config": "workspace:*",
|
||||
"@n8n/typescript-config": "workspace:*",
|
||||
"n8n-workflow": "workspace:*"
|
||||
}
|
||||
}
|
||||
5
packages/@n8n/ai-node-sdk/src/index.test.ts
Normal file
5
packages/@n8n/ai-node-sdk/src/index.test.ts
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
describe('index', () => {
|
||||
it('2+2=4', () => {
|
||||
expect(2 + 2).toBe(4);
|
||||
});
|
||||
});
|
||||
1
packages/@n8n/ai-node-sdk/src/index.ts
Normal file
1
packages/@n8n/ai-node-sdk/src/index.ts
Normal file
|
|
@ -0,0 +1 @@
|
|||
export type { DummyInterface } from './types';
|
||||
3
packages/@n8n/ai-node-sdk/src/types.ts
Normal file
3
packages/@n8n/ai-node-sdk/src/types.ts
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
export interface DummyInterface {
|
||||
foo: string;
|
||||
}
|
||||
11
packages/@n8n/ai-node-sdk/tsconfig.build.json
Normal file
11
packages/@n8n/ai-node-sdk/tsconfig.build.json
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"extends": ["./tsconfig.json", "@n8n/typescript-config/modern/tsconfig.cjs.json"],
|
||||
"compilerOptions": {
|
||||
"outDir": "dist",
|
||||
"module": "commonjs",
|
||||
"declaration": true,
|
||||
"tsBuildInfoFile": "dist/typecheck.tsbuildinfo"
|
||||
},
|
||||
"include": ["src/**/*.ts"],
|
||||
"exclude": ["node_modules", "src/**/*.test.ts", "test/**"]
|
||||
}
|
||||
15
packages/@n8n/ai-node-sdk/tsconfig.json
Normal file
15
packages/@n8n/ai-node-sdk/tsconfig.json
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"extends": [
|
||||
"@n8n/typescript-config/tsconfig.common.json",
|
||||
"@n8n/typescript-config/tsconfig.backend.json"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"baseUrl": ".",
|
||||
"paths": {},
|
||||
"tsBuildInfoFile": "dist/typecheck.tsbuildinfo",
|
||||
"emitDecoratorMetadata": true,
|
||||
"experimentalDecorators": true
|
||||
},
|
||||
"include": ["src/**/*.ts", "test/**/*.ts"],
|
||||
"references": [{ "path": "../../workflow/tsconfig.build.esm.json" }]
|
||||
}
|
||||
|
|
@ -242,7 +242,7 @@
|
|||
"ignore": "^5.2.0",
|
||||
"js-tiktoken": "^1.0.12",
|
||||
"jsdom": "23.0.1",
|
||||
"langchain": "1.2.3",
|
||||
"langchain": "catalog:",
|
||||
"@langchain/classic": "1.0.5",
|
||||
"lodash": "catalog:",
|
||||
"mammoth": "1.11.0",
|
||||
|
|
|
|||
|
|
@ -129,6 +129,9 @@ catalogs:
|
|||
kafkajs:
|
||||
specifier: 2.2.4
|
||||
version: 2.2.4
|
||||
langchain:
|
||||
specifier: 1.2.3
|
||||
version: 1.2.3
|
||||
lodash:
|
||||
specifier: 4.17.23
|
||||
version: 4.17.23
|
||||
|
|
@ -478,6 +481,28 @@ importers:
|
|||
specifier: ^8.1.4
|
||||
version: 8.1.4
|
||||
|
||||
packages/@n8n/ai-node-sdk:
|
||||
dependencies:
|
||||
'@langchain/core':
|
||||
specifier: 'catalog:'
|
||||
version: 1.1.8(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.204.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.9.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.67))
|
||||
'@n8n/config':
|
||||
specifier: workspace:*
|
||||
version: link:../config
|
||||
'@n8n/typescript-config':
|
||||
specifier: workspace:*
|
||||
version: link:../typescript-config
|
||||
langchain:
|
||||
specifier: 'catalog:'
|
||||
version: 1.2.3(@langchain/core@1.1.8(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.204.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.9.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.67)))(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.204.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.9.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.67))(zod-to-json-schema@3.25.0(zod@3.25.67))
|
||||
n8n-workflow:
|
||||
specifier: workspace:*
|
||||
version: link:../../workflow
|
||||
devDependencies:
|
||||
jest-mock-extended:
|
||||
specifier: ^3.0.4
|
||||
version: 3.0.4(jest@29.7.0(@types/node@20.19.21)(ts-node@10.9.2(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@20.19.21)(typescript@5.9.2)))(typescript@5.9.2)
|
||||
|
||||
packages/@n8n/ai-workflow-builder.ee:
|
||||
dependencies:
|
||||
'@langchain/anthropic':
|
||||
|
|
@ -1429,7 +1454,7 @@ importers:
|
|||
specifier: 23.0.1
|
||||
version: 23.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)
|
||||
langchain:
|
||||
specifier: 1.2.3
|
||||
specifier: 'catalog:'
|
||||
version: 1.2.3(@langchain/core@1.1.8(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.204.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.9.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.67)))(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.204.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.9.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.67))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(zod-to-json-schema@3.23.3(zod@3.25.67))
|
||||
lodash:
|
||||
specifier: 'catalog:'
|
||||
|
|
@ -31491,7 +31516,7 @@ snapshots:
|
|||
'@types/debug': 4.1.12
|
||||
'@types/node': 20.19.21
|
||||
'@types/tough-cookie': 4.0.5
|
||||
axios: 1.12.0
|
||||
axios: 1.12.0(debug@4.4.3)
|
||||
camelcase: 6.3.0
|
||||
debug: 4.4.3(supports-color@8.1.1)
|
||||
dotenv: 16.6.1
|
||||
|
|
@ -31501,7 +31526,7 @@ snapshots:
|
|||
isstream: 0.1.2
|
||||
jsonwebtoken: 9.0.3
|
||||
mime-types: 2.1.35
|
||||
retry-axios: 2.6.0(axios@1.12.0(debug@4.4.3))
|
||||
retry-axios: 2.6.0(axios@1.12.0)
|
||||
tough-cookie: 4.1.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
|
@ -33002,6 +33027,23 @@ snapshots:
|
|||
- react-dom
|
||||
- zod-to-json-schema
|
||||
|
||||
langchain@1.2.3(@langchain/core@1.1.8(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.204.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.9.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.67)))(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.204.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.9.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.67))(zod-to-json-schema@3.25.0(zod@3.25.67)):
|
||||
dependencies:
|
||||
'@langchain/core': 1.1.8(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.204.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.9.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.67))
|
||||
'@langchain/langgraph': 1.0.2(@langchain/core@1.1.8(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.204.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.9.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.67)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(zod-to-json-schema@3.25.0(zod@3.25.67))(zod@3.25.67)
|
||||
'@langchain/langgraph-checkpoint': 1.0.0(@langchain/core@1.1.8(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.204.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.9.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.67)))
|
||||
langsmith: 0.4.4(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.204.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.9.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.67))
|
||||
uuid: 10.0.0
|
||||
zod: 3.25.67
|
||||
transitivePeerDependencies:
|
||||
- '@opentelemetry/api'
|
||||
- '@opentelemetry/exporter-trace-otlp-proto'
|
||||
- '@opentelemetry/sdk-trace-base'
|
||||
- openai
|
||||
- react
|
||||
- react-dom
|
||||
- zod-to-json-schema
|
||||
|
||||
langsmith@0.3.81(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.204.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.9.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.67)):
|
||||
dependencies:
|
||||
'@types/uuid': 10.0.0
|
||||
|
|
@ -35991,7 +36033,7 @@ snapshots:
|
|||
onetime: 5.1.2
|
||||
signal-exit: 3.0.7
|
||||
|
||||
retry-axios@2.6.0(axios@1.12.0(debug@4.4.3)):
|
||||
retry-axios@2.6.0(axios@1.12.0):
|
||||
dependencies:
|
||||
axios: 1.12.0
|
||||
|
||||
|
|
|
|||
|
|
@ -56,6 +56,7 @@ catalog:
|
|||
jsonrepair: 3.13.1
|
||||
jsonwebtoken: 9.0.3
|
||||
kafkajs: 2.2.4
|
||||
langchain: 1.2.3
|
||||
lodash: 4.17.23
|
||||
luxon: 3.7.2
|
||||
mime-types: 3.0.2
|
||||
|
|
|
|||
Loading…
Reference in a new issue