ai-agent-router 0.2.3 → 0.2.4

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 (696) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +4 -1
  3. package/.next/build/chunks/{[root-of-the-server]__6d51cb5d._.js → [root-of-the-server]__0iv9ksq._.js} +1 -1
  4. package/.next/build/chunks/[root-of-the-server]__0iv9ksq._.js.map +8 -0
  5. package/.next/build/chunks/{[root-of-the-server]__44695d76._.js → [root-of-the-server]__0rua-~2._.js} +30 -30
  6. package/.next/build/chunks/[root-of-the-server]__0rua-~2._.js.map +11 -0
  7. package/.next/build/chunks/{[turbopack-node]_transforms_postcss_ts_df7a5b11._.js → [turbopack-node]_transforms_postcss_ts_0nnejqq._.js} +2 -2
  8. package/.next/build/chunks/[turbopack]_runtime.js +155 -60
  9. package/.next/build/chunks/[turbopack]_runtime.js.map +6 -5
  10. package/.next/build/chunks/{node_modules_fe693df6._.js → node_modules_13sb.px._.js} +1 -1
  11. package/.next/build/chunks/{node_modules_fe693df6._.js.map → node_modules_13sb.px._.js.map} +42 -42
  12. package/.next/build/postcss.js +5 -5
  13. package/.next/build-manifest.json +8 -7
  14. package/.next/diagnostics/framework.json +1 -1
  15. package/.next/diagnostics/route-bundle-stats.json +93 -0
  16. package/.next/fallback-build-manifest.json +3 -2
  17. package/.next/images-manifest.json +1 -0
  18. package/.next/next-minimal-server.js.nft.json +1 -1
  19. package/.next/next-server.js.nft.json +1 -1
  20. package/.next/prerender-manifest.json +33 -9
  21. package/.next/required-server-files.js +18 -6
  22. package/.next/required-server-files.json +18 -6
  23. package/.next/routes-manifest.json +19 -0
  24. package/.next/server/app/_global-error/page/build-manifest.json +5 -5
  25. package/.next/server/app/_global-error/page.js +8 -9
  26. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  27. package/.next/server/app/_global-error/page_client-reference-manifest.js +2 -1
  28. package/.next/server/app/_global-error.html +1 -2
  29. package/.next/server/app/_global-error.rsc +11 -9
  30. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  31. package/.next/server/app/_global-error.segments/_full.segment.rsc +11 -9
  32. package/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  33. package/.next/server/app/_global-error.segments/_index.segment.rsc +4 -3
  34. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  35. package/.next/server/app/_not-found/page/build-manifest.json +5 -5
  36. package/.next/server/app/_not-found/page.js +11 -12
  37. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  38. package/.next/server/app/_not-found/page_client-reference-manifest.js +2 -1
  39. package/.next/server/app/_not-found.html +1 -1
  40. package/.next/server/app/_not-found.rsc +13 -11
  41. package/.next/server/app/_not-found.segments/_full.segment.rsc +13 -11
  42. package/.next/server/app/_not-found.segments/_head.segment.rsc +3 -3
  43. package/.next/server/app/_not-found.segments/_index.segment.rsc +5 -5
  44. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  45. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +4 -3
  46. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  47. package/.next/server/app/api/config/route/build-manifest.json +1 -3
  48. package/.next/server/app/api/config/route.js +4 -4
  49. package/.next/server/app/api/config/route.js.nft.json +1 -1
  50. package/.next/server/app/api/config/route_client-reference-manifest.js +2 -1
  51. package/.next/server/app/api/gateway/[...path]/route/build-manifest.json +1 -3
  52. package/.next/server/app/api/gateway/[...path]/route.js +5 -5
  53. package/.next/server/app/api/gateway/[...path]/route.js.nft.json +1 -1
  54. package/.next/server/app/api/gateway/[...path]/route_client-reference-manifest.js +2 -1
  55. package/.next/server/app/api/gateway/models/route/build-manifest.json +1 -3
  56. package/.next/server/app/api/gateway/models/route.js +4 -4
  57. package/.next/server/app/api/gateway/models/route.js.nft.json +1 -1
  58. package/.next/server/app/api/gateway/models/route_client-reference-manifest.js +2 -1
  59. package/.next/server/app/api/gateway/route/build-manifest.json +1 -3
  60. package/.next/server/app/api/gateway/route.js +5 -5
  61. package/.next/server/app/api/gateway/route.js.nft.json +1 -1
  62. package/.next/server/app/api/gateway/route_client-reference-manifest.js +2 -1
  63. package/.next/server/app/api/ide/claude/apply/route/build-manifest.json +1 -3
  64. package/.next/server/app/api/ide/claude/apply/route.js +4 -4
  65. package/.next/server/app/api/ide/claude/apply/route.js.nft.json +1 -1
  66. package/.next/server/app/api/ide/claude/apply/route_client-reference-manifest.js +2 -1
  67. package/.next/server/app/api/ide/claude/available-models/route/build-manifest.json +1 -3
  68. package/.next/server/app/api/ide/claude/available-models/route.js +4 -4
  69. package/.next/server/app/api/ide/claude/available-models/route.js.nft.json +1 -1
  70. package/.next/server/app/api/ide/claude/available-models/route_client-reference-manifest.js +2 -1
  71. package/.next/server/app/api/ide/claude/restore/route/build-manifest.json +1 -3
  72. package/.next/server/app/api/ide/claude/restore/route.js +3 -3
  73. package/.next/server/app/api/ide/claude/restore/route.js.nft.json +1 -1
  74. package/.next/server/app/api/ide/claude/restore/route_client-reference-manifest.js +2 -1
  75. package/.next/server/app/api/ide/claude/save/route/build-manifest.json +1 -3
  76. package/.next/server/app/api/ide/claude/save/route.js +4 -4
  77. package/.next/server/app/api/ide/claude/save/route.js.nft.json +1 -1
  78. package/.next/server/app/api/ide/claude/save/route_client-reference-manifest.js +2 -1
  79. package/.next/server/app/api/ide/claude/status/route/build-manifest.json +1 -3
  80. package/.next/server/app/api/ide/claude/status/route.js +4 -4
  81. package/.next/server/app/api/ide/claude/status/route.js.nft.json +1 -1
  82. package/.next/server/app/api/ide/claude/status/route_client-reference-manifest.js +2 -1
  83. package/.next/server/app/api/ide/claude/test/route/build-manifest.json +1 -3
  84. package/.next/server/app/api/ide/claude/test/route.js +5 -5
  85. package/.next/server/app/api/ide/claude/test/route.js.nft.json +1 -1
  86. package/.next/server/app/api/ide/claude/test/route_client-reference-manifest.js +2 -1
  87. package/.next/server/app/api/ide/openclaw/apply/route/build-manifest.json +1 -3
  88. package/.next/server/app/api/ide/openclaw/apply/route.js +4 -4
  89. package/.next/server/app/api/ide/openclaw/apply/route.js.nft.json +1 -1
  90. package/.next/server/app/api/ide/openclaw/apply/route_client-reference-manifest.js +2 -1
  91. package/.next/server/app/api/ide/openclaw/available-models/route/build-manifest.json +1 -3
  92. package/.next/server/app/api/ide/openclaw/available-models/route.js +4 -4
  93. package/.next/server/app/api/ide/openclaw/available-models/route.js.nft.json +1 -1
  94. package/.next/server/app/api/ide/openclaw/available-models/route_client-reference-manifest.js +2 -1
  95. package/.next/server/app/api/ide/openclaw/preview/route/build-manifest.json +1 -3
  96. package/.next/server/app/api/ide/openclaw/preview/route.js +4 -4
  97. package/.next/server/app/api/ide/openclaw/preview/route.js.nft.json +1 -1
  98. package/.next/server/app/api/ide/openclaw/preview/route_client-reference-manifest.js +2 -1
  99. package/.next/server/app/api/ide/openclaw/restore/route/build-manifest.json +1 -3
  100. package/.next/server/app/api/ide/openclaw/restore/route.js +3 -3
  101. package/.next/server/app/api/ide/openclaw/restore/route.js.nft.json +1 -1
  102. package/.next/server/app/api/ide/openclaw/restore/route_client-reference-manifest.js +2 -1
  103. package/.next/server/app/api/ide/openclaw/save/route/build-manifest.json +1 -3
  104. package/.next/server/app/api/ide/openclaw/save/route.js +4 -4
  105. package/.next/server/app/api/ide/openclaw/save/route.js.nft.json +1 -1
  106. package/.next/server/app/api/ide/openclaw/save/route_client-reference-manifest.js +2 -1
  107. package/.next/server/app/api/ide/openclaw/status/route/build-manifest.json +1 -3
  108. package/.next/server/app/api/ide/openclaw/status/route.js +4 -4
  109. package/.next/server/app/api/ide/openclaw/status/route.js.nft.json +1 -1
  110. package/.next/server/app/api/ide/openclaw/status/route_client-reference-manifest.js +2 -1
  111. package/.next/server/app/api/ide/openclaw/test/route/build-manifest.json +1 -3
  112. package/.next/server/app/api/ide/openclaw/test/route.js +3 -3
  113. package/.next/server/app/api/ide/openclaw/test/route.js.nft.json +1 -1
  114. package/.next/server/app/api/ide/openclaw/test/route_client-reference-manifest.js +2 -1
  115. package/.next/server/app/api/ide/opencode/apply/route/build-manifest.json +1 -3
  116. package/.next/server/app/api/ide/opencode/apply/route.js +4 -4
  117. package/.next/server/app/api/ide/opencode/apply/route.js.nft.json +1 -1
  118. package/.next/server/app/api/ide/opencode/apply/route_client-reference-manifest.js +2 -1
  119. package/.next/server/app/api/ide/opencode/available-models/route/build-manifest.json +1 -3
  120. package/.next/server/app/api/ide/opencode/available-models/route.js +4 -4
  121. package/.next/server/app/api/ide/opencode/available-models/route.js.nft.json +1 -1
  122. package/.next/server/app/api/ide/opencode/available-models/route_client-reference-manifest.js +2 -1
  123. package/.next/server/app/api/ide/opencode/preview/route/build-manifest.json +1 -3
  124. package/.next/server/app/api/ide/opencode/preview/route.js +4 -4
  125. package/.next/server/app/api/ide/opencode/preview/route.js.nft.json +1 -1
  126. package/.next/server/app/api/ide/opencode/preview/route_client-reference-manifest.js +2 -1
  127. package/.next/server/app/api/ide/opencode/restore/route/build-manifest.json +1 -3
  128. package/.next/server/app/api/ide/opencode/restore/route.js +3 -3
  129. package/.next/server/app/api/ide/opencode/restore/route.js.nft.json +1 -1
  130. package/.next/server/app/api/ide/opencode/restore/route_client-reference-manifest.js +2 -1
  131. package/.next/server/app/api/ide/opencode/save/route/build-manifest.json +1 -3
  132. package/.next/server/app/api/ide/opencode/save/route.js +4 -4
  133. package/.next/server/app/api/ide/opencode/save/route.js.nft.json +1 -1
  134. package/.next/server/app/api/ide/opencode/save/route_client-reference-manifest.js +2 -1
  135. package/.next/server/app/api/ide/opencode/status/route/build-manifest.json +1 -3
  136. package/.next/server/app/api/ide/opencode/status/route.js +4 -4
  137. package/.next/server/app/api/ide/opencode/status/route.js.nft.json +1 -1
  138. package/.next/server/app/api/ide/opencode/status/route_client-reference-manifest.js +2 -1
  139. package/.next/server/app/api/ide/opencode/test/route/build-manifest.json +1 -3
  140. package/.next/server/app/api/ide/opencode/test/route.js +3 -3
  141. package/.next/server/app/api/ide/opencode/test/route.js.nft.json +1 -1
  142. package/.next/server/app/api/ide/opencode/test/route_client-reference-manifest.js +2 -1
  143. package/.next/server/app/api/logs/route/build-manifest.json +1 -3
  144. package/.next/server/app/api/logs/route.js +4 -4
  145. package/.next/server/app/api/logs/route.js.nft.json +1 -1
  146. package/.next/server/app/api/logs/route_client-reference-manifest.js +2 -1
  147. package/.next/server/app/api/models/route/build-manifest.json +1 -3
  148. package/.next/server/app/api/models/route.js +5 -5
  149. package/.next/server/app/api/models/route.js.nft.json +1 -1
  150. package/.next/server/app/api/models/route_client-reference-manifest.js +2 -1
  151. package/.next/server/app/api/providers/route/build-manifest.json +1 -3
  152. package/.next/server/app/api/providers/route.js +5 -5
  153. package/.next/server/app/api/providers/route.js.nft.json +1 -1
  154. package/.next/server/app/api/providers/route_client-reference-manifest.js +2 -1
  155. package/.next/server/app/api/providers/test/route/build-manifest.json +1 -3
  156. package/.next/server/app/api/providers/test/route.js +5 -5
  157. package/.next/server/app/api/providers/test/route.js.nft.json +1 -1
  158. package/.next/server/app/api/providers/test/route_client-reference-manifest.js +2 -1
  159. package/.next/server/app/api/service/force-stop/route/build-manifest.json +1 -3
  160. package/.next/server/app/api/service/force-stop/route.js +4 -4
  161. package/.next/server/app/api/service/force-stop/route.js.nft.json +1 -1
  162. package/.next/server/app/api/service/force-stop/route_client-reference-manifest.js +2 -1
  163. package/.next/server/app/api/service/start/route/build-manifest.json +1 -3
  164. package/.next/server/app/api/service/start/route.js +4 -4
  165. package/.next/server/app/api/service/start/route.js.nft.json +1 -1
  166. package/.next/server/app/api/service/start/route_client-reference-manifest.js +2 -1
  167. package/.next/server/app/api/service/status/route/build-manifest.json +1 -3
  168. package/.next/server/app/api/service/status/route.js +4 -4
  169. package/.next/server/app/api/service/status/route.js.nft.json +1 -1
  170. package/.next/server/app/api/service/status/route_client-reference-manifest.js +2 -1
  171. package/.next/server/app/api/service/stop/route/build-manifest.json +1 -3
  172. package/.next/server/app/api/service/stop/route.js +4 -4
  173. package/.next/server/app/api/service/stop/route.js.nft.json +1 -1
  174. package/.next/server/app/api/service/stop/route_client-reference-manifest.js +2 -1
  175. package/.next/server/app/api/tokenizer/history/route/app-paths-manifest.json +3 -0
  176. package/.next/server/app/api/tokenizer/history/route/build-manifest.json +9 -0
  177. package/.next/server/app/api/tokenizer/history/route/server-reference-manifest.json +4 -0
  178. package/.next/server/app/api/tokenizer/history/route.js +7 -0
  179. package/.next/server/app/api/tokenizer/history/route.js.map +5 -0
  180. package/.next/server/app/api/tokenizer/history/route.js.nft.json +1 -0
  181. package/.next/server/app/api/tokenizer/history/route_client-reference-manifest.js +3 -0
  182. package/.next/server/app/api/tokenizer/test/route/app-paths-manifest.json +3 -0
  183. package/.next/server/app/api/tokenizer/test/route/build-manifest.json +9 -0
  184. package/.next/server/app/api/tokenizer/test/route/server-reference-manifest.json +4 -0
  185. package/.next/server/app/api/tokenizer/test/route.js +8 -0
  186. package/.next/server/app/api/tokenizer/test/route.js.map +5 -0
  187. package/.next/server/app/api/tokenizer/test/route.js.nft.json +1 -0
  188. package/.next/server/app/api/tokenizer/test/route_client-reference-manifest.js +3 -0
  189. package/.next/server/app/ide/page/build-manifest.json +5 -5
  190. package/.next/server/app/ide/page.js +12 -14
  191. package/.next/server/app/ide/page.js.nft.json +1 -1
  192. package/.next/server/app/ide/page_client-reference-manifest.js +2 -1
  193. package/.next/server/app/ide.html +1 -1
  194. package/.next/server/app/ide.rsc +15 -13
  195. package/.next/server/app/ide.segments/_full.segment.rsc +15 -13
  196. package/.next/server/app/ide.segments/_head.segment.rsc +3 -3
  197. package/.next/server/app/ide.segments/_index.segment.rsc +5 -5
  198. package/.next/server/app/ide.segments/_tree.segment.rsc +2 -2
  199. package/.next/server/app/ide.segments/ide/__PAGE__.segment.rsc +4 -4
  200. package/.next/server/app/ide.segments/ide.segment.rsc +4 -3
  201. package/.next/server/app/index.html +1 -1
  202. package/.next/server/app/index.rsc +11 -11
  203. package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
  204. package/.next/server/app/index.segments/_full.segment.rsc +11 -11
  205. package/.next/server/app/index.segments/_head.segment.rsc +3 -3
  206. package/.next/server/app/index.segments/_index.segment.rsc +5 -5
  207. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  208. package/.next/server/app/logs/page/build-manifest.json +5 -5
  209. package/.next/server/app/logs/page.js +12 -14
  210. package/.next/server/app/logs/page.js.nft.json +1 -1
  211. package/.next/server/app/logs/page_client-reference-manifest.js +2 -1
  212. package/.next/server/app/logs.html +1 -1
  213. package/.next/server/app/logs.rsc +15 -13
  214. package/.next/server/app/logs.segments/_full.segment.rsc +15 -13
  215. package/.next/server/app/logs.segments/_head.segment.rsc +3 -3
  216. package/.next/server/app/logs.segments/_index.segment.rsc +5 -5
  217. package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
  218. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +4 -4
  219. package/.next/server/app/logs.segments/logs.segment.rsc +4 -3
  220. package/.next/server/app/models/page/build-manifest.json +5 -5
  221. package/.next/server/app/models/page.js +12 -14
  222. package/.next/server/app/models/page.js.nft.json +1 -1
  223. package/.next/server/app/models/page_client-reference-manifest.js +2 -1
  224. package/.next/server/app/models.html +1 -1
  225. package/.next/server/app/models.rsc +15 -13
  226. package/.next/server/app/models.segments/_full.segment.rsc +15 -13
  227. package/.next/server/app/models.segments/_head.segment.rsc +3 -3
  228. package/.next/server/app/models.segments/_index.segment.rsc +5 -5
  229. package/.next/server/app/models.segments/_tree.segment.rsc +2 -2
  230. package/.next/server/app/models.segments/models/__PAGE__.segment.rsc +4 -4
  231. package/.next/server/app/models.segments/models.segment.rsc +4 -3
  232. package/.next/server/app/page/build-manifest.json +5 -5
  233. package/.next/server/app/page.js +12 -14
  234. package/.next/server/app/page.js.nft.json +1 -1
  235. package/.next/server/app/page_client-reference-manifest.js +2 -1
  236. package/.next/server/app/providers/page/build-manifest.json +5 -5
  237. package/.next/server/app/providers/page.js +12 -14
  238. package/.next/server/app/providers/page.js.nft.json +1 -1
  239. package/.next/server/app/providers/page_client-reference-manifest.js +2 -1
  240. package/.next/server/app/providers.html +1 -1
  241. package/.next/server/app/providers.rsc +15 -13
  242. package/.next/server/app/providers.segments/_full.segment.rsc +15 -13
  243. package/.next/server/app/providers.segments/_head.segment.rsc +3 -3
  244. package/.next/server/app/providers.segments/_index.segment.rsc +5 -5
  245. package/.next/server/app/providers.segments/_tree.segment.rsc +2 -2
  246. package/.next/server/app/providers.segments/providers/__PAGE__.segment.rsc +4 -4
  247. package/.next/server/app/providers.segments/providers.segment.rsc +4 -3
  248. package/.next/server/app/tokenizer/page/app-paths-manifest.json +3 -0
  249. package/.next/server/app/tokenizer/page/build-manifest.json +16 -0
  250. package/.next/server/app/tokenizer/page/next-font-manifest.json +6 -0
  251. package/.next/server/app/tokenizer/page/react-loadable-manifest.json +1 -0
  252. package/.next/server/app/tokenizer/page/server-reference-manifest.json +4 -0
  253. package/.next/server/app/tokenizer/page.js +13 -0
  254. package/.next/server/app/tokenizer/page.js.map +5 -0
  255. package/.next/server/app/tokenizer/page.js.nft.json +1 -0
  256. package/.next/server/app/tokenizer/page_client-reference-manifest.js +3 -0
  257. package/.next/server/app/tokenizer.html +1 -0
  258. package/.next/server/app/tokenizer.meta +15 -0
  259. package/.next/server/app/tokenizer.rsc +20 -0
  260. package/.next/server/app/tokenizer.segments/_full.segment.rsc +20 -0
  261. package/.next/server/app/tokenizer.segments/_head.segment.rsc +5 -0
  262. package/.next/server/app/tokenizer.segments/_index.segment.rsc +6 -0
  263. package/.next/server/app/tokenizer.segments/_tree.segment.rsc +2 -0
  264. package/.next/server/app/tokenizer.segments/tokenizer/__PAGE__.segment.rsc +9 -0
  265. package/.next/server/app/tokenizer.segments/tokenizer.segment.rsc +5 -0
  266. package/.next/server/app-paths-manifest.json +4 -1
  267. package/.next/server/chunks/0zjb_server_app_api_ide_openclaw_available-models_route_actions_0.gjr6a.js +3 -0
  268. package/.next/server/chunks/0zjb_server_app_api_ide_opencode_available-models_route_actions_0poyhyk.js +3 -0
  269. package/.next/server/chunks/[root-of-the-server]__0-_5z3v._.js +3 -0
  270. package/.next/server/chunks/[root-of-the-server]__0-_5z3v._.js.map +1 -0
  271. package/.next/server/chunks/[root-of-the-server]__012ucp~._.js +3 -0
  272. package/.next/server/chunks/[root-of-the-server]__012ucp~._.js.map +1 -0
  273. package/.next/server/chunks/[root-of-the-server]__01atdgx._.js +3 -0
  274. package/.next/server/chunks/[root-of-the-server]__01atdgx._.js.map +1 -0
  275. package/.next/server/chunks/[root-of-the-server]__01~ft76._.js +3 -0
  276. package/.next/server/chunks/[root-of-the-server]__01~ft76._.js.map +1 -0
  277. package/.next/server/chunks/[root-of-the-server]__04sfkei._.js +3 -0
  278. package/.next/server/chunks/[root-of-the-server]__04sfkei._.js.map +1 -0
  279. package/.next/server/chunks/[root-of-the-server]__065r.wp._.js +3 -0
  280. package/.next/server/chunks/[root-of-the-server]__065r.wp._.js.map +1 -0
  281. package/.next/server/chunks/[root-of-the-server]__07pm7px._.js +3 -0
  282. package/.next/server/chunks/[root-of-the-server]__07pm7px._.js.map +1 -0
  283. package/.next/server/chunks/[root-of-the-server]__07vosna._.js +3 -0
  284. package/.next/server/chunks/[root-of-the-server]__07vosna._.js.map +1 -0
  285. package/.next/server/chunks/[root-of-the-server]__083j1v0._.js +3 -0
  286. package/.next/server/chunks/[root-of-the-server]__083j1v0._.js.map +1 -0
  287. package/.next/server/chunks/[root-of-the-server]__08_ekvs._.js +3 -0
  288. package/.next/server/chunks/[root-of-the-server]__08_ekvs._.js.map +1 -0
  289. package/.next/server/chunks/[root-of-the-server]__08ftz8n._.js +3 -0
  290. package/.next/server/chunks/[root-of-the-server]__08ftz8n._.js.map +1 -0
  291. package/.next/server/chunks/[root-of-the-server]__08oq8ma._.js +3 -0
  292. package/.next/server/chunks/[root-of-the-server]__08oq8ma._.js.map +1 -0
  293. package/.next/server/chunks/[root-of-the-server]__099b1my._.js +3 -0
  294. package/.next/server/chunks/[root-of-the-server]__099b1my._.js.map +1 -0
  295. package/.next/server/chunks/[root-of-the-server]__0aw-~h8._.js +3 -0
  296. package/.next/server/chunks/[root-of-the-server]__0aw-~h8._.js.map +1 -0
  297. package/.next/server/chunks/[root-of-the-server]__0dj43ut._.js +3 -0
  298. package/.next/server/chunks/[root-of-the-server]__0dj43ut._.js.map +1 -0
  299. package/.next/server/chunks/[root-of-the-server]__0efv_yh._.js +3 -0
  300. package/.next/server/chunks/[root-of-the-server]__0efv_yh._.js.map +1 -0
  301. package/.next/server/chunks/[root-of-the-server]__0el37wu._.js +7 -0
  302. package/.next/server/chunks/[root-of-the-server]__0el37wu._.js.map +1 -0
  303. package/.next/server/chunks/[root-of-the-server]__0g.1w-q._.js +3 -0
  304. package/.next/server/chunks/[root-of-the-server]__0g.1w-q._.js.map +1 -0
  305. package/.next/server/chunks/[root-of-the-server]__0im~-m7._.js +3 -0
  306. package/.next/server/chunks/[root-of-the-server]__0im~-m7._.js.map +1 -0
  307. package/.next/server/chunks/[root-of-the-server]__0jf1q27._.js +3 -0
  308. package/.next/server/chunks/[root-of-the-server]__0jf1q27._.js.map +1 -0
  309. package/.next/server/chunks/[root-of-the-server]__0kldv62._.js +3 -0
  310. package/.next/server/chunks/[root-of-the-server]__0kldv62._.js.map +1 -0
  311. package/.next/server/chunks/[root-of-the-server]__0lr16iw._.js +3 -0
  312. package/.next/server/chunks/[root-of-the-server]__0lr16iw._.js.map +1 -0
  313. package/.next/server/chunks/[root-of-the-server]__0m62mql._.js +3 -0
  314. package/.next/server/chunks/[root-of-the-server]__0m62mql._.js.map +1 -0
  315. package/.next/server/chunks/[root-of-the-server]__0qp1t_m._.js +3 -0
  316. package/.next/server/chunks/[root-of-the-server]__0qp1t_m._.js.map +1 -0
  317. package/.next/server/chunks/[root-of-the-server]__0qz-m.u._.js +3 -0
  318. package/.next/server/chunks/[root-of-the-server]__0qz-m.u._.js.map +1 -0
  319. package/.next/server/chunks/[root-of-the-server]__0r235yd._.js +3 -0
  320. package/.next/server/chunks/[root-of-the-server]__0r235yd._.js.map +1 -0
  321. package/.next/server/chunks/[root-of-the-server]__0rjkw2y._.js +3 -0
  322. package/.next/server/chunks/[root-of-the-server]__0rjkw2y._.js.map +1 -0
  323. package/.next/server/chunks/[root-of-the-server]__0uaqs.r._.js +3 -0
  324. package/.next/server/chunks/[root-of-the-server]__0uaqs.r._.js.map +1 -0
  325. package/.next/server/chunks/[root-of-the-server]__0vktxod._.js +3 -0
  326. package/.next/server/chunks/[root-of-the-server]__0vktxod._.js.map +1 -0
  327. package/.next/server/chunks/[root-of-the-server]__0vlh9um._.js +3 -0
  328. package/.next/server/chunks/[root-of-the-server]__0vlh9um._.js.map +1 -0
  329. package/.next/server/chunks/{[root-of-the-server]__c1b4b601._.js → [root-of-the-server]__0xb5i_t._.js} +23 -11
  330. package/.next/server/chunks/[root-of-the-server]__0xb5i_t._.js.map +1 -0
  331. package/.next/server/chunks/[root-of-the-server]__0xsal5d._.js +3 -0
  332. package/.next/server/chunks/[root-of-the-server]__0xsal5d._.js.map +1 -0
  333. package/.next/server/chunks/[root-of-the-server]__0yo.c6n._.js +3 -0
  334. package/.next/server/chunks/[root-of-the-server]__0yo.c6n._.js.map +1 -0
  335. package/.next/server/chunks/[root-of-the-server]__0yz0y4l._.js +13 -0
  336. package/.next/server/chunks/[root-of-the-server]__0yz0y4l._.js.map +1 -0
  337. package/.next/server/chunks/{[root-of-the-server]__e7623a6c._.js → [root-of-the-server]__11srlmi._.js} +2 -2
  338. package/.next/server/chunks/{[root-of-the-server]__e7623a6c._.js.map → [root-of-the-server]__11srlmi._.js.map} +1 -1
  339. package/.next/server/chunks/[root-of-the-server]__12d44rt._.js +3 -0
  340. package/.next/server/chunks/[root-of-the-server]__12d44rt._.js.map +1 -0
  341. package/.next/server/chunks/[turbopack]_runtime.js +168 -60
  342. package/.next/server/chunks/[turbopack]_runtime.js.map +6 -5
  343. package/.next/server/chunks/_0v0oe6c._.js +3 -0
  344. package/.next/server/chunks/{_b48847f5._.js.map → _0v0oe6c._.js.map} +1 -1
  345. package/.next/server/chunks/{_next-internal_server_app_api_config_route_actions_308a9f33.js → _next-internal_server_app_api_config_route_actions_08dm.dx.js} +1 -1
  346. package/.next/server/chunks/{_next-internal_server_app_api_gateway_[___path]_route_actions_835b2379.js → _next-internal_server_app_api_gateway_[___path]_route_actions_0mmqyo7.js} +1 -1
  347. package/.next/server/chunks/{_next-internal_server_app_api_gateway_models_route_actions_302c9983.js → _next-internal_server_app_api_gateway_models_route_actions_08b214z.js} +1 -1
  348. package/.next/server/chunks/{_next-internal_server_app_api_gateway_route_actions_e5e7405d.js → _next-internal_server_app_api_gateway_route_actions_0.jzdw1.js} +1 -1
  349. package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_apply_route_actions_5056516c.js → _next-internal_server_app_api_ide_claude_apply_route_actions_0dw2_pf.js} +1 -1
  350. package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_available-models_route_actions_94d710a0.js → _next-internal_server_app_api_ide_claude_available-models_route_actions_0pmwy75.js} +1 -1
  351. package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_restore_route_actions_f37acc94.js → _next-internal_server_app_api_ide_claude_restore_route_actions_11x77hl.js} +1 -1
  352. package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_save_route_actions_407c55f5.js → _next-internal_server_app_api_ide_claude_save_route_actions_0b35ro_.js} +1 -1
  353. package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_status_route_actions_5ac73db8.js → _next-internal_server_app_api_ide_claude_status_route_actions_0fnw-w7.js} +1 -1
  354. package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_test_route_actions_70587902.js → _next-internal_server_app_api_ide_claude_test_route_actions_0jc1czy.js} +1 -1
  355. package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_apply_route_actions_2cb9e4b4.js → _next-internal_server_app_api_ide_openclaw_apply_route_actions_07re971.js} +1 -1
  356. package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_preview_route_actions_9814a8e4.js → _next-internal_server_app_api_ide_openclaw_preview_route_actions_0q53p05.js} +1 -1
  357. package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_restore_route_actions_10ad8f9d.js → _next-internal_server_app_api_ide_openclaw_restore_route_actions_02yog9-.js} +1 -1
  358. package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_save_route_actions_044ad081.js → _next-internal_server_app_api_ide_openclaw_save_route_actions_00tjxsz.js} +1 -1
  359. package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_status_route_actions_ed9786d2.js → _next-internal_server_app_api_ide_openclaw_status_route_actions_10wsun4.js} +1 -1
  360. package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_test_route_actions_ce2cb808.js → _next-internal_server_app_api_ide_openclaw_test_route_actions_0zgwyon.js} +1 -1
  361. package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_apply_route_actions_6c422244.js → _next-internal_server_app_api_ide_opencode_apply_route_actions_0in-w.g.js} +1 -1
  362. package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_preview_route_actions_256c82e0.js → _next-internal_server_app_api_ide_opencode_preview_route_actions_06h6.w~.js} +1 -1
  363. package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_restore_route_actions_371993d3.js → _next-internal_server_app_api_ide_opencode_restore_route_actions_09ipt-l.js} +1 -1
  364. package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_save_route_actions_6e4c9c41.js → _next-internal_server_app_api_ide_opencode_save_route_actions_0i-~x79.js} +1 -1
  365. package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_status_route_actions_498ad77b.js → _next-internal_server_app_api_ide_opencode_status_route_actions_0cpf6rv.js} +1 -1
  366. package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_test_route_actions_c71be510.js → _next-internal_server_app_api_ide_opencode_test_route_actions_0y8aq8h.js} +1 -1
  367. package/.next/server/chunks/{_next-internal_server_app_api_logs_route_actions_30a87f47.js → _next-internal_server_app_api_logs_route_actions_08ef2j7.js} +1 -1
  368. package/.next/server/chunks/{_next-internal_server_app_api_models_route_actions_b6abdc83.js → _next-internal_server_app_api_models_route_actions_0vfccm4.js} +1 -1
  369. package/.next/server/chunks/{_next-internal_server_app_api_providers_route_actions_5388b373.js → _next-internal_server_app_api_providers_route_actions_0ee1p_m.js} +1 -1
  370. package/.next/server/chunks/{_next-internal_server_app_api_providers_test_route_actions_b97ab15a.js → _next-internal_server_app_api_providers_test_route_actions_0vyo652.js} +1 -1
  371. package/.next/server/chunks/{_next-internal_server_app_api_service_force-stop_route_actions_95eba80b.js → _next-internal_server_app_api_service_force-stop_route_actions_0pu9xrq.js} +1 -1
  372. package/.next/server/chunks/{_next-internal_server_app_api_service_start_route_actions_d50efb77.js → _next-internal_server_app_api_service_start_route_actions_0_o53a2.js} +1 -1
  373. package/.next/server/chunks/{_next-internal_server_app_api_service_status_route_actions_30149042.js → _next-internal_server_app_api_service_status_route_actions_08ag8v4.js} +1 -1
  374. package/.next/server/chunks/{_next-internal_server_app_api_service_stop_route_actions_19443941.js → _next-internal_server_app_api_service_stop_route_actions_04dp83p.js} +1 -1
  375. package/.next/server/chunks/_next-internal_server_app_api_tokenizer_history_route_actions_09~nqtd.js +3 -0
  376. package/.next/server/chunks/_next-internal_server_app_api_tokenizer_test_route_actions_0t2swp-.js +3 -0
  377. package/.next/server/chunks/{node_modules_next_dist_esm_build_templates_app-route_4be65264.js → node_modules_next_dist_esm_build_templates_app-route_0d1n5~u.js} +6 -6
  378. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0d1n5~u.js.map +1 -0
  379. package/.next/server/chunks/ssr/[root-of-the-server]__0.zquoa._.js +3 -0
  380. package/.next/server/chunks/ssr/[root-of-the-server]__0.zquoa._.js.map +1 -0
  381. package/.next/server/chunks/ssr/[root-of-the-server]__01dqyhh._.js +3 -0
  382. package/.next/server/chunks/ssr/[root-of-the-server]__01dqyhh._.js.map +1 -0
  383. package/.next/server/chunks/ssr/[root-of-the-server]__04qwc64._.js +3 -0
  384. package/.next/server/chunks/ssr/[root-of-the-server]__04qwc64._.js.map +1 -0
  385. package/.next/server/chunks/ssr/[root-of-the-server]__06r_ug4._.js +3 -0
  386. package/.next/server/chunks/ssr/[root-of-the-server]__06r_ug4._.js.map +1 -0
  387. package/.next/server/chunks/ssr/{[root-of-the-server]__f92001a5._.js → [root-of-the-server]__0814l01._.js} +2 -2
  388. package/.next/server/chunks/ssr/[root-of-the-server]__0814l01._.js.map +1 -0
  389. package/.next/server/chunks/ssr/[root-of-the-server]__0gb1hlj._.js +3 -0
  390. package/.next/server/chunks/ssr/[root-of-the-server]__0gb1hlj._.js.map +1 -0
  391. package/.next/server/chunks/ssr/[root-of-the-server]__0p8tmu2._.js +3 -0
  392. package/.next/server/chunks/ssr/[root-of-the-server]__0p8tmu2._.js.map +1 -0
  393. package/.next/server/chunks/ssr/[root-of-the-server]__0rf3.7n._.js +3 -0
  394. package/.next/server/chunks/ssr/[root-of-the-server]__0rf3.7n._.js.map +1 -0
  395. package/.next/server/chunks/ssr/[root-of-the-server]__0~6rwng._.js +33 -0
  396. package/.next/server/chunks/ssr/[root-of-the-server]__0~6rwng._.js.map +1 -0
  397. package/.next/server/chunks/ssr/[root-of-the-server]__10xgshr._.js +33 -0
  398. package/.next/server/chunks/ssr/[root-of-the-server]__10xgshr._.js.map +1 -0
  399. package/.next/server/chunks/ssr/[root-of-the-server]__11i~7lq._.js +3 -0
  400. package/.next/server/chunks/ssr/[root-of-the-server]__11i~7lq._.js.map +1 -0
  401. package/.next/server/chunks/ssr/[turbopack]_runtime.js +168 -60
  402. package/.next/server/chunks/ssr/[turbopack]_runtime.js.map +6 -5
  403. package/.next/server/chunks/ssr/_0k83omg._.js +6 -0
  404. package/.next/server/chunks/ssr/_0k83omg._.js.map +1 -0
  405. package/.next/server/chunks/ssr/_0yyi5po._.js +3 -0
  406. package/.next/server/chunks/ssr/_0yyi5po._.js.map +1 -0
  407. package/.next/server/chunks/ssr/{_next-internal_server_app__global-error_page_actions_75761787.js → _next-internal_server_app__global-error_page_actions_0k77kol.js} +1 -1
  408. package/.next/server/chunks/ssr/{_next-internal_server_app__not-found_page_actions_554ec2bf.js → _next-internal_server_app__not-found_page_actions_0eq97pa.js} +1 -1
  409. package/.next/server/chunks/ssr/{_next-internal_server_app_ide_page_actions_d521d6ae.js → _next-internal_server_app_ide_page_actions_0_opd4~.js} +1 -1
  410. package/.next/server/chunks/ssr/{_next-internal_server_app_logs_page_actions_a1c69041.js → _next-internal_server_app_logs_page_actions_0rvsl~d.js} +1 -1
  411. package/.next/server/chunks/ssr/{_next-internal_server_app_models_page_actions_543cf22f.js → _next-internal_server_app_models_page_actions_0eiz7f7.js} +1 -1
  412. package/.next/server/chunks/ssr/_next-internal_server_app_page_actions_09-gtaw.js +3 -0
  413. package/.next/server/chunks/ssr/_next-internal_server_app_page_actions_09-gtaw.js.map +1 -0
  414. package/.next/server/chunks/ssr/{_next-internal_server_app_providers_page_actions_c75f6cb3.js → _next-internal_server_app_providers_page_actions_0ya36nw.js} +1 -1
  415. package/.next/server/chunks/ssr/_next-internal_server_app_providers_page_actions_0ya36nw.js.map +1 -0
  416. package/.next/server/chunks/ssr/_next-internal_server_app_tokenizer_page_actions_0imc_ya.js +3 -0
  417. package/.next/server/chunks/ssr/_next-internal_server_app_tokenizer_page_actions_0imc_ya.js.map +1 -0
  418. package/.next/server/chunks/ssr/node_modules_09w7yel._.js +33 -0
  419. package/.next/server/chunks/ssr/node_modules_09w7yel._.js.map +1 -0
  420. package/.next/server/chunks/ssr/node_modules_next_dist_06hehg4._.js +19 -0
  421. package/.next/server/chunks/ssr/node_modules_next_dist_06hehg4._.js.map +1 -0
  422. package/.next/server/chunks/ssr/node_modules_next_dist_0e1izl_._.js +6 -0
  423. package/.next/server/chunks/ssr/node_modules_next_dist_0e1izl_._.js.map +1 -0
  424. package/.next/server/chunks/ssr/{node_modules_next_dist_client_components_9774470f._.js → node_modules_next_dist_client_components_0inhx6q._.js} +2 -2
  425. package/.next/server/chunks/ssr/{node_modules_next_dist_client_components_builtin_forbidden_45780354.js → node_modules_next_dist_client_components_builtin_forbidden_0ghu-f7.js} +2 -2
  426. package/.next/server/chunks/ssr/{node_modules_next_dist_client_components_builtin_global-error_ece394eb.js → node_modules_next_dist_client_components_builtin_global-error_0lgvd_..js} +2 -2
  427. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0lgvd_..js.map +1 -0
  428. package/.next/server/chunks/ssr/{node_modules_next_dist_client_components_builtin_unauthorized_15817684.js → node_modules_next_dist_client_components_builtin_unauthorized_0cjv-23.js} +2 -2
  429. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_05u.ff5.js +4 -0
  430. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_05u.ff5.js.map +1 -0
  431. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_06a5k-w.js +4 -0
  432. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_06a5k-w.js.map +1 -0
  433. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0_rrdx6.js +4 -0
  434. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0_rrdx6.js.map +1 -0
  435. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0a7b~p7.js +4 -0
  436. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0a7b~p7.js.map +1 -0
  437. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0bj8dkg.js +4 -0
  438. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0bj8dkg.js.map +1 -0
  439. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0cvrgh7.js +4 -0
  440. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0cvrgh7.js.map +1 -0
  441. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0nkcfme.js +4 -0
  442. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0nkcfme.js.map +1 -0
  443. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0rc3ul_.js +4 -0
  444. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0rc3ul_.js.map +1 -0
  445. package/.next/server/chunks/ssr/src_app_components_ConfirmDialog_tsx_0mm3plr._.js +3 -0
  446. package/.next/server/chunks/ssr/src_app_components_ConfirmDialog_tsx_0mm3plr._.js.map +1 -0
  447. package/.next/server/chunks/ssr/src_app_ide_page_tsx_0no40dj._.js +3 -0
  448. package/.next/server/chunks/ssr/{src_app_ide_page_tsx_8962793b._.js.map → src_app_ide_page_tsx_0no40dj._.js.map} +1 -1
  449. package/.next/server/chunks/ssr/src_app_logs_page_tsx_0l8mmxe._.js +3 -0
  450. package/.next/server/chunks/ssr/{src_app_logs_page_tsx_7b7b7b83._.js.map → src_app_logs_page_tsx_0l8mmxe._.js.map} +1 -1
  451. package/.next/server/chunks/ssr/src_app_models_page_tsx_10vsbc1._.js +3 -0
  452. package/.next/server/chunks/ssr/{src_app_models_page_tsx_ed71d32e._.js.map → src_app_models_page_tsx_10vsbc1._.js.map} +1 -1
  453. package/.next/server/chunks/ssr/src_app_page_tsx_0ss2.w7._.js +3 -0
  454. package/.next/server/chunks/ssr/src_app_page_tsx_0ss2.w7._.js.map +1 -0
  455. package/.next/server/chunks/ssr/src_app_providers_page_tsx_10ipz~8._.js +3 -0
  456. package/.next/server/chunks/ssr/{src_app_providers_page_tsx_eb8b5137._.js.map → src_app_providers_page_tsx_10ipz~8._.js.map} +1 -1
  457. package/.next/server/chunks/ssr/src_app_tokenizer_page_tsx_0eqhpbs._.js +3 -0
  458. package/.next/server/chunks/ssr/src_app_tokenizer_page_tsx_0eqhpbs._.js.map +1 -0
  459. package/.next/server/functions-config-manifest.json +3 -1
  460. package/.next/server/middleware-build-manifest.js +10 -10
  461. package/.next/server/pages/404.html +1 -1
  462. package/.next/server/pages/500.html +1 -2
  463. package/.next/server/prefetch-hints.json +1 -0
  464. package/.next/server/server-reference-manifest.js +1 -1
  465. package/.next/server/server-reference-manifest.json +1 -1
  466. package/.next/static/XHnu7Z1vWSrgmneps8rX4/_clientMiddlewareManifest.js +1 -0
  467. package/.next/static/chunks/01xlw8hd842-c.js +1 -0
  468. package/.next/static/chunks/0bzupvr5gt3k9.js +31 -0
  469. package/.next/static/chunks/0d3shmwh5_nmn.js +1 -0
  470. package/.next/static/chunks/0h7-_zr5_nt.5.js +1 -0
  471. package/.next/static/chunks/0mjx90nkvhsot.js +1 -0
  472. package/.next/static/chunks/0ntp1qkrtsgn0.js +1 -0
  473. package/.next/static/chunks/0tc5l6c1zalyc.css +1 -0
  474. package/.next/static/chunks/0v7.1nc4jyaet.js +1 -0
  475. package/.next/static/chunks/0vlwn301rv7dw.js +1 -0
  476. package/.next/static/chunks/0y3~cortx~or~.js +5 -0
  477. package/.next/static/chunks/0~c9fm3-3-f41.js +1 -0
  478. package/.next/static/chunks/11-7_fybhp2~y.js +1 -0
  479. package/.next/static/chunks/121-ofr4.6_5t.js +1 -0
  480. package/.next/static/chunks/16g.ca89g7fib.js +1 -0
  481. package/.next/static/chunks/turbopack-0griofc2i3wvs.js +1 -0
  482. package/.next/types/routes.d.ts +5 -2
  483. package/.next/types/validator.ts +27 -0
  484. package/CHANGELOG.md +15 -0
  485. package/README.md +6 -0
  486. package/dist/.next/dev/types/validator.js +12 -0
  487. package/dist/.next/types/validator.js +12 -0
  488. package/dist/package.json +1 -1
  489. package/dist/src/app/api/tokenizer/history/route.js +60 -0
  490. package/dist/src/app/api/tokenizer/test/route.js +97 -0
  491. package/dist/src/app/components/Nav.js +2 -1
  492. package/dist/src/app/tokenizer/page.js +318 -0
  493. package/dist/src/db/queries.js +21 -0
  494. package/dist/src/server/tokenizer.js +215 -0
  495. package/package.json +1 -1
  496. package/src/app/api/tokenizer/history/route.ts +63 -0
  497. package/src/app/api/tokenizer/test/route.ts +151 -0
  498. package/src/app/components/Nav.tsx +2 -2
  499. package/src/app/tokenizer/page.tsx +813 -0
  500. package/src/db/queries.ts +22 -0
  501. package/src/server/tokenizer.ts +285 -0
  502. package/.next/build/chunks/[root-of-the-server]__44695d76._.js.map +0 -11
  503. package/.next/build/chunks/[root-of-the-server]__6d51cb5d._.js.map +0 -8
  504. package/.next/server/chunks/[root-of-the-server]__001d5756._.js +0 -3
  505. package/.next/server/chunks/[root-of-the-server]__001d5756._.js.map +0 -1
  506. package/.next/server/chunks/[root-of-the-server]__05f8578b._.js +0 -3
  507. package/.next/server/chunks/[root-of-the-server]__05f8578b._.js.map +0 -1
  508. package/.next/server/chunks/[root-of-the-server]__1480f018._.js +0 -3
  509. package/.next/server/chunks/[root-of-the-server]__1480f018._.js.map +0 -1
  510. package/.next/server/chunks/[root-of-the-server]__1909f3aa._.js +0 -3
  511. package/.next/server/chunks/[root-of-the-server]__1909f3aa._.js.map +0 -1
  512. package/.next/server/chunks/[root-of-the-server]__1d4b7fc5._.js +0 -3
  513. package/.next/server/chunks/[root-of-the-server]__1d4b7fc5._.js.map +0 -1
  514. package/.next/server/chunks/[root-of-the-server]__33fec899._.js +0 -3
  515. package/.next/server/chunks/[root-of-the-server]__33fec899._.js.map +0 -1
  516. package/.next/server/chunks/[root-of-the-server]__372ef2bf._.js +0 -3
  517. package/.next/server/chunks/[root-of-the-server]__372ef2bf._.js.map +0 -1
  518. package/.next/server/chunks/[root-of-the-server]__3a204d25._.js +0 -3
  519. package/.next/server/chunks/[root-of-the-server]__3a204d25._.js.map +0 -1
  520. package/.next/server/chunks/[root-of-the-server]__3aaf963c._.js +0 -3
  521. package/.next/server/chunks/[root-of-the-server]__3aaf963c._.js.map +0 -1
  522. package/.next/server/chunks/[root-of-the-server]__43810962._.js +0 -3
  523. package/.next/server/chunks/[root-of-the-server]__43810962._.js.map +0 -1
  524. package/.next/server/chunks/[root-of-the-server]__4a8f9bc7._.js +0 -3
  525. package/.next/server/chunks/[root-of-the-server]__4a8f9bc7._.js.map +0 -1
  526. package/.next/server/chunks/[root-of-the-server]__55cd88b8._.js +0 -3
  527. package/.next/server/chunks/[root-of-the-server]__55cd88b8._.js.map +0 -1
  528. package/.next/server/chunks/[root-of-the-server]__59aacd30._.js +0 -21
  529. package/.next/server/chunks/[root-of-the-server]__59aacd30._.js.map +0 -1
  530. package/.next/server/chunks/[root-of-the-server]__5e8276bc._.js +0 -3
  531. package/.next/server/chunks/[root-of-the-server]__5e8276bc._.js.map +0 -1
  532. package/.next/server/chunks/[root-of-the-server]__64356cb2._.js +0 -3
  533. package/.next/server/chunks/[root-of-the-server]__64356cb2._.js.map +0 -1
  534. package/.next/server/chunks/[root-of-the-server]__6ce199d2._.js +0 -3
  535. package/.next/server/chunks/[root-of-the-server]__6ce199d2._.js.map +0 -1
  536. package/.next/server/chunks/[root-of-the-server]__760eaa16._.js +0 -3
  537. package/.next/server/chunks/[root-of-the-server]__760eaa16._.js.map +0 -1
  538. package/.next/server/chunks/[root-of-the-server]__772134c6._.js +0 -3
  539. package/.next/server/chunks/[root-of-the-server]__772134c6._.js.map +0 -1
  540. package/.next/server/chunks/[root-of-the-server]__7b77f523._.js +0 -3
  541. package/.next/server/chunks/[root-of-the-server]__7b77f523._.js.map +0 -1
  542. package/.next/server/chunks/[root-of-the-server]__7c298a19._.js +0 -3
  543. package/.next/server/chunks/[root-of-the-server]__7c298a19._.js.map +0 -1
  544. package/.next/server/chunks/[root-of-the-server]__85540228._.js +0 -3
  545. package/.next/server/chunks/[root-of-the-server]__85540228._.js.map +0 -1
  546. package/.next/server/chunks/[root-of-the-server]__94fe8d3c._.js +0 -3
  547. package/.next/server/chunks/[root-of-the-server]__94fe8d3c._.js.map +0 -1
  548. package/.next/server/chunks/[root-of-the-server]__97622908._.js +0 -3
  549. package/.next/server/chunks/[root-of-the-server]__97622908._.js.map +0 -1
  550. package/.next/server/chunks/[root-of-the-server]__a02e6618._.js +0 -3
  551. package/.next/server/chunks/[root-of-the-server]__a02e6618._.js.map +0 -1
  552. package/.next/server/chunks/[root-of-the-server]__a32a20a7._.js +0 -3
  553. package/.next/server/chunks/[root-of-the-server]__a32a20a7._.js.map +0 -1
  554. package/.next/server/chunks/[root-of-the-server]__a719d045._.js +0 -3
  555. package/.next/server/chunks/[root-of-the-server]__a719d045._.js.map +0 -1
  556. package/.next/server/chunks/[root-of-the-server]__af5b556a._.js +0 -3
  557. package/.next/server/chunks/[root-of-the-server]__af5b556a._.js.map +0 -1
  558. package/.next/server/chunks/[root-of-the-server]__c1b4b601._.js.map +0 -1
  559. package/.next/server/chunks/[root-of-the-server]__cafe113e._.js +0 -3
  560. package/.next/server/chunks/[root-of-the-server]__cafe113e._.js.map +0 -1
  561. package/.next/server/chunks/[root-of-the-server]__ccfc7f1d._.js +0 -3
  562. package/.next/server/chunks/[root-of-the-server]__ccfc7f1d._.js.map +0 -1
  563. package/.next/server/chunks/[root-of-the-server]__dc8b0bed._.js +0 -3
  564. package/.next/server/chunks/[root-of-the-server]__dc8b0bed._.js.map +0 -1
  565. package/.next/server/chunks/[root-of-the-server]__f0461b8d._.js +0 -3
  566. package/.next/server/chunks/[root-of-the-server]__f0461b8d._.js.map +0 -1
  567. package/.next/server/chunks/[root-of-the-server]__f8949f88._.js +0 -3
  568. package/.next/server/chunks/[root-of-the-server]__f8949f88._.js.map +0 -1
  569. package/.next/server/chunks/_b48847f5._.js +0 -3
  570. package/.next/server/chunks/ce889_server_app_api_ide_openclaw_available-models_route_actions_e568e70b.js +0 -3
  571. package/.next/server/chunks/ce889_server_app_api_ide_opencode_available-models_route_actions_95230db3.js +0 -3
  572. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_4be65264.js.map +0 -1
  573. package/.next/server/chunks/ssr/[root-of-the-server]__083d944d._.js +0 -3
  574. package/.next/server/chunks/ssr/[root-of-the-server]__083d944d._.js.map +0 -1
  575. package/.next/server/chunks/ssr/[root-of-the-server]__15600e29._.js +0 -3
  576. package/.next/server/chunks/ssr/[root-of-the-server]__15600e29._.js.map +0 -1
  577. package/.next/server/chunks/ssr/[root-of-the-server]__1836f866._.js +0 -3
  578. package/.next/server/chunks/ssr/[root-of-the-server]__1836f866._.js.map +0 -1
  579. package/.next/server/chunks/ssr/[root-of-the-server]__256a03fe._.js +0 -3
  580. package/.next/server/chunks/ssr/[root-of-the-server]__256a03fe._.js.map +0 -1
  581. package/.next/server/chunks/ssr/[root-of-the-server]__31fde618._.js +0 -3
  582. package/.next/server/chunks/ssr/[root-of-the-server]__31fde618._.js.map +0 -1
  583. package/.next/server/chunks/ssr/[root-of-the-server]__523c120c._.js +0 -3
  584. package/.next/server/chunks/ssr/[root-of-the-server]__523c120c._.js.map +0 -1
  585. package/.next/server/chunks/ssr/[root-of-the-server]__70a81394._.js +0 -3
  586. package/.next/server/chunks/ssr/[root-of-the-server]__70a81394._.js.map +0 -1
  587. package/.next/server/chunks/ssr/[root-of-the-server]__81937253._.js +0 -3
  588. package/.next/server/chunks/ssr/[root-of-the-server]__81937253._.js.map +0 -1
  589. package/.next/server/chunks/ssr/[root-of-the-server]__976ad963._.js +0 -3
  590. package/.next/server/chunks/ssr/[root-of-the-server]__976ad963._.js.map +0 -1
  591. package/.next/server/chunks/ssr/[root-of-the-server]__af2ad6aa._.js +0 -3
  592. package/.next/server/chunks/ssr/[root-of-the-server]__af2ad6aa._.js.map +0 -1
  593. package/.next/server/chunks/ssr/[root-of-the-server]__b9356576._.js +0 -4
  594. package/.next/server/chunks/ssr/[root-of-the-server]__b9356576._.js.map +0 -1
  595. package/.next/server/chunks/ssr/[root-of-the-server]__ccb6a4da._.js +0 -3
  596. package/.next/server/chunks/ssr/[root-of-the-server]__ccb6a4da._.js.map +0 -1
  597. package/.next/server/chunks/ssr/[root-of-the-server]__cfa2d991._.js +0 -3
  598. package/.next/server/chunks/ssr/[root-of-the-server]__cfa2d991._.js.map +0 -1
  599. package/.next/server/chunks/ssr/[root-of-the-server]__f437da88._.js +0 -3
  600. package/.next/server/chunks/ssr/[root-of-the-server]__f437da88._.js.map +0 -1
  601. package/.next/server/chunks/ssr/[root-of-the-server]__f92001a5._.js.map +0 -1
  602. package/.next/server/chunks/ssr/_06262cbd._.js +0 -4
  603. package/.next/server/chunks/ssr/_06262cbd._.js.map +0 -1
  604. package/.next/server/chunks/ssr/_0cd72da5._.js +0 -4
  605. package/.next/server/chunks/ssr/_0cd72da5._.js.map +0 -1
  606. package/.next/server/chunks/ssr/_4828a6d2._.js +0 -4
  607. package/.next/server/chunks/ssr/_4828a6d2._.js.map +0 -1
  608. package/.next/server/chunks/ssr/_69468f4c._.js +0 -3
  609. package/.next/server/chunks/ssr/_69468f4c._.js.map +0 -1
  610. package/.next/server/chunks/ssr/_93850476._.js +0 -6
  611. package/.next/server/chunks/ssr/_93850476._.js.map +0 -1
  612. package/.next/server/chunks/ssr/_c1309523._.js +0 -4
  613. package/.next/server/chunks/ssr/_c1309523._.js.map +0 -1
  614. package/.next/server/chunks/ssr/_f7d273e3._.js +0 -4
  615. package/.next/server/chunks/ssr/_f7d273e3._.js.map +0 -1
  616. package/.next/server/chunks/ssr/_next-internal_server_app_page_actions_39d4fc33.js +0 -3
  617. package/.next/server/chunks/ssr/node_modules_next_dist_08570d7f._.js +0 -4
  618. package/.next/server/chunks/ssr/node_modules_next_dist_08570d7f._.js.map +0 -1
  619. package/.next/server/chunks/ssr/node_modules_next_dist_174ae28d._.js +0 -10
  620. package/.next/server/chunks/ssr/node_modules_next_dist_174ae28d._.js.map +0 -1
  621. package/.next/server/chunks/ssr/node_modules_next_dist_27457240._.js +0 -6
  622. package/.next/server/chunks/ssr/node_modules_next_dist_27457240._.js.map +0 -1
  623. package/.next/server/chunks/ssr/node_modules_next_dist_4b63a0e1._.js +0 -3
  624. package/.next/server/chunks/ssr/node_modules_next_dist_4b63a0e1._.js.map +0 -1
  625. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_ece394eb.js.map +0 -1
  626. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_65a7265e.js +0 -4
  627. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_65a7265e.js.map +0 -1
  628. package/.next/server/chunks/ssr/node_modules_next_dist_f9713a08._.js +0 -3
  629. package/.next/server/chunks/ssr/node_modules_next_dist_f9713a08._.js.map +0 -1
  630. package/.next/server/chunks/ssr/src_app_ide_page_tsx_8962793b._.js +0 -3
  631. package/.next/server/chunks/ssr/src_app_logs_page_tsx_7b7b7b83._.js +0 -3
  632. package/.next/server/chunks/ssr/src_app_models_page_tsx_ed71d32e._.js +0 -3
  633. package/.next/server/chunks/ssr/src_app_providers_page_tsx_eb8b5137._.js +0 -3
  634. package/.next/static/Xp9f-NEeGeBKhqaJCVH8D/_clientMiddlewareManifest.json +0 -1
  635. package/.next/static/chunks/5663c8696095f277.js +0 -1
  636. package/.next/static/chunks/64f547b3bcd3aef4.js +0 -1
  637. package/.next/static/chunks/6992685fe009e8fd.css +0 -1
  638. package/.next/static/chunks/6e0dee5b6681763c.js +0 -1
  639. package/.next/static/chunks/6f7efe5271343778.js +0 -1
  640. package/.next/static/chunks/75f76753fd97c8fd.js +0 -1
  641. package/.next/static/chunks/7c8b7cbb3339f139.js +0 -1
  642. package/.next/static/chunks/8ccc14e022ff6de3.js +0 -1
  643. package/.next/static/chunks/8cf1e5f00ebaea52.js +0 -1
  644. package/.next/static/chunks/a6dad97d9634a72d.js.map +0 -1
  645. package/.next/static/chunks/a7f539bf6487f4ff.js +0 -5
  646. package/.next/static/chunks/a89fdf03c5b0dfbd.js +0 -1
  647. package/.next/static/chunks/d2be314c3ece3fbe.js +0 -1
  648. package/.next/static/chunks/f2f58a7e93290fbb.js +0 -1
  649. package/.next/static/chunks/ff1a16fafef87110.js +0 -1
  650. package/.next/static/chunks/turbopack-fdb839c72e10c2ea.js +0 -4
  651. /package/.next/build/chunks/{[turbopack-node]_transforms_postcss_ts_df7a5b11._.js.map → [turbopack-node]_transforms_postcss_ts_0nnejqq._.js.map} +0 -0
  652. /package/.next/server/chunks/{_next-internal_server_app_api_config_route_actions_308a9f33.js.map → 0zjb_server_app_api_ide_openclaw_available-models_route_actions_0.gjr6a.js.map} +0 -0
  653. /package/.next/server/chunks/{_next-internal_server_app_api_gateway_[___path]_route_actions_835b2379.js.map → 0zjb_server_app_api_ide_opencode_available-models_route_actions_0poyhyk.js.map} +0 -0
  654. /package/.next/server/chunks/{_next-internal_server_app_api_gateway_models_route_actions_302c9983.js.map → _next-internal_server_app_api_config_route_actions_08dm.dx.js.map} +0 -0
  655. /package/.next/server/chunks/{_next-internal_server_app_api_gateway_route_actions_e5e7405d.js.map → _next-internal_server_app_api_gateway_[___path]_route_actions_0mmqyo7.js.map} +0 -0
  656. /package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_apply_route_actions_5056516c.js.map → _next-internal_server_app_api_gateway_models_route_actions_08b214z.js.map} +0 -0
  657. /package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_available-models_route_actions_94d710a0.js.map → _next-internal_server_app_api_gateway_route_actions_0.jzdw1.js.map} +0 -0
  658. /package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_restore_route_actions_f37acc94.js.map → _next-internal_server_app_api_ide_claude_apply_route_actions_0dw2_pf.js.map} +0 -0
  659. /package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_save_route_actions_407c55f5.js.map → _next-internal_server_app_api_ide_claude_available-models_route_actions_0pmwy75.js.map} +0 -0
  660. /package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_status_route_actions_5ac73db8.js.map → _next-internal_server_app_api_ide_claude_restore_route_actions_11x77hl.js.map} +0 -0
  661. /package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_test_route_actions_70587902.js.map → _next-internal_server_app_api_ide_claude_save_route_actions_0b35ro_.js.map} +0 -0
  662. /package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_apply_route_actions_2cb9e4b4.js.map → _next-internal_server_app_api_ide_claude_status_route_actions_0fnw-w7.js.map} +0 -0
  663. /package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_preview_route_actions_9814a8e4.js.map → _next-internal_server_app_api_ide_claude_test_route_actions_0jc1czy.js.map} +0 -0
  664. /package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_restore_route_actions_10ad8f9d.js.map → _next-internal_server_app_api_ide_openclaw_apply_route_actions_07re971.js.map} +0 -0
  665. /package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_save_route_actions_044ad081.js.map → _next-internal_server_app_api_ide_openclaw_preview_route_actions_0q53p05.js.map} +0 -0
  666. /package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_status_route_actions_ed9786d2.js.map → _next-internal_server_app_api_ide_openclaw_restore_route_actions_02yog9-.js.map} +0 -0
  667. /package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_test_route_actions_ce2cb808.js.map → _next-internal_server_app_api_ide_openclaw_save_route_actions_00tjxsz.js.map} +0 -0
  668. /package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_apply_route_actions_6c422244.js.map → _next-internal_server_app_api_ide_openclaw_status_route_actions_10wsun4.js.map} +0 -0
  669. /package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_preview_route_actions_256c82e0.js.map → _next-internal_server_app_api_ide_openclaw_test_route_actions_0zgwyon.js.map} +0 -0
  670. /package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_restore_route_actions_371993d3.js.map → _next-internal_server_app_api_ide_opencode_apply_route_actions_0in-w.g.js.map} +0 -0
  671. /package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_save_route_actions_6e4c9c41.js.map → _next-internal_server_app_api_ide_opencode_preview_route_actions_06h6.w~.js.map} +0 -0
  672. /package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_status_route_actions_498ad77b.js.map → _next-internal_server_app_api_ide_opencode_restore_route_actions_09ipt-l.js.map} +0 -0
  673. /package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_test_route_actions_c71be510.js.map → _next-internal_server_app_api_ide_opencode_save_route_actions_0i-~x79.js.map} +0 -0
  674. /package/.next/server/chunks/{_next-internal_server_app_api_logs_route_actions_30a87f47.js.map → _next-internal_server_app_api_ide_opencode_status_route_actions_0cpf6rv.js.map} +0 -0
  675. /package/.next/server/chunks/{_next-internal_server_app_api_models_route_actions_b6abdc83.js.map → _next-internal_server_app_api_ide_opencode_test_route_actions_0y8aq8h.js.map} +0 -0
  676. /package/.next/server/chunks/{_next-internal_server_app_api_providers_route_actions_5388b373.js.map → _next-internal_server_app_api_logs_route_actions_08ef2j7.js.map} +0 -0
  677. /package/.next/server/chunks/{_next-internal_server_app_api_providers_test_route_actions_b97ab15a.js.map → _next-internal_server_app_api_models_route_actions_0vfccm4.js.map} +0 -0
  678. /package/.next/server/chunks/{_next-internal_server_app_api_service_force-stop_route_actions_95eba80b.js.map → _next-internal_server_app_api_providers_route_actions_0ee1p_m.js.map} +0 -0
  679. /package/.next/server/chunks/{_next-internal_server_app_api_service_start_route_actions_d50efb77.js.map → _next-internal_server_app_api_providers_test_route_actions_0vyo652.js.map} +0 -0
  680. /package/.next/server/chunks/{_next-internal_server_app_api_service_status_route_actions_30149042.js.map → _next-internal_server_app_api_service_force-stop_route_actions_0pu9xrq.js.map} +0 -0
  681. /package/.next/server/chunks/{_next-internal_server_app_api_service_stop_route_actions_19443941.js.map → _next-internal_server_app_api_service_start_route_actions_0_o53a2.js.map} +0 -0
  682. /package/.next/server/chunks/{ce889_server_app_api_ide_openclaw_available-models_route_actions_e568e70b.js.map → _next-internal_server_app_api_service_status_route_actions_08ag8v4.js.map} +0 -0
  683. /package/.next/server/chunks/{ce889_server_app_api_ide_opencode_available-models_route_actions_95230db3.js.map → _next-internal_server_app_api_service_stop_route_actions_04dp83p.js.map} +0 -0
  684. /package/.next/server/chunks/{ssr/_next-internal_server_app__global-error_page_actions_75761787.js.map → _next-internal_server_app_api_tokenizer_history_route_actions_09~nqtd.js.map} +0 -0
  685. /package/.next/server/chunks/{ssr/_next-internal_server_app__not-found_page_actions_554ec2bf.js.map → _next-internal_server_app_api_tokenizer_test_route_actions_0t2swp-.js.map} +0 -0
  686. /package/.next/server/chunks/ssr/{_next-internal_server_app_ide_page_actions_d521d6ae.js.map → _next-internal_server_app__global-error_page_actions_0k77kol.js.map} +0 -0
  687. /package/.next/server/chunks/ssr/{_next-internal_server_app_logs_page_actions_a1c69041.js.map → _next-internal_server_app__not-found_page_actions_0eq97pa.js.map} +0 -0
  688. /package/.next/server/chunks/ssr/{_next-internal_server_app_models_page_actions_543cf22f.js.map → _next-internal_server_app_ide_page_actions_0_opd4~.js.map} +0 -0
  689. /package/.next/server/chunks/ssr/{_next-internal_server_app_page_actions_39d4fc33.js.map → _next-internal_server_app_logs_page_actions_0rvsl~d.js.map} +0 -0
  690. /package/.next/server/chunks/ssr/{_next-internal_server_app_providers_page_actions_c75f6cb3.js.map → _next-internal_server_app_models_page_actions_0eiz7f7.js.map} +0 -0
  691. /package/.next/server/chunks/ssr/{node_modules_next_dist_client_components_9774470f._.js.map → node_modules_next_dist_client_components_0inhx6q._.js.map} +0 -0
  692. /package/.next/server/chunks/ssr/{node_modules_next_dist_client_components_builtin_forbidden_45780354.js.map → node_modules_next_dist_client_components_builtin_forbidden_0ghu-f7.js.map} +0 -0
  693. /package/.next/server/chunks/ssr/{node_modules_next_dist_client_components_builtin_unauthorized_15817684.js.map → node_modules_next_dist_client_components_builtin_unauthorized_0cjv-23.js.map} +0 -0
  694. /package/.next/static/{Xp9f-NEeGeBKhqaJCVH8D → XHnu7Z1vWSrgmneps8rX4}/_buildManifest.js +0 -0
  695. /package/.next/static/{Xp9f-NEeGeBKhqaJCVH8D → XHnu7Z1vWSrgmneps8rX4}/_ssgManifest.js +0 -0
  696. /package/.next/static/chunks/{a6dad97d9634a72d.js → 03~yq9q893hmn.js} +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/0bzupvr5gt3k9.js","static/chunks/0y3~cortx~or~.js","static/chunks/16g.ca89g7fib.js"],runtimeModuleIds:[94553]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=(self.TURBOPACK_ASSET_SUFFIX??document?.currentScript?.getAttribute?.("src")?.replace(/^(.*(?=\?)|^.*$)/,""))||"",n=["NEXT_DEPLOYMENT_ID","NEXT_CLIENT_ASSET_SUFFIX"];var o,i=((o=i||{})[o.Runtime=0]="Runtime",o[o.Parent=1]="Parent",o[o.Update=2]="Update",o);let l=new WeakMap;function s(e,t){this.m=e,this.e=t}let u=s.prototype,a=Object.prototype.hasOwnProperty,c="u">typeof Symbol&&Symbol.toStringTag;function f(e,t,r){a.call(e,t)||Object.defineProperty(e,t,r)}function p(e,t){let r=e[t];return r||(r=h(t),e[t]=r),r}function h(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function d(e,t){f(e,"__esModule",{value:!0}),c&&f(e,c,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)f(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?f(e,n,{get:o,set:t[r++],enumerable:!0}):f(e,n,{get:o,enumerable:!0})}Object.seal(e)}function m(e,t){(null!=t?p(this.c,t):this.m).exports=e}u.s=function(e,t){let r,n;null!=t?n=(r=p(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,d(n,e)},u.j=function(e,t){var r,n;let o,i,s;null!=t?i=(o=p(this.c,t)).exports:(o=this.m,i=this.e);let u=(r=o,n=i,(s=l.get(r))||(l.set(r,s=[]),r.exports=r.namespaceObject=new Proxy(n,{get(e,t){if(a.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of s){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of s)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),s);"object"==typeof e&&null!==e&&u.push(e)},u.v=m,u.n=function(e,t){let r;(r=null!=t?p(this.c,t):this.m).exports=r.namespaceObject=e};let b=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,y=[null,b({}),b([]),b(b)];function g(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!y.includes(t);t=b(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),d(t,n),t}function w(e){let t=W(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=g(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function O(e){let t=e.indexOf("#");-1!==t&&(e=e.substring(0,t));let r=e.indexOf("?");return -1!==r&&(e=e.substring(0,r)),e}function k(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}u.i=w,u.A=function(e){return this.r(e)(w.bind(this))},u.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},u.r=function(e){return W(e,this.m).exports},u.f=function(e){function t(t){if(t=O(t),a.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(t=O(t),a.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let j=Symbol("turbopack queues"),v=Symbol("turbopack exports"),C=Symbol("turbopack error");function P(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}u.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:i,reject:l,promise:s}=k(),u=Object.assign(s,{[v]:r.exports,[j]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[v]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(j in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[v]:{},[j]:e=>e(t)};return e.then(e=>{r[v]=e,P(t)},e=>{r[C]=e,P(t)}),r}}return{[v]:e,[j]:()=>{}}}),r=()=>t.map(e=>{if(e[C])throw e[C];return e[v]}),{promise:i,resolve:l}=k(),s=Object.assign(()=>l(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[j](u)),s.queueCount?i:r()},function(e){e?l(u[C]=e):i(u[v]),P(n)}),n&&-1===n.status&&(n.status=0)};let U=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function $(e,t){throw Error(`Invariant: ${t(e)}`)}U.prototype=URL.prototype,u.U=U,u.z=function(e){throw Error("dynamic usage of require is not supported")},u.g=globalThis;let R=s.prototype,S=new Map;u.M=S;let E=new Map,_=new Map;async function T(e,t,r){let n;if("string"==typeof r)return M(e,t,N(r));let o=r.included||[],i=o.map(e=>!!S.has(e)||E.get(e));if(i.length>0&&i.every(e=>e))return void await Promise.all(i);let l=r.moduleChunks||[],s=l.map(e=>_.get(e)).filter(e=>e);if(s.length>0){if(s.length===l.length)return void await Promise.all(s);let r=new Set;for(let e of l)_.has(e)||r.add(e);for(let n of r){let r=M(e,t,N(n));_.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=M(e,t,N(r.path)),l))_.has(o)||_.set(o,n)}for(let e of o)E.has(e)||E.set(e,n);await n}R.l=function(e){return T(i.Parent,this.m.id,e)};let A=Promise.resolve(void 0),x=new WeakMap;function M(t,r,n){let o=e.loadChunkCached(t,n),l=x.get(o);if(void 0===l){let e=x.set.bind(x,o,A);l=o.then(e).catch(e=>{let o;switch(t){case i.Runtime:o=`as a runtime dependency of chunk ${r}`;break;case i.Parent:o=`from module ${r}`;break;case i.Update:o="from an HMR update";break;default:$(t,e=>`Unknown source type: ${e}`)}let l=Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw l.name="ChunkLoadError",l}),x.set(o,l)}return l}function N(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}${r}`}R.L=function(e){return M(i.Parent,this.m.id,e)},R.R=function(e){let t=this.r(e);return t?.default??t},R.P=function(e){return`/ROOT/${e??""}`},R.q=function(e,t){m.call(this,`${e}${r}`,t)},R.b=function(e,t,o,i){let l="SharedWorker"===e.name,s=[o.map(e=>N(e)).reverse(),r];for(let e of n)s.push(globalThis[e]);let u=new URL(N(t),location.origin),a=JSON.stringify(s);return l?u.searchParams.set("params",a):u.hash="#params="+encodeURIComponent(a),new e(u,i?{...i,type:void 0}:void 0)};let q=/\.js(?:\?[^#]*)?(?:#.*)?$/,K=/\.css(?:\?[^#]*)?(?:#.*)?$/;function L(e){return K.test(e)}u.w=function(t,r,n){return e.loadWebAssembly(i.Parent,this.m.id,t,r,n)},u.u=function(t,r){return e.loadWebAssemblyModule(i.Parent,this.m.id,t,r)};let I={};u.c=I;let W=(e,t)=>{let r=I[e];if(r){if(r.error)throw r.error;return r}return B(e,i.Parent,t.id)};function B(e,t,r){let n=S.get(e);if("function"!=typeof n)throw Error(function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:$(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let o=h(e),i=o.exports;I[e]=o;let l=new s(o,i);try{n(l,o,i)}catch(e){throw o.error=e,e}return o.namespaceObject&&o.exports!==o.namespaceObject&&g(o.exports,o.namespaceObject),o}function F(t){let r,n=function(e){if("string"==typeof e)return e;if(e)return{src:e.getAttribute("src")};if("u">typeof TURBOPACK_NEXT_CHUNK_URLS)return{src:TURBOPACK_NEXT_CHUNK_URLS.pop()};throw Error("chunk path empty but not in a worker")}(t[0]);return 2===t.length?r=t[1]:(r=void 0,!function(e,t){let r=1;for(;r<e.length;){let n,o=r+1;for(;o<e.length&&"function"!=typeof e[o];)o++;if(o===e.length)throw Error("malformed chunk format, expected a factory function");let i=e[o];for(let i=r;i<o;i++){let r=e[i],o=t.get(r);if(o){n=o;break}}let l=n??i,s=!1;for(let n=r;n<o;n++){let r=e[n];t.has(r)||(s||(l===i&&Object.defineProperty(i,"name",{value:"module evaluation"}),s=!0),t.set(r,l))}r=o+1}}(t,S)),e.registerChunk(n,r)}let X=new Map;function D(e){let t=X.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},X.set(e,t)}return t}e={async registerChunk(e,r){let n=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(e.src.replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(e);if(D("string"==typeof e?N(e):e.src).resolve(),null!=r){for(let e of r.otherChunks)D(N("string"==typeof e?e:e.path));if(await Promise.all(r.otherChunks.map(e=>T(i.Runtime,n,e))),r.runtimeModuleIds.length>0)for(let e of r.runtimeModuleIds)!function(e,t){let r=I[t];if(r){if(r.error)throw r.error;return}B(t,i.Runtime,e)}(n,e)}},loadChunkCached:(e,t)=>(function(e,t){let r=D(t);if(r.loadingStarted)return r.promise;if(e===i.Runtime)return r.loadingStarted=!0,L(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(L(t));else if(q.test(t))self.TURBOPACK_NEXT_CHUNK_URLS.push(t),importScripts(t);else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let e=decodeURI(t);if(L(t))if(document.querySelectorAll(`link[rel=stylesheet][href="${t}"],link[rel=stylesheet][href^="${t}?"],link[rel=stylesheet][href="${e}"],link[rel=stylesheet][href^="${e}?"]`).length>0)r.resolve();else{let e=document.createElement("link");e.rel="stylesheet",e.href=t,e.onerror=()=>{r.reject()},e.onload=()=>{r.resolve()},document.head.appendChild(e)}else if(q.test(t)){let n=document.querySelectorAll(`script[src="${t}"],script[src^="${t}?"],script[src="${e}"],script[src^="${e}?"]`);if(n.length>0)for(let e of Array.from(n))e.addEventListener("error",()=>{r.reject()});else{let e=document.createElement("script");e.src=t,e.onerror=()=>{r.reject()},document.head.appendChild(e)}}else throw Error(`can't infer type of chunk from URL ${t}`)}return r.loadingStarted=!0,r.promise})(e,t),async loadWebAssembly(e,t,r,n,o){let i=fetch(N(r)),{instance:l}=await WebAssembly.instantiateStreaming(i,o);return l.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(N(r));return await WebAssembly.compileStreaming(o)}};let H=globalThis.TURBOPACK;globalThis.TURBOPACK={push:F},H.forEach(F)})();
