ai-agent-router 0.1.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.
Files changed (166) hide show
  1. package/.claude/commands/openspec/apply.md +23 -0
  2. package/.claude/commands/openspec/archive.md +27 -0
  3. package/.claude/commands/openspec/proposal.md +28 -0
  4. package/.claude/settings.local.json +12 -0
  5. package/.claude/skills/ui-ux-pro-max/SKILL.md +228 -0
  6. package/.claude/skills/ui-ux-pro-max/data/charts.csv +26 -0
  7. package/.claude/skills/ui-ux-pro-max/data/colors.csv +97 -0
  8. package/.claude/skills/ui-ux-pro-max/data/landing.csv +31 -0
  9. package/.claude/skills/ui-ux-pro-max/data/products.csv +97 -0
  10. package/.claude/skills/ui-ux-pro-max/data/prompts.csv +24 -0
  11. package/.claude/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  12. package/.claude/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  13. package/.claude/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  14. package/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  15. package/.claude/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  16. package/.claude/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  17. package/.claude/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  18. package/.claude/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  19. package/.claude/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  20. package/.claude/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  21. package/.claude/skills/ui-ux-pro-max/data/styles.csv +59 -0
  22. package/.claude/skills/ui-ux-pro-max/data/typography.csv +58 -0
  23. package/.claude/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  24. package/.claude/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-311.pyc +0 -0
  25. package/.claude/skills/ui-ux-pro-max/scripts/core.py +238 -0
  26. package/.claude/skills/ui-ux-pro-max/scripts/search.py +61 -0
  27. package/.cursor/commands/openspec-apply.md +23 -0
  28. package/.cursor/commands/openspec-archive.md +27 -0
  29. package/.cursor/commands/openspec-proposal.md +28 -0
  30. package/.cursor/commands/ui-ux-pro-max.md +226 -0
  31. package/.eslintrc.json +3 -0
  32. package/.shared/ui-ux-pro-max/data/charts.csv +26 -0
  33. package/.shared/ui-ux-pro-max/data/colors.csv +97 -0
  34. package/.shared/ui-ux-pro-max/data/landing.csv +31 -0
  35. package/.shared/ui-ux-pro-max/data/products.csv +97 -0
  36. package/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
  37. package/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  38. package/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  39. package/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  40. package/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  41. package/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  42. package/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  43. package/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
  44. package/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  45. package/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  46. package/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  47. package/.shared/ui-ux-pro-max/data/styles.csv +59 -0
  48. package/.shared/ui-ux-pro-max/data/typography.csv +58 -0
  49. package/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  50. package/.shared/ui-ux-pro-max/scripts/core.py +238 -0
  51. package/.shared/ui-ux-pro-max/scripts/search.py +61 -0
  52. package/AGENTS.md +18 -0
  53. package/CLAUDE.md +18 -0
  54. package/IMPLEMENTATION.md +157 -0
  55. package/LICENSE +21 -0
  56. package/README.md +165 -0
  57. package/dist/.next/types/app/api/config/route.js +52 -0
  58. package/dist/.next/types/app/api/gateway/[...path]/route.js +52 -0
  59. package/dist/.next/types/app/api/gateway/route.js +52 -0
  60. package/dist/.next/types/app/api/logs/route.js +52 -0
  61. package/dist/.next/types/app/api/models/route.js +52 -0
  62. package/dist/.next/types/app/api/providers/route.js +52 -0
  63. package/dist/.next/types/app/api/providers/test/route.js +52 -0
  64. package/dist/.next/types/app/api/service/start/route.js +52 -0
  65. package/dist/.next/types/app/api/service/status/route.js +52 -0
  66. package/dist/.next/types/app/api/service/stop/route.js +52 -0
  67. package/dist/.next/types/app/layout.js +22 -0
  68. package/dist/.next/types/app/logs/page.js +22 -0
  69. package/dist/.next/types/app/models/page.js +22 -0
  70. package/dist/.next/types/app/page.js +22 -0
  71. package/dist/.next/types/app/providers/page.js +22 -0
  72. package/dist/src/app/api/config/route.js +43 -0
  73. package/dist/src/app/api/gateway/[...path]/route.js +83 -0
  74. package/dist/src/app/api/gateway/route.js +63 -0
  75. package/dist/src/app/api/logs/route.js +34 -0
  76. package/dist/src/app/api/models/route.js +152 -0
  77. package/dist/src/app/api/providers/route.js +118 -0
  78. package/dist/src/app/api/providers/test/route.js +154 -0
  79. package/dist/src/app/api/service/start/route.js +55 -0
  80. package/dist/src/app/api/service/status/route.js +17 -0
  81. package/dist/src/app/api/service/stop/route.js +20 -0
  82. package/dist/src/app/components/ConfirmDialog.jsx +31 -0
  83. package/dist/src/app/components/Nav.jsx +45 -0
  84. package/dist/src/app/components/Toast.jsx +37 -0
  85. package/dist/src/app/components/ToastProvider.jsx +21 -0
  86. package/dist/src/app/layout.jsx +13 -0
  87. package/dist/src/app/logs/page.jsx +210 -0
  88. package/dist/src/app/models/page.jsx +291 -0
  89. package/dist/src/app/page.jsx +236 -0
  90. package/dist/src/app/providers/page.jsx +402 -0
  91. package/dist/src/cli/index.js +90 -0
  92. package/dist/src/db/database.js +69 -0
  93. package/dist/src/db/queries.js +261 -0
  94. package/dist/src/db/schema.js +67 -0
  95. package/dist/src/server/crypto.js +22 -0
  96. package/dist/src/server/gateway-server.js +200 -0
  97. package/dist/src/server/gateway.js +76 -0
  98. package/dist/src/server/logger.js +72 -0
  99. package/dist/src/server/providers/anthropic.js +52 -0
  100. package/dist/src/server/providers/gemini.js +64 -0
  101. package/dist/src/server/providers/index.js +16 -0
  102. package/dist/src/server/providers/openai.js +86 -0
  103. package/dist/src/server/providers/types.js +1 -0
  104. package/dist/src/server/service-manager.js +286 -0
  105. package/docs/TODO.md +19 -0
  106. package/next.config.js +7 -0
  107. package/openspec/AGENTS.md +456 -0
  108. package/openspec/changes/add-logging/proposal.md +18 -0
  109. package/openspec/changes/add-logging/specs/core/spec.md +21 -0
  110. package/openspec/changes/add-logging/tasks.md +16 -0
  111. package/openspec/changes/add-provider-test-connection/proposal.md +22 -0
  112. package/openspec/changes/add-provider-test-connection/specs/model-provider/spec.md +68 -0
  113. package/openspec/changes/add-provider-test-connection/tasks.md +31 -0
  114. package/openspec/changes/improve-gateway-startup/design.md +137 -0
  115. package/openspec/changes/improve-gateway-startup/proposal.md +33 -0
  116. package/openspec/changes/improve-gateway-startup/specs/api-gateway/spec.md +94 -0
  117. package/openspec/changes/improve-gateway-startup/specs/web-ui/spec.md +67 -0
  118. package/openspec/changes/improve-gateway-startup/tasks.md +47 -0
  119. package/openspec/changes/init-api-gateway/design.md +185 -0
  120. package/openspec/changes/init-api-gateway/proposal.md +30 -0
  121. package/openspec/changes/init-api-gateway/specs/api-gateway/spec.md +42 -0
  122. package/openspec/changes/init-api-gateway/specs/cli-tool/spec.md +40 -0
  123. package/openspec/changes/init-api-gateway/specs/model-management/spec.md +47 -0
  124. package/openspec/changes/init-api-gateway/specs/model-provider/spec.md +33 -0
  125. package/openspec/changes/init-api-gateway/specs/request-logging/spec.md +54 -0
  126. package/openspec/changes/init-api-gateway/specs/web-ui/spec.md +49 -0
  127. package/openspec/changes/init-api-gateway/tasks.md +84 -0
  128. package/openspec/project.md +58 -0
  129. package/package.json +51 -0
  130. package/postcss.config.js +6 -0
  131. package/src/app/api/config/route.ts +62 -0
  132. package/src/app/api/gateway/[...path]/route.ts +118 -0
  133. package/src/app/api/gateway/route.ts +77 -0
  134. package/src/app/api/logs/route.ts +48 -0
  135. package/src/app/api/models/route.ts +210 -0
  136. package/src/app/api/providers/route.ts +162 -0
  137. package/src/app/api/providers/test/route.ts +182 -0
  138. package/src/app/api/service/start/route.ts +73 -0
  139. package/src/app/api/service/status/route.ts +22 -0
  140. package/src/app/api/service/stop/route.ts +27 -0
  141. package/src/app/components/ConfirmDialog.tsx +63 -0
  142. package/src/app/components/Nav.tsx +66 -0
  143. package/src/app/components/Toast.tsx +61 -0
  144. package/src/app/components/ToastProvider.tsx +43 -0
  145. package/src/app/globals.css +71 -0
  146. package/src/app/layout.tsx +22 -0
  147. package/src/app/logs/page.tsx +261 -0
  148. package/src/app/models/page.tsx +500 -0
  149. package/src/app/page.tsx +742 -0
  150. package/src/app/providers/page.tsx +558 -0
  151. package/src/cli/index.ts +95 -0
  152. package/src/db/database.ts +125 -0
  153. package/src/db/queries.ts +339 -0
  154. package/src/db/schema.ts +117 -0
  155. package/src/server/crypto.ts +48 -0
  156. package/src/server/gateway-server.ts +306 -0
  157. package/src/server/gateway.ts +163 -0
  158. package/src/server/logger.ts +96 -0
  159. package/src/server/providers/anthropic.ts +121 -0
  160. package/src/server/providers/gemini.ts +112 -0
  161. package/src/server/providers/index.ts +20 -0
  162. package/src/server/providers/openai.ts +235 -0
  163. package/src/server/providers/types.ts +20 -0
  164. package/src/server/service-manager.ts +321 -0
  165. package/tailwind.config.js +16 -0
  166. package/tsconfig.json +29 -0
