zevairouter 1.0.106 → 1.0.107

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 (322) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/cli/app/.next-cli-build/BUILD_ID +1 -1
  3. package/cli/app/.next-cli-build/app-path-routes-manifest.json +11 -11
  4. package/cli/app/.next-cli-build/build-manifest.json +2 -2
  5. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
  6. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  7. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  8. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  9. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  10. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  11. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
  12. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  13. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  14. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  15. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  16. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  17. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  18. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  19. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  20. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  21. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  22. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  23. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  24. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  25. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  26. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  27. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
  28. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  29. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  30. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  31. package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  32. package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
  33. package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  34. package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  35. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  36. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  37. package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  38. package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  39. package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  40. package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  41. package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
  42. package/cli/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  43. package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  44. package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  45. package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  46. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  47. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  48. package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  49. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +1 -1
  50. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  51. package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
  52. package/cli/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  53. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  54. package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  55. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  56. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  57. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  58. package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
  59. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  60. package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  61. package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  62. package/cli/app/.next-cli-build/server/app/callback.html +1 -1
  63. package/cli/app/.next-cli-build/server/app/callback.rsc +3 -3
  64. package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  65. package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  66. package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  67. package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  68. package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  69. package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  70. package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
  71. package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +5 -5
  72. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
  73. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
  74. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  75. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  76. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +5 -5
  77. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
  78. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +3 -3
  79. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +1 -1
  80. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  81. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  82. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  83. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  84. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  85. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  86. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  87. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  88. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  89. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  90. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  91. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  92. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  93. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  94. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  95. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  96. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  97. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  98. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  99. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  100. package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  101. package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  102. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  103. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  104. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  105. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  106. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  107. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  108. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  109. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  110. package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
  111. package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +5 -5
  112. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
  113. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
  114. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  115. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  116. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +5 -5
  117. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
  118. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +3 -3
  119. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +1 -1
  120. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  121. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  122. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  123. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  124. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  125. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  126. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  127. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  128. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  129. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  130. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  131. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  132. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  133. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  134. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  135. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  136. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  137. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  138. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  139. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  140. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  141. package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  142. package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  143. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  144. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  145. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  146. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  147. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  148. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  149. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  150. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  151. package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
  152. package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +5 -5
  153. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
  154. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
  155. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  156. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  157. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +5 -5
  158. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
  159. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +3 -3
  160. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +1 -1
  161. package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  162. package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
  163. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  164. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  165. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  166. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  167. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  168. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  169. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  170. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  171. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  172. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  173. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  174. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  175. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  176. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  177. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  178. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  179. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  180. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  181. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  182. package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  183. package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  184. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  185. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  186. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  187. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  188. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  189. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  190. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  191. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  192. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  193. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  194. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  195. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  196. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  197. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  198. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  199. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  200. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  201. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  202. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  203. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
  204. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  205. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  206. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  207. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  208. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
  209. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  210. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +3 -3
  211. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
  212. package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  213. package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  214. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  215. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  216. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  217. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  218. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  219. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  220. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  221. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  222. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  223. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  224. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  225. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  226. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  227. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  228. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  229. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  230. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  231. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  232. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  233. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  234. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +5 -5
  235. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  236. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  237. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  238. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  239. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
  240. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  241. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +3 -3
  242. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  243. package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  244. package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  245. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  246. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  247. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  248. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  249. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  250. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  251. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  252. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  253. package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  254. package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  255. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  256. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  257. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  258. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  259. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  260. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  261. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  262. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  263. package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
  264. package/cli/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  265. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  266. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  267. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  268. package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  269. package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  270. package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  271. package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  272. package/cli/app/.next-cli-build/server/app/index.html +1 -1
  273. package/cli/app/.next-cli-build/server/app/index.rsc +3 -3
  274. package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  275. package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  276. package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  277. package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  278. package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  279. package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  280. package/cli/app/.next-cli-build/server/app/landing.html +1 -1
  281. package/cli/app/.next-cli-build/server/app/landing.rsc +3 -3
  282. package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  283. package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  284. package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  285. package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  286. package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  287. package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  288. package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  289. package/cli/app/.next-cli-build/server/app/login.html +1 -1
  290. package/cli/app/.next-cli-build/server/app/login.rsc +4 -4
  291. package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  292. package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  293. package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  294. package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  295. package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  296. package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  297. package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  298. package/cli/app/.next-cli-build/server/app-paths-manifest.json +11 -11
  299. package/cli/app/.next-cli-build/server/chunks/1939.js +1 -1
  300. package/cli/app/.next-cli-build/server/chunks/3155.js +1 -1
  301. package/cli/app/.next-cli-build/server/chunks/3407.js +1 -1
  302. package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
  303. package/cli/app/.next-cli-build/server/chunks/6457.js +1 -1
  304. package/cli/app/.next-cli-build/server/chunks/6896.js +1 -1
  305. package/cli/app/.next-cli-build/server/chunks/915.js +1 -1
  306. package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  307. package/cli/app/.next-cli-build/server/pages/404.html +1 -1
  308. package/cli/app/.next-cli-build/server/pages/500.html +1 -1
  309. package/cli/app/.next-cli-build/static/chunks/{3702-5f034d6da865ad7a.js → 3702-dca59cfcf6b6a6f0.js} +1 -1
  310. package/cli/app/CHANGELOG.md +11 -0
  311. package/cli/app/package.json +1 -1
  312. package/cli/app/src/mitm/server.js +3 -1
  313. package/cli/package.json +1 -1
  314. package/package.json +1 -1
  315. package/src/app/api/cli-tools/opencode-settings/route.js +1 -1
  316. package/src/app/api/models/route.js +9 -5
  317. package/src/lib/db/repos/usageRepo.js +1 -1
  318. package/src/lib/tunnel/cloudflare/cloudflared.js +12 -1
  319. package/src/mitm/handlers/kiro.js +8 -1
  320. package/src/mitm/manager.js +7 -1
  321. /package/cli/app/.next-cli-build/static/{cfUGr8kYmZvImlaBuzL9m → hGbEcU9gp0vik5yxr3nd8}/_buildManifest.js +0 -0
  322. /package/cli/app/.next-cli-build/static/{cfUGr8kYmZvImlaBuzL9m → hGbEcU9gp0vik5yxr3nd8}/_ssgManifest.js +0 -0