@@ -1,8 +1,8 @@
1
1
  // This file is generated automatically by Next.js
2
2
  // Do not edit this file manually
3
3
 
4
- type AppRoutes = "/" | "/ide" | "/logs" | "/models" | "/providers"
5
- type AppRouteHandlerRoutes = "/api/config" | "/api/gateway" | "/api/gateway/[...path]" | "/api/gateway/models" | "/api/ide/claude/apply" | "/api/ide/claude/available-models" | "/api/ide/claude/restore" | "/api/ide/claude/save" | "/api/ide/claude/status" | "/api/ide/claude/test" | "/api/ide/openclaw/apply" | "/api/ide/openclaw/available-models" | "/api/ide/openclaw/preview" | "/api/ide/openclaw/restore" | "/api/ide/openclaw/save" | "/api/ide/openclaw/status" | "/api/ide/openclaw/test" | "/api/ide/opencode/apply" | "/api/ide/opencode/available-models" | "/api/ide/opencode/preview" | "/api/ide/opencode/restore" | "/api/ide/opencode/save" | "/api/ide/opencode/status" | "/api/ide/opencode/test" | "/api/logs" | "/api/models" | "/api/providers" | "/api/providers/test" | "/api/service/force-stop" | "/api/service/start" | "/api/service/status" | "/api/service/stop"
4
+ type AppRoutes = "/" | "/ide" | "/logs" | "/models" | "/providers" | "/tokenizer"
5
+ type AppRouteHandlerRoutes = "/api/config" | "/api/gateway" | "/api/gateway/[...path]" | "/api/gateway/models" | "/api/ide/claude/apply" | "/api/ide/claude/available-models" | "/api/ide/claude/restore" | "/api/ide/claude/save" | "/api/ide/claude/status" | "/api/ide/claude/test" | "/api/ide/openclaw/apply" | "/api/ide/openclaw/available-models" | "/api/ide/openclaw/preview" | "/api/ide/openclaw/restore" | "/api/ide/openclaw/save" | "/api/ide/openclaw/status" | "/api/ide/openclaw/test" | "/api/ide/opencode/apply" | "/api/ide/opencode/available-models" | "/api/ide/opencode/preview" | "/api/ide/opencode/restore" | "/api/ide/opencode/save" | "/api/ide/opencode/status" | "/api/ide/opencode/test" | "/api/logs" | "/api/models" | "/api/providers" | "/api/providers/test" | "/api/service/force-stop" | "/api/service/start" | "/api/service/status" | "/api/service/stop" | "/api/tokenizer/history" | "/api/tokenizer/test"
6
6
  type PageRoutes = never