package/README.md ADDED
@@ -0,0 +1,165 @@
1
+ # AI Agent Router
2
+
3
+ 一个统一的 API 网关,用于管理多个 AI 模型供应商(Anthropic、OpenAI、Gemini 等),为 Claude、Zcode、Alma 等客户端软件提供统一的接口。
4
+
5
+ ## 功能特性
6
+
7
+ - ✅ 支持多种 AI 模型协议(OpenAI、Anthropic、Gemini)
8
+ - ✅ Web 管理界面,可视化配置和管理
9
+ - ✅ 模型供应商管理(添加、编辑、删除)
10
+ - ✅ 模型管理(手动添加、自动拉取模型列表)
11
+ - ✅ 请求日志记录和查看(JSON 美化展示)
12
+ - ✅ CLI 工具,易于安装和使用
13
+ - ✅ SQLite 数据库,轻量级存储
14
+
15
+ ## 安装
16
+
17
+ ```bash
18
+ npm install -g ai-agent-router
19
+ ```
20
+
21
+ ## 使用方法
22
+
23
+ ### 启动网关
24
+
25
+ ```bash
26
+ aar start
27
+ ```
28
+
29
+ 默认在 `http://localhost:3000` 启动,你可以通过浏览器访问 Web 管理界面。
30
+
31
+ ### 配置选项
32
+
33
+ ```bash
34
+ # 指定端口
35
+ aar start --port 8080
36
+
37
+ # 指定主机名
38
+ aar start --hostname 0.0.0.0
39
+ ```
40
+
41
+ ### 配置管理
42
+
43
+ ```bash
44
+ # 获取配置
45
+ aar config --get port
46
+
47
+ # 设置配置
48
+ aar config --set port 8080
49
+ ```
50
+
51
+ ## Web 管理界面
52
+
53
+ 启动后访问 `http://localhost:3000`,你可以:
54
+
55
+ 1. **配置网关**:设置端口、API Key 等
56
+ 2. **管理供应商**:添加、编辑、删除模型供应商
57
+ 3. **管理模型**:手动添加模型或一键拉取模型列表
58
+ 4. **查看日志**:查看所有 API 请求日志,包括请求头、query、body 和响应
59
+
60
+ ## 添加供应商
61
+
62
+ 1. 访问 Web 界面,进入"供应商"页面
63
+ 2. 点击"添加供应商"
64
+ 3. 填写信息:
65
+ - 名称:供应商名称(如 "OpenAI")
66
+ - 协议:选择协议类型(OpenAI、Anthropic、Gemini)
67
+ - Base URL:API 基础 URL(如 `https://api.openai.com/v1`)
68
+ - API Key:供应商的 API Key
69
+
70
+ ## 添加模型
71
+
72
+ ### 手动添加
73
+
74
+ 1. 进入"模型"页面
75
+ 2. 点击"手动添加"
76
+ 3. 选择供应商,填写模型名称和模型 ID
77
+
78
+ ### 自动拉取
79
+
80
+ 1. 进入"模型"页面
81
+ 2. 在"一键拉取模型列表"区域,点击对应供应商的"拉取模型"按钮
82
+ 3. 系统会自动从供应商 API 拉取可用模型列表
83
+
84
+ ## 使用网关
85
+
86
+ 配置好供应商和模型后,客户端可以通过以下方式使用:
87
+
88
+ ### OpenAI 兼容接口
89
+
90
+ ```
91
+ POST http://localhost:3000/api/gateway/v1/chat/completions
92
+ Content-Type: application/json
93
+
94
+ {
95
+ "model": "gpt-4",
96
+ "messages": [...]
97
+ }
98
+ ```
99
+
100
+ ### Anthropic 兼容接口
101
+
102
+ ```
103
+ POST http://localhost:3000/api/gateway/v1/messages
104
+ Content-Type: application/json
105
+ x-api-key: your-gateway-api-key
106
+
107
+ {
108
+ "model": "claude-3-5-sonnet-20241022",
109
+ "messages": [...]
110
+ }
111
+ ```
112
+
113
+ ## 开发
114
+
115
+ ### 本地开发
116
+
117
+ ```bash
118
+ # 安装依赖
119
+ npm install
120
+
121
+ # 开发模式
122
+ npm run dev
123
+
124
+ # 构建
125
+ npm run build
126
+
127
+ # 启动生产模式
128
+ npm start
129
+ ```
130
+
131
+ ### 项目结构
132
+
133
+ ```
134
+ aar/
135
+ ├── src/
136
+ │ ├── server/ # 网关服务器
137
+ │ │ ├── gateway.ts # 核心网关逻辑
138
+ │ │ ├── providers/ # 协议适配器
139
+ │ │ └── logger.ts # 请求日志记录
140
+ │ ├── db/ # 数据库层
141
+ │ │ ├── schema.ts # SQLite 表结构
142
+ │ │ └── queries.ts # 数据库查询
143
+ │ ├── app/ # Next.js 应用
144
+ │ │ ├── api/ # API 路由
145
+ │ │ └── (pages)/ # 前端页面
146
+ │ └── cli/ # CLI 入口
147
+ ├── package.json
148
+ └── README.md
149
+ ```
150
+
151
+ ## 技术栈
152
+
153
+ - **Next.js 14** - 全栈框架
154
+ - **TypeScript** - 类型安全
155
+ - **Tailwind CSS** - 样式框架
156
+ - **SQLite3** - 数据库
157
+ - **Commander.js** - CLI 框架
158
+
159
+ ## 许可证
160
+
161
+ MIT
162
+
163
+ ## 贡献
164
+
165
+ 欢迎提交 Issue 和 Pull Request!
@@ -0,0 +1,52 @@
1
+ // File: /Users/pluckypan/own/AI/ai-agent-router/src/app/api/config/route.ts
2
+ import * as entry from '../../../../../src/app/api/config/route.js';
3
+ // Check that the entry is a valid entry
4
+ checkFields();
5
+ // Check the prop type of the entry function
6
+ if ('GET' in entry) {
7
+ checkFields();
8
+ checkFields();
9
+ checkFields();
10
+ }
11
+ // Check the prop type of the entry function
12
+ if ('HEAD' in entry) {
13
+ checkFields();
14
+ checkFields();
15
+ checkFields();
16
+ }
17
+ // Check the prop type of the entry function
18
+ if ('OPTIONS' in entry) {
19
+ checkFields();
20
+ checkFields();
21
+ checkFields();
22
+ }
23
+ // Check the prop type of the entry function
24
+ if ('POST' in entry) {
25
+ checkFields();
26
+ checkFields();
27
+ checkFields();
28
+ }
29
+ // Check the prop type of the entry function
30
+ if ('PUT' in entry) {
31
+ checkFields();
32
+ checkFields();
33
+ checkFields();
34
+ }
35
+ // Check the prop type of the entry function
36
+ if ('DELETE' in entry) {
37
+ checkFields();
38
+ checkFields();
39
+ checkFields();
40
+ }
41
+ // Check the prop type of the entry function
42
+ if ('PATCH' in entry) {
43
+ checkFields();
44
+ checkFields();
45
+ checkFields();
46
+ }
47
+ // Check the arguments and return type of the generateStaticParams function
48
+ if ('generateStaticParams' in entry) {
49
+ checkFields();
50
+ checkFields();
51
+ }
52
+ function checkFields() { }
@@ -0,0 +1,52 @@
1
+ // File: /Users/pluckypan/own/AI/ai-agent-router/src/app/api/gateway/[...path]/route.ts
2
+ import * as entry from '../../../../../../src/app/api/gateway/[...path]/route.js';
3
+ // Check that the entry is a valid entry
4
+ checkFields();
5
+ // Check the prop type of the entry function
6
+ if ('GET' in entry) {
7
+ checkFields();
8
+ checkFields();
9
+ checkFields();
10
+ }
11
+ // Check the prop type of the entry function
12
+ if ('HEAD' in entry) {
13
+ checkFields();
14
+ checkFields();
15
+ checkFields();
16
+ }
17
+ // Check the prop type of the entry function
18
+ if ('OPTIONS' in entry) {
19
+ checkFields();
20
+ checkFields();
21
+ checkFields();
22
+ }
23
+ // Check the prop type of the entry function
24
+ if ('POST' in entry) {
25
+ checkFields();
26
+ checkFields();
27
+ checkFields();
28
+ }
29
+ // Check the prop type of the entry function
30
+ if ('PUT' in entry) {
31
+ checkFields();
32
+ checkFields();
33
+ checkFields();
34
+ }
35
+ // Check the prop type of the entry function
36
+ if ('DELETE' in entry) {
37
+ checkFields();
38
+ checkFields();
39
+ checkFields();
40
+ }
41
+ // Check the prop type of the entry function
42
+ if ('PATCH' in entry) {
43
+ checkFields();
44
+ checkFields();
45
+ checkFields();
46
+ }
47
+ // Check the arguments and return type of the generateStaticParams function
48
+ if ('generateStaticParams' in entry) {
49
+ checkFields();
50
+ checkFields();
51
+ }
52
+ function checkFields() { }
@@ -0,0 +1,52 @@
1
+ // File: /Users/pluckypan/own/AI/ai-agent-router/src/app/api/gateway/route.ts
2
+ import * as entry from '../../../../../src/app/api/gateway/route.js';
3
+ // Check that the entry is a valid entry
4
+ checkFields();
5
+ // Check the prop type of the entry function
6
+ if ('GET' in entry) {
7
+ checkFields();
8
+ checkFields();
9
+ checkFields();
10
+ }
11
+ // Check the prop type of the entry function
12
+ if ('HEAD' in entry) {
13
+ checkFields();
14
+ checkFields();
15
+ checkFields();
16
+ }
17
+ // Check the prop type of the entry function
18
+ if ('OPTIONS' in entry) {
19
+ checkFields();
20
+ checkFields();
21
+ checkFields();
22
+ }
23
+ // Check the prop type of the entry function
24
+ if ('POST' in entry) {
25
+ checkFields();
26
+ checkFields();
27
+ checkFields();
28
+ }
29
+ // Check the prop type of the entry function
30
+ if ('PUT' in entry) {
31
+ checkFields();
32
+ checkFields();
33
+ checkFields();
34
+ }
35
+ // Check the prop type of the entry function
36
+ if ('DELETE' in entry) {
37
+ checkFields();
38
+ checkFields();
39
+ checkFields();
40
+ }
41
+ // Check the prop type of the entry function
42
+ if ('PATCH' in entry) {
43
+ checkFields();
44
+ checkFields();
45
+ checkFields();
46
+ }
47
+ // Check the arguments and return type of the generateStaticParams function
48
+ if ('generateStaticParams' in entry) {
49
+ checkFields();
50
+ checkFields();
51
+ }
52
+ function checkFields() { }
@@ -0,0 +1,52 @@
1
+ // File: /Users/pluckypan/own/AI/ai-agent-router/src/app/api/logs/route.ts
2
+ import * as entry from '../../../../../src/app/api/logs/route.js';
3
+ // Check that the entry is a valid entry
4
+ checkFields();
5
+ // Check the prop type of the entry function
6
+ if ('GET' in entry) {
7
+ checkFields();
8
+ checkFields();
9
+ checkFields();
10
+ }
11
+ // Check the prop type of the entry function
12
+ if ('HEAD' in entry) {
13
+ checkFields();
14
+ checkFields();
15
+ checkFields();
16
+ }
17
+ // Check the prop type of the entry function
18
+ if ('OPTIONS' in entry) {
19
+ checkFields();
20
+ checkFields();
21
+ checkFields();
22
+ }
23
+ // Check the prop type of the entry function
24
+ if ('POST' in entry) {
25
+ checkFields();
26
+ checkFields();
27
+ checkFields();
28
+ }
29
+ // Check the prop type of the entry function
30
+ if ('PUT' in entry) {
31
+ checkFields();
32
+ checkFields();
33
+ checkFields();
34
+ }
35
+ // Check the prop type of the entry function
36
+ if ('DELETE' in entry) {
37
+ checkFields();
38
+ checkFields();
39
+ checkFields();
40
+ }
41
+ // Check the prop type of the entry function
42
+ if ('PATCH' in entry) {
43
+ checkFields();
44
+ checkFields();
45
+ checkFields();
46
+ }
47
+ // Check the arguments and return type of the generateStaticParams function
48
+ if ('generateStaticParams' in entry) {
49
+ checkFields();
50
+ checkFields();
51
+ }
52
+ function checkFields() { }
@@ -0,0 +1,52 @@
1
+ // File: /Users/pluckypan/own/AI/ai-agent-router/src/app/api/models/route.ts
2
+ import * as entry from '../../../../../src/app/api/models/route.js';
3
+ // Check that the entry is a valid entry
4
+ checkFields();
5
+ // Check the prop type of the entry function
6
+ if ('GET' in entry) {
7
+ checkFields();
8
+ checkFields();
9
+ checkFields();
10
+ }
11
+ // Check the prop type of the entry function
12
+ if ('HEAD' in entry) {
13
+ checkFields();
14
+ checkFields();
15
+ checkFields();
16
+ }
17
+ // Check the prop type of the entry function
18
+ if ('OPTIONS' in entry) {
19
+ checkFields();
20
+ checkFields();
21
+ checkFields();
22
+ }
23
+ // Check the prop type of the entry function
24
+ if ('POST' in entry) {
25
+ checkFields();
26
+ checkFields();
27
+ checkFields();
28
+ }
29
+ // Check the prop type of the entry function
30
+ if ('PUT' in entry) {
31
+ checkFields();
32
+ checkFields();
33
+ checkFields();
34
+ }
35
+ // Check the prop type of the entry function
36
+ if ('DELETE' in entry) {
37
+ checkFields();
38
+ checkFields();
39
+ checkFields();
40
+ }
41
+ // Check the prop type of the entry function
42
+ if ('PATCH' in entry) {
43
+ checkFields();
44
+ checkFields();
45
+ checkFields();
46
+ }
47
+ // Check the arguments and return type of the generateStaticParams function
48
+ if ('generateStaticParams' in entry) {
49
+ checkFields();
50
+ checkFields();
51
+ }
52
+ function checkFields() { }
@@ -0,0 +1,52 @@
1
+ // File: /Users/pluckypan/own/AI/ai-agent-router/src/app/api/providers/route.ts
2
+ import * as entry from '../../../../../src/app/api/providers/route.js';
3
+ // Check that the entry is a valid entry
4
+ checkFields();
5
+ // Check the prop type of the entry function
6
+ if ('GET' in entry) {
7
+ checkFields();
8
+ checkFields();
9
+ checkFields();
10
+ }
11
+ // Check the prop type of the entry function
12
+ if ('HEAD' in entry) {
13
+ checkFields();
14
+ checkFields();
15
+ checkFields();
16
+ }
17
+ // Check the prop type of the entry function
18
+ if ('OPTIONS' in entry) {
19
+ checkFields();
20
+ checkFields();
21
+ checkFields();
22
+ }
23
+ // Check the prop type of the entry function
24
+ if ('POST' in entry) {
25
+ checkFields();
26
+ checkFields();
27
+ checkFields();
28
+ }
29
+ // Check the prop type of the entry function
30
+ if ('PUT' in entry) {
31
+ checkFields();
32
+ checkFields();
33
+ checkFields();
34
+ }
35
+ // Check the prop type of the entry function
36
+ if ('DELETE' in entry) {
37
+ checkFields();
38
+ checkFields();
39
+ checkFields();
40
+ }
41
+ // Check the prop type of the entry function
42
+ if ('PATCH' in entry) {
43
+ checkFields();
44
+ checkFields();
45
+ checkFields();
46
+ }
47
+ // Check the arguments and return type of the generateStaticParams function
48
+ if ('generateStaticParams' in entry) {
49
+ checkFields();
50
+ checkFields();
51
+ }
52
+ function checkFields() { }
@@ -0,0 +1,52 @@
1
+ // File: /Users/pluckypan/own/AI/ai-agent-router/src/app/api/providers/test/route.ts
2
+ import * as entry from '../../../../../../src/app/api/providers/test/route.js';
3
+ // Check that the entry is a valid entry
4
+ checkFields();
5
+ // Check the prop type of the entry function
6
+ if ('GET' in entry) {
7
+ checkFields();
8
+ checkFields();
9
+ checkFields();
10
+ }
11
+ // Check the prop type of the entry function
12
+ if ('HEAD' in entry) {
13
+ checkFields();
14
+ checkFields();
15
+ checkFields();
16
+ }
17
+ // Check the prop type of the entry function
18
+ if ('OPTIONS' in entry) {
19
+ checkFields();
20
+ checkFields();
21
+ checkFields();
22
+ }
23
+ // Check the prop type of the entry function
24
+ if ('POST' in entry) {
25
+ checkFields();
26
+ checkFields();
27
+ checkFields();
28
+ }
29
+ // Check the prop type of the entry function
30
+ if ('PUT' in entry) {
31
+ checkFields();
32
+ checkFields();
33
+ checkFields();
34
+ }
35
+ // Check the prop type of the entry function
36
+ if ('DELETE' in entry) {
37
+ checkFields();
38
+ checkFields();
39
+ checkFields();
40
+ }
41
+ // Check the prop type of the entry function
42
+ if ('PATCH' in entry) {
43
+ checkFields();
44
+ checkFields();
45
+ checkFields();
46
+ }
47
+ // Check the arguments and return type of the generateStaticParams function
48
+ if ('generateStaticParams' in entry) {
49
+ checkFields();
50
+ checkFields();
51
+ }
52
+ function checkFields() { }
@@ -0,0 +1,52 @@
1
+ // File: /Users/pluckypan/own/AI/ai-agent-router/src/app/api/service/start/route.ts
2
+ import * as entry from '../../../../../../src/app/api/service/start/route.js';
3
+ // Check that the entry is a valid entry
4
+ checkFields();
5
+ // Check the prop type of the entry function
6
+ if ('GET' in entry) {
7
+ checkFields();
8
+ checkFields();
9
+ checkFields();
10
+ }
11
+ // Check the prop type of the entry function
12
+ if ('HEAD' in entry) {
13
+ checkFields();
14
+ checkFields();
15
+ checkFields();
16
+ }
17
+ // Check the prop type of the entry function
18
+ if ('OPTIONS' in entry) {
19
+ checkFields();
20
+ checkFields();
21
+ checkFields();
22
+ }
23
+ // Check the prop type of the entry function
24
+ if ('POST' in entry) {
25
+ checkFields();
26
+ checkFields();
27
+ checkFields();
28
+ }
29
+ // Check the prop type of the entry function
30
+ if ('PUT' in entry) {
31
+ checkFields();
32
+ checkFields();
33
+ checkFields();
34
+ }
35
+ // Check the prop type of the entry function
36
+ if ('DELETE' in entry) {
37
+ checkFields();
38
+ checkFields();
39
+ checkFields();
40
+ }
41
+ // Check the prop type of the entry function
42
+ if ('PATCH' in entry) {
43
+ checkFields();
44
+ checkFields();
45
+ checkFields();
46
+ }
47
+ // Check the arguments and return type of the generateStaticParams function
48
+ if ('generateStaticParams' in entry) {
49
+ checkFields();
50
+ checkFields();
51
+ }
52
+ function checkFields() { }
@@ -0,0 +1,52 @@
1
+ // File: /Users/pluckypan/own/AI/ai-agent-router/src/app/api/service/status/route.ts
2
+ import * as entry from '../../../../../../src/app/api/service/status/route.js';
3
+ // Check that the entry is a valid entry
4
+ checkFields();
5
+ // Check the prop type of the entry function
6
+ if ('GET' in entry) {
7
+ checkFields();
8
+ checkFields();
9
+ checkFields();
10
+ }
11
+ // Check the prop type of the entry function
12
+ if ('HEAD' in entry) {
13
+ checkFields();
14
+ checkFields();
15
+ checkFields();
16
+ }
17
+ // Check the prop type of the entry function
18
+ if ('OPTIONS' in entry) {
19
+ checkFields();
20
+ checkFields();
21
+ checkFields();
22
+ }
23
+ // Check the prop type of the entry function
24
+ if ('POST' in entry) {
25
+ checkFields();
26
+ checkFields();
27
+ checkFields();
28
+ }
29
+ // Check the prop type of the entry function
30
+ if ('PUT' in entry) {
31
+ checkFields();
32
+ checkFields();
33
+ checkFields();
34
+ }
35
+ // Check the prop type of the entry function
36
+ if ('DELETE' in entry) {
37
+ checkFields();
38
+ checkFields();
39
+ checkFields();
40
+ }
41
+ // Check the prop type of the entry function
42
+ if ('PATCH' in entry) {
43
+ checkFields();
44
+ checkFields();
45
+ checkFields();
46
+ }
47
+ // Check the arguments and return type of the generateStaticParams function
48
+ if ('generateStaticParams' in entry) {
49
+ checkFields();
50
+ checkFields();
51
+ }
52
+ function checkFields() { }
@@ -0,0 +1,52 @@
1
+ // File: /Users/pluckypan/own/AI/ai-agent-router/src/app/api/service/stop/route.ts
2
+ import * as entry from '../../../../../../src/app/api/service/stop/route.js';
3
+ // Check that the entry is a valid entry
4
+ checkFields();
5
+ // Check the prop type of the entry function
6
+ if ('GET' in entry) {
7
+ checkFields();
8
+ checkFields();
9
+ checkFields();
10
+ }
11
+ // Check the prop type of the entry function
12
+ if ('HEAD' in entry) {
13
+ checkFields();
14
+ checkFields();
15
+ checkFields();
16
+ }
17
+ // Check the prop type of the entry function
18
+ if ('OPTIONS' in entry) {
19
+ checkFields();
20
+ checkFields();
21
+ checkFields();
22
+ }
23
+ // Check the prop type of the entry function
24
+ if ('POST' in entry) {
25
+ checkFields();
26
+ checkFields();
27
+ checkFields();
28
+ }
29
+ // Check the prop type of the entry function
30
+ if ('PUT' in entry) {
31
+ checkFields();
32
+ checkFields();
33
+ checkFields();
34
+ }
35
+ // Check the prop type of the entry function
36
+ if ('DELETE' in entry) {
37
+ checkFields();
38
+ checkFields();
39
+ checkFields();
40
+ }
41
+ // Check the prop type of the entry function
42
+ if ('PATCH' in entry) {
43
+ checkFields();
44
+ checkFields();
45
+ checkFields();
46
+ }
47
+ // Check the arguments and return type of the generateStaticParams function
48
+ if ('generateStaticParams' in entry) {
49
+ checkFields();
50
+ checkFields();
51
+ }
52
+ function checkFields() { }