api2ai 1.0.22 → 1.0.23
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 +39 -63
- package/package.json +23 -237
- package/src/generate-mcp-use-server.js +1037 -0
package/README.md
CHANGED
|
@@ -1,49 +1,20 @@
|
|
|
1
1
|
|
|
2
2
|
<p align="center">
|
|
3
|
-
<img
|
|
3
|
+
<img src="https://i.imgur.com/6CKuUBa.png" /><br />
|
|
4
|
+
<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"
|
|
5
|
+
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>
|
|
4
6
|
</p>
|
|
5
7
|
|
|
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
|
-
|
|
32
|
-
<h3 align="center">
|
|
33
|
-
<a href="https://api-2-ai.vercel.app/"> 🌐 Live Site </a> |
|
|
34
|
-
<a href="https://github.com/vtempest/GRAB-URL/tree/master/api2ai/example-petstore"> 🎯 Example MCP Server </a>
|
|
35
|
-
</h3>
|
|
36
|
-
|
|
37
8
|
|
|
9
|
+
# API2AI: OpenAPI to MCP-Use Server
|
|
38
10
|
|
|
11
|
+
<a href="https://github.com/OpenSourceAGI/GRAB-URL/tree/master/examples/openapi-mcp-docs"> 🎯 Example MCP Server </a>
|
|
39
12
|
|
|
40
|
-
# API2AI: OpenAPI to MCP-Use Server
|
|
41
13
|
|
|
42
14
|
Generate production-ready MCP servers from any OpenAPI specification using the highly-used and convenient [mcp-use](https://mcp-use.com) framework (8k+ GitHub stars).
|
|
43
15
|
|
|
44
16
|
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).
|
|
45
17
|
|
|
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.
|
|
47
18
|
|
|
48
19
|
## Features
|
|
49
20
|
|
|
@@ -78,7 +49,7 @@ Open http://localhost:3000/inspector to test your tools!
|
|
|
78
49
|
### CLI
|
|
79
50
|
|
|
80
51
|
```bash
|
|
81
|
-
|
|
52
|
+
npx api2ai <openapi-spec> [output-folder] [options]
|
|
82
53
|
|
|
83
54
|
Options:
|
|
84
55
|
--name <name> Server name (default: api-mcp-server)
|
|
@@ -95,32 +66,32 @@ Options:
|
|
|
95
66
|
|
|
96
67
|
```bash
|
|
97
68
|
# From remote URL
|
|
98
|
-
|
|
69
|
+
npx api2ai \
|
|
99
70
|
https://api.example.com/openapi.json \
|
|
100
71
|
./my-server \
|
|
101
72
|
--name my-api
|
|
102
73
|
|
|
103
74
|
# From local file
|
|
104
|
-
|
|
75
|
+
npx api2ai \
|
|
105
76
|
./specs/my-api.yaml \
|
|
106
77
|
./my-mcp-server \
|
|
107
78
|
--port 8080
|
|
108
79
|
|
|
109
80
|
# With custom base URL
|
|
110
|
-
|
|
81
|
+
npx api2ai \
|
|
111
82
|
./petstore.json \
|
|
112
83
|
./petstore \
|
|
113
84
|
--base-url https://petstore.example.com/v3
|
|
114
85
|
|
|
115
86
|
# Include only read-only tools tagged "public"
|
|
116
|
-
|
|
87
|
+
npx api2ai \
|
|
117
88
|
./api.json \
|
|
118
89
|
./readonly-server \
|
|
119
90
|
--include-tags public \
|
|
120
91
|
--exclude-tags admin,internal
|
|
121
92
|
|
|
122
93
|
# Enable writes (mutations) explicitly
|
|
123
|
-
|
|
94
|
+
npx api2ai \
|
|
124
95
|
./api.json \
|
|
125
96
|
./full-server \
|
|
126
97
|
--allow-mutations \
|
|
@@ -130,29 +101,29 @@ node generate-mcp-use-server.js \
|
|
|
130
101
|
### Programmatic Usage
|
|
131
102
|
|
|
132
103
|
```javascript
|
|
133
|
-
import { generateMcpServer, extractTools, loadOpenApiSpec } from
|
|
104
|
+
import { generateMcpServer, extractTools, loadOpenApiSpec } from "api2ai";
|
|
134
105
|
|
|
135
106
|
// Generate complete server
|
|
136
107
|
const result = await generateMcpServer(
|
|
137
|
-
|
|
138
|
-
|
|
108
|
+
"https://api.example.com/openapi.json",
|
|
109
|
+
"./output-folder",
|
|
139
110
|
{
|
|
140
|
-
serverName:
|
|
141
|
-
baseUrl:
|
|
111
|
+
serverName: "my-api",
|
|
112
|
+
baseUrl: "https://api.example.com/v1",
|
|
142
113
|
port: 3000,
|
|
143
114
|
allowMutations: false, // block POST/PUT/PATCH/DELETE by default
|
|
144
|
-
includeTags: [
|
|
145
|
-
excludeTags: [
|
|
115
|
+
includeTags: ["public"], // only include tools tagged "public"
|
|
116
|
+
excludeTags: ["admin"], // exclude tools tagged "admin"
|
|
146
117
|
}
|
|
147
118
|
);
|
|
148
119
|
|
|
149
120
|
console.log(`Generated ${result.toolCount} tools`);
|
|
150
121
|
|
|
151
122
|
// Or just extract tools for custom processing
|
|
152
|
-
const spec = await loadOpenApiSpec(
|
|
123
|
+
const spec = await loadOpenApiSpec("./my-spec.json");
|
|
153
124
|
const tools = extractTools(spec, {
|
|
154
|
-
filterFn: (tool) => tool.riskLevel ===
|
|
155
|
-
excludeOperationIds: [
|
|
125
|
+
filterFn: (tool) => tool.riskLevel === "low", // only safe read-only tools
|
|
126
|
+
excludeOperationIds: ["deleteUser"],
|
|
156
127
|
});
|
|
157
128
|
```
|
|
158
129
|
|
|
@@ -259,7 +230,7 @@ The generated server supports the OpenAI Apps SDK out of the box.
|
|
|
259
230
|
|
|
260
231
|
```javascript
|
|
261
232
|
const result = await generateMcpServer(specUrl, outputDir, {
|
|
262
|
-
filterFn: (tool) => tool.riskLevel ===
|
|
233
|
+
filterFn: (tool) => tool.riskLevel === "low",
|
|
263
234
|
});
|
|
264
235
|
```
|
|
265
236
|
|
|
@@ -267,7 +238,7 @@ const result = await generateMcpServer(specUrl, outputDir, {
|
|
|
267
238
|
|
|
268
239
|
```javascript
|
|
269
240
|
const result = await generateMcpServer(specUrl, outputDir, {
|
|
270
|
-
filterFn: (tool) => [
|
|
241
|
+
filterFn: (tool) => ["get", "post"].includes(tool.method),
|
|
271
242
|
});
|
|
272
243
|
```
|
|
273
244
|
|
|
@@ -276,9 +247,9 @@ const result = await generateMcpServer(specUrl, outputDir, {
|
|
|
276
247
|
```javascript
|
|
277
248
|
const result = await generateMcpServer(specUrl, outputDir, {
|
|
278
249
|
excludeOperationIds: [
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
250
|
+
"deleteUser",
|
|
251
|
+
"deleteAllData",
|
|
252
|
+
"adminReset",
|
|
282
253
|
],
|
|
283
254
|
});
|
|
284
255
|
```
|
|
@@ -287,7 +258,7 @@ const result = await generateMcpServer(specUrl, outputDir, {
|
|
|
287
258
|
|
|
288
259
|
```javascript
|
|
289
260
|
const result = await generateMcpServer(specUrl, outputDir, {
|
|
290
|
-
filterFn: (tool) => tool.pathTemplate.startsWith(
|
|
261
|
+
filterFn: (tool) => tool.pathTemplate.startsWith("/api/v2/"),
|
|
291
262
|
});
|
|
292
263
|
```
|
|
293
264
|
|
|
@@ -295,11 +266,11 @@ const result = await generateMcpServer(specUrl, outputDir, {
|
|
|
295
266
|
|
|
296
267
|
```javascript
|
|
297
268
|
const result = await generateMcpServer(specUrl, outputDir, {
|
|
298
|
-
excludeOperationIds: [
|
|
269
|
+
excludeOperationIds: ["deleteUser"],
|
|
299
270
|
allowMutations: false,
|
|
300
|
-
filterFn: (tool) =>
|
|
301
|
-
tool.riskLevel ===
|
|
302
|
-
tool.pathTemplate.includes(
|
|
271
|
+
filterFn: (tool) =>
|
|
272
|
+
tool.riskLevel === "low" &&
|
|
273
|
+
tool.pathTemplate.includes("/public/"),
|
|
303
274
|
});
|
|
304
275
|
```
|
|
305
276
|
|
|
@@ -317,8 +288,13 @@ const result = await generateMcpServer(specUrl, outputDir, {
|
|
|
317
288
|
| HTTP hardening | ✅ Built-in | ❌ Manual |
|
|
318
289
|
| Production ready | ✅ Yes | ⚠️ Requires work |
|
|
319
290
|
|
|
320
|
-
|
|
291
|
+
## Development
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
npm install
|
|
295
|
+
node src/generate-mcp-use-server.js ./petstore.json ./out
|
|
296
|
+
```
|
|
321
297
|
|
|
322
|
-
|
|
298
|
+
## License
|
|
323
299
|
|
|
324
|
-
|
|
300
|
+
MIT
|
package/package.json
CHANGED
|
@@ -1,247 +1,33 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "api2ai",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "Generate production-ready MCP
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
"type": "git",
|
|
9
|
-
"url": "git+https://github.com/OpenSourceAGI/dev-tools-starter-agent.git",
|
|
10
|
-
"directory": "packages/api2ai-mcp-generator"
|
|
3
|
+
"version": "1.0.23",
|
|
4
|
+
"description": "Generate a production-ready MCP server (mcp-use framework) from any OpenAPI specification.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"api2ai": "./src/generate-mcp-use-server.js"
|
|
11
8
|
},
|
|
12
|
-
"
|
|
13
|
-
"keywords": [
|
|
14
|
-
"mcp",
|
|
15
|
-
"mcp-server",
|
|
16
|
-
"model-context-protocol",
|
|
17
|
-
"openapi",
|
|
18
|
-
"api",
|
|
19
|
-
"ai",
|
|
20
|
-
"code-generator",
|
|
21
|
-
"zod"
|
|
22
|
-
],
|
|
9
|
+
"main": "./src/generate-mcp-use-server.js",
|
|
23
10
|
"exports": {
|
|
24
|
-
".":
|
|
25
|
-
"types": "./dist/index.d.ts",
|
|
26
|
-
"import": "./dist/index.mjs",
|
|
27
|
-
"require": "./dist/index.js"
|
|
28
|
-
}
|
|
11
|
+
".": "./src/generate-mcp-use-server.js"
|
|
29
12
|
},
|
|
30
|
-
"
|
|
31
|
-
|
|
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"
|
|
13
|
+
"optionalDependencies": {
|
|
14
|
+
"js-yaml": "^4.1.1"
|
|
50
15
|
},
|
|
51
|
-
"
|
|
52
|
-
"
|
|
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"
|
|
16
|
+
"engines": {
|
|
17
|
+
"node": ">=18.0.0"
|
|
222
18
|
},
|
|
223
|
-
"
|
|
224
|
-
|
|
225
|
-
"
|
|
226
|
-
"
|
|
227
|
-
"
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
"
|
|
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"
|
|
19
|
+
"license": "MIT",
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "git+https://github.com/OpenSourceAGI/GRAB-URL.git",
|
|
23
|
+
"directory": "packages/api2ai"
|
|
24
|
+
},
|
|
25
|
+
"bugs": {
|
|
26
|
+
"url": "https://github.com/OpenSourceAGI/GRAB-URL/issues"
|
|
242
27
|
},
|
|
243
|
-
"
|
|
244
|
-
"
|
|
245
|
-
"
|
|
28
|
+
"homepage": "https://github.com/OpenSourceAGI/GRAB-URL/tree/master/packages/api2ai#readme",
|
|
29
|
+
"files": [
|
|
30
|
+
"src",
|
|
31
|
+
"README.md"
|
|
246
32
|
]
|
|
247
33
|
}
|