7
7
  type LayoutRoutes = "/"
8
8
  type RedirectRoutes = never
@@ -44,10 +44,13 @@ interface ParamMap {
44
44
  "/api/service/start": {}
45
45
  "/api/service/status": {}
46
46
  "/api/service/stop": {}
47
+ "/api/tokenizer/history": {}
48
+ "/api/tokenizer/test": {}
47
49
  "/ide": {}
48
50
  "/logs": {}
49
51
  "/models": {}
50
52
  "/providers": {}
53
+ "/tokenizer": {}
51
54
  }
52
55
 
53
56
 
@@ -92,6 +92,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
92
92
  type __Unused = __Check
93
93
  }
94
94
 
95
+ // Validate ../../src/app/tokenizer/page.tsx
96
+ {
97
+ type __IsExpected<Specific extends AppPageConfig<"/tokenizer">> = Specific
98
+ const handler = {} as typeof import("../../src/app/tokenizer/page.js")
99
+ type __Check = __IsExpected<typeof handler>
100
+ // @ts-ignore
101
+ type __Unused = __Check
102
+ }
103
+
95
104
  // Validate ../../src/app/api/config/route.ts
96
105
  {
97
106
  type __IsExpected<Specific extends RouteHandlerConfig<"/api/config">> = Specific
@@ -380,6 +389,24 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
380
389
  type __Unused = __Check
381
390
  }
