ai-agent-router 0.2.2 → 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 (700) 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} +21 -9
  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 +3 -2
  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/cli/index.js +3 -3
  494. package/dist/src/db/database.js +19 -21
  495. package/dist/src/db/queries.js +21 -0
  496. package/dist/src/server/tokenizer.js +215 -0
  497. package/package.json +3 -2
  498. package/src/app/api/tokenizer/history/route.ts +63 -0
  499. package/src/app/api/tokenizer/test/route.ts +151 -0
  500. package/src/app/components/Nav.tsx +2 -2
  501. package/src/app/tokenizer/page.tsx +813 -0
  502. package/src/cli/index.ts +4 -4
  503. package/src/db/database.ts +18 -25
  504. package/src/db/queries.ts +22 -0
  505. package/src/server/tokenizer.ts +285 -0
  506. package/.next/build/chunks/[root-of-the-server]__44695d76._.js.map +0 -11
  507. package/.next/build/chunks/[root-of-the-server]__6d51cb5d._.js.map +0 -8
  508. package/.next/server/chunks/[root-of-the-server]__001d5756._.js +0 -3
  509. package/.next/server/chunks/[root-of-the-server]__001d5756._.js.map +0 -1
  510. package/.next/server/chunks/[root-of-the-server]__05f8578b._.js +0 -3
  511. package/.next/server/chunks/[root-of-the-server]__05f8578b._.js.map +0 -1
  512. package/.next/server/chunks/[root-of-the-server]__1480f018._.js +0 -3
  513. package/.next/server/chunks/[root-of-the-server]__1480f018._.js.map +0 -1
  514. package/.next/server/chunks/[root-of-the-server]__1909f3aa._.js +0 -3
  515. package/.next/server/chunks/[root-of-the-server]__1909f3aa._.js.map +0 -1
  516. package/.next/server/chunks/[root-of-the-server]__1d4b7fc5._.js +0 -3
  517. package/.next/server/chunks/[root-of-the-server]__1d4b7fc5._.js.map +0 -1
  518. package/.next/server/chunks/[root-of-the-server]__33fec899._.js +0 -3
  519. package/.next/server/chunks/[root-of-the-server]__33fec899._.js.map +0 -1
  520. package/.next/server/chunks/[root-of-the-server]__372ef2bf._.js +0 -3
  521. package/.next/server/chunks/[root-of-the-server]__372ef2bf._.js.map +0 -1
  522. package/.next/server/chunks/[root-of-the-server]__3a204d25._.js +0 -3
  523. package/.next/server/chunks/[root-of-the-server]__3a204d25._.js.map +0 -1
  524. package/.next/server/chunks/[root-of-the-server]__3aaf963c._.js +0 -3
  525. package/.next/server/chunks/[root-of-the-server]__3aaf963c._.js.map +0 -1
  526. package/.next/server/chunks/[root-of-the-server]__43810962._.js +0 -3
  527. package/.next/server/chunks/[root-of-the-server]__43810962._.js.map +0 -1
  528. package/.next/server/chunks/[root-of-the-server]__4a8f9bc7._.js +0 -3
  529. package/.next/server/chunks/[root-of-the-server]__4a8f9bc7._.js.map +0 -1
  530. package/.next/server/chunks/[root-of-the-server]__55cd88b8._.js +0 -3
  531. package/.next/server/chunks/[root-of-the-server]__55cd88b8._.js.map +0 -1
  532. package/.next/server/chunks/[root-of-the-server]__59aacd30._.js +0 -21
  533. package/.next/server/chunks/[root-of-the-server]__59aacd30._.js.map +0 -1
  534. package/.next/server/chunks/[root-of-the-server]__5e8276bc._.js +0 -3
  535. package/.next/server/chunks/[root-of-the-server]__5e8276bc._.js.map +0 -1
  536. package/.next/server/chunks/[root-of-the-server]__64356cb2._.js +0 -3
  537. package/.next/server/chunks/[root-of-the-server]__64356cb2._.js.map +0 -1
  538. package/.next/server/chunks/[root-of-the-server]__6ce199d2._.js +0 -3
  539. package/.next/server/chunks/[root-of-the-server]__6ce199d2._.js.map +0 -1
  540. package/.next/server/chunks/[root-of-the-server]__760eaa16._.js +0 -3
  541. package/.next/server/chunks/[root-of-the-server]__760eaa16._.js.map +0 -1
  542. package/.next/server/chunks/[root-of-the-server]__772134c6._.js +0 -3
  543. package/.next/server/chunks/[root-of-the-server]__772134c6._.js.map +0 -1
  544. package/.next/server/chunks/[root-of-the-server]__7b77f523._.js +0 -3
  545. package/.next/server/chunks/[root-of-the-server]__7b77f523._.js.map +0 -1
  546. package/.next/server/chunks/[root-of-the-server]__7c298a19._.js +0 -3
  547. package/.next/server/chunks/[root-of-the-server]__7c298a19._.js.map +0 -1
  548. package/.next/server/chunks/[root-of-the-server]__85540228._.js +0 -3
  549. package/.next/server/chunks/[root-of-the-server]__85540228._.js.map +0 -1
  550. package/.next/server/chunks/[root-of-the-server]__94fe8d3c._.js +0 -3
  551. package/.next/server/chunks/[root-of-the-server]__94fe8d3c._.js.map +0 -1
  552. package/.next/server/chunks/[root-of-the-server]__97622908._.js +0 -3
  553. package/.next/server/chunks/[root-of-the-server]__97622908._.js.map +0 -1
  554. package/.next/server/chunks/[root-of-the-server]__a02e6618._.js +0 -3
  555. package/.next/server/chunks/[root-of-the-server]__a02e6618._.js.map +0 -1
  556. package/.next/server/chunks/[root-of-the-server]__a32a20a7._.js +0 -3
  557. package/.next/server/chunks/[root-of-the-server]__a32a20a7._.js.map +0 -1
  558. package/.next/server/chunks/[root-of-the-server]__a719d045._.js +0 -3
  559. package/.next/server/chunks/[root-of-the-server]__a719d045._.js.map +0 -1
  560. package/.next/server/chunks/[root-of-the-server]__af5b556a._.js +0 -3
  561. package/.next/server/chunks/[root-of-the-server]__af5b556a._.js.map +0 -1
  562. package/.next/server/chunks/[root-of-the-server]__c1b4b601._.js.map +0 -1
  563. package/.next/server/chunks/[root-of-the-server]__cafe113e._.js +0 -3
  564. package/.next/server/chunks/[root-of-the-server]__cafe113e._.js.map +0 -1
  565. package/.next/server/chunks/[root-of-the-server]__ccfc7f1d._.js +0 -3
  566. package/.next/server/chunks/[root-of-the-server]__ccfc7f1d._.js.map +0 -1
  567. package/.next/server/chunks/[root-of-the-server]__dc8b0bed._.js +0 -3
  568. package/.next/server/chunks/[root-of-the-server]__dc8b0bed._.js.map +0 -1
  569. package/.next/server/chunks/[root-of-the-server]__f0461b8d._.js +0 -3
  570. package/.next/server/chunks/[root-of-the-server]__f0461b8d._.js.map +0 -1
  571. package/.next/server/chunks/[root-of-the-server]__f8949f88._.js +0 -3
  572. package/.next/server/chunks/[root-of-the-server]__f8949f88._.js.map +0 -1
  573. package/.next/server/chunks/_b48847f5._.js +0 -3
  574. package/.next/server/chunks/ce889_server_app_api_ide_openclaw_available-models_route_actions_e568e70b.js +0 -3
  575. package/.next/server/chunks/ce889_server_app_api_ide_opencode_available-models_route_actions_95230db3.js +0 -3
  576. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_4be65264.js.map +0 -1
  577. package/.next/server/chunks/ssr/[root-of-the-server]__083d944d._.js +0 -3
  578. package/.next/server/chunks/ssr/[root-of-the-server]__083d944d._.js.map +0 -1
  579. package/.next/server/chunks/ssr/[root-of-the-server]__15600e29._.js +0 -3
  580. package/.next/server/chunks/ssr/[root-of-the-server]__15600e29._.js.map +0 -1
  581. package/.next/server/chunks/ssr/[root-of-the-server]__1836f866._.js +0 -3
  582. package/.next/server/chunks/ssr/[root-of-the-server]__1836f866._.js.map +0 -1
  583. package/.next/server/chunks/ssr/[root-of-the-server]__256a03fe._.js +0 -3
  584. package/.next/server/chunks/ssr/[root-of-the-server]__256a03fe._.js.map +0 -1
  585. package/.next/server/chunks/ssr/[root-of-the-server]__31fde618._.js +0 -3
  586. package/.next/server/chunks/ssr/[root-of-the-server]__31fde618._.js.map +0 -1
  587. package/.next/server/chunks/ssr/[root-of-the-server]__523c120c._.js +0 -3
  588. package/.next/server/chunks/ssr/[root-of-the-server]__523c120c._.js.map +0 -1
  589. package/.next/server/chunks/ssr/[root-of-the-server]__70a81394._.js +0 -3
  590. package/.next/server/chunks/ssr/[root-of-the-server]__70a81394._.js.map +0 -1
  591. package/.next/server/chunks/ssr/[root-of-the-server]__81937253._.js +0 -3
  592. package/.next/server/chunks/ssr/[root-of-the-server]__81937253._.js.map +0 -1
  593. package/.next/server/chunks/ssr/[root-of-the-server]__976ad963._.js +0 -3
  594. package/.next/server/chunks/ssr/[root-of-the-server]__976ad963._.js.map +0 -1
  595. package/.next/server/chunks/ssr/[root-of-the-server]__af2ad6aa._.js +0 -3
  596. package/.next/server/chunks/ssr/[root-of-the-server]__af2ad6aa._.js.map +0 -1
  597. package/.next/server/chunks/ssr/[root-of-the-server]__b9356576._.js +0 -4
  598. package/.next/server/chunks/ssr/[root-of-the-server]__b9356576._.js.map +0 -1
  599. package/.next/server/chunks/ssr/[root-of-the-server]__ccb6a4da._.js +0 -3
  600. package/.next/server/chunks/ssr/[root-of-the-server]__ccb6a4da._.js.map +0 -1
  601. package/.next/server/chunks/ssr/[root-of-the-server]__cfa2d991._.js +0 -3
  602. package/.next/server/chunks/ssr/[root-of-the-server]__cfa2d991._.js.map +0 -1
  603. package/.next/server/chunks/ssr/[root-of-the-server]__f437da88._.js +0 -3
  604. package/.next/server/chunks/ssr/[root-of-the-server]__f437da88._.js.map +0 -1
  605. package/.next/server/chunks/ssr/[root-of-the-server]__f92001a5._.js.map +0 -1
  606. package/.next/server/chunks/ssr/_06262cbd._.js +0 -4
  607. package/.next/server/chunks/ssr/_06262cbd._.js.map +0 -1
  608. package/.next/server/chunks/ssr/_0cd72da5._.js +0 -4
  609. package/.next/server/chunks/ssr/_0cd72da5._.js.map +0 -1
  610. package/.next/server/chunks/ssr/_4828a6d2._.js +0 -4
  611. package/.next/server/chunks/ssr/_4828a6d2._.js.map +0 -1
  612. package/.next/server/chunks/ssr/_69468f4c._.js +0 -3
  613. package/.next/server/chunks/ssr/_69468f4c._.js.map +0 -1
  614. package/.next/server/chunks/ssr/_93850476._.js +0 -6
  615. package/.next/server/chunks/ssr/_93850476._.js.map +0 -1
  616. package/.next/server/chunks/ssr/_c1309523._.js +0 -4
  617. package/.next/server/chunks/ssr/_c1309523._.js.map +0 -1
  618. package/.next/server/chunks/ssr/_f7d273e3._.js +0 -4
  619. package/.next/server/chunks/ssr/_f7d273e3._.js.map +0 -1
  620. package/.next/server/chunks/ssr/_next-internal_server_app_page_actions_39d4fc33.js +0 -3
  621. package/.next/server/chunks/ssr/node_modules_next_dist_08570d7f._.js +0 -4
  622. package/.next/server/chunks/ssr/node_modules_next_dist_08570d7f._.js.map +0 -1
  623. package/.next/server/chunks/ssr/node_modules_next_dist_174ae28d._.js +0 -10
  624. package/.next/server/chunks/ssr/node_modules_next_dist_174ae28d._.js.map +0 -1
  625. package/.next/server/chunks/ssr/node_modules_next_dist_27457240._.js +0 -6
  626. package/.next/server/chunks/ssr/node_modules_next_dist_27457240._.js.map +0 -1
  627. package/.next/server/chunks/ssr/node_modules_next_dist_4b63a0e1._.js +0 -3
  628. package/.next/server/chunks/ssr/node_modules_next_dist_4b63a0e1._.js.map +0 -1
  629. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_ece394eb.js.map +0 -1
  630. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_65a7265e.js +0 -4
  631. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_65a7265e.js.map +0 -1
  632. package/.next/server/chunks/ssr/node_modules_next_dist_f9713a08._.js +0 -3
  633. package/.next/server/chunks/ssr/node_modules_next_dist_f9713a08._.js.map +0 -1
  634. package/.next/server/chunks/ssr/src_app_ide_page_tsx_8962793b._.js +0 -3
  635. package/.next/server/chunks/ssr/src_app_logs_page_tsx_7b7b7b83._.js +0 -3
  636. package/.next/server/chunks/ssr/src_app_models_page_tsx_ed71d32e._.js +0 -3
  637. package/.next/server/chunks/ssr/src_app_providers_page_tsx_eb8b5137._.js +0 -3
  638. package/.next/static/cf2SWIkI5HVbnDjLExI42/_clientMiddlewareManifest.json +0 -1
  639. package/.next/static/chunks/5663c8696095f277.js +0 -1
  640. package/.next/static/chunks/64f547b3bcd3aef4.js +0 -1
  641. package/.next/static/chunks/6992685fe009e8fd.css +0 -1
  642. package/.next/static/chunks/6e0dee5b6681763c.js +0 -1
  643. package/.next/static/chunks/6f7efe5271343778.js +0 -1
  644. package/.next/static/chunks/75f76753fd97c8fd.js +0 -1
  645. package/.next/static/chunks/7c8b7cbb3339f139.js +0 -1
  646. package/.next/static/chunks/8ccc14e022ff6de3.js +0 -1
  647. package/.next/static/chunks/8cf1e5f00ebaea52.js +0 -1
  648. package/.next/static/chunks/a6dad97d9634a72d.js.map +0 -1
  649. package/.next/static/chunks/a7f539bf6487f4ff.js +0 -5
  650. package/.next/static/chunks/a89fdf03c5b0dfbd.js +0 -1
  651. package/.next/static/chunks/d2be314c3ece3fbe.js +0 -1
  652. package/.next/static/chunks/f2f58a7e93290fbb.js +0 -1
  653. package/.next/static/chunks/ff1a16fafef87110.js +0 -1
  654. package/.next/static/chunks/turbopack-fdb839c72e10c2ea.js +0 -4
  655. /package/.next/build/chunks/{[turbopack-node]_transforms_postcss_ts_df7a5b11._.js.map → [turbopack-node]_transforms_postcss_ts_0nnejqq._.js.map} +0 -0
  656. /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
  657. /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
  658. /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
  659. /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
  660. /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
  661. /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
  662. /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
  663. /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
  664. /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
  665. /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
  666. /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
  667. /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
  668. /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
  669. /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
  670. /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
  671. /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
  672. /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
  673. /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
  674. /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
  675. /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
  676. /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
  677. /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
  678. /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
  679. /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
  680. /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
  681. /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
  682. /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
  683. /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
  684. /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
  685. /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
  686. /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
  687. /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
  688. /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
  689. /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
  690. /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
  691. /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
  692. /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
  693. /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
  694. /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
  695. /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
  696. /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
  697. /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
  698. /package/.next/static/{cf2SWIkI5HVbnDjLExI42 → XHnu7Z1vWSrgmneps8rX4}/_buildManifest.js +0 -0
  699. /package/.next/static/{cf2SWIkI5HVbnDjLExI42 → XHnu7Z1vWSrgmneps8rX4}/_ssgManifest.js +0 -0
  700. /package/.next/static/chunks/{a6dad97d9634a72d.js → 03~yq9q893hmn.js} +0 -0
