api2ai 1.0.23 → 1.0.25

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