382
391
 
392
+ // Validate ../../src/app/api/tokenizer/history/route.ts
393
+ {
394
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/tokenizer/history">> = Specific
395
+ const handler = {} as typeof import("../../src/app/api/tokenizer/history/route.js")
396
+ type __Check = __IsExpected<typeof handler>
397
+ // @ts-ignore
398
+ type __Unused = __Check
399
+ }
400
+
401
+ // Validate ../../src/app/api/tokenizer/test/route.ts
402
+ {
403
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/tokenizer/test">> = Specific
404
+ const handler = {} as typeof import("../../src/app/api/tokenizer/test/route.js")
405
+ type __Check = __IsExpected<typeof handler>
406
+ // @ts-ignore
407
+ type __Unused = __Check
408
+ }
409
+
383
410
 
384
411
 
385
412
 
package/CHANGELOG.md ADDED
@@ -0,0 +1,15 @@
1
+ # Changelog
2
+
3
+ ## 0.2.4 - 2026-03-21
4
+
5
+ - 新增 `Tokenizer` 页面,支持源语言/目标语言 token 对比测试
6
+ - 支持通过 LLM 将源语言直接翻译为目标语言,并展示翻译 token 消耗
7
+ - 支持 `Temperature` 与 `Top P` 控制测试请求参数
8
+ - `measure` 模式强化为尽量原样回显输入,并避免服务端自行 `trim` 输入输出
9
+ - 新增耗时统计,在源语言/目标语言总计卡片中直接展示各自耗时
10
+ - 新增 `Tokenizer` 页面内的“历史记录” TAB,复用请求日志展示最近测试记录
11
+
12
+ ## 0.2.3
13
+
14
+ - 增强 IDE 配置与备份还原能力
15
+ - 优化请求日志展示与流式响应解析
package/README.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  一个统一的 API 网关,用于管理多个 AI 模型供应商(Anthropic、OpenAI、Gemini 等),为 Claude Code、OpenCode、OpenClaw、PicoClaw 等 AI 编程助手提供统一接口。
4
4
 