@@ -1,3 +1,14 @@
1
+ # v1.0.107 (2026-07-20)
2
+
3
+ ## Fixes
4
+ - **Full-code audit — 6 verified bugs fixed** (multi-zone static scan + adversarial verification; every finding traced to a concrete failure path, guesses discarded):
5
+ - **Usage recent-logs always empty**: `getRecentLogs` called the async `getAdapter()` without `await`, so `db.all()` threw on a Promise and the try/catch silently returned `[]`. Both `/api/usage/logs` and `/api/usage/request-logs` now return rows (verified E2E).
6
+ - **Cloudflare Tunnel dies silently with no auto-recovery**: `killCloudflared` set `intentionalKill = true` even when no live child existed (fresh start / dead stale PID). The flag leaked across the respawn, so the next child's unexpected exit was swallowed and the watchdog respawn never fired. Flag is now armed only when a child/PID was actually killed (reproduced deterministically).
7
+ - **MITM sudo password corruption (non-ASCII)**: `decryptPassword` concatenated a `decipher.update()` Buffer with a `final("utf8")` string, mangling multi-byte UTF-8 at the chunk boundary. Now decodes once via `Buffer.concat`.
8
+ - **Model alias direction inverted in `/api/models`**: both the GET reader and PUT writer treated the KV map as `{model: alias}` when it's actually `{alias: "provider/model"}` (confirmed against the live DB). Fixed both directions.
9
+ - **Kiro MITM dropped reasoning**: `extractThinking` returned only the first `<think>` block per chunk, silently losing every block after the first. Now merges all blocks.
10
+ - **OpenCode settings showed `zevai/x` instead of `x`**: `activeModel` stripped a `^zevairouter/` prefix that is never written (the actual prefix is `zevai/`), so the replace was a no-op.
11
+
1
12
  # v1.0.106 (2026-07-20)
