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 CHANGED
@@ -1,16 +1,40 @@
1
1
 
2
2
  <p align="center">
3
- <img width="600px" src="https://i.imgur.com/6CKuUBa.png" />
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> &nbsp;|&nbsp;
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
- npx api2ai <openapi-spec> [output-folder] [options]
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
- npx api2ai \
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
- npx api2ai \
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
- npx api2ai \
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
- npx api2ai \
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
- npx api2ai \
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 "api2ai";
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
- "https://api.example.com/openapi.json",
113
- "./output-folder",
137
+ 'https://api.example.com/openapi.json',
138
+ './output-folder',
114
139
  {
115
- serverName: "my-api",
116
- baseUrl: "https://api.example.com/v1",
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: ["public"], // only include tools tagged "public"
120
- excludeTags: ["admin"], // exclude tools tagged "admin"
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("./my-spec.json");
152
+ const spec = await loadOpenApiSpec('./my-spec.json');
128
153
  const tools = extractTools(spec, {
129
- filterFn: (tool) => tool.riskLevel === "low", // only safe read-only tools
130
- excludeOperationIds: ["deleteUser"],
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 === "low",
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) => ["get", "post"].includes(tool.method),
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
- "deleteUser",
255
- "deleteAllData",
256
- "adminReset",
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("/api/v2/"),
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: ["deleteUser"],
298
+ excludeOperationIds: ['deleteUser'],
274
299
  allowMutations: false,
275
- filterFn: (tool) =>
276
- tool.riskLevel === "low" &&
277
- tool.pathTemplate.includes("/public/"),
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
- ## Development
296
-
297
- ```bash
298
- npm install
299
- node src/generate-mcp-use-server.js ./petstore.json ./out
300
- ```
320
+ ---
301
321
 
302
- ## 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)
303
323
 
304
- 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.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"
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
- "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
  }