package/src/cli/index.ts CHANGED
@@ -6,7 +6,7 @@ import path from 'path';
6
6
  import fs from 'fs';
7
7
  import os from 'os';
8
8
  import http from 'http';
9
- import { getDatabase } from '../db/database';
9
+ import { getDatabase, getSqlJsWasmPath } from '../db/database';
10
10
  import { getConfig, setConfig, setServiceStatus, updateServiceStatus } from '../db/queries';
11
11
 
12
12
  const program = new Command();
@@ -119,7 +119,7 @@ program
119
119
 
120
120
  if (background) {
121
121
  ensureAarDir();
122
- const envBase = { ...process.env, NODE_ENV: 'production' as const };
122
+ const envBase = { ...process.env, NODE_ENV: 'production' as const, SQLJS_WASM_PATH: getSqlJsWasmPath() };
123
123
 
124
124
  const uiProc: ChildProcess = spawn(process.execPath, [serverPath, 'start', '-p', uiPort.toString()], {
125
125
  cwd: packageRoot,
@@ -168,7 +168,7 @@ program
168
168
  const uiProcess = spawn(process.execPath, [serverPath, 'start', '-p', uiPort.toString()], {
169
169
  cwd: packageRoot,
170
170
  stdio: ['ignore', 'inherit', 'inherit'],
171
- env: { ...process.env, PORT: uiPort.toString(), NODE_ENV: 'production' },
171
+ env: { ...process.env, PORT: uiPort.toString(), NODE_ENV: 'production', SQLJS_WASM_PATH: getSqlJsWasmPath() },
172
172
  });
173
173
 
174
174
  uiProcess.on('error', (error: Error) => {
@@ -180,7 +180,7 @@ program
180
180
  ? spawn(process.execPath, [gatewayScriptPath, '--port', String(gatewayPort)], {
181
181
  cwd: packageRoot,
182
182
  stdio: ['ignore', 'pipe', 'pipe'],
183
- env: { ...process.env, NODE_ENV: 'production' },
183
+ env: { ...process.env, NODE_ENV: 'production', SQLJS_WASM_PATH: getSqlJsWasmPath() },
184
184
  })
185
185
  : null;
186
186
 
@@ -14,33 +14,26 @@ function generateRandomApiKey(): string {
14
14
  return `aar-${crypto.randomBytes(16).toString('hex')}`;
15
15
  }
16
16
 
17
- // Use hardcoded path for the built/distributed WASM file
18
- // Next.js copies sql-wasm.wasm to its chunks directory
19
- function findSqlJsWasmPath(): string {
20
- // Try Next.js chunks directory first (works in dev and production)
21
- const nextChunksPath = path.join(process.cwd(), '.next', 'dev', 'server', 'chunks', 'sql-wasm.wasm');
22
- if (fs.existsSync(nextChunksPath)) {
23
- return nextChunksPath;
24
- }
25
-
26
- // Try production .next directory
27
- const prodChunksPath = path.join(process.cwd(), '.next', 'server', 'chunks', 'sql-wasm.wasm');
28
- if (fs.existsSync(prodChunksPath)) {
29
- return prodChunksPath;
30
- }
31
-
32
- // Try node_modules as fallback
33
- const nodeModulesPath = path.join(process.cwd(), 'node_modules', 'sql.js', 'dist', 'sql-wasm.wasm');
34
- if (fs.existsSync(nodeModulesPath)) {
35
- return nodeModulesPath;
17
+ // sql.js WASM 路径解析(支持 CLI 全局安装、本地开发、Next.js 进程)
18
+ let _wasmPath: string | null = null;
19
+ export function getSqlJsWasmPath(): string {
20
+ if (!_wasmPath) {
21
+ // 1. 优先使用环境变量(CLI 启动的 Next.js 进程)
22
+ if (process.env.SQLJS_WASM_PATH) {
23
+ _wasmPath = process.env.SQLJS_WASM_PATH;
24
+ }
25
+ // 2. Next.js 开发/生产模式:使用 cwd 相对路径
26
+ else if (fs.existsSync(path.join(process.cwd(), 'node_modules', 'sql.js', 'dist', 'sql-wasm.wasm'))) {
27
+ _wasmPath = path.join(process.cwd(), 'node_modules', 'sql.js', 'dist', 'sql-wasm.wasm');
28
+ }
29
+ // 3. CLI 模式(tsc 编译后):通过 require.resolve 定位
30
+ else {
31
+ _wasmPath = path.join(path.dirname(require.resolve('sql.js')), 'sql-wasm.wasm');
32
+ }
36
33
  }
37
-
38
- // Use the most likely location as default
39
- return nodeModulesPath;
34
+ return _wasmPath;
40
35
  }
41
36
 
42
- const SQLJS_WASM_PATH = findSqlJsWasmPath();
43
-
44
37
  let dbInstance: Database | null = null;
45
38
  let sqlJsInstance: any = null;
46
39
  let lastLoadMtimeMs: number = 0;
@@ -66,7 +59,7 @@ async function initSqlJsEngine(): Promise<any> {
66
59
  sqlJsInstance = await initSqlJs({
67
60
  locateFile: (file: string) => {
68
61
  if (file.endsWith('.wasm')) {
69
- return SQLJS_WASM_PATH;
62
+ return getSqlJsWasmPath();
70
63
  }
71
64
  return `https://sql.js.org/dist/${file}`;
72
65
  }
package/src/db/queries.ts CHANGED
@@ -311,6 +311,28 @@ export async function deleteAllRequestLogs(): Promise<number> {
311
311
  return result.changes;
312
312
  }
313
313
 
314
+ export async function getTokenizerLogs(limit: number = 50, offset: number = 0): Promise<any[]> {
315
+ return await queryAll<any>(`
316
+ SELECT l.*, m.name as model_name, m.model_id, p.name as provider_name
317
+ FROM request_logs l
318
+ LEFT JOIN models m ON l.model_id = m.id
319
+ LEFT JOIN providers p ON m.provider_id = p.id
320
+ WHERE l.request_path = '/tokenizer/test'
321
+ ORDER BY l.created_at DESC
322
+ LIMIT ? OFFSET ?
323
+ `, [limit, offset]);
324
+ }
325
+
326
+ export async function getTokenizerLogCount(): Promise<number> {
327
+ const result = await queryOne<{ count: number }>(`
328
+ SELECT COUNT(*) as count
329
+ FROM request_logs
330
+ WHERE request_path = '/tokenizer/test'
331
+ `);
332
+
333
+ return result?.count || 0;
334
+ }
335
+
314
336
  // Config queries
315
337
  export async function getConfig(key: string): Promise<Config | null> {
316
338
  return await queryOne<Config>('SELECT * FROM config WHERE key = ?', [key]);
@@ -0,0 +1,285 @@
1
+ import type { Model, Provider } from '@/db/schema';
2
+ import type { GatewayRequest, GatewayResponse } from '@/server/providers/types';
3
+ import { getProviderAdapter } from '@/server/providers';
4
+
5
+ export type TokenizerMode = 'measure' | 'translate';
6
+ export type SupportedProtocol = Provider['protocol'];
7
+
8
+ export interface NormalizedUsage {
9
+ input_tokens: number;
10
+ output_tokens: number;
11
+ total_tokens: number;
12
+ estimated: boolean;
13
+ }
14
+
15
+ export interface TokenizerResult {
16
+ text: string;
17
+ usage: NormalizedUsage;
18
+ raw: any;
19
+ }
20
+
21
+ export function estimateTokenCount(text: string): number {
22
+ const normalized = (text || '').trim();
23
+ if (!normalized) return 0;
24
+ return Math.max(1, Math.ceil(normalized.length / 4));
25
+ }
26
+
27
+ export function buildTokenizerRequest(args: {
28
+ protocol: SupportedProtocol;
29
+ modelId: string;
30
+ mode: TokenizerMode;
31
+ sourceLanguage: string;
32
+ targetLanguage?: string;
33
+ text: string;
34
+ temperature?: number;
35
+ topP?: number;
36
+ }): GatewayRequest {
37
+ const {
38
+ protocol,
39
+ modelId,
40
+ mode,
41
+ sourceLanguage,
42
+ targetLanguage,
43
+ text,
44
+ temperature = 0,
45
+ topP = 1,
46
+ } = args;
47
+ const exactRepeatInstruction =
48
+ 'Repeat the user input exactly as provided. Output only the original user input with no additions, no deletions, no translations, no explanations, no formatting changes, and no extra quotes.';
49
+
50
+ if (protocol === 'openai') {
51
+ const messages =
52
+ mode === 'measure'
53
+ ? [
54
+ { role: 'system', content: exactRepeatInstruction },
55
+ { role: 'user', content: text },
56
+ ]
57
+ : [
58
+ {
59
+ role: 'system',
60
+ content: `Translate the user input from ${sourceLanguage} to ${targetLanguage}. Return only the translated text.`,
61
+ },
62
+ { role: 'user', content: text },
63
+ ];
64
+
65
+ return {
66
+ method: 'POST',
67
+ path: '/v1/chat/completions',
68
+ headers: {
69
+ 'Content-Type': 'application/json',
70
+ },
71
+ query: {},
72
+ body: {
73
+ model: modelId,
74
+ messages,
75
+ stream: false,
76
+ temperature,
77
+ top_p: topP,
78
+ },
79
+ };
80
+ }
81
+
82
+ if (protocol === 'anthropic') {
83
+ const messages =
84
+ mode === 'measure'
85
+ ? [{ role: 'user', content: text }]
86
+ : [
87
+ {
88
+ role: 'user',
89
+ content: `Translate the following ${sourceLanguage} text into ${targetLanguage}. Return only the translated text.\n\n${text}`,
90
+ },
91
+ ];
92
+
93
+ return {
94
+ method: 'POST',
95
+ path: '/v1/messages',
96
+ headers: {
97
+ 'Content-Type': 'application/json',
98
+ },
99
+ query: {},
100
+ body: {
101
+ model: modelId,
102
+ system: mode === 'measure' ? exactRepeatInstruction : undefined,
103
+ messages,
104
+ temperature,
105
+ top_p: topP,
106
+ },
107
+ };
108
+ }
109
+
110
+ return {
111
+ method: 'POST',
112
+ path: `/v1/models/${modelId}:generateContent`,
113
+ headers: {
114
+ 'Content-Type': 'application/json',
115
+ },
116
+ query: {},
117
+ body: {
118
+ contents: [
119
+ {
120
+ parts: [
121
+ {
122
+ text:
123
+ mode === 'measure'
124
+ ? text
125
+ : `Translate the following ${sourceLanguage} text into ${targetLanguage}. Return only the translated text.\n\n${text}`,
126
+ },
127
+ ],
128
+ },
129
+ ],
130
+ systemInstruction: {
131
+ parts: [
132
+ {
133
+ text: mode === 'measure' ? exactRepeatInstruction : 'You are a precise translator.',
134
+ },
135
+ ],
136
+ },
137
+ generationConfig: {
138
+ temperature,
139
+ topP,
140
+ },
141
+ },
142
+ };
143
+ }
144
+
145
+ export async function runTokenizerRequest(
146
+ model: Model & { provider: Provider },
147
+ request: GatewayRequest,
148
+ inputText: string
149
+ ): Promise<TokenizerResult> {
150
+ const adapter = getProviderAdapter(model.provider.protocol);
151
+ const response = await adapter.forwardRequest(model, request);
152
+
153
+ if (response.status < 200 || response.status >= 300) {
154
+ const errorMessage = extractErrorMessage(response) || 'Tokenizer request failed';
155
+ throw new Error(errorMessage);
156
+ }
157
+
158
+ const text = extractResponseText(model.provider.protocol, response.body);
159
+ const usage = normalizeUsage(model.provider.protocol, response.body, inputText, text);
160
+
161
+ return {
162
+ text,
163
+ usage,
164
+ raw: response.body,
165
+ };
166
+ }
167
+
168
+ function extractErrorMessage(response: GatewayResponse): string | null {
169
+ const { body } = response;
170
+ if (!body) return null;
171
+ if (typeof body === 'string') return body;
172
+ if (body.error?.message) return body.error.message;
173
+ if (body.message) return body.message;
174
+ return null;
175
+ }
176
+
177
+ export function extractResponseText(protocol: SupportedProtocol, body: any): string {
178
+ if (!body) return '';
179
+
180
+ if (protocol === 'openai') {
181
+ return (
182
+ body?.choices?.[0]?.message?.content ??
183
+ body?.choices?.[0]?.text ??
184
+ ''
185
+ ).toString();
186
+ }
187
+
188
+ if (protocol === 'anthropic') {
189
+ const content = body?.content;
190
+ if (Array.isArray(content)) {
191
+ return content
192
+ .map((item: any) => item?.text || '')
193
+ .join('\n');
194
+ }
195
+ return '';
196
+ }
197
+
198
+ const candidateText =
199
+ body?.candidates?.[0]?.content?.parts?.map((part: any) => part?.text || '').join('\n') ??
200
+ body?.text ??
201
+ '';
202
+
203
+ return candidateText.toString();
204
+ }
205
+
206
+ export function normalizeUsage(
207
+ protocol: SupportedProtocol,
208
+ body: any,
209
+ inputText: string,
210
+ outputText: string
211
+ ): NormalizedUsage {
212
+ const promptEstimate = estimateTokenCount(inputText);
213
+ const completionEstimate = estimateTokenCount(outputText);
214
+
215
+ if (protocol === 'openai') {
216
+ const usage = body?.usage;
217
+ if (usage) {
218
+ const input = toNumber(usage.prompt_tokens ?? usage.input_tokens);
219
+ const output = toNumber(usage.completion_tokens ?? usage.output_tokens);
220
+ const total = toNumber(usage.total_tokens) || input + output;
221
+
222
+ if (input || output || total) {
223
+ return {
224
+ input_tokens: input,
225
+ output_tokens: output,
226
+ total_tokens: total,
227
+ estimated: false,
228
+ };
229
+ }
230
+ }
231
+ }
232
+
233
+ if (protocol === 'anthropic') {
234
+ const usage = body?.usage;
235
+ if (usage) {
236
+ const input = toNumber(usage.input_tokens ?? usage.prompt_tokens);
237
+ const output = toNumber(usage.output_tokens ?? usage.completion_tokens);
238
+ const total = input + output;
239
+
240
+ if (input || output) {
241
+ return {
242
+ input_tokens: input,
243
+ output_tokens: output,
244
+ total_tokens: total,
245
+ estimated: false,
246
+ };
247
+ }
248
+ }
249
+ }
250
+
251
+ if (protocol === 'gemini') {
252
+ const usage = body?.usageMetadata ?? body?.usage;
253
+ if (usage) {
254
+ const input = toNumber(
255
+ usage.promptTokenCount ?? usage.input_tokens ?? usage.prompt_tokens
256
+ );
257
+ const output = toNumber(
258
+ usage.candidatesTokenCount ?? usage.output_tokens ?? usage.completion_tokens
259
+ );
260
+ const total =
261
+ toNumber(usage.totalTokenCount ?? usage.total_tokens) || input + output;
262
+
263
+ if (input || output || total) {
264
+ return {
265
+ input_tokens: input,
266
+ output_tokens: output,
267
+ total_tokens: total,
268
+ estimated: false,
269
+ };
270
+ }
271
+ }
272
+ }
273
+
274
+ return {
275
+ input_tokens: promptEstimate,
276
+ output_tokens: completionEstimate,
277
+ total_tokens: promptEstimate + completionEstimate,
278
+ estimated: true,
279
+ };
280
+ }
281
+
282
+ function toNumber(value: unknown): number {
283
+ const parsed = Number(value);
284
+ return Number.isFinite(parsed) ? parsed : 0;
285
+ }
@@ -1,11 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sections": [
5
- {"offset": {"line": 3, "column": 0}, "map": {"version":3,"sources":["turbopack:///[turbopack-node]/globals.ts"],"sourcesContent":["// @ts-ignore\nprocess.turbopack = {}\n"],"names":[],"mappings":"AAAA,aAAa;AACb,QAAQ,SAAS,GAAG,CAAC"}},
6
- {"offset": {"line": 21, "column": 0}, "map": {"version":3,"sources":["turbopack:///[turbopack-node]/compiled/stacktrace-parser/index.js"],"sourcesContent":["if (typeof __nccwpck_require__ !== \"undefined\")\n __nccwpck_require__.ab = __dirname + \"/\";\n\nvar n = \"<unknown>\";\nexport function parse(e) {\n var r = e.split(\"\\n\");\n return r.reduce(function (e, r) {\n var n =\n parseChrome(r) ||\n parseWinjs(r) ||\n parseGecko(r) ||\n parseNode(r) ||\n parseJSC(r);\n if (n) {\n e.push(n);\n }\n return e;\n }, []);\n}\nvar a =\n /^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nvar l = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\nfunction parseChrome(e) {\n var r = a.exec(e);\n if (!r) {\n return null;\n }\n var u = r[2] && r[2].indexOf(\"native\") === 0;\n var t = r[2] && r[2].indexOf(\"eval\") === 0;\n var i = l.exec(r[2]);\n if (t && i != null) {\n r[2] = i[1];\n r[3] = i[2];\n r[4] = i[3];\n }\n return {\n file: !u ? r[2] : null,\n methodName: r[1] || n,\n arguments: u ? [r[2]] : [],\n lineNumber: r[3] ? +r[3] : null,\n column: r[4] ? +r[4] : null,\n };\n}\nvar u =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nfunction parseWinjs(e) {\n var r = u.exec(e);\n if (!r) {\n return null;\n }\n return {\n file: r[2],\n methodName: r[1] || n,\n arguments: [],\n lineNumber: +r[3],\n column: r[4] ? +r[4] : null,\n };\n}\nvar t =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar i = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nfunction parseGecko(e) {\n var r = t.exec(e);\n if (!r) {\n return null;\n }\n var a = r[3] && r[3].indexOf(\" > eval\") > -1;\n var l = i.exec(r[3]);\n if (a && l != null) {\n r[3] = l[1];\n r[4] = l[2];\n r[5] = null;\n }\n return {\n file: r[3],\n methodName: r[1] || n,\n arguments: r[2] ? r[2].split(\",\") : [],\n lineNumber: r[4] ? +r[4] : null,\n column: r[5] ? +r[5] : null,\n };\n}\nvar s = /^\\s*(?:([^@]*)(?:\\((.*?)\\))?@)?(\\S.*?):(\\d+)(?::(\\d+))?\\s*$/i;\nfunction parseJSC(e) {\n var r = s.exec(e);\n if (!r) {\n return null;\n }\n return {\n file: r[3],\n methodName: r[1] || n,\n arguments: [],\n lineNumber: +r[4],\n column: r[5] ? +r[5] : null,\n };\n}\nvar o =\n /^\\s*at (?:((?:\\[object object\\])?[^\\\\/]+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nfunction parseNode(e) {\n var r = o.exec(e);\n if (!r) {\n return null;\n }\n return {\n file: r[2],\n methodName: r[1] || n,\n arguments: [],\n lineNumber: +r[3],\n column: r[4] ? +r[4] : null,\n };\n}\n"],"names":[],"mappings":";;;;AAAA,IAAI,OAAO,wBAAwB,aACjC,oBAAoB,EAAE,GAAG,uEAAY;AAEvC,IAAI,IAAI;AACD,SAAS,MAAM,CAAC;IACrB,IAAI,IAAI,EAAE,KAAK,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,SAAU,CAAC,EAAE,CAAC;QAC5B,IAAI,IACF,YAAY,MACZ,WAAW,MACX,WAAW,MACX,UAAU,MACV,SAAS;QACX,IAAI,GAAG;YACL,EAAE,IAAI,CAAC;QACT;QACA,OAAO;IACT,GAAG,EAAE;AACP;AACA,IAAI,IACF;AACF,IAAI,IAAI;AACR,SAAS,YAAY,CAAC;IACpB,IAAI,IAAI,EAAE,IAAI,CAAC;IACf,IAAI,CAAC,GAAG;QACN,OAAO;IACT;IACA,IAAI,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc;IAC3C,IAAI,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY;IACzC,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE;IACnB,IAAI,KAAK,KAAK,MAAM;QAClB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;QACX,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;QACX,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;IACb;IACA,OAAO;QACL,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG;QAClB,YAAY,CAAC,CAAC,EAAE,IAAI;QACpB,WAAW,IAAI;YAAC,CAAC,CAAC,EAAE;SAAC,GAAG,EAAE;QAC1B,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;QAC3B,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;IACzB;AACF;AACA,IAAI,IACF;AACF,SAAS,WAAW,CAAC;IACnB,IAAI,IAAI,EAAE,IAAI,CAAC;IACf,IAAI,CAAC,GAAG;QACN,OAAO;IACT;IACA,OAAO;QACL,MAAM,CAAC,CAAC,EAAE;QACV,YAAY,CAAC,CAAC,EAAE,IAAI;QACpB,WAAW,EAAE;QACb,YAAY,CAAC,CAAC,CAAC,EAAE;QACjB,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;IACzB;AACF;AACA,IAAI,IACF;AACF,IAAI,IAAI;AACR,SAAS,WAAW,CAAC;IACnB,IAAI,IAAI,EAAE,IAAI,CAAC;IACf,IAAI,CAAC,GAAG;QACN,OAAO;IACT;IACA,IAAI,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC;IAC3C,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE;IACnB,IAAI,KAAK,KAAK,MAAM;QAClB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;QACX,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;QACX,CAAC,CAAC,EAAE,GAAG;IACT;IACA,OAAO;QACL,MAAM,CAAC,CAAC,EAAE;QACV,YAAY,CAAC,CAAC,EAAE,IAAI;QACpB,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE;QACtC,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;QAC3B,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;IACzB;AACF;AACA,IAAI,IAAI;AACR,SAAS,SAAS,CAAC;IACjB,IAAI,IAAI,EAAE,IAAI,CAAC;IACf,IAAI,CAAC,GAAG;QACN,OAAO;IACT;IACA,OAAO;QACL,MAAM,CAAC,CAAC,EAAE;QACV,YAAY,CAAC,CAAC,EAAE,IAAI;QACpB,WAAW,EAAE;QACb,YAAY,CAAC,CAAC,CAAC,EAAE;QACjB,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;IACzB;AACF;AACA,IAAI,IACF;AACF,SAAS,UAAU,CAAC;IAClB,IAAI,IAAI,EAAE,IAAI,CAAC;IACf,IAAI,CAAC,GAAG;QACN,OAAO;IACT;IACA,OAAO;QACL,MAAM,CAAC,CAAC,EAAE;QACV,YAAY,CAAC,CAAC,EAAE,IAAI;QACpB,WAAW,EAAE;QACb,YAAY,CAAC,CAAC,CAAC,EAAE;QACjB,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;IACzB;AACF"}},
7
- {"offset": {"line": 130, "column": 0}, "map": {"version":3,"sources":["turbopack:///[turbopack-node]/ipc/error.ts"],"sourcesContent":["// merged from next.js\n// https://github.com/vercel/next.js/blob/e657741b9908cf0044aaef959c0c4defb19ed6d8/packages/next/src/lib/is-error.ts\n// https://github.com/vercel/next.js/blob/e657741b9908cf0044aaef959c0c4defb19ed6d8/packages/next/src/shared/lib/is-plain-object.ts\n\nexport default function isError(err: unknown): err is Error {\n return (\n typeof err === 'object' && err !== null && 'name' in err && 'message' in err\n )\n}\n\nexport function getProperError(err: unknown): Error {\n if (isError(err)) {\n return err\n }\n\n if (process.env.NODE_ENV === 'development') {\n // Provide a better error message for cases where `throw undefined`\n // is called in development\n if (typeof err === 'undefined') {\n return new Error('`undefined` was thrown instead of a real error')\n }\n\n if (err === null) {\n return new Error('`null` was thrown instead of a real error')\n }\n }\n\n return new Error(isPlainObject(err) ? JSON.stringify(err) : err + '')\n}\n\nfunction getObjectClassLabel(value: any): string {\n return Object.prototype.toString.call(value)\n}\n\nfunction isPlainObject(value: any): boolean {\n if (getObjectClassLabel(value) !== '[object Object]') {\n return false\n }\n\n const prototype = Object.getPrototypeOf(value)\n\n /**\n * this used to be previously:\n *\n * `return prototype === null || prototype === Object.prototype`\n *\n * but Edge Runtime expose Object from vm, being that kind of type-checking wrongly fail.\n *\n * It was changed to the current implementation since it's resilient to serialization.\n */\n return prototype === null || prototype.hasOwnProperty('isPrototypeOf')\n}\n"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,oHAAoH;AACpH,kIAAkI;;;;;;;AAEnH,SAAS,QAAQ,GAAY;IAC1C,OACE,OAAO,QAAQ,YAAY,QAAQ,QAAQ,UAAU,OAAO,aAAa;AAE7E;AAEO,SAAS,eAAe,GAAY;IACzC,IAAI,QAAQ,MAAM;QAChB,OAAO;IACT;IAEA;;IAYA,OAAO,IAAI,MAAM,cAAc,OAAO,KAAK,SAAS,CAAC,OAAO,MAAM;AACpE;AAEA,SAAS,oBAAoB,KAAU;IACrC,OAAO,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;AACxC;AAEA,SAAS,cAAc,KAAU;IAC/B,IAAI,oBAAoB,WAAW,mBAAmB;QACpD,OAAO;IACT;IAEA,MAAM,YAAY,OAAO,cAAc,CAAC;IAExC;;;;;;;;GAQC,GACD,OAAO,cAAc,QAAQ,UAAU,cAAc,CAAC;AACxD"}},
8
- {"offset": {"line": 172, "column": 0}, "map": {"version":3,"sources":["turbopack:///[turbopack-node]/ipc/index.ts"],"sourcesContent":["import { createConnection } from 'node:net'\nimport { Writable } from 'node:stream'\nimport type { StackFrame } from '../compiled/stacktrace-parser'\nimport { parse as parseStackTrace } from '../compiled/stacktrace-parser'\nimport { getProperError } from './error'\n\nexport type StructuredError = {\n name: string\n message: string\n stack: StackFrame[]\n cause: StructuredError | undefined\n}\n\nexport function structuredError(e: unknown): StructuredError {\n e = getProperError(e)\n\n return {\n name: e.name,\n message: e.message,\n stack: typeof e.stack === 'string' ? parseStackTrace(e.stack) : [],\n cause: e.cause ? structuredError(getProperError(e.cause)) : undefined,\n }\n}\n\ntype State =\n | {\n type: 'waiting'\n }\n | {\n type: 'packet'\n length: number\n }\n\nexport type Ipc<TIncoming, TOutgoing> = {\n recv(): Promise<TIncoming>\n send(message: TOutgoing): Promise<void>\n sendError(error: Error | string): Promise<never>\n sendReady(): Promise<void>\n}\n\nfunction createIpc<TIncoming, TOutgoing>(\n port: number\n): Ipc<TIncoming, TOutgoing> {\n const socket = createConnection({\n port,\n host: '127.0.0.1',\n })\n\n /**\n * A writable stream that writes to the socket.\n * We don't write directly to the socket because we need to\n * handle backpressure and wait for the socket to be drained\n * before writing more data.\n */\n const socketWritable = new Writable({\n write(chunk, _enc, cb) {\n if (socket.write(chunk)) {\n cb()\n } else {\n socket.once('drain', cb)\n }\n },\n final(cb) {\n socket.end(cb)\n },\n })\n\n const packetQueue: Buffer[] = []\n const recvPromiseResolveQueue: Array<(message: TIncoming) => void> = []\n\n function pushPacket(packet: Buffer) {\n const recvPromiseResolve = recvPromiseResolveQueue.shift()\n if (recvPromiseResolve != null) {\n recvPromiseResolve(JSON.parse(packet.toString('utf8')) as TIncoming)\n } else {\n packetQueue.push(packet)\n }\n }\n\n let state: State = { type: 'waiting' }\n let buffer: Buffer = Buffer.alloc(0)\n socket.once('connect', () => {\n socket.setNoDelay(true)\n socket.on('data', (chunk) => {\n buffer = Buffer.concat([buffer, chunk])\n\n loop: while (true) {\n switch (state.type) {\n case 'waiting': {\n if (buffer.length >= 4) {\n const length = buffer.readUInt32BE(0)\n buffer = buffer.subarray(4)\n state = { type: 'packet', length }\n } else {\n break loop\n }\n break\n }\n case 'packet': {\n if (buffer.length >= state.length) {\n const packet = buffer.subarray(0, state.length)\n buffer = buffer.subarray(state.length)\n state = { type: 'waiting' }\n pushPacket(packet)\n } else {\n break loop\n }\n break\n }\n default:\n invariant(state, (state) => `Unknown state type: ${state?.type}`)\n }\n }\n })\n })\n // When the socket is closed, this process is no longer needed.\n // This might happen e. g. when parent process is killed or\n // node.js pool is garbage collected.\n socket.once('close', () => {\n process.exit(0)\n })\n\n // TODO(lukesandberg): some of the messages being sent are very large and contain lots\n // of redundant information. Consider adding gzip compression to our stream.\n function doSend(message: string): Promise<void> {\n return new Promise((resolve, reject) => {\n // Reserve 4 bytes for our length prefix, we will over-write after encoding.\n const packet = Buffer.from('0000' + message, 'utf8')\n packet.writeUInt32BE(packet.length - 4, 0)\n socketWritable.write(packet, (err) => {\n process.stderr.write(`TURBOPACK_OUTPUT_D\\n`)\n process.stdout.write(`TURBOPACK_OUTPUT_D\\n`)\n if (err != null) {\n reject(err)\n } else {\n resolve()\n }\n })\n })\n }\n\n function send(message: any): Promise<void> {\n return doSend(JSON.stringify(message))\n }\n function sendReady(): Promise<void> {\n return doSend('')\n }\n\n return {\n async recv() {\n const packet = packetQueue.shift()\n if (packet != null) {\n return JSON.parse(packet.toString('utf8')) as TIncoming\n }\n\n const result = await new Promise<TIncoming>((resolve) => {\n recvPromiseResolveQueue.push((result) => {\n resolve(result)\n })\n })\n\n return result\n },\n\n send(message: TOutgoing) {\n return send(message)\n },\n\n sendReady,\n\n async sendError(error: Error): Promise<never> {\n let failed = false\n try {\n await send({\n type: 'error',\n ...structuredError(error),\n })\n } catch (err) {\n // There's nothing we can do about errors that happen after this point, we can't tell anyone\n // about them.\n console.error('failed to send error back to rust:', err)\n failed = true\n }\n await new Promise<void>((res) => socket.end(() => res()))\n process.exit(failed ? 1 : 0)\n },\n }\n}\n\nconst PORT = process.argv[2]\n\nexport const IPC = createIpc<unknown, unknown>(parseInt(PORT, 10))\n\nprocess.on('uncaughtException', (err) => {\n IPC.sendError(err)\n})\n\nconst improveConsole = (name: string, stream: string, addStack: boolean) => {\n // @ts-ignore\n const original = console[name]\n // @ts-ignore\n const stdio = process[stream]\n // @ts-ignore\n console[name] = (...args: any[]) => {\n stdio.write(`TURBOPACK_OUTPUT_B\\n`)\n original(...args)\n if (addStack) {\n const stack = new Error().stack?.replace(/^.+\\n.+\\n/, '') + '\\n'\n stdio.write('TURBOPACK_OUTPUT_S\\n')\n stdio.write(stack)\n }\n stdio.write('TURBOPACK_OUTPUT_E\\n')\n }\n}\n\nimproveConsole('error', 'stderr', true)\nimproveConsole('warn', 'stderr', true)\nimproveConsole('count', 'stdout', true)\nimproveConsole('trace', 'stderr', false)\nimproveConsole('log', 'stdout', true)\nimproveConsole('group', 'stdout', true)\nimproveConsole('groupCollapsed', 'stdout', true)\nimproveConsole('table', 'stdout', true)\nimproveConsole('debug', 'stdout', true)\nimproveConsole('info', 'stdout', true)\nimproveConsole('dir', 'stdout', true)\nimproveConsole('dirxml', 'stdout', true)\nimproveConsole('timeEnd', 'stdout', true)\nimproveConsole('timeLog', 'stdout', true)\nimproveConsole('timeStamp', 'stdout', true)\nimproveConsole('assert', 'stderr', true)\n\n/**\n * Utility function to ensure all variants of an enum are handled.\n */\nfunction invariant(never: never, computeMessage: (arg: any) => string): never {\n throw new Error(`Invariant: ${computeMessage(never)}`)\n}\n"],"names":[],"mappings":"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"}},
9
- {"offset": {"line": 386, "column": 0}, "map": {"version":3,"sources":["turbopack:///[turbopack-node]/ipc/evaluate.ts"],"sourcesContent":["import { IPC } from './index'\nimport type { Ipc as GenericIpc } from './index'\n\ntype IpcIncomingMessage =\n | {\n type: 'evaluate'\n args: string[]\n }\n | {\n type: 'result'\n id: number\n error: string | null\n data: any | null\n }\n\ntype IpcOutgoingMessage =\n | {\n type: 'end'\n data: string | undefined\n duration: number\n }\n | {\n type: 'info'\n data: any\n }\n | {\n type: 'request'\n id: number\n data: any\n }\n\nexport type Ipc<IM, RM> = {\n sendInfo(message: IM): Promise<void>\n sendRequest(message: RM): Promise<unknown>\n sendError(error: Error): Promise<never>\n}\nconst ipc = IPC as GenericIpc<IpcIncomingMessage, IpcOutgoingMessage>\n\nconst queue: string[][] = []\n\nexport const run = async (\n moduleFactory: () => Promise<{\n init?: () => Promise<void>\n default: (ipc: Ipc<any, any>, ...deserializedArgs: any[]) => any\n }>\n) => {\n let nextId = 1\n const requests = new Map()\n const internalIpc = {\n sendInfo: (message: any) =>\n ipc.send({\n type: 'info',\n data: message,\n }),\n sendRequest: (message: any) => {\n const id = nextId++\n let resolve, reject\n const promise = new Promise((res, rej) => {\n resolve = res\n reject = rej\n })\n requests.set(id, { resolve, reject })\n return ipc\n .send({ type: 'request', id, data: message })\n .then(() => promise)\n },\n sendError: (error: Error) => {\n return ipc.sendError(error)\n },\n }\n\n // Initialize module and send ready message\n let getValue: (ipc: Ipc<any, any>, ...deserializedArgs: any[]) => any\n try {\n const module = await moduleFactory()\n if (typeof module.init === 'function') {\n await module.init()\n }\n getValue = module.default\n await ipc.sendReady()\n } catch (err) {\n await ipc.sendReady()\n await ipc.sendError(err as Error)\n }\n\n // Queue handling\n let isRunning = false\n const run = async () => {\n while (queue.length > 0) {\n const args = queue.shift()!\n try {\n const value = await getValue(internalIpc, ...args)\n await ipc.send({\n type: 'end',\n data:\n value === undefined ? undefined : JSON.stringify(value, null, 2),\n duration: 0,\n })\n } catch (e) {\n await ipc.sendError(e as Error)\n }\n }\n isRunning = false\n }\n\n // Communication handling\n while (true) {\n const msg = await ipc.recv()\n\n switch (msg.type) {\n case 'evaluate': {\n queue.push(msg.args)\n if (!isRunning) {\n isRunning = true\n run()\n }\n break\n }\n case 'result': {\n const request = requests.get(msg.id)\n if (request) {\n requests.delete(msg.id)\n if (msg.error) {\n request.reject(new Error(msg.error))\n } else {\n request.resolve(msg.data)\n }\n }\n break\n }\n default: {\n console.error('unexpected message type', (msg as any).type)\n process.exit(1)\n }\n }\n }\n}\n\nexport type { IpcIncomingMessage, IpcOutgoingMessage }\n"],"names":[],"mappings":";;;;AAAA;;AAoCA,MAAM,MAAM,0HAAG;AAEf,MAAM,QAAoB,EAAE;AAErB,MAAM,MAAM,OACjB;IAKA,IAAI,SAAS;IACb,MAAM,WAAW,IAAI;IACrB,MAAM,cAAc;QAClB,UAAU,CAAC,UACT,IAAI,IAAI,CAAC;gBACP,MAAM;gBACN,MAAM;YACR;QACF,aAAa,CAAC;YACZ,MAAM,KAAK;YACX,IAAI,SAAS;YACb,MAAM,UAAU,IAAI,QAAQ,CAAC,KAAK;gBAChC,UAAU;gBACV,SAAS;YACX;YACA,SAAS,GAAG,CAAC,IAAI;gBAAE;gBAAS;YAAO;YACnC,OAAO,IACJ,IAAI,CAAC;gBAAE,MAAM;gBAAW;gBAAI,MAAM;YAAQ,GAC1C,IAAI,CAAC,IAAM;QAChB;QACA,WAAW,CAAC;YACV,OAAO,IAAI,SAAS,CAAC;QACvB;IACF;IAEA,2CAA2C;IAC3C,IAAI;IACJ,IAAI;QACF,MAAM,SAAS,MAAM;QACrB,IAAI,OAAO,OAAO,IAAI,KAAK,YAAY;YACrC,MAAM,OAAO,IAAI;QACnB;QACA,WAAW,OAAO,OAAO;QACzB,MAAM,IAAI,SAAS;IACrB,EAAE,OAAO,KAAK;QACZ,MAAM,IAAI,SAAS;QACnB,MAAM,IAAI,SAAS,CAAC;IACtB;IAEA,iBAAiB;IACjB,IAAI,YAAY;IAChB,MAAM,MAAM;QACV,MAAO,MAAM,MAAM,GAAG,EAAG;YACvB,MAAM,OAAO,MAAM,KAAK;YACxB,IAAI;gBACF,MAAM,QAAQ,MAAM,SAAS,gBAAgB;gBAC7C,MAAM,IAAI,IAAI,CAAC;oBACb,MAAM;oBACN,MACE,UAAU,YAAY,YAAY,KAAK,SAAS,CAAC,OAAO,MAAM;oBAChE,UAAU;gBACZ;YACF,EAAE,OAAO,GAAG;gBACV,MAAM,IAAI,SAAS,CAAC;YACtB;QACF;QACA,YAAY;IACd;IAEA,yBAAyB;IACzB,MAAO,KAAM;QACX,MAAM,MAAM,MAAM,IAAI,IAAI;QAE1B,OAAQ,IAAI,IAAI;YACd,KAAK;gBAAY;oBACf,MAAM,IAAI,CAAC,IAAI,IAAI;oBACnB,IAAI,CAAC,WAAW;wBACd,YAAY;wBACZ;oBACF;oBACA;gBACF;YACA,KAAK;gBAAU;oBACb,MAAM,UAAU,SAAS,GAAG,CAAC,IAAI,EAAE;oBACnC,IAAI,SAAS;wBACX,SAAS,MAAM,CAAC,IAAI,EAAE;wBACtB,IAAI,IAAI,KAAK,EAAE;4BACb,QAAQ,MAAM,CAAC,IAAI,MAAM,IAAI,KAAK;wBACpC,OAAO;4BACL,QAAQ,OAAO,CAAC,IAAI,IAAI;wBAC1B;oBACF;oBACA;gBACF;YACA;gBAAS;oBACP,QAAQ,KAAK,CAAC,2BAA2B,AAAC,IAAY,IAAI;oBAC1D,QAAQ,IAAI,CAAC;gBACf;QACF;IACF;AACF"}},
10
- {"offset": {"line": 492, "column": 0}, "map": {"version":3,"sources":["turbopack:///[turbopack-node]/ipc/evaluate.ts/evaluate.js"],"sourcesContent":["import { run } from 'RUNTIME'; run(() => import('INNER'))"],"names":[],"mappings":";AAAA;;AAA+B,IAAA,6HAAG,EAAC"}}]
11
- }
@@ -1,8 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sections": [
5
- {"offset": {"line": 36, "column": 0}, "map": {"version":3,"sources":["turbopack:///[project]/postcss.config.js_.loader.mjs"],"sourcesContent":["import { pathToFileURL } from 'node:url';\nimport path from 'node:path';\n\nconst configPath = path.join(process.cwd(), \"./postcss.config.js\");\n// Absolute paths don't work with ESM imports on Windows:\n// https://github.com/nodejs/node/issues/31710\n// convert it to a file:// URL, which works on all platforms\nconst configUrl = pathToFileURL(configPath).toString();\nconst mod = await __turbopack_context__.y(configUrl);\n\nexport default mod.default ?? mod;\n"],"names":[],"mappings":";;;;AAAA;AACA;;;AAEA,MAAM,aAAa,4HAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI;AAC5C,yDAAyD;AACzD,8CAA8C;AAC9C,4DAA4D;AAC5D,MAAM,YAAY,IAAA,gIAAa,EAAC,YAAY,QAAQ;AACpD,MAAM,MAAM,MAAM,sBAAsB,CAAC,CAAC;uCAE3B,IAAI,OAAO,IAAI"}},
6
- {"offset": {"line": 56, "column": 0}, "map": {"version":3,"sources":["turbopack:///[turbopack-node]/transforms/transforms.ts"],"sourcesContent":["/**\n * Shared utilities for our 2 transform implementations.\n */\n\nimport type { Ipc } from '../ipc/evaluate'\nimport { relative, isAbsolute, join, sep } from 'path'\nimport { type StructuredError } from '../ipc'\nimport { type StackFrame } from '../compiled/stacktrace-parser'\n\nexport type IpcInfoMessage =\n | {\n type: 'dependencies'\n envVariables?: string[]\n directories?: Array<[string, string]>\n filePaths?: string[]\n buildFilePaths?: string[]\n }\n | {\n type: 'emittedError'\n severity: 'warning' | 'error'\n error: StructuredError\n }\n | {\n type: 'log'\n logs: Array<{\n time: number\n logType: string\n args: any[]\n trace?: StackFrame[]\n }>\n }\n\nexport type IpcRequestMessage =\n | {\n type: 'resolve'\n options: any\n lookupPath: string\n request: string\n }\n | {\n type: 'trackFileRead'\n file: string\n }\n\nexport type TransformIpc = Ipc<IpcInfoMessage, IpcRequestMessage>\n\nconst contextDir = process.cwd()\nexport const toPath = (file: string) => {\n const relPath = relative(contextDir, file)\n if (isAbsolute(relPath)) {\n throw new Error(\n `Cannot depend on path (${file}) outside of root directory (${contextDir})`\n )\n }\n return sep !== '/' ? relPath.replaceAll(sep, '/') : relPath\n}\nexport const fromPath = (path: string) => {\n return join(\n /* turbopackIgnore: true */ contextDir,\n sep !== '/' ? path.replaceAll('/', sep) : path\n )\n}\n\n// Patch process.env to track which env vars are read\nconst originalEnv = process.env\nconst readEnvVars = new Set<string>()\nprocess.env = new Proxy(originalEnv, {\n get(target, prop) {\n if (typeof prop === 'string') {\n // We register the env var as dependency on the\n // current transform and all future transforms\n // since the env var might be cached in module scope\n // and influence them all\n readEnvVars.add(prop)\n }\n return Reflect.get(target, prop)\n },\n set(target, prop, value) {\n return Reflect.set(target, prop, value)\n },\n})\n\nexport function getReadEnvVariables(): string[] {\n return Array.from(readEnvVars)\n}\n"],"names":[],"mappings":"AAAA;;CAEC;;;;;;;;AAGD;;AAyCA,MAAM,aAAa,QAAQ,GAAG;AACvB,MAAM,SAAS,CAAC;IACrB,MAAM,UAAU,IAAA,6GAAQ,EAAC,YAAY;IACrC,IAAI,IAAA,+GAAU,EAAC,UAAU;QACvB,MAAM,IAAI,MACR,CAAC,uBAAuB,EAAE,KAAK,6BAA6B,EAAE,WAAW,CAAC,CAAC;IAE/E;IACA,OAAO,wGAAG,KAAK,MAAM,QAAQ,UAAU,CAAC,wGAAG,EAAE,OAAO;AACtD;AACO,MAAM,WAAW,CAAC;IACvB,OAAO,IAAA,yGAAI,EACT,yBAAyB,GAAG,YAC5B,wGAAG,KAAK,MAAM,KAAK,UAAU,CAAC,KAAK,wGAAG,IAAI;AAE9C;AAEA,qDAAqD;AACrD,MAAM,cAAc,QAAQ,GAAG;AAC/B,MAAM,cAAc,IAAI;AACxB,QAAQ,GAAG,GAAG,IAAI,MAAM,aAAa;IACnC,KAAI,MAAM,EAAE,IAAI;QACd,IAAI,OAAO,SAAS,UAAU;YAC5B,+CAA+C;YAC/C,8CAA8C;YAC9C,oDAAoD;YACpD,yBAAyB;YACzB,YAAY,GAAG,CAAC;QAClB;QACA,OAAO,QAAQ,GAAG,CAAC,QAAQ;IAC7B;IACA,KAAI,MAAM,EAAE,IAAI,EAAE,KAAK;QACrB,OAAO,QAAQ,GAAG,CAAC,QAAQ,MAAM;IACnC;AACF;AAEO,SAAS;IACd,OAAO,MAAM,IAAI,CAAC;AACpB"}},
7
- {"offset": {"line": 106, "column": 0}, "map": {"version":3,"sources":["turbopack:///[turbopack-node]/transforms/postcss.ts"],"sourcesContent":["declare const __turbopack_external_require__: (\n id: string,\n thunk: () => any,\n esm?: boolean\n) => any\n\nimport type { Processor } from 'postcss'\n\n// @ts-ignore\nimport postcss from '@vercel/turbopack/postcss'\n// @ts-ignore\nimport importedConfig from 'CONFIG'\nimport { getReadEnvVariables, toPath, type TransformIpc } from './transforms'\n\nlet processor: Processor | undefined\n\nexport const init = async (ipc: TransformIpc) => {\n let config = importedConfig\n if (typeof config === 'function') {\n config = await config({ env: 'development' })\n }\n if (typeof config === 'undefined') {\n throw new Error(\n 'PostCSS config is undefined (make sure to export an function or object from config file)'\n )\n }\n let plugins: any[]\n if (Array.isArray(config.plugins)) {\n plugins = config.plugins.map((plugin: [string, any] | string | any) => {\n if (Array.isArray(plugin)) {\n return plugin\n } else if (typeof plugin === 'string') {\n return [plugin, {}]\n } else {\n return plugin\n }\n })\n } else if (typeof config.plugins === 'object') {\n plugins = Object.entries(config.plugins).filter(([, options]) => options)\n } else {\n plugins = []\n }\n const loadedPlugins = plugins.map((plugin) => {\n if (Array.isArray(plugin)) {\n const [arg, options] = plugin\n let pluginFactory = arg\n\n if (typeof pluginFactory === 'string') {\n pluginFactory = require(/* turbopackIgnore: true */ pluginFactory)\n }\n\n if (pluginFactory.default) {\n pluginFactory = pluginFactory.default\n }\n\n return pluginFactory(options)\n }\n return plugin\n })\n\n processor = postcss(loadedPlugins)\n}\n\nexport default async function transform(\n ipc: TransformIpc,\n cssContent: string,\n name: string,\n sourceMap: boolean\n) {\n const { css, map, messages } = await processor!.process(cssContent, {\n from: name,\n to: name,\n map: sourceMap\n ? {\n inline: false,\n annotation: false,\n }\n : undefined,\n })\n\n const assets = []\n const filePaths: string[] = []\n const buildFilePaths: string[] = []\n const directories: Array<[string, string]> = []\n\n for (const msg of messages) {\n switch (msg.type) {\n case 'asset':\n assets.push({\n file: msg.file,\n content: msg.content,\n sourceMap: !sourceMap\n ? undefined\n : typeof msg.sourceMap === 'string'\n ? msg.sourceMap\n : JSON.stringify(msg.sourceMap),\n // There is also an info field, which we currently ignore\n })\n break\n case 'dependency':\n case 'missing-dependency':\n filePaths.push(toPath(msg.file))\n break\n case 'build-dependency':\n buildFilePaths.push(toPath(msg.file))\n break\n case 'dir-dependency':\n directories.push([toPath(msg.dir), msg.glob])\n break\n case 'context-dependency':\n directories.push([toPath(msg.dir), '**'])\n break\n default:\n // TODO: do we need to do anything here?\n break\n }\n }\n ipc.sendInfo({\n type: 'dependencies',\n filePaths,\n directories,\n buildFilePaths,\n envVariables: getReadEnvVariables(),\n })\n return {\n css,\n map: sourceMap ? JSON.stringify(map) : undefined,\n assets,\n }\n}\n"],"names":[],"mappings":";;;;;;AAQA,aAAa;AACb;AACA,aAAa;AACb;AACA;;;;;;;;AAEA,IAAI;AAEG,MAAM,OAAO,OAAO;IACzB,IAAI,SAAS,2IAAc;IAC3B,IAAI,OAAO,WAAW,YAAY;QAChC,SAAS,MAAM,OAAO;YAAE,KAAK;QAAc;IAC7C;IACA,IAAI,OAAO,WAAW,aAAa;QACjC,MAAM,IAAI,MACR;IAEJ;IACA,IAAI;IACJ,IAAI,MAAM,OAAO,CAAC,OAAO,OAAO,GAAG;QACjC,UAAU,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,MAAM,OAAO,CAAC,SAAS;gBACzB,OAAO;YACT,OAAO,IAAI,OAAO,WAAW,UAAU;gBACrC,OAAO;oBAAC;oBAAQ,CAAC;iBAAE;YACrB,OAAO;gBACL,OAAO;YACT;QACF;IACF,OAAO,IAAI,OAAO,OAAO,OAAO,KAAK,UAAU;QAC7C,UAAU,OAAO,OAAO,CAAC,OAAO,OAAO,EAAE,MAAM,CAAC,CAAC,GAAG,QAAQ,GAAK;IACnE,OAAO;QACL,UAAU,EAAE;IACd;IACA,MAAM,gBAAgB,QAAQ,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,OAAO,CAAC,SAAS;YACzB,MAAM,CAAC,KAAK,QAAQ,GAAG;YACvB,IAAI,gBAAgB;YAEpB,IAAI,OAAO,kBAAkB,UAAU;gBACrC,gBAAgB,QAAQ,yBAAyB,GAAG;YACtD;YAEA,IAAI,cAAc,OAAO,EAAE;gBACzB,gBAAgB,cAAc,OAAO;YACvC;YAEA,OAAO,cAAc;QACvB;QACA,OAAO;IACT;IAEA,YAAY,IAAA,kJAAO,EAAC;AACtB;AAEe,eAAe,UAC5B,GAAiB,EACjB,UAAkB,EAClB,IAAY,EACZ,SAAkB;IAElB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,UAAW,OAAO,CAAC,YAAY;QAClE,MAAM;QACN,IAAI;QACJ,KAAK,YACD;YACE,QAAQ;YACR,YAAY;QACd,IACA;IACN;IAEA,MAAM,SAAS,EAAE;IACjB,MAAM,YAAsB,EAAE;IAC9B,MAAM,iBAA2B,EAAE;IACnC,MAAM,cAAuC,EAAE;IAE/C,KAAK,MAAM,OAAO,SAAU;QAC1B,OAAQ,IAAI,IAAI;YACd,KAAK;gBACH,OAAO,IAAI,CAAC;oBACV,MAAM,IAAI,IAAI;oBACd,SAAS,IAAI,OAAO;oBACpB,WAAW,CAAC,YACR,YACA,OAAO,IAAI,SAAS,KAAK,WACvB,IAAI,SAAS,GACb,KAAK,SAAS,CAAC,IAAI,SAAS;gBAEpC;gBACA;YACF,KAAK;YACL,KAAK;gBACH,UAAU,IAAI,CAAC,IAAA,yIAAM,EAAC,IAAI,IAAI;gBAC9B;YACF,KAAK;gBACH,eAAe,IAAI,CAAC,IAAA,yIAAM,EAAC,IAAI,IAAI;gBACnC;YACF,KAAK;gBACH,YAAY,IAAI,CAAC;oBAAC,IAAA,yIAAM,EAAC,IAAI,GAAG;oBAAG,IAAI,IAAI;iBAAC;gBAC5C;YACF,KAAK;gBACH,YAAY,IAAI,CAAC;oBAAC,IAAA,yIAAM,EAAC,IAAI,GAAG;oBAAG;iBAAK;gBACxC;YACF;gBAEE;QACJ;IACF;IACA,IAAI,QAAQ,CAAC;QACX,MAAM;QACN;QACA;QACA;QACA,cAAc,IAAA,sJAAmB;IACnC;IACA,OAAO;QACL;QACA,KAAK,YAAY,KAAK,SAAS,CAAC,OAAO;QACvC;IACF;AACF"}}]
8
- }
@@ -1,3 +0,0 @@
1
- module.exports=[93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},51532,e=>{"use strict";var t=e.i(71560),r=e.i(97731);async function a(){await (0,t.getDatabase)();let e=await (0,r.getConfig)("port"),a=e?.value||"1357";return`http://localhost:${a}/v1`}async function n(){await (0,t.getDatabase)();let e=await (0,r.getConfig)("api_key");return e?.value||"your-gateway-api-key"}async function o(){let e=await a(),t=await n(),o=(await (0,r.getAllModels)()).filter(e=>e.enabled),i={};for(let e of o)await (0,r.getProviderById)(e.provider_id),i[e.model_id]={name:e.name,limit:{context:128e3,output:65536}};return{npm:"@ai-sdk/openai-compatible",name:"AAR Model Router",options:{baseURL:e,apiKey:t},models:i}}let i="aar-gateway";async function s(e,t){let r,a,n=await o();return(a=(r=t&&"object"==typeof t?{...t}:{}).provider&&"object"==typeof r.provider?{...r.provider}:{})[i]=n,{...r,provider:a,model:`${i}/${e}`}}e.s(["buildMergedConfig",()=>s])},95025,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),n=e.i(59756),o=e.i(61916),i=e.i(74677),s=e.i(69741),l=e.i(16795),d=e.i(87718),u=e.i(95169),p=e.i(47587),c=e.i(66012),f=e.i(70101),x=e.i(26937),h=e.i(10372),g=e.i(93695);e.i(52474);var v=e.i(220),y=e.i(89171),R=e.i(22734),m=e.i(14747),w=e.i(46786),C=e.i(51532);let b=(0,m.join)((0,w.homedir)(),".config","opencode"),E=(0,m.join)(b,"opencode.json"),A=(0,m.join)(b,"opencode.json.aar.bak");async function N(e){try{let t,{default_model:r,config:a}=await e.json(),n=null;if((0,R.existsSync)(E))try{n=JSON.parse((0,R.readFileSync)(E,"utf-8"))}catch{n=null}if("string"==typeof a&&a.trim())try{if(!(t=JSON.parse(a))||"object"!=typeof t)throw Error("Invalid config object")}catch(e){return y.NextResponse.json({error:"Invalid config JSON: "+(e.message||"parse error")},{status:400})}else{if(void 0===r||""===r)return y.NextResponse.json({error:"Missing required field: default_model"},{status:400});t=await (0,C.buildMergedConfig)(r,n)}let o=function(){try{if((0,R.existsSync)(E)){let e=(0,R.readFileSync)(E,"utf-8"),t=!1;try{let r=JSON.parse(e);t=!!(r.provider&&r.provider["aar-gateway"])}catch{}return t||(0,R.writeFileSync)(A,e,"utf-8"),{success:!0,existed:!0,isFromAar:t}}return{success:!0,existed:!1,isFromAar:!1}}catch(e){return{success:!1,existed:!1,isFromAar:!1,error:`Backup failed: ${e.message}`}}}();if(!o.success)return y.NextResponse.json({error:o.error},{status:500});(0,R.existsSync)(b)||(0,R.mkdirSync)(b,{recursive:!0});let i=JSON.stringify(t,null,2);(0,R.writeFileSync)(E,i,"utf-8");let s=!!n?.provider?.["aar-gateway"];return y.NextResponse.json({success:!0,message:s?"OpenCode 配置已更新为最新网关信息":"OpenCode configuration applied successfully",config:t,backup:o.existed?"Created backup":"No existing config to backup",previousWasFromAar:o.existed&&o.isFromAar})}catch(e){return console.error("OpenCode Apply API error:",e),y.NextResponse.json({error:e.message||"Internal server error",stack:void 0},{status:500})}}e.s(["POST",()=>N],22374);var S=e.i(22374);let j=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/ide/opencode/apply/route",pathname:"/api/ide/opencode/apply",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/ide/opencode/apply/route.ts",nextConfigOutput:"",userland:S}),{workAsyncStorage:k,workUnitAsyncStorage:O,serverHooks:P}=j;function T(){return(0,a.patchFetch)({workAsyncStorage:k,workUnitAsyncStorage:O})}async function _(e,t,a){j.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/ide/opencode/apply/route";y=y.replace(/\/index$/,"")||"/";let R=await j.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:m,params:w,nextConfig:C,parsedUrl:b,isDraftMode:E,prerenderManifest:A,routerServerContext:N,isOnDemandRevalidate:S,revalidateOnlyGenerated:k,resolvedPathname:O,clientReferenceManifest:P,serverActionsManifest:T}=R,_=(0,s.normalizeAppPath)(y),q=!!(A.dynamicRoutes[_]||A.routes[O]),I=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,b,!1):t.end("This page could not be found"),null);if(q&&!E){let e=!!A.routes[O],t=A.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(C.experimental.adapterPath)return await I();throw new g.NoFallbackError}}let H=null;!q||j.isDev||E||(H="/index"===(H=O)?"/":H);let M=!0===j.isDev||!q,U=q&&!M;T&&P&&(0,i.setManifestsSingleton)({page:y,clientReferenceManifest:P,serverActionsManifest:T});let F=e.method||"GET",D=(0,o.getTracer)(),$=D.getActiveScopeSpan(),K={params:w,prerenderManifest:A,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:M,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:C.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>j.onRequestError(e,t,a,n,N)},sharedContext:{buildId:m}},B=new l.NodeNextRequest(e),L=new l.NodeNextResponse(t),J=d.NextRequestAdapter.fromNodeNextRequest(B,(0,d.signalFromNodeResponse)(t));try{let i=async e=>j.handle(J,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=D.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${F} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t)}else e.updateName(`${F} ${y}`)}),s=!!(0,n.getRequestMeta)(e,"minimalMode"),l=async n=>{var o,l;let d=async({previousCacheEntry:r})=>{try{if(!s&&S&&k&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await i(n);e.fetchMetrics=K.renderOpts.fetchMetrics;let l=K.renderOpts.pendingWaitUntil;l&&a.waitUntil&&(a.waitUntil(l),l=void 0);let d=K.renderOpts.collectedTags;if(!q)return await (0,c.sendResponse)(B,L,o,K.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(o.headers);d&&(t[h.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,a=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await j.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:S})},!1,N),t}},u=await j.handleResponse({req:e,nextConfig:C,cacheKey:H,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:k,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:s});if(!q)return null;if((null==u||null==(o=u.value)?void 0:o.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});s||t.setHeader("x-nextjs-cache",S?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return s&&q||g.delete(h.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||g.get("Cache-Control")||g.set("Cache-Control",(0,x.getCacheControlHeader)(u.cacheControl)),await (0,c.sendResponse)(B,L,new Response(u.value.body,{headers:g,status:u.value.status||200})),null};$?await l($):await D.withPropagatedContext(e.headers,()=>D.trace(u.BaseServerSpan.handleRequest,{spanName:`${F} ${y}`,kind:o.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await j.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:S})},!1,N),q)throw t;return await (0,c.sendResponse)(B,L,new Response(null,{status:500})),null}}e.s(["handler",()=>_,"patchFetch",()=>T,"routeModule",()=>j,"serverHooks",()=>P,"workAsyncStorage",()=>k,"workUnitAsyncStorage",()=>O],95025)}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__001d5756._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/app/api/ide/opencode/build-config.ts","../../../node_modules/next/dist/esm/build/templates/app-route.js","../../../src/app/api/ide/opencode/apply/route.ts"],"sourcesContent":["import { getDatabase } from '@/db/database';\nimport { getConfig } from '@/db/queries';\nimport { getAllModels, getProviderById } from '@/db/queries';\n\nexport async function getGatewayAddress(): Promise<string> {\n await getDatabase();\n const portConfig = await getConfig('port');\n const port = portConfig?.value || '1357';\n return `http://localhost:${port}/v1`;\n}\n\nexport async function getGatewayApiKey(): Promise<string> {\n await getDatabase();\n const apiKeyConfig = await getConfig('api_key');\n return apiKeyConfig?.value || 'your-gateway-api-key';\n}\n\n/** OpenCode provider 下单个 provider 的结构(与官方 provider 文档一致) */\nexport type AarGatewayProviderEntry = {\n npm: string;\n name: string;\n options: { baseURL: string; apiKey: string };\n models: Record<string, { name: string; limit?: { context: number; output?: number } }>;\n};\n\nexport async function buildAarGatewayProvider(): Promise<AarGatewayProviderEntry> {\n const gatewayAddress = await getGatewayAddress();\n const gatewayApiKey = await getGatewayApiKey();\n const allModels = (await getAllModels()).filter((m: any) => m.enabled);\n const models: Record<string, { name: string; limit: { context: number; output: number } }> = {};\n for (const m of allModels) {\n await getProviderById(m.provider_id);\n models[m.model_id] = { name: m.name, limit: { context: 128000, output: 65536 } };\n }\n return {\n npm: '@ai-sdk/openai-compatible',\n name: 'AAR Model Router',\n options: { baseURL: gatewayAddress, apiKey: gatewayApiKey },\n models,\n };\n}\n\nconst AAR_PROVIDER_ID = 'aar-gateway';\n\n/** 合并现有配置与 AAR 网关:写入 config.provider[\"aar-gateway\"],并设置 config.model = \"aar-gateway/{defaultModel}\" */\nexport function mergeConfigWithAar(\n existing: Record<string, any> | null,\n defaultModel: string,\n aarProvider: AarGatewayProviderEntry\n): Record<string, any> {\n const base = existing && typeof existing === 'object' ? { ...existing } : {};\n const provider: Record<string, any> =\n base.provider && typeof base.provider === 'object' ? { ...base.provider } : {};\n provider[AAR_PROVIDER_ID] = aarProvider;\n return {\n ...base,\n provider,\n model: `${AAR_PROVIDER_ID}/${defaultModel}`,\n };\n}\n\n/** 生成合并后的配置(不写入磁盘),供预览或应用使用 */\nexport async function buildMergedConfig(\n defaultModel: string,\n existing: Record<string, any> | null\n): Promise<Record<string, any>> {\n const aarProvider = await buildAarGatewayProvider();\n return mergeConfigWithAar(existing, defaultModel, aarProvider);\n}\n","import { AppRouteRouteModule } from \"next/dist/esm/server/route-modules/app-route/module.compiled\";\nimport { RouteKind } from \"next/dist/esm/server/route-kind\";\nimport { patchFetch as _patchFetch } from \"next/dist/esm/server/lib/patch-fetch\";\nimport { addRequestMeta, getRequestMeta } from \"next/dist/esm/server/request-meta\";\nimport { getTracer, SpanKind } from \"next/dist/esm/server/lib/trace/tracer\";\nimport { setManifestsSingleton } from \"next/dist/esm/server/app-render/manifests-singleton\";\nimport { normalizeAppPath } from \"next/dist/esm/shared/lib/router/utils/app-paths\";\nimport { NodeNextRequest, NodeNextResponse } from \"next/dist/esm/server/base-http/node\";\nimport { NextRequestAdapter, signalFromNodeResponse } from \"next/dist/esm/server/web/spec-extension/adapters/next-request\";\nimport { BaseServerSpan } from \"next/dist/esm/server/lib/trace/constants\";\nimport { getRevalidateReason } from \"next/dist/esm/server/instrumentation/utils\";\nimport { sendResponse } from \"next/dist/esm/server/send-response\";\nimport { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from \"next/dist/esm/server/web/utils\";\nimport { getCacheControlHeader } from \"next/dist/esm/server/lib/cache-control\";\nimport { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from \"next/dist/esm/lib/constants\";\nimport { NoFallbackError } from \"next/dist/esm/shared/lib/no-fallback-error.external\";\nimport { CachedRouteKind } from \"next/dist/esm/server/response-cache\";\nimport * as userland from \"INNER_APP_ROUTE\";\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\nconst nextConfigOutput = \"\"\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: \"/api/ide/opencode/apply/route\",\n pathname: \"/api/ide/opencode/apply\",\n filename: \"route\",\n bundlePath: \"\"\n },\n distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',\n relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',\n resolvedPagePath: \"[project]/src/app/api/ide/opencode/apply/route.ts\",\n nextConfigOutput,\n userland\n});\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule;\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage\n });\n}\nexport { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, };\nexport async function handler(req, res, ctx) {\n if (routeModule.isDev) {\n addRequestMeta(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint());\n }\n let srcPage = \"/api/ide/opencode/apply/route\";\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (process.env.TURBOPACK) {\n srcPage = srcPage.replace(/\\/index$/, '') || '/';\n } else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/';\n }\n const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE;\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode\n });\n if (!prepareResult) {\n res.statusCode = 400;\n res.end('Bad Request');\n ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());\n return null;\n }\n const { buildId, params, nextConfig, parsedUrl, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname, clientReferenceManifest, serverActionsManifest } = prepareResult;\n const normalizedSrcPage = normalizeAppPath(srcPage);\n let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]);\n const render404 = async ()=>{\n // TODO: should route-module itself handle rendering the 404\n if (routerServerContext == null ? void 0 : routerServerContext.render404) {\n await routerServerContext.render404(req, res, parsedUrl, false);\n } else {\n res.end('This page could not be found');\n }\n return null;\n };\n if (isIsr && !isDraftMode) {\n const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]);\n const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage];\n if (prerenderInfo) {\n if (prerenderInfo.fallback === false && !isPrerendered) {\n if (nextConfig.experimental.adapterPath) {\n return await render404();\n }\n throw new NoFallbackError();\n }\n }\n }\n let cacheKey = null;\n if (isIsr && !routeModule.isDev && !isDraftMode) {\n cacheKey = resolvedPathname;\n // ensure /index and / is normalized to one key\n cacheKey = cacheKey === '/index' ? '/' : cacheKey;\n }\n const supportsDynamicResponse = // If we're in development, we always support dynamic HTML\n routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports\n // dynamic HTML.\n !isIsr;\n // This is a revalidation request if the request is for a static\n // page and it is not being resumed from a postponed render and\n // it is not a dynamic RSC request then it is a revalidation\n // request.\n const isStaticGeneration = isIsr && !supportsDynamicResponse;\n // Before rendering (which initializes component tree modules), we have to\n // set the reference manifests to our global store so Server Action's\n // encryption util can access to them at the top level of the page module.\n if (serverActionsManifest && clientReferenceManifest) {\n setManifestsSingleton({\n page: srcPage,\n clientReferenceManifest,\n serverActionsManifest\n });\n }\n const method = req.method || 'GET';\n const tracer = getTracer();\n const activeSpan = tracer.getActiveScopeSpan();\n const context = {\n params,\n prerenderManifest,\n renderOpts: {\n experimental: {\n authInterrupts: Boolean(nextConfig.experimental.authInterrupts)\n },\n cacheComponents: Boolean(nextConfig.cacheComponents),\n supportsDynamicResponse,\n incrementalCache: getRequestMeta(req, 'incrementalCache'),\n cacheLifeProfiles: nextConfig.cacheLife,\n waitUntil: ctx.waitUntil,\n onClose: (cb)=>{\n res.on('close', cb);\n },\n onAfterTaskError: undefined,\n onInstrumentationRequestError: (error, _request, errorContext, silenceLog)=>routeModule.onRequestError(req, error, errorContext, silenceLog, routerServerContext)\n },\n sharedContext: {\n buildId\n }\n };\n const nodeNextReq = new NodeNextRequest(req);\n const nodeNextRes = new NodeNextResponse(res);\n const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res));\n try {\n const invokeRouteModule = async (span)=>{\n return routeModule.handle(nextReq, context).finally(()=>{\n if (!span) return;\n span.setAttributes({\n 'http.status_code': res.statusCode,\n 'next.rsc': false\n });\n const rootSpanAttributes = tracer.getRootSpanAttributes();\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return;\n }\n if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) {\n console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`);\n return;\n }\n const route = rootSpanAttributes.get('next.route');\n if (route) {\n const name = `${method} ${route}`;\n span.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name\n });\n span.updateName(name);\n } else {\n span.updateName(`${method} ${srcPage}`);\n }\n });\n };\n const isMinimalMode = Boolean(process.env.MINIMAL_MODE || getRequestMeta(req, 'minimalMode'));\n const handleResponse = async (currentSpan)=>{\n var _cacheEntry_value;\n const responseGenerator = async ({ previousCacheEntry })=>{\n try {\n if (!isMinimalMode && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) {\n res.statusCode = 404;\n // on-demand revalidate always sets this header\n res.setHeader('x-nextjs-cache', 'REVALIDATED');\n res.end('This page could not be found');\n return null;\n }\n const response = await invokeRouteModule(currentSpan);\n req.fetchMetrics = context.renderOpts.fetchMetrics;\n let pendingWaitUntil = context.renderOpts.pendingWaitUntil;\n // Attempt using provided waitUntil if available\n // if it's not we fallback to sendResponse's handling\n if (pendingWaitUntil) {\n if (ctx.waitUntil) {\n ctx.waitUntil(pendingWaitUntil);\n pendingWaitUntil = undefined;\n }\n }\n const cacheTags = context.renderOpts.collectedTags;\n // If the request is for a static response, we can cache it so long\n // as it's not edge.\n if (isIsr) {\n const blob = await response.blob();\n // Copy the headers from the response.\n const headers = toNodeOutgoingHttpHeaders(response.headers);\n if (cacheTags) {\n headers[NEXT_CACHE_TAGS_HEADER] = cacheTags;\n }\n if (!headers['content-type'] && blob.type) {\n headers['content-type'] = blob.type;\n }\n const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate;\n const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire;\n // Create the cache entry for the response.\n const cacheEntry = {\n value: {\n kind: CachedRouteKind.APP_ROUTE,\n status: response.status,\n body: Buffer.from(await blob.arrayBuffer()),\n headers\n },\n cacheControl: {\n revalidate,\n expire\n }\n };\n return cacheEntry;\n } else {\n // send response without caching if not ISR\n await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil);\n return null;\n }\n } catch (err) {\n // if this is a background revalidate we need to report\n // the request error here as it won't be bubbled\n if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: srcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n throw err;\n }\n };\n const cacheEntry = await routeModule.handleResponse({\n req,\n nextConfig,\n cacheKey,\n routeKind: RouteKind.APP_ROUTE,\n isFallback: false,\n prerenderManifest,\n isRoutePPREnabled: false,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n responseGenerator,\n waitUntil: ctx.waitUntil,\n isMinimalMode\n });\n // we don't create a cacheEntry for ISR\n if (!isIsr) {\n return null;\n }\n if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) {\n var _cacheEntry_value1;\n throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), \"__NEXT_ERROR_CODE\", {\n value: \"E701\",\n enumerable: false,\n configurable: true\n });\n }\n if (!isMinimalMode) {\n res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT');\n }\n // Draft mode should never be cached\n if (isDraftMode) {\n res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate');\n }\n const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers);\n if (!(isMinimalMode && isIsr)) {\n headers.delete(NEXT_CACHE_TAGS_HEADER);\n }\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) {\n headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl));\n }\n await sendResponse(nodeNextReq, nodeNextRes, // @ts-expect-error - Argument of type 'Buffer<ArrayBufferLike>' is not assignable to parameter of type 'BodyInit | null | undefined'.\n new Response(cacheEntry.value.body, {\n headers,\n status: cacheEntry.value.status || 200\n }));\n return null;\n };\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (activeSpan) {\n await handleResponse(activeSpan);\n } else {\n await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, {\n spanName: `${method} ${srcPage}`,\n kind: SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url\n }\n }, handleResponse));\n }\n } catch (err) {\n if (!(err instanceof NoFallbackError)) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: normalizedSrcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n // rethrow so that we can handle serving error page\n // If this is during static generation, throw the error again.\n if (isIsr) throw err;\n // Otherwise, send a 500 response.\n await sendResponse(nodeNextReq, nodeNextRes, new Response(null, {\n status: 500\n }));\n return null;\n }\n}\n\n//# sourceMappingURL=app-route.js.map\n","import { NextRequest, NextResponse } from 'next/server';\nimport { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';\nimport { join } from 'path';\nimport { homedir } from 'os';\nimport { buildMergedConfig } from '../build-config';\n\nconst OPENCODE_DIR =\n process.platform === 'win32'\n ? join(process.env.APPDATA || homedir(), 'opencode')\n : join(homedir(), '.config', 'opencode');\nconst OPENCODE_FILE = join(OPENCODE_DIR, 'opencode.json');\nconst BACKUP_FILE = join(OPENCODE_DIR, 'opencode.json.aar.bak');\n\nfunction backupOriginalConfig(): { success: boolean; existed: boolean; isFromAar: boolean; error?: string } {\n try {\n const existing = existsSync(OPENCODE_FILE);\n if (existing) {\n const original = readFileSync(OPENCODE_FILE, 'utf-8');\n let isFromAar = false;\n try {\n const parsed = JSON.parse(original);\n isFromAar = !!(parsed.provider && parsed.provider['aar-gateway']);\n } catch {}\n // 仅在当前配置不是 AAR 时写入备份,这样「还原」才能恢复到应用 AAR 前的状态;若已是 AAR 则保留原有备份不覆盖\n if (!isFromAar) {\n writeFileSync(BACKUP_FILE, original, 'utf-8');\n }\n return { success: true, existed: true, isFromAar };\n }\n return { success: true, existed: false, isFromAar: false };\n } catch (error: any) {\n return { success: false, existed: false, isFromAar: false, error: `Backup failed: ${error.message}` };\n }\n}\n\nexport async function POST(request: NextRequest) {\n try {\n const body = await request.json();\n const { default_model: defaultModel, config: customConfigStr } = body;\n\n let existing: Record<string, any> | null = null;\n if (existsSync(OPENCODE_FILE)) {\n try {\n existing = JSON.parse(readFileSync(OPENCODE_FILE, 'utf-8'));\n } catch {\n existing = null;\n }\n }\n\n let config: Record<string, any>;\n if (typeof customConfigStr === 'string' && customConfigStr.trim()) {\n try {\n config = JSON.parse(customConfigStr);\n if (!config || typeof config !== 'object') throw new Error('Invalid config object');\n } catch (e: any) {\n return NextResponse.json({ error: 'Invalid config JSON: ' + (e.message || 'parse error') }, { status: 400 });\n }\n } else {\n if (defaultModel === undefined || defaultModel === '') {\n return NextResponse.json({ error: 'Missing required field: default_model' }, { status: 400 });\n }\n config = await buildMergedConfig(defaultModel, existing);\n }\n\n const backupResult = backupOriginalConfig();\n if (!backupResult.success) {\n return NextResponse.json({ error: backupResult.error }, { status: 500 });\n }\n\n if (!existsSync(OPENCODE_DIR)) {\n mkdirSync(OPENCODE_DIR, { recursive: true });\n }\n\n const jsonString = JSON.stringify(config, null, 2);\n writeFileSync(OPENCODE_FILE, jsonString, 'utf-8');\n\n const alreadyHadAar = !!(existing?.provider?.['aar-gateway']);\n return NextResponse.json({\n success: true,\n message: alreadyHadAar ? 'OpenCode 配置已更新为最新网关信息' : 'OpenCode configuration applied successfully',\n config,\n backup: backupResult.existed ? 'Created backup' : 'No existing config to backup',\n previousWasFromAar: backupResult.existed && backupResult.isFromAar,\n });\n } catch (error: any) {\n console.error('OpenCode Apply API error:', error);\n return NextResponse.json(\n { error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined },\n { status: 500 }\n );\n }\n}\n"],"names":[],"mappings":"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","ignoreList":[1]}