2
13
 
3
14
  ## Fixes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zevairouter",
3
- "version": "1.0.106",
3
+ "version": "1.0.107",
4
4
  "description": "Self-hosted AI router: many providers, one OpenAI-compatible /v1 endpoint and dashboard",
5
5
  "bin": {
6
6
  "zevai": "./cli/cli.js"
@@ -29,7 +29,9 @@ Private-MAC: `+B.digest().toHex()+`\r
29
29
  `),n.end()),s?(t.headersSent||t.writeHead(200,{"Content-Type":"text/event-stream"}),t.end(`data: ${JSON.stringify({error:{message:i.message}})}\r
30
30
  \r
31
31
  `)):(t.headersSent||t.writeHead(500,{"Content-Type":"application/json"}),t.end(JSON.stringify({error:{message:i.message,type:"mitm_error"}})))}}_o.exports={intercept:Yc}});var Ro=F((np,wo)=>{var{err:$c}=Gt(),{fetchRouter:jc,pipeSSE:Wc}=xa(),Xc={"/chat/completions":"/v1/chat/completions","/v1/messages":"/v1/messages","/responses":"/v1/responses"};function Jc(e){for(let[t,a]of Object.entries(Xc))if(e.includes(t))return a;return"/v1/chat/completions"}async function Zc(e,t,a,r){try{let n=JSON.parse(a.toString());n.model=r;let s=Jc(e.url),i=await jc(n,s,e.headers);await Wc(i,t)}catch(n){$c(`[copilot] ${n.message}`),t.headersSent||t.writeHead(500,{"Content-Type":"application/json"}),t.end(JSON.stringify({error:{message:n.message,type:"mitm_error"}}))}}wo.exports={intercept:Zc}});var Oo=F((ip,Po)=>{var{err:ed}=Gt(),{IS_DEV:td}=Er(),{fetchRouter:rd,pipeTransformedEventStream:ad}=xa(),nd=require("fs"),id=require("path"),sd=id.join(__dirname,"../../../data/logs/mitm/kiro-debug.log");function Lo(e){if(td)try{nd.appendFileSync(sd,`${new Date().toISOString()} ${e}
32
- `)}catch{}}var od=(()=>{let e=new Uint32Array(256);for(let t=0;t<256;t++){let a=t;for(let r=0;r<8;r++)a=a&1?3988292384^a>>>1:a>>>1;e[t]=a}return e})();function ko(e){let t=4294967295;for(let a=0;a<e.length;a++)t=t>>>8^od[(t^e[a])&255];return(t^4294967295)>>>0}function ud(e){return{modelId:e||null,toolCallInit:{},hasToolCalls:!1,finishSent:!1,usage:null,inThink:!1,thinkBuf:""}}function Uo(e,t){if(!e)return{thinking:null,text:null};let a=e;t.inThink&&t.thinkBuf&&(a=t.thinkBuf+a,t.thinkBuf="",t.inThink=!1);let r=/<thinking>|<think>/i,n=a.match(r);if(!n)return{thinking:null,text:a};let s=n[0].toLowerCase(),i=s==="<think>"?"</think>":"</thinking>",o=n.index,u=a.indexOf(i,o+s.length);if(u===-1)return t.inThink=!0,t.thinkBuf=a.slice(o),{thinking:null,text:a.slice(0,o).trim()||null};let l=a.slice(o+s.length,u),f=a.slice(0,o).trim(),c=a.slice(u+i.length).trim(),g=[f,c].filter(Boolean).join(""),v=g?Uo(g,{inThink:!1,thinkBuf:""}):{thinking:null,text:null};return{thinking:l||null,text:v.text||null}}function Nn(e,t){let a=Buffer.from(e,"utf8"),r=Buffer.from(t,"utf8"),n=Buffer.alloc(1+a.length+1+2+r.length),s=0;return n[s++]=a.length,a.copy(n,s),s+=a.length,n[s++]=7,n.writeUInt16BE(r.length,s),s+=2,r.copy(n,s),n}function xt(e,t){let a=Buffer.from(typeof t=="string"?t:JSON.stringify(t),"utf8"),r=Buffer.concat([Nn(":message-type","event"),Nn(":event-type",e),Nn(":content-type","application/json")]),n=r.length,s=12+n+a.length+4,i=Buffer.alloc(s);return i.writeUInt32BE(s,0),i.writeUInt32BE(n,4),i.writeUInt32BE(ko(i.slice(0,8)),8),r.copy(i,12),a.copy(i,12+n),i.writeUInt32BE(ko(i.slice(0,s-4)),s-4),i}function ld(e){if(typeof e=="string")return e;if(e==null)return"{}";try{return JSON.stringify(e)}catch{return"{}"}}function Do(e){let t=[],a=e.userInputMessageContext?.toolResults||[];for(let n of a){let s=(n.content||[]).map(i=>i.text||"").join(`
32
+ `)}catch{}}var od=(()=>{let e=new Uint32Array(256);for(let t=0;t<256;t++){let a=t;for(let r=0;r<8;r++)a=a&1?3988292384^a>>>1:a>>>1;e[t]=a}return e})();function ko(e){let t=4294967295;for(let a=0;a<e.length;a++)t=t>>>8^od[(t^e[a])&255];return(t^4294967295)>>>0}function ud(e){return{modelId:e||null,toolCallInit:{},hasToolCalls:!1,finishSent:!1,usage:null,inThink:!1,thinkBuf:""}}function Uo(e,t){if(!e)return{thinking:null,text:null};let a=e;t.inThink&&t.thinkBuf&&(a=t.thinkBuf+a,t.thinkBuf="",t.inThink=!1);let r=/<thinking>|<think>/i,n=a.match(r);if(!n)return{thinking:null,text:a};let s=n[0].toLowerCase(),i=s==="<think>"?"</think>":"</thinking>",o=n.index,u=a.indexOf(i,o+s.length);if(u===-1)return t.inThink=!0,t.thinkBuf=a.slice(o),{thinking:null,text:a.slice(0,o).trim()||null};let l=a.slice(o+s.length,u),f=a.slice(0,o).trim(),c=a.slice(u+i.length).trim(),g=[f,c].filter(Boolean).join(""),v=g?Uo(g,{inThink:!1,thinkBuf:""}):{thinking:null,text:null};return{thinking:[l,v.thinking].filter(x=>x).join(`
33
+
34
+ `)||null,text:v.text||null}}function Nn(e,t){let a=Buffer.from(e,"utf8"),r=Buffer.from(t,"utf8"),n=Buffer.alloc(1+a.length+1+2+r.length),s=0;return n[s++]=a.length,a.copy(n,s),s+=a.length,n[s++]=7,n.writeUInt16BE(r.length,s),s+=2,r.copy(n,s),n}function xt(e,t){let a=Buffer.from(typeof t=="string"?t:JSON.stringify(t),"utf8"),r=Buffer.concat([Nn(":message-type","event"),Nn(":event-type",e),Nn(":content-type","application/json")]),n=r.length,s=12+n+a.length+4,i=Buffer.alloc(s);return i.writeUInt32BE(s,0),i.writeUInt32BE(n,4),i.writeUInt32BE(ko(i.slice(0,8)),8),r.copy(i,12),a.copy(i,12+n),i.writeUInt32BE(ko(i.slice(0,s-4)),s-4),i}function ld(e){if(typeof e=="string")return e;if(e==null)return"{}";try{return JSON.stringify(e)}catch{return"{}"}}function Do(e){let t=[],a=e.userInputMessageContext?.toolResults||[];for(let n of a){let s=(n.content||[]).map(i=>i.text||"").join(`
33
35
  `);t.push({role:"tool",tool_call_id:n.toolUseId||"",content:s})}let r=(e.content||"").trim();return(r||a.length===0)&&t.push({role:"user",content:r}),t}function fd(e){let t=e.toolUses||[];return t.length>0?{role:"assistant",content:e.content||null,tool_calls:t.map(a=>({id:a.toolUseId||`call_${Date.now()}`,type:"function",function:{name:a.name||"",arguments:ld(a.input)}}))}:{role:"assistant",content:e.content||""}}function cd(e){let t=e.conversationState||{},a=t.history||[],r=t.currentMessage,n=[];for(let s of a)s.userInputMessage?n.push(...Do(s.userInputMessage)):s.assistantResponseMessage&&n.push(fd(s.assistantResponseMessage));return r?.userInputMessage&&n.push(...Do(r.userInputMessage)),n}function dd(e){let t=e.conversationState||{},a=t.currentMessage?.userInputMessage?.userInputMessageContext?.tools||[],r=t.history?.find(s=>s.userInputMessage?.userInputMessageContext?.tools)?.userInputMessage?.userInputMessageContext?.tools||[],n=a.length>0?a:r;return n.length?n.map(s=>{let i=s.toolSpecification||s;return{type:"function",function:{name:i.name||"",description:i.description||`Tool: ${i.name||"unknown"}`,parameters:i.inputSchema?.json||{type:"object",properties:{},required:[]}}}}):[]}function hd(e,t){if(!e){if(t.finishSent)return null;if(t.inThink&&t.thinkBuf){t.inThink=!1;let i=t.thinkBuf;return t.thinkBuf="",xt("reasoningContentEvent",{content:i,modelId:t.modelId||"kiro-unknown"})}return xt("messageStopEvent",{})}let a=[],r=e.choices?.[0],n=r?.delta||{};!t.modelId&&e.model&&(t.modelId=e.model);let s=t.modelId||"unknown";if(e.usage&&(t.usage=e.usage),n.tool_calls){t.hasToolCalls=!0;for(let i of n.tool_calls){let o=i.index??0;if(i.id&&i.function?.name&&!t.toolCallInit[o]&&(t.toolCallInit[o]={id:i.id,name:i.function.name},Lo(`toolUseEvent init: ${i.function.name} (${i.id})`),a.push(xt("toolUseEvent",{name:i.function.name,toolUseId:i.id}))),i.function?.arguments){let u=t.toolCallInit[o];Lo(`toolUseEvent fragment: ${i.function.arguments.slice(0,100)}`),a.push(xt("toolUseEvent",{input:i.function.arguments,name:u?.name||i.function?.name||"",toolUseId:u?.id||i.id||""}))}}}if(n.reasoning_content&&a.push(xt("reasoningContentEvent",{content:n.reasoning_content,modelId:s})),n.content){let{thinking:i,text:o}=Uo(n.content,t);i&&a.push(xt("reasoningContentEvent",{content:i,modelId:s})),o&&a.push(xt("assistantResponseEvent",{content:o,modelId:s}))}if(r?.finish_reason){let i=pd(t);i&&a.push(...Array.isArray(i)?i:[i])}return a.length===0?null:a.length===1?a[0]:a}function pd(e){let t=[];if(e.hasToolCalls)for(let a of Object.keys(e.toolCallInit).sort()){let r=e.toolCallInit[a];t.push(xt("toolUseEvent",{name:r.name,stop:!0,toolUseId:r.id}))}else t.push(xt("messageStopEvent",{}));return e.finishSent=!0,e.usage&&t.push(xt("usageEvent",{inputTokens:e.usage.prompt_tokens||0,outputTokens:e.usage.completion_tokens||0})),e.toolCallInit={},t.length>0?t:null}async function gd(e,t,a,r){try{if(yd(a))throw new Error(`Binary EventStream format detected (${a.length}B) - request should use passthrough instead of intercept`);let n=JSON.parse(a.toString()),s=cd(n);if(s.length===0)throw new Error("codeWhispererToMessages produced 0 messages \u2014 check request body");let i=dd(n),o={model:r,messages:s,stream:!0,...i.length>0&&{tools:i,tool_choice:"auto"}},u=await rd(o,"/v1/chat/completions",e.headers),l=ud(r);await ad(u,t,hd,l)}catch(n){ed(`[Kiro MITM] Request processing failed: ${n.message}`),t.headersSent||t.writeHead(500,{"Content-Type":"application/json"}),t.end(JSON.stringify({error:{message:n.message,type:"mitm_error",handler:"kiro"}}))}}function yd(e){if(!e||e.length<12)return!1;let t=e.readUInt32BE(0),a=e.readUInt32BE(4);return t>12&&t<1e6&&a<t-12}Po.exports={intercept:gd}});var Fo=F((sp,Vo)=>{async function vd(e,t){t.writeHead(501,{"Content-Type":"application/json"}),t.end(JSON.stringify({error:{message:"Cursor MITM support is coming soon.",type:"not_implemented"}}))}Vo.exports={intercept:vd}});var Mo=F((op,Ko)=>{var md={antigravity:["daily-cloudcode-pa.googleapis.com","cloudcode-pa.googleapis.com"],copilot:["api.individual.githubcopilot.com"],kiro:["q.us-east-1.amazonaws.com","codewhisperer.us-east-1.amazonaws.com"],cursor:["api2.cursor.sh"]};Ko.exports={TOOL_HOSTS:md}});var Yo=F((up,Qo)=>{var{exec:qo,execSync:Cd}=require("child_process"),Ho=process.platform==="win32";function Go(){if(Ho)try{return Cd("net session >nul 2>&1",{windowsHide:!0,stdio:"ignore"}),!0}catch{return!1}return typeof process.getuid=="function"&&process.getuid()===0}function zo(e){return`'${String(e).replace(/'/g,"''")}'`}function Ed(e){if(!Ho)return Promise.reject(new Error("Windows-only"));let t=Buffer.from(e,"utf16le").toString("base64");if(Go())return new Promise((r,n)=>{qo(`powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -EncodedCommand ${t}`,{windowsHide:!0},(s,i,o)=>{s?n(new Error(o||s.message)):r(i)})});let a=`