5
+ 当前版本:`0.2.4`
6
+
7
+ 更新说明见 [CHANGELOG.md](/Users/plucky/own/ai-agent-router/CHANGELOG.md)。
8
+
5
9
  ## 功能特性
6
10
 
7
11
  - ✅ 支持多种 AI 模型协议(OpenAI、Anthropic、Gemini)
@@ -16,6 +20,7 @@
16
20
  - ✅ SQLite 数据库,数据存储在 `~/.aar/`
17
21
  - ✅ **IDE 深度集成**:一键配置 Claude Code、OpenCode、OpenClaw 等编程助手
18
22
  - ✅ **配置备份**:自动备份配置到 `~/.aar/backups/`,支持一键还原
23
+ - ✅ **Tokenizer 工具**:支持双语言 token 测试、翻译、耗时统计与历史记录
19
24
 
20
25
  ## 安装
21
26
 
@@ -111,6 +116,7 @@ aar config --set api_key "your-secret-key"
111
116
  4. **查看日志**:API 请求日志,含流式响应美化
112
117
  5. **服务管理**:在界面内启动/停止网关(使用 `aar start` 时通常已自动启动)
113
118
  6. **IDE 集成**:一键配置各类 AI 编程助手
119
+ 7. **Tokenizer**:测试源语言/目标语言 token 消耗,支持翻译与历史记录
114
120
  - **Claude Code**:配置模型映射(haiku/sonnet/opus)、自动处理 onboarding
