api2ai 1.0.15 → 1.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +59 -39
- package/package.json +237 -23
- package/src/generate-mcp-use-server.js +0 -1037
package/README.md
CHANGED
|
@@ -1,16 +1,40 @@
|
|
|
1
1
|
|
|
2
2
|
<p align="center">
|
|
3
|
-
<img width="600px" src="https://i.imgur.com/
|
|
3
|
+
<img width="600px" src="https://i.imgur.com/TTJBLxo.png" />
|
|
4
4
|
</p>
|
|
5
|
+
|
|
6
|
+
<!-- template-git-repo:badges:start -->
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://1computer.online/docs/packages/api2ai-mcp-generator"><img src="https://img.shields.io/badge/Docs-blue?logo=ReadTheDocs&logoColor=white" alt="Documentation" /></a>
|
|
9
|
+
<br />
|
|
10
|
+
<a href="https://github.com/OpenSourceAGI/dev-tools-starter-agent/stargazers"><img src="https://img.shields.io/github/stars/OpenSourceAGI/dev-tools-starter-agent" alt="GitHub Stars" /></a>
|
|
11
|
+
<a href="https://www.npmjs.com/package/api2ai"><img src="https://img.shields.io/npm/dm/api2ai.svg" alt="NPM Monthly Downloads" /></a>
|
|
12
|
+
<a href="https://www.npmjs.com/package/api2ai"><img src="https://img.shields.io/npm/v/api2ai.svg" alt="npm version" /></a>
|
|
13
|
+
<a href="https://www.npmjs.com/package/api2ai"><img src="https://img.shields.io/npm/dt/api2ai.svg" alt="NPM Total Downloads" /></a>
|
|
14
|
+
<a href="https://www.npmjs.com/package/api2ai"><img src="https://img.shields.io/npm/types/api2ai" alt="TypeScript types" /></a>
|
|
15
|
+
<a href="https://packagephobia.com/result?p=api2ai"><img src="https://packagephobia.com/badge?p=api2ai" alt="Install size" /></a>
|
|
16
|
+
<br />
|
|
17
|
+
<a href="https://github.com/OpenSourceAGI/dev-tools-starter-agent/issues"><img src="https://img.shields.io/github/issues/OpenSourceAGI/dev-tools-starter-agent?logo=github" alt="GitHub Issues" /></a>
|
|
18
|
+
<a href="https://github.com/OpenSourceAGI/dev-tools-starter-agent/pulls"><img src="https://img.shields.io/github/issues-pr/OpenSourceAGI/dev-tools-starter-agent?logo=github&label=PRs" alt="Open Pull Requests" /></a>
|
|
19
|
+
<a href="https://github.com/OpenSourceAGI/dev-tools-starter-agent/pulls?q=is%3Apr+is%3Aclosed"><img src="https://img.shields.io/github/issues-pr-closed/OpenSourceAGI/dev-tools-starter-agent?logo=github&label=PRs%20merged&color=8957e5" alt="Merged Pull Requests" /></a>
|
|
20
|
+
<a href="https://github.com/OpenSourceAGI/dev-tools-starter-agent/discussions"><img src="https://img.shields.io/github/discussions/OpenSourceAGI/dev-tools-starter-agent" alt="GitHub Discussions" /></a>
|
|
21
|
+
<a href="https://github.com/OpenSourceAGI/dev-tools-starter-agent/commits/master/"><img src="https://img.shields.io/github/last-commit/OpenSourceAGI/dev-tools-starter-agent.svg" alt="GitHub last commit" /></a>
|
|
22
|
+
<br />
|
|
23
|
+
<a href="https://stackblitz.com/github/OpenSourceAGI/dev-tools-starter-agent/tree/master/packages/api2ai-mcp-generator"><img height="20px" src="https://developer.stackblitz.com/img/open_in_stackblitz.svg" alt="Open in StackBlitz" /></a>
|
|
24
|
+
<img src="https://img.shields.io/badge/Bun-14151A?logo=bun&logoColor=white" alt="Bun" /> <img src="https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white" alt="TypeScript" /> <img src="https://img.shields.io/badge/Next.js-black?logo=nextdotjs&logoColor=white" alt="Next.js" /> <img src="https://img.shields.io/badge/React-20232A?logo=react&logoColor=white" alt="React" /> <img src="https://img.shields.io/badge/Tailwind%20CSS-06B6D4?logo=tailwindcss&logoColor=white" alt="Tailwind CSS" /> <img src="https://img.shields.io/badge/shadcn%2Fui-000000?logo=shadcnui&logoColor=white" alt="shadcn/ui" /> <img src="https://img.shields.io/badge/Drizzle%20ORM-C5F74F?logo=drizzle&logoColor=white" alt="Drizzle ORM" /> <img src="https://img.shields.io/badge/better--auth-000000" alt="better-auth" /> <img src="https://img.shields.io/badge/Stripe-635BFF?logo=stripe&logoColor=white" alt="Stripe" /> <img src="https://img.shields.io/badge/Vercel%20AI%20SDK-black?logo=vercel&logoColor=white" alt="Vercel AI SDK" /> <img src="https://img.shields.io/badge/Zod-3E67B1?logo=zod&logoColor=white" alt="Zod" /> <img src="https://img.shields.io/badge/Fumadocs-000000" alt="Fumadocs" /> <img src="https://img.shields.io/badge/Vite-646CFF?logo=vite&logoColor=white" alt="Vite" /> <img src="https://img.shields.io/badge/Vitest-6E9F18?logo=vitest&logoColor=white" alt="Vitest" />
|
|
25
|
+
</p>
|
|
26
|
+
<!-- template-git-repo:badges:end -->
|
|
27
|
+
|
|
28
|
+
<!-- skills:install:start -->
|
|
29
|
+
**🤖 Agent skill** — `npx skills@latest add https://github.com/OpenSourceAGI/dev-tools-starter-agent --skill api2ai` ([what it covers](../../skills/api2ai/SKILL.md))
|
|
30
|
+
<!-- skills:install:end -->
|
|
31
|
+
|
|
5
32
|
<h3 align="center">
|
|
33
|
+
<a href="https://api-2-ai.vercel.app/"> 🌐 Live Site </a> |
|
|
6
34
|
<a href="https://github.com/vtempest/GRAB-URL/tree/master/api2ai/example-petstore"> 🎯 Example MCP Server </a>
|
|
7
35
|
</h3>
|
|
8
36
|
|
|
9
37
|
|
|
10
|
-
<p align="center">
|
|
11
|
-
<a href="https://npmjs.org/package/grab-url"><img alt="NPM Version" src="https://img.shields.io/npm/v/grab-url" /></a><a href="https://github.com/vtempest/GRAB-URL/discussions"><img alt="GitHub Discussions"
|
|
12
|
-
src="https://img.shields.io/github/discussions/vtempest/GRAB-URL" /></a><a href="https://github.blog/developer-skills/github/beginners-guide-to-github-creating-a-pull-request/"><img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg" alt="PRs Welcome"/></a>
|
|
13
|
-
</p>
|
|
14
38
|
|
|
15
39
|
|
|
16
40
|
# API2AI: OpenAPI to MCP-Use Server
|
|
@@ -19,6 +43,7 @@ Generate production-ready MCP servers from any OpenAPI specification using the h
|
|
|
19
43
|
|
|
20
44
|
OpenAPI specs are easy to write and organize your code and have [100s of tools available](https://openapi.tools) such as the [OpenAPI Builder web UI](https://www.apibldr.com).
|
|
21
45
|
|
|
46
|
+
Try it in the browser at **[api-2-ai.vercel.app](https://api-2-ai.vercel.app/)** — the hosted site lets you design and validate OpenAPI specs visually, browse the docs, and see generated-server examples without installing anything.
|
|
22
47
|
|
|
23
48
|
## Features
|
|
24
49
|
|
|
@@ -53,7 +78,7 @@ Open http://localhost:3000/inspector to test your tools!
|
|
|
53
78
|
### CLI
|
|
54
79
|
|
|
55
80
|
```bash
|
|
56
|
-
|
|
81
|
+
node generate-mcp-use-server.js <openapi-spec> [output-folder] [options]
|
|
57
82
|
|
|
58
83
|
Options:
|
|
59
84
|
--name <name> Server name (default: api-mcp-server)
|
|
@@ -70,32 +95,32 @@ Options:
|
|
|
70
95
|
|
|
71
96
|
```bash
|
|
72
97
|
# From remote URL
|
|
73
|
-
|
|
98
|
+
node generate-mcp-use-server.js \
|
|
74
99
|
https://api.example.com/openapi.json \
|
|
75
100
|
./my-server \
|
|
76
101
|
--name my-api
|
|
77
102
|
|
|
78
103
|
# From local file
|
|
79
|
-
|
|
104
|
+
node generate-mcp-use-server.js \
|
|
80
105
|
./specs/my-api.yaml \
|
|
81
106
|
./my-mcp-server \
|
|
82
107
|
--port 8080
|
|
83
108
|
|
|
84
109
|
# With custom base URL
|
|
85
|
-
|
|
110
|
+
node generate-mcp-use-server.js \
|
|
86
111
|
./petstore.json \
|
|
87
112
|
./petstore \
|
|
88
113
|
--base-url https://petstore.example.com/v3
|
|
89
114
|
|
|
90
115
|
# Include only read-only tools tagged "public"
|
|
91
|
-
|
|
116
|
+
node generate-mcp-use-server.js \
|
|
92
117
|
./api.json \
|
|
93
118
|
./readonly-server \
|
|
94
119
|
--include-tags public \
|
|
95
120
|
--exclude-tags admin,internal
|
|
96
121
|
|
|
97
122
|
# Enable writes (mutations) explicitly
|
|
98
|
-
|
|
123
|
+
node generate-mcp-use-server.js \
|
|
99
124
|
./api.json \
|
|
100
125
|
./full-server \
|
|
101
126
|
--allow-mutations \
|
|
@@ -105,29 +130,29 @@ npx api2ai \
|
|
|
105
130
|
### Programmatic Usage
|
|
106
131
|
|
|
107
132
|
```javascript
|
|
108
|
-
import { generateMcpServer, extractTools, loadOpenApiSpec } from
|
|
133
|
+
import { generateMcpServer, extractTools, loadOpenApiSpec } from './generate-mcp-use-server.js';
|
|
109
134
|
|
|
110
135
|
// Generate complete server
|
|
111
136
|
const result = await generateMcpServer(
|
|
112
|
-
|
|
113
|
-
|
|
137
|
+
'https://api.example.com/openapi.json',
|
|
138
|
+
'./output-folder',
|
|
114
139
|
{
|
|
115
|
-
serverName:
|
|
116
|
-
baseUrl:
|
|
140
|
+
serverName: 'my-api',
|
|
141
|
+
baseUrl: 'https://api.example.com/v1',
|
|
117
142
|
port: 3000,
|
|
118
143
|
allowMutations: false, // block POST/PUT/PATCH/DELETE by default
|
|
119
|
-
includeTags: [
|
|
120
|
-
excludeTags: [
|
|
144
|
+
includeTags: ['public'], // only include tools tagged "public"
|
|
145
|
+
excludeTags: ['admin'], // exclude tools tagged "admin"
|
|
121
146
|
}
|
|
122
147
|
);
|
|
123
148
|
|
|
124
149
|
console.log(`Generated ${result.toolCount} tools`);
|
|
125
150
|
|
|
126
151
|
// Or just extract tools for custom processing
|
|
127
|
-
const spec = await loadOpenApiSpec(
|
|
152
|
+
const spec = await loadOpenApiSpec('./my-spec.json');
|
|
128
153
|
const tools = extractTools(spec, {
|
|
129
|
-
filterFn: (tool) => tool.riskLevel ===
|
|
130
|
-
excludeOperationIds: [
|
|
154
|
+
filterFn: (tool) => tool.riskLevel === 'low', // only safe read-only tools
|
|
155
|
+
excludeOperationIds: ['deleteUser'],
|
|
131
156
|
});
|
|
132
157
|
```
|
|
133
158
|
|
|
@@ -234,7 +259,7 @@ The generated server supports the OpenAI Apps SDK out of the box.
|
|
|
234
259
|
|
|
235
260
|
```javascript
|
|
236
261
|
const result = await generateMcpServer(specUrl, outputDir, {
|
|
237
|
-
filterFn: (tool) => tool.riskLevel ===
|
|
262
|
+
filterFn: (tool) => tool.riskLevel === 'low',
|
|
238
263
|
});
|
|
239
264
|
```
|
|
240
265
|
|
|
@@ -242,7 +267,7 @@ const result = await generateMcpServer(specUrl, outputDir, {
|
|
|
242
267
|
|
|
243
268
|
```javascript
|
|
244
269
|
const result = await generateMcpServer(specUrl, outputDir, {
|
|
245
|
-
filterFn: (tool) => [
|
|
270
|
+
filterFn: (tool) => ['get', 'post'].includes(tool.method),
|
|
246
271
|
});
|
|
247
272
|
```
|
|
248
273
|
|
|
@@ -251,9 +276,9 @@ const result = await generateMcpServer(specUrl, outputDir, {
|
|
|
251
276
|
```javascript
|
|
252
277
|
const result = await generateMcpServer(specUrl, outputDir, {
|
|
253
278
|
excludeOperationIds: [
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
279
|
+
'deleteUser',
|
|
280
|
+
'deleteAllData',
|
|
281
|
+
'adminReset',
|
|
257
282
|
],
|
|
258
283
|
});
|
|
259
284
|
```
|
|
@@ -262,7 +287,7 @@ const result = await generateMcpServer(specUrl, outputDir, {
|
|
|
262
287
|
|
|
263
288
|
```javascript
|
|
264
289
|
const result = await generateMcpServer(specUrl, outputDir, {
|
|
265
|
-
filterFn: (tool) => tool.pathTemplate.startsWith(
|
|
290
|
+
filterFn: (tool) => tool.pathTemplate.startsWith('/api/v2/'),
|
|
266
291
|
});
|
|
267
292
|
```
|
|
268
293
|
|
|
@@ -270,11 +295,11 @@ const result = await generateMcpServer(specUrl, outputDir, {
|
|
|
270
295
|
|
|
271
296
|
```javascript
|
|
272
297
|
const result = await generateMcpServer(specUrl, outputDir, {
|
|
273
|
-
excludeOperationIds: [
|
|
298
|
+
excludeOperationIds: ['deleteUser'],
|
|
274
299
|
allowMutations: false,
|
|
275
|
-
filterFn: (tool) =>
|
|
276
|
-
tool.riskLevel ===
|
|
277
|
-
tool.pathTemplate.includes(
|
|
300
|
+
filterFn: (tool) =>
|
|
301
|
+
tool.riskLevel === 'low' &&
|
|
302
|
+
tool.pathTemplate.includes('/public/'),
|
|
278
303
|
});
|
|
279
304
|
```
|
|
280
305
|
|
|
@@ -292,13 +317,8 @@ const result = await generateMcpServer(specUrl, outputDir, {
|
|
|
292
317
|
| HTTP hardening | ✅ Built-in | ❌ Manual |
|
|
293
318
|
| Production ready | ✅ Yes | ⚠️ Requires work |
|
|
294
319
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
```bash
|
|
298
|
-
npm install
|
|
299
|
-
node src/generate-mcp-use-server.js ./petstore.json ./out
|
|
300
|
-
```
|
|
320
|
+
---
|
|
301
321
|
|
|
302
|
-
|
|
322
|
+
[](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request)
|
|
303
323
|
|
|
304
|
-
|
|
324
|
+
Please star this repo for updates! 🌟
|
package/package.json
CHANGED
|
@@ -1,33 +1,247 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "api2ai",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "Generate
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
|
|
3
|
+
"version": "1.0.17",
|
|
4
|
+
"description": "Generate production-ready MCP servers from any OpenAPI specification using the highly-used and convenient [mcp-use](https://mcp-use.com) framework",
|
|
5
|
+
"license": "rights.institute/prosper",
|
|
6
|
+
"author": "vtempest",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/OpenSourceAGI/dev-tools-starter-agent.git",
|
|
10
|
+
"directory": "packages/api2ai-mcp-generator"
|
|
8
11
|
},
|
|
9
|
-
"
|
|
12
|
+
"homepage": "https://github.com/OpenSourceAGI/dev-tools-starter-agent/tree/master/packages/api2ai-mcp-generator",
|
|
13
|
+
"keywords": [
|
|
14
|
+
"mcp",
|
|
15
|
+
"mcp-server",
|
|
16
|
+
"model-context-protocol",
|
|
17
|
+
"openapi",
|
|
18
|
+
"api",
|
|
19
|
+
"ai",
|
|
20
|
+
"code-generator",
|
|
21
|
+
"zod"
|
|
22
|
+
],
|
|
10
23
|
"exports": {
|
|
11
|
-
".":
|
|
24
|
+
".": {
|
|
25
|
+
"types": "./dist/index.d.ts",
|
|
26
|
+
"import": "./dist/index.mjs",
|
|
27
|
+
"require": "./dist/index.js"
|
|
28
|
+
}
|
|
12
29
|
},
|
|
13
|
-
"
|
|
14
|
-
|
|
30
|
+
"main": "dist/index.js",
|
|
31
|
+
"module": "dist/index.mjs",
|
|
32
|
+
"types": "dist/index.d.ts",
|
|
33
|
+
"files": [
|
|
34
|
+
"dist"
|
|
35
|
+
],
|
|
36
|
+
"scripts": {
|
|
37
|
+
"build": "next build",
|
|
38
|
+
"db:create": "npm create cloud-db",
|
|
39
|
+
"db:generate": "drizzle-kit generate",
|
|
40
|
+
"db:push": "drizzle-kit push",
|
|
41
|
+
"db:studio": "concurrently \"drizzle-kit studio\" \"wait-on https://local.drizzle.studio && opener https://local.drizzle.studio\"",
|
|
42
|
+
"dev": "concurrently \"next dev\" \"wait-on http://localhost:3000 && opener http://localhost:3000\"",
|
|
43
|
+
"docs:check": "fumadocs check",
|
|
44
|
+
"docs:generate": "fumadocs-mdx",
|
|
45
|
+
"make": "concurrently \"next build && next start \" \"wait-on http://localhost:3000 && opener http://localhost:3000\"",
|
|
46
|
+
"start": "next start",
|
|
47
|
+
"test": "vitest run",
|
|
48
|
+
"test:watch": "vitest",
|
|
49
|
+
"coverage": "vitest run --coverage"
|
|
15
50
|
},
|
|
16
|
-
"
|
|
17
|
-
"
|
|
51
|
+
"dependencies": {
|
|
52
|
+
"@ai-sdk/react": "3.0.3",
|
|
53
|
+
"@aws-sdk/client-rds-data": "latest",
|
|
54
|
+
"@better-auth/core": "latest",
|
|
55
|
+
"@better-auth/stripe": "^1.4.7",
|
|
56
|
+
"@cloudflare/workers-types": "latest",
|
|
57
|
+
"@electric-sql/pglite": "latest",
|
|
58
|
+
"@emotion/is-prop-valid": "latest",
|
|
59
|
+
"@fumadocs/mdx-remote": "^1.4.3",
|
|
60
|
+
"@langchain/core": "^1.1.5",
|
|
61
|
+
"@langchain/groq": "^1.0.2",
|
|
62
|
+
"@langchain/openai": "^1.2.0",
|
|
63
|
+
"@libsql/client": "^0.15.15",
|
|
64
|
+
"@libsql/client-wasm": "latest",
|
|
65
|
+
"@lynx-js/react": "latest",
|
|
66
|
+
"@mixedbread/sdk": "latest",
|
|
67
|
+
"@neondatabase/serverless": "latest",
|
|
68
|
+
"@op-engineering/op-sqlite": "latest",
|
|
69
|
+
"@opentelemetry/api": "latest",
|
|
70
|
+
"@orama/core": "latest",
|
|
71
|
+
"@planetscale/database": "latest",
|
|
72
|
+
"@prisma/client": "latest",
|
|
73
|
+
"@radix-ui/react-accordion": "1.2.12",
|
|
74
|
+
"@radix-ui/react-alert-dialog": "1.1.15",
|
|
75
|
+
"@radix-ui/react-aspect-ratio": "1.1.8",
|
|
76
|
+
"@radix-ui/react-avatar": "^1.1.11",
|
|
77
|
+
"@radix-ui/react-checkbox": "1.3.3",
|
|
78
|
+
"@radix-ui/react-collapsible": "^1.1.12",
|
|
79
|
+
"@radix-ui/react-context-menu": "2.2.16",
|
|
80
|
+
"@radix-ui/react-dialog": "^1.1.15",
|
|
81
|
+
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
|
82
|
+
"@radix-ui/react-hover-card": "1.1.15",
|
|
83
|
+
"@radix-ui/react-label": "2.1.8",
|
|
84
|
+
"@radix-ui/react-menubar": "1.1.16",
|
|
85
|
+
"@radix-ui/react-navigation-menu": "1.2.14",
|
|
86
|
+
"@radix-ui/react-popover": "1.1.15",
|
|
87
|
+
"@radix-ui/react-presence": "1.1.5",
|
|
88
|
+
"@radix-ui/react-progress": "1.1.8",
|
|
89
|
+
"@radix-ui/react-radio-group": "^1.3.8",
|
|
90
|
+
"@radix-ui/react-scroll-area": "1.2.10",
|
|
91
|
+
"@radix-ui/react-select": "2.2.6",
|
|
92
|
+
"@radix-ui/react-separator": "^1.1.8",
|
|
93
|
+
"@radix-ui/react-slider": "1.3.6",
|
|
94
|
+
"@radix-ui/react-slot": "^1.2.4",
|
|
95
|
+
"@radix-ui/react-switch": "1.2.6",
|
|
96
|
+
"@radix-ui/react-tabs": "1.1.13",
|
|
97
|
+
"@radix-ui/react-toast": "1.2.15",
|
|
98
|
+
"@radix-ui/react-toggle": "1.1.10",
|
|
99
|
+
"@radix-ui/react-toggle-group": "1.1.11",
|
|
100
|
+
"@radix-ui/react-tooltip": "^1.2.8",
|
|
101
|
+
"@react-email/render": "latest",
|
|
102
|
+
"@react-three/drei": "^10.7.7",
|
|
103
|
+
"@react-three/fiber": "^9.4.2",
|
|
104
|
+
"@scalar/api-client-react": "latest",
|
|
105
|
+
"@scalar/api-reference": "^1.40.5",
|
|
106
|
+
"@scalar/api-reference-react": "^0.8.11",
|
|
107
|
+
"@shikijs/rehype": "^3.20.0",
|
|
108
|
+
"@shikijs/transformers": "^3.20.0",
|
|
109
|
+
"@silevis/reactgrid": "^4.1.17",
|
|
110
|
+
"@t3-oss/env-nextjs": "0.13.10",
|
|
111
|
+
"@tabler/icons-react": "^3.36.0",
|
|
112
|
+
"@tanstack/react-router": "latest",
|
|
113
|
+
"@tanstack/react-start": "latest",
|
|
114
|
+
"@tidbcloud/serverless": "latest",
|
|
115
|
+
"@types/better-sqlite3": "latest",
|
|
116
|
+
"@types/dompurify": "^3.2.0",
|
|
117
|
+
"@types/js-yaml": "^4.0.9",
|
|
118
|
+
"@types/marked": "^6.0.0",
|
|
119
|
+
"@types/pg": "latest",
|
|
120
|
+
"@types/sql.js": "latest",
|
|
121
|
+
"@upstash/redis": "latest",
|
|
122
|
+
"@vercel/analytics": "1.6.1",
|
|
123
|
+
"@vercel/postgres": "latest",
|
|
124
|
+
"@xata.io/client": "latest",
|
|
125
|
+
"ai": "6.0.3",
|
|
126
|
+
"algoliasearch": "latest",
|
|
127
|
+
"arktype": "latest",
|
|
128
|
+
"autoprefixer": "^10.4.22",
|
|
129
|
+
"axios": "^1.13.2",
|
|
130
|
+
"better-auth": "^1.4.7",
|
|
131
|
+
"better-sqlite3": "latest",
|
|
132
|
+
"bun-types": "latest",
|
|
133
|
+
"canvas": "latest",
|
|
134
|
+
"class-variance-authority": "^0.7.1",
|
|
135
|
+
"cli-highlight": "^2.1.11",
|
|
136
|
+
"clsx": "^2.1.1",
|
|
137
|
+
"cmdk": "^1.1.1",
|
|
138
|
+
"date-fns": "4.1.0",
|
|
139
|
+
"dompurify": "^3.3.1",
|
|
140
|
+
"dotenv": "^17.2.3",
|
|
141
|
+
"drizzle-orm": "^0.45.1",
|
|
142
|
+
"embla-carousel-react": "8.6.0",
|
|
143
|
+
"ethers": "^6.16.0",
|
|
144
|
+
"expo": "latest",
|
|
145
|
+
"expo-asset": "latest",
|
|
146
|
+
"expo-file-system": "latest",
|
|
147
|
+
"expo-gl": "latest",
|
|
148
|
+
"expo-sqlite": "latest",
|
|
149
|
+
"feed": "^5.1.0",
|
|
150
|
+
"fumadocs-core": "^16.2.5",
|
|
151
|
+
"fumadocs-mdx": "^14.1.1",
|
|
152
|
+
"fumadocs-openapi": "^10.1.4",
|
|
153
|
+
"fumadocs-twoslash": "^3.1.10",
|
|
154
|
+
"fumadocs-typescript": "^4.0.14",
|
|
155
|
+
"fumadocs-ui": "^16.2.5",
|
|
156
|
+
"gel": "latest",
|
|
157
|
+
"grab-url": "^1.0.15",
|
|
158
|
+
"hast-util-to-jsx-runtime": "2.3.6",
|
|
159
|
+
"highlight.js": "^11.11.1",
|
|
160
|
+
"jiti": "latest",
|
|
161
|
+
"js-yaml": "^4.1.1",
|
|
162
|
+
"jszip": "^3.10.1",
|
|
163
|
+
"katex": "^0.16.27",
|
|
164
|
+
"knex": "latest",
|
|
165
|
+
"kysely": "latest",
|
|
166
|
+
"langchain": "^1.2.0",
|
|
167
|
+
"less": "latest",
|
|
168
|
+
"lightningcss": "latest",
|
|
169
|
+
"linkedom": "^0.18.12",
|
|
170
|
+
"lucide-react": "^0.561.0",
|
|
171
|
+
"marked": "^17.0.1",
|
|
172
|
+
"mermaid": "^11.12.2",
|
|
173
|
+
"mongodb": "latest",
|
|
174
|
+
"motion": "^12.23.26",
|
|
175
|
+
"mysql2": "latest",
|
|
176
|
+
"next": "16.0.10",
|
|
177
|
+
"next-themes": "^0.4.6",
|
|
178
|
+
"pg": "latest",
|
|
179
|
+
"pinets": "^0.5.0",
|
|
180
|
+
"postgres": "latest",
|
|
181
|
+
"prisma": "latest",
|
|
182
|
+
"react": "19.2.3",
|
|
183
|
+
"react-day-picker": "9.12.0",
|
|
184
|
+
"react-dom": "19.2.3",
|
|
185
|
+
"react-hook-form": "^7.68.0",
|
|
186
|
+
"react-is": "^19.2.3",
|
|
187
|
+
"react-native": "latest",
|
|
188
|
+
"react-resizable-panels": "^3.0.6",
|
|
189
|
+
"react-router": "latest",
|
|
190
|
+
"rehype-katex": "^7.0.1",
|
|
191
|
+
"remark": "15.0.1",
|
|
192
|
+
"remark-gfm": "4.0.1",
|
|
193
|
+
"remark-math": "^6.0.0",
|
|
194
|
+
"remark-rehype": "11.1.2",
|
|
195
|
+
"resend": "^6.6.0",
|
|
196
|
+
"sass": "latest",
|
|
197
|
+
"sass-embedded": "latest",
|
|
198
|
+
"simplex-noise": "^4.0.3",
|
|
199
|
+
"siwe": "^3.0.0",
|
|
200
|
+
"solid-js": "latest",
|
|
201
|
+
"sonner": "^2.0.7",
|
|
202
|
+
"sql.js": "latest",
|
|
203
|
+
"sqlite3": "latest",
|
|
204
|
+
"stripe": "^20.0.0",
|
|
205
|
+
"stylus": "latest",
|
|
206
|
+
"sugarss": "latest",
|
|
207
|
+
"tailwind-merge": "^3.4.0",
|
|
208
|
+
"tailwindcss-animate": "^1.0.7",
|
|
209
|
+
"tavily": "^1.0.2",
|
|
210
|
+
"terser": "^5.44.1",
|
|
211
|
+
"three": "^0.182.0",
|
|
212
|
+
"three-globe": "^2.45.0",
|
|
213
|
+
"tsx": "latest",
|
|
214
|
+
"unist-util-visit": "5.0.0",
|
|
215
|
+
"valibot": "latest",
|
|
216
|
+
"vaul": "^1.1.2",
|
|
217
|
+
"viem": "^2.42.0",
|
|
218
|
+
"vitest": "latest",
|
|
219
|
+
"waku": "latest",
|
|
220
|
+
"yaml": "latest",
|
|
221
|
+
"zod": "4.1.13"
|
|
18
222
|
},
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
"
|
|
223
|
+
"devDependencies": {
|
|
224
|
+
"@fumadocs/cli": "^1.1.0",
|
|
225
|
+
"@tailwindcss/postcss": "^4.1.18",
|
|
226
|
+
"@types/node": "^25.0.2",
|
|
227
|
+
"@types/react": "^19.2.7",
|
|
228
|
+
"@types/react-dom": "^19.2.3",
|
|
229
|
+
"@types/three": "^0.182.0",
|
|
230
|
+
"@vitest/coverage-v8": "^4.1.0",
|
|
231
|
+
"concurrently": "^9.2.1",
|
|
232
|
+
"drizzle-kit": "^0.31.8",
|
|
233
|
+
"opener": "^1.5.2",
|
|
234
|
+
"postcss": "^8.5.6",
|
|
235
|
+
"tailwindcss": "^4.1.18",
|
|
236
|
+
"tw-animate-css": "1.4.0",
|
|
237
|
+
"typescript": "^5.9.3",
|
|
238
|
+
"vite": "^7.3.0",
|
|
239
|
+
"vite-plugin-dts": "^4.5.4",
|
|
240
|
+
"vitest": "^4.1.0",
|
|
241
|
+
"wait-on": "^9.0.3"
|
|
27
242
|
},
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"README.md"
|
|
243
|
+
"data": "dist/index.d.ts",
|
|
244
|
+
"trustedDependencies": [
|
|
245
|
+
"pg-native"
|
|
32
246
|
]
|
|
33
247
|
}
|