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 CHANGED
@@ -1,40 +1,16 @@
1
1
 
2
2
  <p align="center">
3
- <img width="600px" src="https://i.imgur.com/TTJBLxo.png" />
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> &nbsp;|&nbsp;
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
- node generate-mcp-use-server.js <openapi-spec> [output-folder] [options]
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
- node generate-mcp-use-server.js \
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
- node generate-mcp-use-server.js \
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
- node generate-mcp-use-server.js \
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
- node generate-mcp-use-server.js \
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
- node generate-mcp-use-server.js \
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 './generate-mcp-use-server.js';
108
+ import { generateMcpServer, extractTools, loadOpenApiSpec } from "api2ai";
134
109
 
135
110
  // Generate complete server
136
111
  const result = await generateMcpServer(
137
- 'https://api.example.com/openapi.json',
138
- './output-folder',
112
+ "https://api.example.com/openapi.json",
113
+ "./output-folder",
139
114
  {
140
- serverName: 'my-api',
141
- baseUrl: 'https://api.example.com/v1',
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: ['public'], // only include tools tagged "public"
145
- excludeTags: ['admin'], // exclude tools tagged "admin"
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('./my-spec.json');
127
+ const spec = await loadOpenApiSpec("./my-spec.json");
153
128
  const tools = extractTools(spec, {
154
- filterFn: (tool) => tool.riskLevel === 'low', // only safe read-only tools
155
- excludeOperationIds: ['deleteUser'],
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 === 'low',
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) => ['get', 'post'].includes(tool.method),
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
- 'deleteUser',
280
- 'deleteAllData',
281
- 'adminReset',
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('/api/v2/'),
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: ['deleteUser'],
273
+ excludeOperationIds: ["deleteUser"],
299
274
  allowMutations: false,
300
- filterFn: (tool) =>
301
- tool.riskLevel === 'low' &&
302
- tool.pathTemplate.includes('/public/'),
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
- [![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)
302
+ ## License
323
303
 
324
- Please star this repo for updates! 🌟
304
+ MIT
package/package.json CHANGED
@@ -1,247 +1,33 @@
1
1
  {
2
2
  "name": "api2ai",
3
- "version": "1.0.14",
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"
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
- "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
- ],
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
- "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"
13
+ "optionalDependencies": {
14
+ "js-yaml": "^4.1.1"
50
15
  },
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"
16
+ "engines": {
17
+ "node": ">=18.0.0"
222
18
  },
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"
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
- "data": "dist/index.d.ts",
244
- "trustedDependencies": [
245
- "pg-native"
28
+ "homepage": "https://github.com/OpenSourceAGI/GRAB-URL/tree/master/packages/api2ai#readme",
29
+ "files": [
30
+ "src",
31
+ "README.md"
246
32
  ]
247
33
  }