api2ai 1.0.14 → 1.0.15
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 -59
- package/package.json +23 -237
- package/src/generate-mcp-use-server.js +1037 -0
package/README.md
CHANGED
|
@@ -1,40 +1,16 @@
|
|
|
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/6CKuUBa.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
|
-
|
|
32
5
|
<h3 align="center">
|
|
33
|
-
<a href="https://api-2-ai.vercel.app/"> 🌐 Live Site </a> |
|
|
34
6
|
<a href="https://github.com/vtempest/GRAB-URL/tree/master/api2ai/example-petstore"> 🎯 Example MCP Server </a>
|
|
35
7
|
</h3>
|
|
36
8
|
|
|
37
9
|
|
|
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>
|
|
38
14
|
|
|
39
15
|
|
|
40
16
|
# API2AI: OpenAPI to MCP-Use Server
|
|
@@ -43,7 +19,6 @@ Generate production-ready MCP servers from any OpenAPI specification using the h
|
|
|
43
19
|
|
|
44
20
|
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
21
|
|
|
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
22
|
|
|
48
23
|
## Features
|
|
49
24
|
|
|
@@ -78,7 +53,7 @@ Open http://localhost:3000/inspector to test your tools!
|
|
|
78
53
|
### CLI
|
|
79
54
|
|
|
80
55
|
```bash
|
|
81
|
-
|
|
56
|
+
npx api2ai <openapi-spec> [output-folder] [options]
|
|
82
57
|
|
|
83
58
|
Options:
|
|
84
59
|
--name <name> Server name (default: api-mcp-server)
|
|
@@ -95,32 +70,32 @@ Options:
|
|
|
95
70
|
|
|
96
71
|
```bash
|
|
97
72
|
# From remote URL
|
|
98
|
-
|
|
73
|
+
npx api2ai \
|
|
99
74
|
https://api.example.com/openapi.json \
|
|
100
75
|
./my-server \
|
|
101
76
|
--name my-api
|
|
102
77
|
|
|
103
78
|
# From local file
|
|
104
|
-
|
|
79
|
+
npx api2ai \
|
|
105
80
|
./specs/my-api.yaml \
|
|
106
81
|
./my-mcp-server \
|
|
107
82
|
--port 8080
|
|
108
83
|
|
|
109
84
|
# With custom base URL
|
|
110
|
-
|
|
85
|
+
npx api2ai \
|
|
111
86
|
./petstore.json \
|
|
112
87
|
./petstore \
|
|
113
88
|
--base-url https://petstore.example.com/v3
|
|
114
89
|
|
|
115
90
|
# Include only read-only tools tagged "public"
|
|
116
|
-
|
|
91
|
+
npx api2ai \
|
|
117
92
|
./api.json \
|
|
118
93
|
./readonly-server \
|
|
119
94
|
--include-tags public \
|
|
120
95
|
--exclude-tags admin,internal
|
|
121
96
|
|
|
122
97
|
# Enable writes (mutations) explicitly
|
|
123
|
-
|
|
98
|
+
npx api2ai \
|
|
124
99
|
./api.json \
|
|
125
100
|
./full-server \
|
|
126
101
|
--allow-mutations \
|
|
@@ -130,29 +105,29 @@ node generate-mcp-use-server.js \
|
|
|
130
105
|
### Programmatic Usage
|
|
131
106
|
|
|
132
107
|
```javascript
|
|
133
|
-
import { generateMcpServer, extractTools, loadOpenApiSpec } from
|
|
108
|
+
import { generateMcpServer, extractTools, loadOpenApiSpec } from "api2ai";
|
|
134
109
|
|
|
135
110
|
// Generate complete server
|
|
136
111
|
const result = await generateMcpServer(
|
|
137
|
-
|
|
138
|
-
|
|
112
|
+
"https://api.example.com/openapi.json",
|
|
113
|
+
"./output-folder",
|
|
139
114
|
{
|
|
140
|
-
serverName:
|
|
141
|
-
baseUrl:
|
|
115
|
+
serverName: "my-api",
|
|
116
|
+
baseUrl: "https://api.example.com/v1",
|
|
142
117
|
port: 3000,
|
|
143
118
|
allowMutations: false, // block POST/PUT/PATCH/DELETE by default
|
|
144
|
-
includeTags: [
|
|
145
|
-
excludeTags: [
|
|
119
|
+
includeTags: ["public"], // only include tools tagged "public"
|
|
120
|
+
excludeTags: ["admin"], // exclude tools tagged "admin"
|
|
146
121
|
}
|
|
147
122
|
);
|
|
148
123
|
|
|
149
124
|
console.log(`Generated ${result.toolCount} tools`);
|
|
150
125
|
|
|
151
126
|
// Or just extract tools for custom processing
|
|
152
|
-
const spec = await loadOpenApiSpec(
|
|
127
|
+
const spec = await loadOpenApiSpec("./my-spec.json");
|
|
153
128
|
const tools = extractTools(spec, {
|
|
154
|
-
filterFn: (tool) => tool.riskLevel ===
|
|
155
|
-
excludeOperationIds: [
|
|
129
|
+
filterFn: (tool) => tool.riskLevel === "low", // only safe read-only tools
|
|
130
|
+
excludeOperationIds: ["deleteUser"],
|
|
156
131
|
});
|
|
157
132
|
```
|
|
158
133
|
|
|
@@ -259,7 +234,7 @@ The generated server supports the OpenAI Apps SDK out of the box.
|
|
|
259
234
|
|
|
260
235
|
```javascript
|
|
261
236
|
const result = await generateMcpServer(specUrl, outputDir, {
|
|
262
|
-
filterFn: (tool) => tool.riskLevel ===
|
|
237
|
+
filterFn: (tool) => tool.riskLevel === "low",
|
|
263
238
|
});
|
|
264
239
|
```
|
|
265
240
|
|
|
@@ -267,7 +242,7 @@ const result = await generateMcpServer(specUrl, outputDir, {
|
|
|
267
242
|
|
|
268
243
|
```javascript
|
|
269
244
|
const result = await generateMcpServer(specUrl, outputDir, {
|
|
270
|
-
filterFn: (tool) => [
|
|
245
|
+
filterFn: (tool) => ["get", "post"].includes(tool.method),
|
|
271
246
|
});
|
|
272
247
|
```
|
|
273
248
|
|
|
@@ -276,9 +251,9 @@ const result = await generateMcpServer(specUrl, outputDir, {
|
|
|
276
251
|
```javascript
|
|
277
252
|
const result = await generateMcpServer(specUrl, outputDir, {
|
|
278
253
|
excludeOperationIds: [
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
254
|
+
"deleteUser",
|
|
255
|
+
"deleteAllData",
|
|
256
|
+
"adminReset",
|
|
282
257
|
],
|
|
283
258
|
});
|
|
284
259
|
```
|
|
@@ -287,7 +262,7 @@ const result = await generateMcpServer(specUrl, outputDir, {
|
|
|
287
262
|
|
|
288
263
|
```javascript
|
|
289
264
|
const result = await generateMcpServer(specUrl, outputDir, {
|
|
290
|
-
filterFn: (tool) => tool.pathTemplate.startsWith(
|
|
265
|
+
filterFn: (tool) => tool.pathTemplate.startsWith("/api/v2/"),
|
|
291
266
|
});
|
|
292
267
|
```
|
|
293
268
|
|
|
@@ -295,11 +270,11 @@ const result = await generateMcpServer(specUrl, outputDir, {
|
|
|
295
270
|
|
|
296
271
|
```javascript
|
|
297
272
|
const result = await generateMcpServer(specUrl, outputDir, {
|
|
298
|
-
excludeOperationIds: [
|
|
273
|
+
excludeOperationIds: ["deleteUser"],
|
|
299
274
|
allowMutations: false,
|
|
300
|
-
filterFn: (tool) =>
|
|
301
|
-
tool.riskLevel ===
|
|
302
|
-
tool.pathTemplate.includes(
|
|
275
|
+
filterFn: (tool) =>
|
|
276
|
+
tool.riskLevel === "low" &&
|
|
277
|
+
tool.pathTemplate.includes("/public/"),
|
|
303
278
|
});
|
|
304
279
|
```
|
|
305
280
|
|
|
@@ -317,8 +292,13 @@ const result = await generateMcpServer(specUrl, outputDir, {
|
|
|
317
292
|
| HTTP hardening | ✅ Built-in | ❌ Manual |
|
|
318
293
|
| Production ready | ✅ Yes | ⚠️ Requires work |
|
|
319
294
|
|
|
320
|
-
|
|
295
|
+
## Development
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
npm install
|
|
299
|
+
node src/generate-mcp-use-server.js ./petstore.json ./out
|
|
300
|
+
```
|
|
321
301
|
|
|
322
|
-
|
|
302
|
+
## License
|
|
323
303
|
|
|
324
|
-
|
|
304
|
+
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.15",
|
|
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
|
}
|