34
36
  $proc = Start-Process powershell -ArgumentList @(
35
37
  '-NoProfile','-NonInteractive','-ExecutionPolicy','Bypass',
package/cli/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zevairouter-cli",
3
- "version": "1.0.106",
3
+ "version": "1.0.107",
4
4
  "description": "ZevaiRouter CLI - Start and manage ZevaiRouter server",
5
5
  "bin": {
6
6
  "zevai": "./cli.js"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zevairouter",
3
- "version": "1.0.106",
3
+ "version": "1.0.107",
4
4
  "description": "Self-hosted AI router: many providers, one OpenAI-compatible /v1 endpoint and dashboard",
5
5
  "bin": {
6
6
  "zevai": "./cli/cli.js"
@@ -71,7 +71,7 @@ export async function GET() {
71
71
  configPath: getConfigPath(),
72
72
  opencode: {
73
73
  models: Object.keys(modelMap),
74
- activeModel: config?.model?.startsWith("zevai/") ? config.model.replace(/^zevairouter\//, "") : null,
74
+ activeModel: config?.model?.startsWith("zevai/") ? config.model.replace(/^zevai\//, "") : null,
75
75
  baseURL: providerConfig?.options?.baseURL || null,
76
76
  },
77
77
  });
@@ -18,10 +18,13 @@ export async function GET() {
18
18
  })
19
19
  .map((m) => {
20
20
  const fullModel = `${m.provider}/${m.model}`;
21
+ // alias map shape is { aliasName: "provider/model" } — reverse-lookup the
22
+ // alias whose VALUE points at this model (model.js:197 resolves aliases[alias]).
23
+ const alias = Object.keys(modelAliases).find((a) => modelAliases[a] === fullModel) || m.model;
21
24
  return {
22
25
  ...m,
23
26
  fullModel,
24
- alias: modelAliases[fullModel] || m.model,
27
+ alias,
25
28
  };
26
29
  });
27
30
 
@@ -44,17 +47,18 @@ export async function PUT(request) {
44
47
 
45
48
  const modelAliases = await getModelAliases();
46
49
 
47
- // Check if alias already exists for different model
50
+ // alias map shape is { aliasName: "provider/model" }; the alias name is the KEY.
51
+ // Reject if this alias name is already bound to a *different* model.
48
52
  const existingModel = Object.entries(modelAliases).find(
49
- ([key, val]) => val === alias && key !== model
53
+ ([key, val]) => key === alias && val !== model
50
54
  );
51
55
 
52
56
  if (existingModel) {
53
57
  return NextResponse.json({ error: "Alias already in use" }, { status: 400 });
54
58
  }
55
59
 
56
- // Update alias
57
- await setModelAlias(model, alias);
60
+ // Update alias — setModelAlias(alias, model)
61
+ await setModelAlias(alias, model);
58
62
 
59
63
  return NextResponse.json({ success: true, model, alias });
60
64
  } catch (error) {
@@ -768,7 +768,7 @@ export async function appendRequestLog() {}
768
768
 
769
769
  export async function getRecentLogs(limit = 200) {
770
770
  try {
771
- const db = getAdapter();
771
+ const db = await getAdapter();
772
772
  const rows = db.all(
773
773
  `SELECT timestamp, provider, model, connectionId, promptTokens, completionTokens, status, tokens FROM usageHistory ORDER BY id DESC LIMIT ?`,
774
774
  [limit],
@@ -418,7 +418,13 @@ function killCloudflaredByPort(port) {
418
418
  }
419
419
 
420
420
  export function killCloudflared(localPort) {
421
- intentionalKill = true;
421
+ // Only suppress the unexpected-exit watchdog when we actually killed a live
422
+ // child. Setting intentionalKill unconditionally leaks the flag across a fresh
423
+ // respawn (no in-memory child / dead stale PID -> no 'exit' event consumes it),
424
+ // so the NEXT child's unexpected exit takes the intentionalKill branch and the
425
+ // watchdog respawn never fires — the tunnel dies silently.
426
+ const hadChild = !!cloudflaredProcess;
427
+ let killedPid = false;
422
428
  if (cloudflaredProcess) {
423
429
  try {
424
430
  cloudflaredProcess.kill();
@@ -430,11 +436,16 @@ export function killCloudflared(localPort) {
430
436
  if (pid) {
431
437
  try {
432
438
  process.kill(pid);
439
+ killedPid = true;
433
440
  } catch (e) { /* ignore */ }
434
441
  clearPid();
435
442
  }
436
443
 
437
444
  killCloudflaredByPort(localPort);
445
+
446
+ // Arm the flag only when something was actually killed this call; if nothing
447
+ // was alive, leave it as-is so a future unexpected exit still triggers recovery.
448
+ intentionalKill = hadChild || killedPid;
438
449
  }
439
450
 
440
451
  export function isCloudflaredRunning() {
@@ -96,8 +96,15 @@ function extractThinking(text, state) {
96
96
  ? extractThinking(rest, { inThink: false, thinkBuf: "" })
97
97
  : { thinking: null, text: null };
98
98
 
99
+ // Merge thinking from ALL blocks in this chunk — previously only the first block
100
+ // was returned and recurse.thinking was dropped, silently losing every <think>
101
+ // block after the first. Join with a blank line so no reasoning content is lost.
102
+ const allThinking = [thinking, recurse.thinking]
103
+ .filter((t) => t)
104
+ .join("\n\n") || null;
105
+
99
106
  return {
100
- thinking: thinking || null,
107
+ thinking: allThinking,
101
108
  text: recurse.text || null
102
109
  };
103
110
  }
@@ -179,7 +179,13 @@ function decryptPassword(stored) {
179
179
  const key = deriveKey(salt);
180
180
  const decipher = crypto.createDecipheriv(ENCRYPT_ALGO, key, Buffer.from(ivHex, "hex"));
181
181
  decipher.setAuthTag(Buffer.from(tagHex, "hex"));
182
- return decipher.update(Buffer.from(dataHex, "hex")) + decipher.final("utf8");
182
+ // Concatenate raw Buffers first, then decode once — decipher.update() returns a
183
+ // Buffer; `Buffer + string` would decode each chunk separately and corrupt any
184
+ // multi-byte UTF-8 sequence split across the update/final boundary (non-ASCII passwords).
185
+ return Buffer.concat([
186
+ decipher.update(Buffer.from(dataHex, "hex")),
187
+ decipher.final(),
188
+ ]).toString("utf8");
183
189
  } catch {
184
190
  return null;
185
191
  }