api2ai 0.2.101 → 1.0.0
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 +43 -72
- package/package.json +23 -238
- package/src/generate-mcp-use-server.js +1037 -0
package/README.md
CHANGED
|
@@ -1,49 +1,15 @@
|
|
|
1
|
+
# api2ai
|
|
1
2
|
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
</p>
|
|
3
|
+
Generate production-ready MCP servers from any OpenAPI specification using the
|
|
4
|
+
[mcp-use](https://mcp-use.com) framework (8k+ GitHub stars).
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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 -->
|
|
6
|
+
OpenAPI specs are easy to write and organize your code, and there are
|
|
7
|
+
[100s of tools available](https://openapi.tools) such as the
|
|
8
|
+
[OpenAPI Builder web UI](https://www.apibldr.com).
|
|
27
9
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
# API2AI: OpenAPI to MCP-Use Server
|
|
41
|
-
|
|
42
|
-
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
|
-
|
|
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).
|
|
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.
|
|
10
|
+
```bash
|
|
11
|
+
npm i -g api2ai
|
|
12
|
+
```
|
|
47
13
|
|
|
48
14
|
## Features
|
|
49
15
|
|
|
@@ -78,7 +44,7 @@ Open http://localhost:3000/inspector to test your tools!
|
|
|
78
44
|
### CLI
|
|
79
45
|
|
|
80
46
|
```bash
|
|
81
|
-
|
|
47
|
+
npx api2ai <openapi-spec> [output-folder] [options]
|
|
82
48
|
|
|
83
49
|
Options:
|
|
84
50
|
--name <name> Server name (default: api-mcp-server)
|
|
@@ -95,32 +61,32 @@ Options:
|
|
|
95
61
|
|
|
96
62
|
```bash
|
|
97
63
|
# From remote URL
|
|
98
|
-
|
|
64
|
+
npx api2ai \
|
|
99
65
|
https://api.example.com/openapi.json \
|
|
100
66
|
./my-server \
|
|
101
67
|
--name my-api
|
|
102
68
|
|
|
103
69
|
# From local file
|
|
104
|
-
|
|
70
|
+
npx api2ai \
|
|
105
71
|
./specs/my-api.yaml \
|
|
106
72
|
./my-mcp-server \
|
|
107
73
|
--port 8080
|
|
108
74
|
|
|
109
75
|
# With custom base URL
|
|
110
|
-
|
|
76
|
+
npx api2ai \
|
|
111
77
|
./petstore.json \
|
|
112
78
|
./petstore \
|
|
113
79
|
--base-url https://petstore.example.com/v3
|
|
114
80
|
|
|
115
81
|
# Include only read-only tools tagged "public"
|
|
116
|
-
|
|
82
|
+
npx api2ai \
|
|
117
83
|
./api.json \
|
|
118
84
|
./readonly-server \
|
|
119
85
|
--include-tags public \
|
|
120
86
|
--exclude-tags admin,internal
|
|
121
87
|
|
|
122
88
|
# Enable writes (mutations) explicitly
|
|
123
|
-
|
|
89
|
+
npx api2ai \
|
|
124
90
|
./api.json \
|
|
125
91
|
./full-server \
|
|
126
92
|
--allow-mutations \
|
|
@@ -130,29 +96,29 @@ node generate-mcp-use-server.js \
|
|
|
130
96
|
### Programmatic Usage
|
|
131
97
|
|
|
132
98
|
```javascript
|
|
133
|
-
import { generateMcpServer, extractTools, loadOpenApiSpec } from
|
|
99
|
+
import { generateMcpServer, extractTools, loadOpenApiSpec } from "api2ai";
|
|
134
100
|
|
|
135
101
|
// Generate complete server
|
|
136
102
|
const result = await generateMcpServer(
|
|
137
|
-
|
|
138
|
-
|
|
103
|
+
"https://api.example.com/openapi.json",
|
|
104
|
+
"./output-folder",
|
|
139
105
|
{
|
|
140
|
-
serverName:
|
|
141
|
-
baseUrl:
|
|
106
|
+
serverName: "my-api",
|
|
107
|
+
baseUrl: "https://api.example.com/v1",
|
|
142
108
|
port: 3000,
|
|
143
109
|
allowMutations: false, // block POST/PUT/PATCH/DELETE by default
|
|
144
|
-
includeTags: [
|
|
145
|
-
excludeTags: [
|
|
110
|
+
includeTags: ["public"], // only include tools tagged "public"
|
|
111
|
+
excludeTags: ["admin"], // exclude tools tagged "admin"
|
|
146
112
|
}
|
|
147
113
|
);
|
|
148
114
|
|
|
149
115
|
console.log(`Generated ${result.toolCount} tools`);
|
|
150
116
|
|
|
151
117
|
// Or just extract tools for custom processing
|
|
152
|
-
const spec = await loadOpenApiSpec(
|
|
118
|
+
const spec = await loadOpenApiSpec("./my-spec.json");
|
|
153
119
|
const tools = extractTools(spec, {
|
|
154
|
-
filterFn: (tool) => tool.riskLevel ===
|
|
155
|
-
excludeOperationIds: [
|
|
120
|
+
filterFn: (tool) => tool.riskLevel === "low", // only safe read-only tools
|
|
121
|
+
excludeOperationIds: ["deleteUser"],
|
|
156
122
|
});
|
|
157
123
|
```
|
|
158
124
|
|
|
@@ -259,7 +225,7 @@ The generated server supports the OpenAI Apps SDK out of the box.
|
|
|
259
225
|
|
|
260
226
|
```javascript
|
|
261
227
|
const result = await generateMcpServer(specUrl, outputDir, {
|
|
262
|
-
filterFn: (tool) => tool.riskLevel ===
|
|
228
|
+
filterFn: (tool) => tool.riskLevel === "low",
|
|
263
229
|
});
|
|
264
230
|
```
|
|
265
231
|
|
|
@@ -267,7 +233,7 @@ const result = await generateMcpServer(specUrl, outputDir, {
|
|
|
267
233
|
|
|
268
234
|
```javascript
|
|
269
235
|
const result = await generateMcpServer(specUrl, outputDir, {
|
|
270
|
-
filterFn: (tool) => [
|
|
236
|
+
filterFn: (tool) => ["get", "post"].includes(tool.method),
|
|
271
237
|
});
|
|
272
238
|
```
|
|
273
239
|
|
|
@@ -276,9 +242,9 @@ const result = await generateMcpServer(specUrl, outputDir, {
|
|
|
276
242
|
```javascript
|
|
277
243
|
const result = await generateMcpServer(specUrl, outputDir, {
|
|
278
244
|
excludeOperationIds: [
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
245
|
+
"deleteUser",
|
|
246
|
+
"deleteAllData",
|
|
247
|
+
"adminReset",
|
|
282
248
|
],
|
|
283
249
|
});
|
|
284
250
|
```
|
|
@@ -287,7 +253,7 @@ const result = await generateMcpServer(specUrl, outputDir, {
|
|
|
287
253
|
|
|
288
254
|
```javascript
|
|
289
255
|
const result = await generateMcpServer(specUrl, outputDir, {
|
|
290
|
-
filterFn: (tool) => tool.pathTemplate.startsWith(
|
|
256
|
+
filterFn: (tool) => tool.pathTemplate.startsWith("/api/v2/"),
|
|
291
257
|
});
|
|
292
258
|
```
|
|
293
259
|
|
|
@@ -295,11 +261,11 @@ const result = await generateMcpServer(specUrl, outputDir, {
|
|
|
295
261
|
|
|
296
262
|
```javascript
|
|
297
263
|
const result = await generateMcpServer(specUrl, outputDir, {
|
|
298
|
-
excludeOperationIds: [
|
|
264
|
+
excludeOperationIds: ["deleteUser"],
|
|
299
265
|
allowMutations: false,
|
|
300
|
-
filterFn: (tool) =>
|
|
301
|
-
tool.riskLevel ===
|
|
302
|
-
tool.pathTemplate.includes(
|
|
266
|
+
filterFn: (tool) =>
|
|
267
|
+
tool.riskLevel === "low" &&
|
|
268
|
+
tool.pathTemplate.includes("/public/"),
|
|
303
269
|
});
|
|
304
270
|
```
|
|
305
271
|
|
|
@@ -317,8 +283,13 @@ const result = await generateMcpServer(specUrl, outputDir, {
|
|
|
317
283
|
| HTTP hardening | ✅ Built-in | ❌ Manual |
|
|
318
284
|
| Production ready | ✅ Yes | ⚠️ Requires work |
|
|
319
285
|
|
|
320
|
-
|
|
286
|
+
## Development
|
|
287
|
+
|
|
288
|
+
```bash
|
|
289
|
+
npm install
|
|
290
|
+
node src/generate-mcp-use-server.js ./petstore.json ./out
|
|
291
|
+
```
|
|
321
292
|
|
|
322
|
-
|
|
293
|
+
## License
|
|
323
294
|
|
|
324
|
-
|
|
295
|
+
MIT
|
package/package.json
CHANGED
|
@@ -1,248 +1,33 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "api2ai",
|
|
3
|
-
"version": "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.0",
|
|
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
|
-
"postinstall": "fumadocs-mdx && drizzle-kit push",
|
|
46
|
-
"make": "concurrently \"next build && next start \" \"wait-on http://localhost:3000 && opener http://localhost:3000\"",
|
|
47
|
-
"start": "next start",
|
|
48
|
-
"test": "vitest run",
|
|
49
|
-
"test:watch": "vitest",
|
|
50
|
-
"coverage": "vitest run --coverage"
|
|
13
|
+
"optionalDependencies": {
|
|
14
|
+
"js-yaml": "^4.1.1"
|
|
51
15
|
},
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"@aws-sdk/client-rds-data": "latest",
|
|
55
|
-
"@better-auth/core": "latest",
|
|
56
|
-
"@better-auth/stripe": "^1.4.7",
|
|
57
|
-
"@cloudflare/workers-types": "latest",
|
|
58
|
-
"@electric-sql/pglite": "latest",
|
|
59
|
-
"@emotion/is-prop-valid": "latest",
|
|
60
|
-
"@fumadocs/mdx-remote": "^1.4.3",
|
|
61
|
-
"@langchain/core": "^1.1.5",
|
|
62
|
-
"@langchain/groq": "^1.0.2",
|
|
63
|
-
"@langchain/openai": "^1.2.0",
|
|
64
|
-
"@libsql/client": "^0.15.15",
|
|
65
|
-
"@libsql/client-wasm": "latest",
|
|
66
|
-
"@lynx-js/react": "latest",
|
|
67
|
-
"@mixedbread/sdk": "latest",
|
|
68
|
-
"@neondatabase/serverless": "latest",
|
|
69
|
-
"@op-engineering/op-sqlite": "latest",
|
|
70
|
-
"@opentelemetry/api": "latest",
|
|
71
|
-
"@orama/core": "latest",
|
|
72
|
-
"@planetscale/database": "latest",
|
|
73
|
-
"@prisma/client": "latest",
|
|
74
|
-
"@radix-ui/react-accordion": "1.2.12",
|
|
75
|
-
"@radix-ui/react-alert-dialog": "1.1.15",
|
|
76
|
-
"@radix-ui/react-aspect-ratio": "1.1.8",
|
|
77
|
-
"@radix-ui/react-avatar": "^1.1.11",
|
|
78
|
-
"@radix-ui/react-checkbox": "1.3.3",
|
|
79
|
-
"@radix-ui/react-collapsible": "^1.1.12",
|
|
80
|
-
"@radix-ui/react-context-menu": "2.2.16",
|
|
81
|
-
"@radix-ui/react-dialog": "^1.1.15",
|
|
82
|
-
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
|
83
|
-
"@radix-ui/react-hover-card": "1.1.15",
|
|
84
|
-
"@radix-ui/react-label": "2.1.8",
|
|
85
|
-
"@radix-ui/react-menubar": "1.1.16",
|
|
86
|
-
"@radix-ui/react-navigation-menu": "1.2.14",
|
|
87
|
-
"@radix-ui/react-popover": "1.1.15",
|
|
88
|
-
"@radix-ui/react-presence": "1.1.5",
|
|
89
|
-
"@radix-ui/react-progress": "1.1.8",
|
|
90
|
-
"@radix-ui/react-radio-group": "^1.3.8",
|
|
91
|
-
"@radix-ui/react-scroll-area": "1.2.10",
|
|
92
|
-
"@radix-ui/react-select": "2.2.6",
|
|
93
|
-
"@radix-ui/react-separator": "^1.1.8",
|
|
94
|
-
"@radix-ui/react-slider": "1.3.6",
|
|
95
|
-
"@radix-ui/react-slot": "^1.2.4",
|
|
96
|
-
"@radix-ui/react-switch": "1.2.6",
|
|
97
|
-
"@radix-ui/react-tabs": "1.1.13",
|
|
98
|
-
"@radix-ui/react-toast": "1.2.15",
|
|
99
|
-
"@radix-ui/react-toggle": "1.1.10",
|
|
100
|
-
"@radix-ui/react-toggle-group": "1.1.11",
|
|
101
|
-
"@radix-ui/react-tooltip": "^1.2.8",
|
|
102
|
-
"@react-email/render": "latest",
|
|
103
|
-
"@react-three/drei": "^10.7.7",
|
|
104
|
-
"@react-three/fiber": "^9.4.2",
|
|
105
|
-
"@scalar/api-client-react": "latest",
|
|
106
|
-
"@scalar/api-reference": "^1.40.5",
|
|
107
|
-
"@scalar/api-reference-react": "^0.8.11",
|
|
108
|
-
"@shikijs/rehype": "^3.20.0",
|
|
109
|
-
"@shikijs/transformers": "^3.20.0",
|
|
110
|
-
"@silevis/reactgrid": "^4.1.17",
|
|
111
|
-
"@t3-oss/env-nextjs": "0.13.10",
|
|
112
|
-
"@tabler/icons-react": "^3.36.0",
|
|
113
|
-
"@tanstack/react-router": "latest",
|
|
114
|
-
"@tanstack/react-start": "latest",
|
|
115
|
-
"@tidbcloud/serverless": "latest",
|
|
116
|
-
"@types/better-sqlite3": "latest",
|
|
117
|
-
"@types/dompurify": "^3.2.0",
|
|
118
|
-
"@types/js-yaml": "^4.0.9",
|
|
119
|
-
"@types/marked": "^6.0.0",
|
|
120
|
-
"@types/pg": "latest",
|
|
121
|
-
"@types/sql.js": "latest",
|
|
122
|
-
"@upstash/redis": "latest",
|
|
123
|
-
"@vercel/analytics": "1.6.1",
|
|
124
|
-
"@vercel/postgres": "latest",
|
|
125
|
-
"@xata.io/client": "latest",
|
|
126
|
-
"ai": "6.0.3",
|
|
127
|
-
"algoliasearch": "latest",
|
|
128
|
-
"arktype": "latest",
|
|
129
|
-
"autoprefixer": "^10.4.22",
|
|
130
|
-
"axios": "^1.13.2",
|
|
131
|
-
"better-auth": "^1.4.7",
|
|
132
|
-
"better-sqlite3": "latest",
|
|
133
|
-
"bun-types": "latest",
|
|
134
|
-
"canvas": "latest",
|
|
135
|
-
"class-variance-authority": "^0.7.1",
|
|
136
|
-
"cli-highlight": "^2.1.11",
|
|
137
|
-
"clsx": "^2.1.1",
|
|
138
|
-
"cmdk": "^1.1.1",
|
|
139
|
-
"date-fns": "4.1.0",
|
|
140
|
-
"dompurify": "^3.3.1",
|
|
141
|
-
"dotenv": "^17.2.3",
|
|
142
|
-
"drizzle-orm": "^0.45.1",
|
|
143
|
-
"embla-carousel-react": "8.6.0",
|
|
144
|
-
"ethers": "^6.16.0",
|
|
145
|
-
"expo": "latest",
|
|
146
|
-
"expo-asset": "latest",
|
|
147
|
-
"expo-file-system": "latest",
|
|
148
|
-
"expo-gl": "latest",
|
|
149
|
-
"expo-sqlite": "latest",
|
|
150
|
-
"feed": "^5.1.0",
|
|
151
|
-
"fumadocs-core": "^16.2.5",
|
|
152
|
-
"fumadocs-mdx": "^14.1.1",
|
|
153
|
-
"fumadocs-openapi": "^10.1.4",
|
|
154
|
-
"fumadocs-twoslash": "^3.1.10",
|
|
155
|
-
"fumadocs-typescript": "^4.0.14",
|
|
156
|
-
"fumadocs-ui": "^16.2.5",
|
|
157
|
-
"gel": "latest",
|
|
158
|
-
"grab-url": "^1.0.15",
|
|
159
|
-
"hast-util-to-jsx-runtime": "2.3.6",
|
|
160
|
-
"highlight.js": "^11.11.1",
|
|
161
|
-
"jiti": "latest",
|
|
162
|
-
"js-yaml": "^4.1.1",
|
|
163
|
-
"jszip": "^3.10.1",
|
|
164
|
-
"katex": "^0.16.27",
|
|
165
|
-
"knex": "latest",
|
|
166
|
-
"kysely": "latest",
|
|
167
|
-
"langchain": "^1.2.0",
|
|
168
|
-
"less": "latest",
|
|
169
|
-
"lightningcss": "latest",
|
|
170
|
-
"linkedom": "^0.18.12",
|
|
171
|
-
"lucide-react": "^0.561.0",
|
|
172
|
-
"marked": "^17.0.1",
|
|
173
|
-
"mermaid": "^11.12.2",
|
|
174
|
-
"mongodb": "latest",
|
|
175
|
-
"motion": "^12.23.26",
|
|
176
|
-
"mysql2": "latest",
|
|
177
|
-
"next": "16.0.10",
|
|
178
|
-
"next-themes": "^0.4.6",
|
|
179
|
-
"pg": "latest",
|
|
180
|
-
"pinets": "^0.5.0",
|
|
181
|
-
"postgres": "latest",
|
|
182
|
-
"prisma": "latest",
|
|
183
|
-
"react": "19.2.3",
|
|
184
|
-
"react-day-picker": "9.12.0",
|
|
185
|
-
"react-dom": "19.2.3",
|
|
186
|
-
"react-hook-form": "^7.68.0",
|
|
187
|
-
"react-is": "^19.2.3",
|
|
188
|
-
"react-native": "latest",
|
|
189
|
-
"react-resizable-panels": "^3.0.6",
|
|
190
|
-
"react-router": "latest",
|
|
191
|
-
"rehype-katex": "^7.0.1",
|
|
192
|
-
"remark": "15.0.1",
|
|
193
|
-
"remark-gfm": "4.0.1",
|
|
194
|
-
"remark-math": "^6.0.0",
|
|
195
|
-
"remark-rehype": "11.1.2",
|
|
196
|
-
"resend": "^6.6.0",
|
|
197
|
-
"sass": "latest",
|
|
198
|
-
"sass-embedded": "latest",
|
|
199
|
-
"simplex-noise": "^4.0.3",
|
|
200
|
-
"siwe": "^3.0.0",
|
|
201
|
-
"solid-js": "latest",
|
|
202
|
-
"sonner": "^2.0.7",
|
|
203
|
-
"sql.js": "latest",
|
|
204
|
-
"sqlite3": "latest",
|
|
205
|
-
"stripe": "^20.0.0",
|
|
206
|
-
"stylus": "latest",
|
|
207
|
-
"sugarss": "latest",
|
|
208
|
-
"tailwind-merge": "^3.4.0",
|
|
209
|
-
"tailwindcss-animate": "^1.0.7",
|
|
210
|
-
"tavily": "^1.0.2",
|
|
211
|
-
"terser": "^5.44.1",
|
|
212
|
-
"three": "^0.182.0",
|
|
213
|
-
"three-globe": "^2.45.0",
|
|
214
|
-
"tsx": "latest",
|
|
215
|
-
"unist-util-visit": "5.0.0",
|
|
216
|
-
"valibot": "latest",
|
|
217
|
-
"vaul": "^1.1.2",
|
|
218
|
-
"viem": "^2.42.0",
|
|
219
|
-
"vitest": "latest",
|
|
220
|
-
"waku": "latest",
|
|
221
|
-
"yaml": "latest",
|
|
222
|
-
"zod": "4.1.13"
|
|
16
|
+
"engines": {
|
|
17
|
+
"node": ">=18.0.0"
|
|
223
18
|
},
|
|
224
|
-
"
|
|
225
|
-
|
|
226
|
-
"
|
|
227
|
-
"
|
|
228
|
-
"
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
"
|
|
232
|
-
"concurrently": "^9.2.1",
|
|
233
|
-
"drizzle-kit": "^0.31.8",
|
|
234
|
-
"opener": "^1.5.2",
|
|
235
|
-
"postcss": "^8.5.6",
|
|
236
|
-
"tailwindcss": "^4.1.18",
|
|
237
|
-
"tw-animate-css": "1.4.0",
|
|
238
|
-
"typescript": "^5.9.3",
|
|
239
|
-
"vite": "^7.3.0",
|
|
240
|
-
"vite-plugin-dts": "^4.5.4",
|
|
241
|
-
"vitest": "^4.1.0",
|
|
242
|
-
"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"
|
|
243
27
|
},
|
|
244
|
-
"
|
|
245
|
-
"
|
|
246
|
-
"
|
|
28
|
+
"homepage": "https://github.com/OpenSourceAGI/GRAB-URL/tree/master/packages/api2ai#readme",
|
|
29
|
+
"files": [
|
|
30
|
+
"src",
|
|
31
|
+
"README.md"
|
|
247
32
|
]
|
|
248
33
|
}
|