115
121
  - **OpenCode**:配置默认模型
116
122
  - **OpenClaw**:配置默认模型和 fallback 模型
@@ -23,6 +23,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
23
23
  {
24
24
  const handler = {};
25
25
  }
26
+ // Validate ../../../src/app/tokenizer/page.tsx
27
+ {
28
+ const handler = {};
29
+ }
26
30
  // Validate ../../../src/app/api/config/route.ts
27
31
  {
28
32
  const handler = {};
@@ -151,6 +155,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
151
155
  {
152
156
  const handler = {};
153
157
  }
158
+ // Validate ../../../src/app/api/tokenizer/history/route.ts
159
+ {
160
+ const handler = {};
161
+ }
162
+ // Validate ../../../src/app/api/tokenizer/test/route.ts
163
+ {
164
+ const handler = {};
165
+ }
154
166
  // Validate ../../../src/app/layout.tsx
155
167
  {
156
168
  const handler = {};
@@ -23,6 +23,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
23
23
  {
24
24
  const handler = {};
25
25
  }
26
+ // Validate ../../src/app/tokenizer/page.tsx
27
+ {
28
+ const handler = {};
29
+ }
26
30
  // Validate ../../src/app/api/config/route.ts
27
31
  {
28
32
  const handler = {};
@@ -151,6 +155,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
151
155
  {
152
156
  const handler = {};
153
157
  }
158
+ // Validate ../../src/app/api/tokenizer/history/route.ts
159
+ {
160
+ const handler = {};
161
+ }
162
+ // Validate ../../src/app/api/tokenizer/test/route.ts
163
+ {
164
+ const handler = {};
165
+ }
154
166
  // Validate ../../src/app/layout.tsx
155
167
  {
156
168
  const handler = {};
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-agent-router",
3
- "version": "0.2.3",
3
+ "version": "0.2.4",
4
4
  "description": "A unified API gateway for managing multiple AI model providers (Anthropic, OpenAI, Gemini, etc.)",
5
5
  "main": "dist/src/cli/index.js",
6
6
  "bin": {
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dynamic = exports.runtime = void 0;
4
+ exports.GET = GET;
5
+ const server_1 = require("next/server");
6
+ const database_1 = require("@/db/database");
7
+ const queries_1 = require("@/db/queries");
8
+ exports.runtime = 'nodejs';
9
+ exports.dynamic = 'force-dynamic';
10
+ async function GET(request) {
11
+ try {
12
+ await (0, database_1.getDatabase)();
13
+ const { searchParams } = new URL(request.url);
14
+ const limit = parseInt(searchParams.get('limit') || '50', 10);
15
+ const offset = parseInt(searchParams.get('offset') || '0', 10);
16
+ const logs = await (0, queries_1.getTokenizerLogs)(limit, offset);
17
+ const total = await (0, queries_1.getTokenizerLogCount)();
18
+ return server_1.NextResponse.json({
19
+ logs: logs.map(mapTokenizerLog),
20
+ total,
21
+ limit,
22
+ offset,
23
+ });
24
+ }
25
+ catch (error) {
26
+ console.error('Tokenizer history API error:', error);
27
+ return server_1.NextResponse.json({ error: error.message || 'Internal server error' }, { status: 500 });
28
+ }
29
+ }
30
+ function mapTokenizerLog(log) {
31
+ const requestBody = parseJson(log.request_body);
32
+ const responseBody = parseJson(log.response_body);
33
+ return {
34
+ id: log.id,
35
+ created_at: log.created_at,
36
+ status: log.response_status,
37
+ response_time_ms: responseBody?.response_time_ms ?? log.response_time_ms ?? null,
38
+ mode: requestBody?.mode ?? null,
39
+ source_language: requestBody?.source_language ?? null,
40
+ target_language: requestBody?.target_language ?? null,
41
+ source_text: requestBody?.text ?? '',
42
+ result_text: responseBody?.text ?? '',
43
+ usage: responseBody?.usage ?? null,
44
+ model_name: responseBody?.model?.name ?? log.model_name ?? null,
45
+ model_id: responseBody?.model?.model_id ?? log.model_id ?? null,
46
+ provider_name: responseBody?.model?.provider_name ?? log.provider_name ?? null,
47
+ };
48
+ }
49
+ function parseJson(value) {
50
+ if (!value)
51
+ return null;
52
+ if (typeof value === 'object')
53
+ return value;
54
+ try {
55
+ return JSON.parse(value);
56
+ }
57
+ catch {
58
+ return null;
59
+ }
60
+ }
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runtime = void 0;
4
+ exports.POST = POST;
5
+ const server_1 = require("next/server");
6
+ const database_1 = require("@/db/database");
7
+ const queries_1 = require("@/db/queries");
8
+ const tokenizer_1 = require("@/server/tokenizer");
9
+ const logger_1 = require("@/server/logger");
10
+ exports.runtime = 'nodejs';
11
+ async function POST(request) {
12
+ const startedAt = Date.now();
13
+ let logPayload = null;
14
+ try {
15
+ await (0, database_1.getDatabase)();
16
+ const body = await request.json();
17
+ const { model_id, mode, source_language, target_language, text, temperature, top_p, } = body;
18
+ logPayload = body;
19
+ if (!model_id || !mode || !source_language || !text?.trim()) {
20
+ return server_1.NextResponse.json({ error: 'model_id, mode, source_language and text are required' }, { status: 400 });
21
+ }
22
+ if (mode !== 'measure' && mode !== 'translate') {
23
+ return server_1.NextResponse.json({ error: 'mode must be measure or translate' }, { status: 400 });
24
+ }
25
+ if (mode === 'translate' && !target_language) {
26
+ return server_1.NextResponse.json({ error: 'target_language is required for translate mode' }, { status: 400 });
27
+ }
28
+ const model = await (0, queries_1.getModelById)(model_id);
29
+ if (!model) {
30
+ return server_1.NextResponse.json({ error: 'Model not found' }, { status: 404 });
31
+ }
32
+ const provider = await (0, queries_1.getProviderById)(model.provider_id);
33
+ if (!provider) {
34
+ return server_1.NextResponse.json({ error: 'Provider not found' }, { status: 404 });
35
+ }
36
+ const tokenizerRequest = (0, tokenizer_1.buildTokenizerRequest)({
37
+ protocol: provider.protocol,
38
+ modelId: model.model_id,
39
+ mode,
40
+ sourceLanguage: source_language,
41
+ targetLanguage: target_language,
42
+ text,
43
+ temperature,
44
+ topP: top_p,
45
+ });
46
+ const result = await (0, tokenizer_1.runTokenizerRequest)({ ...model, provider }, tokenizerRequest, text);
47
+ const responseTimeMs = Date.now() - startedAt;
48
+ const responseBody = {
49
+ success: true,
50
+ mode,
51
+ provider_protocol: provider.protocol,
52
+ model: {
53
+ id: model.id,
54
+ name: model.name,
55
+ model_id: model.model_id,
56
+ provider_name: provider.name,
57
+ },
58
+ text: result.text,
59
+ usage: result.usage,
60
+ response_time_ms: responseTimeMs,
61
+ };
62
+ await (0, logger_1.logRequest)({
63
+ modelId: model.id,
64
+ method: 'POST',
65
+ path: '/tokenizer/test',
66
+ headers: { 'content-type': 'application/json' },
67
+ query: {},
68
+ body: logPayload,
69
+ }, {
70
+ status: 200,
71
+ headers: { 'content-type': 'application/json' },
72
+ body: responseBody,
73
+ responseTimeMs,
74
+ });
75
+ return server_1.NextResponse.json(responseBody);
76
+ }
77
+ catch (error) {
78
+ console.error('Tokenizer API error:', error);
79
+ const responseTimeMs = Date.now() - startedAt;
80
+ if (logPayload?.model_id) {
81
+ await (0, logger_1.logRequest)({
82
+ modelId: Number(logPayload.model_id) || null,
83
+ method: 'POST',
84
+ path: '/tokenizer/test',
85
+ headers: { 'content-type': 'application/json' },
86
+ query: {},
87
+ body: logPayload,
88
+ }, {
89
+ status: 500,
90
+ headers: { 'content-type': 'application/json' },
91
+ body: { error: error.message || 'Internal server error' },
92
+ responseTimeMs,
93
+ });
94
+ }
95
+ return server_1.NextResponse.json({ error: error.message || 'Internal server error' }, { status: 500 });
96
+ }
97
+ }
@@ -15,11 +15,12 @@ function Nav() {
15
15
  { href: '/ide', label: 'IDE' },
16
16
  { href: '/providers', label: '供应商' },
17
17
  { href: '/models', label: '模型' },
18
+ { href: '/tokenizer', label: 'Tokenizer' },
18
19
  { href: '/logs', label: '日志' },
19
20
  ];
20
21
  return ((0, jsx_runtime_1.jsx)("nav", { className: "bg-white/70 backdrop-blur-xl border-b border-emerald-100/30 sticky top-0 z-50", children: (0, jsx_runtime_1.jsx)("div", { className: "max-w-7xl mx-auto px-6 sm:px-8 lg:px-10", children: (0, jsx_runtime_1.jsx)("div", { className: "flex items-center justify-between h-16", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center space-x-12", children: [(0, jsx_runtime_1.jsxs)(link_1.default, { href: "/", className: "flex flex-col group transition-all duration-300", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-xl font-bold text-emerald-700 group-hover:text-emerald-600 transition-colors duration-300 leading-none", children: "AAR" }), (0, jsx_runtime_1.jsx)("span", { className: "text-[9px] font-medium text-slate-400 tracking-wider uppercase mt-0.5 leading-none", children: "AI Agent Router" })] }), (0, jsx_runtime_1.jsx)("div", { className: "hidden sm:flex sm:items-center", children: navItems.map((item) => {
21
22
  const isActive = pathname === item.href;
22
- return ((0, jsx_runtime_1.jsxs)(link_1.default, { href: item.href, className: "relative inline-flex items-center justify-center w-[68px] h-9 text-xs font-medium transition-colors duration-300 group", style: { minWidth: '68px', maxWidth: '68px' }, children: [(0, jsx_runtime_1.jsx)("span", { className: `absolute inset-0 flex items-center justify-center transition-colors duration-300 ${isActive
23
+ return ((0, jsx_runtime_1.jsxs)(link_1.default, { href: item.href, className: "relative inline-flex items-center justify-center min-w-[68px] px-3 h-9 text-xs font-medium transition-colors duration-300 group", children: [(0, jsx_runtime_1.jsx)("span", { className: `absolute inset-0 flex items-center justify-center transition-colors duration-300 ${isActive
23
24
  ? 'text-emerald-700 font-semibold'
24
25
  : 'text-slate-500 group-hover:text-slate-700'}`, children: item.label }), (0, jsx_runtime_1.jsx)("span", { className: `absolute inset-0 rounded-lg transition-all duration-300 ${isActive
25
26
  ? 'bg-emerald-50/60'