@jheavenknows/bluerouter 2.0.63 → 2.0.67

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 (619) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +2 -2
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page.js +2 -2
  5. package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page.js +3 -3
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page.js.nft.json +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +3 -3
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +3 -3
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +3 -3
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +2 -2
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page.js +2 -2
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page.js.nft.json +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page_client-reference-manifest.js +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page.js +2 -2
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page.js.nft.json +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page_client-reference-manifest.js +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +2 -2
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +2 -2
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  74. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  75. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  76. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  77. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  78. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  79. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  81. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  82. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  83. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  84. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  85. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  86. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  87. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  88. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  89. package/app/.next-cli-build/server/app/_not-found/page.js +2 -2
  90. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  91. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  92. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  93. package/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  94. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  95. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  96. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  97. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  98. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  99. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  100. package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js +1 -1
  101. package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js +1 -1
  103. package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/api/auth/login/route.js +2 -2
  105. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  108. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  109. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  110. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  112. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  114. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  116. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  117. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js +1 -1
  119. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js +1 -162
  121. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  124. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  140. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  142. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js +168 -168
  144. package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/dashboard/combos/route.js +1 -1
  146. package/app/.next-cli-build/server/app/api/dashboard/combos/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js +1 -1
  148. package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js +1 -162
  150. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js +1 -162
  152. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js.nft.json +1 -1
  153. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js +1 -162
  154. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js.nft.json +1 -1
  155. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  157. package/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js +1 -1
  158. package/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
  159. package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  160. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/api/keys/route.js +2 -2
  162. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  163. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  165. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  167. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  169. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  171. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  173. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  175. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  176. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  177. package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  178. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  179. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  180. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  181. package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  182. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  183. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  184. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  185. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  186. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  187. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  188. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  189. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  190. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  191. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  192. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  193. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  195. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  197. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  199. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  200. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  201. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  202. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  203. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  204. package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  205. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  206. package/app/.next-cli-build/server/app/api/provider-health/route.js +1 -1
  207. package/app/.next-cli-build/server/app/api/provider-health/route.js.nft.json +1 -1
  208. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  209. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  210. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  211. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  212. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  213. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  214. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  215. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  216. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  217. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  218. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  219. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  220. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  221. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  222. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  223. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  224. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  225. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  226. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  227. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  228. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  229. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  230. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  231. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  232. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  233. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  234. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  235. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
  236. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  237. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  238. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  239. package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  240. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  241. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  242. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  243. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  244. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  245. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  246. package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  247. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  248. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  249. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  250. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  251. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  252. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  253. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  254. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  255. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  256. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  257. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  258. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  259. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  260. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  261. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  262. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  263. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  264. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  265. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  266. package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  267. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  268. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  269. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  270. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  271. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  272. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  273. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +3 -3
  274. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  275. package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
  276. package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js +2 -2
  277. package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
  278. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  279. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  280. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  281. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  282. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  283. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  284. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  285. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  286. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  287. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  288. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  289. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  290. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  291. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  292. package/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
  293. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  294. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  295. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  296. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  297. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  298. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  299. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  300. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  301. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  302. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  303. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  304. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  305. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  306. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  307. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  308. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  309. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  310. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  311. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  312. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  313. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  314. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  315. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  316. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  317. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  318. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  319. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  320. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  321. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  322. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  323. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  324. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  325. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  326. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  327. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  328. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  329. package/app/.next-cli-build/server/app/api/version/restart/route.js.nft.json +1 -1
  330. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  331. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  332. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  333. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  334. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  335. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  336. package/app/.next-cli-build/server/app/callback/page.js +2 -2
  337. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  338. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  339. package/app/.next-cli-build/server/app/callback.html +1 -1
  340. package/app/.next-cli-build/server/app/callback.rsc +3 -3
  341. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  342. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  343. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  344. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  345. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  346. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  347. package/app/.next-cli-build/server/app/dashboard/analytics.html +1 -1
  348. package/app/.next-cli-build/server/app/dashboard/analytics.rsc +4 -4
  349. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics/__PAGE__.segment.rsc +1 -1
  350. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics.segment.rsc +1 -1
  351. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  352. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  353. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_full.segment.rsc +4 -4
  354. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_head.segment.rsc +1 -1
  355. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_index.segment.rsc +3 -3
  356. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_tree.segment.rsc +1 -1
  357. package/app/.next-cli-build/server/app/dashboard/api-keys.html +1 -1
  358. package/app/.next-cli-build/server/app/dashboard/api-keys.rsc +5 -5
  359. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys/__PAGE__.segment.rsc +2 -2
  360. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys.segment.rsc +1 -1
  361. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  362. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  363. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_full.segment.rsc +5 -5
  364. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_head.segment.rsc +1 -1
  365. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_index.segment.rsc +3 -3
  366. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_tree.segment.rsc +1 -1
  367. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  368. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  369. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  370. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  371. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  372. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  373. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  374. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  375. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  376. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  377. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  378. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  379. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  380. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  381. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  382. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  383. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  384. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  385. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  386. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  387. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  388. package/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  389. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  390. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  391. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  392. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  393. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  394. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  395. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  396. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  397. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  398. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  399. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  400. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  401. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  402. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  403. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  404. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  405. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  406. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  407. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  408. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  409. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  410. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  411. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  412. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  413. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  414. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  415. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  416. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  417. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  418. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  419. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  420. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  421. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  422. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  423. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  424. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  425. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  426. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  427. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  428. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  429. package/app/.next-cli-build/server/app/dashboard/profile.rsc +4 -4
  430. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +1 -1
  431. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  432. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  433. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  434. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +4 -4
  435. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  436. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  437. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  438. package/app/.next-cli-build/server/app/dashboard/prompt-logs.html +1 -1
  439. package/app/.next-cli-build/server/app/dashboard/prompt-logs.rsc +4 -4
  440. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs/__PAGE__.segment.rsc +1 -1
  441. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs.segment.rsc +1 -1
  442. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  443. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  444. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_full.segment.rsc +4 -4
  445. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_head.segment.rsc +1 -1
  446. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_index.segment.rsc +3 -3
  447. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_tree.segment.rsc +1 -1
  448. package/app/.next-cli-build/server/app/dashboard/provider-health.html +1 -1
  449. package/app/.next-cli-build/server/app/dashboard/provider-health.rsc +4 -4
  450. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health/__PAGE__.segment.rsc +1 -1
  451. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health.segment.rsc +1 -1
  452. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  453. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  454. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_full.segment.rsc +4 -4
  455. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_head.segment.rsc +1 -1
  456. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_index.segment.rsc +3 -3
  457. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_tree.segment.rsc +1 -1
  458. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  459. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  460. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  461. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  462. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  463. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  464. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  465. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  466. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  467. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  468. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  469. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  470. package/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  471. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  472. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  473. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  474. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  475. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  476. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  477. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  478. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  479. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  480. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  481. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  482. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  483. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  484. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  485. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  486. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  487. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  488. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  489. package/app/.next-cli-build/server/app/dashboard/quota.html +1 -1
  490. package/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  491. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  492. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  493. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  494. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  495. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  496. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  497. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  498. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  499. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +2 -2
  500. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  501. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  502. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  503. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  504. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  505. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  506. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  507. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  508. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  509. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  510. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  511. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  512. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  513. package/app/.next-cli-build/server/app/dashboard/skills.rsc +5 -5
  514. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  515. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  516. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  517. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  518. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +5 -5
  519. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  520. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +3 -3
  521. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  522. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  523. package/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  524. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  525. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  526. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  527. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  528. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  529. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  530. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  531. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  532. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  533. package/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  534. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  535. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  536. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  537. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  538. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  539. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  540. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  541. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  542. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  543. package/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  544. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  545. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  546. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  547. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  548. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  549. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  550. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  551. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  552. package/app/.next-cli-build/server/app/index.html +1 -1
  553. package/app/.next-cli-build/server/app/index.rsc +3 -3
  554. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  555. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  556. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  557. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  558. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  559. package/app/.next-cli-build/server/app/landing/page.js +2 -2
  560. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  561. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  562. package/app/.next-cli-build/server/app/landing.html +1 -1
  563. package/app/.next-cli-build/server/app/landing.rsc +3 -3
  564. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  565. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  566. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  567. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  568. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  569. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  570. package/app/.next-cli-build/server/app/login/page.js +2 -2
  571. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  572. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  573. package/app/.next-cli-build/server/app/login.html +1 -1
  574. package/app/.next-cli-build/server/app/login.rsc +3 -3
  575. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +3 -3
  576. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  577. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  578. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  579. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
  580. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  581. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  582. package/app/.next-cli-build/server/app/page.js +2 -2
  583. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  584. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  585. package/app/.next-cli-build/server/app-paths-manifest.json +2 -2
  586. package/app/.next-cli-build/server/chunks/{7795.js → 2338.js} +133 -3
  587. package/app/.next-cli-build/server/chunks/{4657.js → 2680.js} +1 -1
  588. package/app/.next-cli-build/server/chunks/3104.js +1 -1
  589. package/app/.next-cli-build/server/chunks/3110.js +1 -1
  590. package/app/.next-cli-build/server/chunks/3801.js +1 -1
  591. package/app/.next-cli-build/server/chunks/402.js +419 -0
  592. package/app/.next-cli-build/server/chunks/4746.js +1 -1
  593. package/app/.next-cli-build/server/chunks/4790.js +5 -0
  594. package/app/.next-cli-build/server/chunks/5199.js +62 -22
  595. package/app/.next-cli-build/server/chunks/5206.js +1 -0
  596. package/app/.next-cli-build/server/chunks/5901.js +1 -162
  597. package/app/.next-cli-build/server/chunks/6050.js +81 -0
  598. package/app/.next-cli-build/server/chunks/7130.js +1 -1
  599. package/app/.next-cli-build/server/chunks/7153.js +1 -1
  600. package/app/.next-cli-build/server/chunks/8352.js +5 -0
  601. package/app/.next-cli-build/server/instrumentation.js +1 -1
  602. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  603. package/app/.next-cli-build/server/middleware.js +134 -4
  604. package/app/.next-cli-build/server/pages/404.html +1 -1
  605. package/app/.next-cli-build/server/pages/500.html +1 -1
  606. package/app/.next-cli-build/static/chunks/{1321-5887c84ec4e6f189.js → 1321-3617d2ecab3c3e4a.js} +1 -1
  607. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-shm +0 -0
  608. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-wal +0 -0
  609. package/app/package.json +1 -1
  610. package/package.json +1 -1
  611. package/app/.next-cli-build/server/chunks/5087.js +0 -52
  612. package/app/.next-cli-build/server/chunks/5742.js +0 -1
  613. package/app/.next-cli-build/server/chunks/6663.js +0 -81
  614. /package/app/.next-cli-build/static/{TJPd1NLRFwZE7Wlgv7-0W → bR9icFlQc1LSGldh-TjFH}/_buildManifest.js +0 -0
  615. /package/app/.next-cli-build/static/{TJPd1NLRFwZE7Wlgv7-0W → bR9icFlQc1LSGldh-TjFH}/_ssgManifest.js +0 -0
  616. /package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-2.0.58-to-2.0.59-2.0.59-20260615-092907 → upgrade-2.0.63-to-2.0.64-2.0.64-20260615-134136}/data.sqlite +0 -0
  617. /package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-2.0.59-to-2.0.60-2.0.60-20260615-094124 → upgrade-2.0.64-to-2.0.65-2.0.65-20260615-134351}/data.sqlite +0 -0
  618. /package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-2.0.60-to-2.0.61-2.0.61-20260615-100723 → upgrade-2.0.65-to-2.0.66-2.0.66-20260615-134832}/data.sqlite +0 -0
  619. /package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-2.0.61-to-2.0.62-2.0.62-20260615-101342 → upgrade-2.0.66-to-2.0.67-2.0.67-20260615-160706}/data.sqlite +0 -0
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=5199,exports.ids=[5199],exports.modules={47370:(a,b,c)=>{c.d(b,{BY:()=>d.BY,E5:()=>d.E5,SL:()=>d.SL,Zx:()=>d.Zx,_V:()=>d._V,j$:()=>d.j$,ox:()=>d.ox,rg:()=>d.rg,sZ:()=>d.sZ,uw:()=>d.uw});var d=c(56403);c(99703)},71336:(a,b,c)=>{c.d(b,{q7:()=>I});let d="u">typeof process&&process.versions?.node&&!0,e="u">typeof process&&process.env||{},f="false"!==e.ENABLE_REQUEST_LOGS,g=new Set(["inherit","enabled","disabled"]),h=null,i=null,j=null,k={expiresAt:0,config:null},l=new Set;async function m(){if(d&&f&&!h)try{h=await Promise.resolve().then(c.t.bind(c,29021,23)),i=await Promise.resolve().then(c.t.bind(c,33873,23)),j=e.REQUEST_LOG_DIR||(e.DATA_DIR?i.join(e.DATA_DIR,"logs","requests"):null)||i.join("u">typeof process&&process.cwd?process.cwd():".","logs")}catch{}}function n(a,b){l.has(a)||(l.add(a),console.log(b))}function o(a){return Array.isArray(a)?a[0]||"":a||""}function p(a={}){let b={};for(let[c,d]of Object.entries(a||{}))b[c.toLowerCase()]=d;return b}function q(a={}){let b=p(a);return{client_ip:String(o(b["x-9r-client-ip"])||o(b["x-forwarded-for"])||"").split(",")[0].trim().replace(/^::ffff:/,"").replace(/^::1$/,"127.0.0.1"),client_port:String(o(b["x-9r-client-port"])||""),client_user_agent:String(o(b["x-9r-client-user-agent"])||o(b["user-agent"])||""),client_host:String(o(b["x-9r-client-host"])||o(b.host)||"")}}function r(a={}){let b=p(a);return{source_tool:String(o(b["x-9r-source-tool"])||""),source_tool_label:String(o(b["x-9r-source-tool-label"])||""),source_host:String(o(b["x-9r-source-host"])||o(b.host)||"")}}function s(a={},b={}){return{...a,...Object.fromEntries(Object.entries(b||{}).filter(([,a])=>null!=a&&""!==String(a)))}}async function t(a){try{let b=await Promise.resolve().then(c.t.bind(c,87550,23)),d=new(b.default||b)(a);return d.pragma("journal_mode = WAL"),d.pragma("busy_timeout = 5000"),{kind:"better-sqlite3",db:d,get:(a,b=[])=>d.prepare(a).get(...b),exec(a){d.exec(a)},run:(a,b=[])=>d.prepare(a).run(...b),close(){d.close()}}}catch(d){let b=new(await Promise.resolve().then(c.t.bind(c,80099,23))).DatabaseSync(a);return b.exec("PRAGMA journal_mode = WAL"),b.exec("PRAGMA busy_timeout = 5000"),{kind:"node:sqlite",db:b,get:(a,c=[])=>b.prepare(a).get(...c),exec(a){b.exec(a)},run:(a,c=[])=>b.prepare(a).run(...c),close(){b.close()}}}}async function u(){if(await m(),!h||!i)return null;let a=Date.now();if(k.config&&k.expiresAt>a)return k.config;let b=null;try{let a=i?e.PROMPT_LOG_CONFIG_DB?e.PROMPT_LOG_CONFIG_DB:e.DATA_DIR?i.join(e.DATA_DIR,"db","data.sqlite"):null:null;if(a&&h.existsSync(a)){let c=await t(a);try{let a=c.get("SELECT data FROM settings WHERE id = 1");a?.data&&(b=JSON.parse(a.data).promptLogDb||null)}finally{c.close()}}}catch(a){n("config-read",`[PromptDB] Failed to read config: ${a.message}`)}return b||"true"!==e.PROMPT_LOG_DB_ENABLED||(b={enabled:!0,type:"sqlite",sqlitePath:e.PROMPT_LOG_DB||(e.DATA_DIR?i.join(e.DATA_DIR,"logs","promptLogs.sqlite"):""),logClientRequest:!0,logSourceRequest:!0,logTargetRequest:!0,logProviderResponse:"true"===e.PROMPT_LOG_DB_RESPONSE,logErrors:!0}),k={config:b,expiresAt:a+5e3},b}function v(a){return"postgres"===a?`
1
+ "use strict";exports.id=5199,exports.ids=[5199],exports.modules={47370:(a,b,c)=>{c.d(b,{BY:()=>d.BY,E5:()=>d.E5,SL:()=>d.SL,Zx:()=>d.Zx,_V:()=>d._V,j$:()=>d.j$,ox:()=>d.ox,rg:()=>d.rg,sZ:()=>d.sZ,uw:()=>d.uw});var d=c(56403);c(99703)},71336:(a,b,c)=>{c.d(b,{q7:()=>N});let d="u">typeof process&&process.versions?.node&&!0,e="u">typeof process&&process.env||{},f="false"!==e.ENABLE_REQUEST_LOGS,g="[promptlogs disabled on this combo]",h=new Set(["inherit","enabled","disabled"]);function i(a){let b=String(a||"inherit").trim().toLowerCase();return h.has(b)?b:"inherit"}let j=null,k=null,l=null,m=null,n={expiresAt:0,config:null},o=new Set;async function p(){if(d&&f&&!j)try{j=await Promise.resolve().then(c.t.bind(c,29021,23)),k=await Promise.resolve().then(c.t.bind(c,33873,23)),l=await Promise.resolve().then(c.t.bind(c,55511,23)),m=e.REQUEST_LOG_DIR||(e.DATA_DIR?k.join(e.DATA_DIR,"logs","requests"):null)||k.join("u">typeof process&&process.cwd?process.cwd():".","logs")}catch{}}function q(a,b){o.has(a)||(o.add(a),console.log(b))}function r(a){return Array.isArray(a)?a[0]||"":a||""}function s(a={}){let b={};for(let[c,d]of Object.entries(a||{}))b[c.toLowerCase()]=d;return b}function t(a={}){let b=s(a);return{client_ip:String(r(b["x-9r-client-ip"])||r(b["x-forwarded-for"])||"").split(",")[0].trim().replace(/^::ffff:/,"").replace(/^::1$/,"127.0.0.1"),client_port:String(r(b["x-9r-client-port"])||""),client_user_agent:String(r(b["x-9r-client-user-agent"])||r(b["user-agent"])||""),client_host:String(r(b["x-9r-client-host"])||r(b.host)||"")}}function u(a={}){let b=s(a);return{source_tool:String(r(b["x-9r-source-tool"])||""),source_tool_label:String(r(b["x-9r-source-tool-label"])||""),source_host:String(r(b["x-9r-source-host"])||r(b.host)||"")}}function v(a={},b={}){return{...a,...Object.fromEntries(Object.entries(b||{}).filter(([,a])=>null!=a&&""!==String(a)))}}async function w(a){try{let b=await Promise.resolve().then(c.t.bind(c,87550,23)),d=new(b.default||b)(a);return d.pragma("journal_mode = WAL"),d.pragma("busy_timeout = 5000"),{kind:"better-sqlite3",db:d,get:(a,b=[])=>d.prepare(a).get(...b),exec(a){d.exec(a)},run:(a,b=[])=>d.prepare(a).run(...b),close(){d.close()}}}catch(d){let b=new(await Promise.resolve().then(c.t.bind(c,80099,23))).DatabaseSync(a);return b.exec("PRAGMA journal_mode = WAL"),b.exec("PRAGMA busy_timeout = 5000"),{kind:"node:sqlite",db:b,get:(a,c=[])=>b.prepare(a).get(...c),exec(a){b.exec(a)},run:(a,c=[])=>b.prepare(a).run(...c),close(){b.close()}}}}async function x(){if(await p(),!j||!k)return null;let a=Date.now();if(n.config&&n.expiresAt>a)return n.config;let b=null;try{let a=k?e.PROMPT_LOG_CONFIG_DB?e.PROMPT_LOG_CONFIG_DB:e.DATA_DIR?k.join(e.DATA_DIR,"db","data.sqlite"):null:null;if(a&&j.existsSync(a)){let c=await w(a);try{let a=c.get("SELECT data FROM settings WHERE id = 1");a?.data&&(b=JSON.parse(a.data).promptLogDb||null)}finally{c.close()}}}catch(a){q("config-read",`[PromptDB] Failed to read config: ${a.message}`)}return b||"true"!==e.PROMPT_LOG_DB_ENABLED||(b={enabled:!0,type:"sqlite",sqlitePath:e.PROMPT_LOG_DB||(e.DATA_DIR?k.join(e.DATA_DIR,"logs","promptLogs.sqlite"):""),logClientRequest:!0,logSourceRequest:!0,logTargetRequest:!0,logProviderResponse:"true"===e.PROMPT_LOG_DB_RESPONSE,logErrors:!0}),n={config:b,expiresAt:a+5e3},b}function y(a){return"postgres"===a?`
2
2
  CREATE TABLE IF NOT EXISTS prompt_logs (
3
3
  id TEXT PRIMARY KEY,
4
4
  created_at TIMESTAMPTZ NOT NULL,
@@ -20,6 +20,9 @@
20
20
  source_tool TEXT,
21
21
  source_tool_label TEXT,
22
22
  source_host TEXT,
23
+ content_mode TEXT,
24
+ payload_hash TEXT,
25
+ payload_size_bytes BIGINT DEFAULT 0,
23
26
  prompt_text TEXT,
24
27
  full_request_json JSONB,
25
28
  response_text TEXT,
@@ -67,6 +70,9 @@
67
70
  source_tool VARCHAR(80),
68
71
  source_tool_label VARCHAR(120),
69
72
  source_host VARCHAR(255),
73
+ content_mode VARCHAR(32),
74
+ payload_hash CHAR(64),
75
+ payload_size_bytes BIGINT DEFAULT 0,
70
76
  prompt_text LONGTEXT,
71
77
  full_request_json JSON,
72
78
  response_text LONGTEXT,
@@ -78,8 +84,21 @@
78
84
  INDEX idx_prompt_logs_stage (stage),
79
85
  INDEX idx_prompt_logs_session (session_id),
80
86
  INDEX idx_prompt_logs_client_ip (client_ip),
81
- INDEX idx_prompt_logs_source_tool (source_tool)
82
- );
87
+ INDEX idx_prompt_logs_source_tool (source_tool),
88
+ INDEX idx_prompt_logs_payload_hash (payload_hash)
89
+ ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
90
+
91
+ CREATE TABLE IF NOT EXISTS prompt_log_payloads (
92
+ payload_hash CHAR(64) PRIMARY KEY,
93
+ created_at DATETIME(3) NOT NULL,
94
+ last_seen_at DATETIME(3) NOT NULL,
95
+ content_type VARCHAR(64),
96
+ payload_size_bytes BIGINT DEFAULT 0,
97
+ ref_count BIGINT DEFAULT 1,
98
+ payload_json JSON,
99
+ INDEX idx_prompt_log_payloads_created_at (created_at),
100
+ INDEX idx_prompt_log_payloads_last_seen_at (last_seen_at)
101
+ ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
83
102
  `:`
84
103
  CREATE TABLE IF NOT EXISTS prompt_logs (
85
104
  id TEXT PRIMARY KEY,
@@ -102,6 +121,9 @@
102
121
  source_tool TEXT,
103
122
  source_tool_label TEXT,
104
123
  source_host TEXT,
124
+ content_mode TEXT,
125
+ payload_hash TEXT,
126
+ payload_size_bytes INTEGER DEFAULT 0,
105
127
  prompt_text TEXT,
106
128
  full_request_json TEXT,
107
129
  response_text TEXT,
@@ -121,7 +143,7 @@
121
143
 
122
144
  CREATE INDEX IF NOT EXISTS idx_prompt_logs_session
123
145
  ON prompt_logs(session_id);
124
- `}async function w(a){a.get;let b=[];try{"better-sqlite3"===a.kind?b=a.db.prepare("PRAGMA table_info(prompt_logs)").all():"node:sqlite"===a.kind&&(b=a.db.prepare("PRAGMA table_info(prompt_logs)").all())}catch{b=[]}let c=new Set(b.map(a=>a.name)),d=(b,d)=>{c.has(b)||a.exec(`ALTER TABLE prompt_logs ADD COLUMN ${b} ${d};`)};d("client_ip","TEXT"),d("client_port","TEXT"),d("client_user_agent","TEXT"),d("client_host","TEXT"),d("source_tool","TEXT"),d("source_tool_label","TEXT"),d("source_host","TEXT"),d("provider","TEXT"),d("account_name","TEXT"),d("connection_id","TEXT"),d("display_model","TEXT"),a.exec("CREATE INDEX IF NOT EXISTS idx_prompt_logs_client_ip ON prompt_logs(client_ip);"),a.exec("CREATE INDEX IF NOT EXISTS idx_prompt_logs_source_tool ON prompt_logs(source_tool);")}async function x(a){await a.query(`
146
+ `}async function z(a){a.get;let b=[];try{"better-sqlite3"===a.kind?b=a.db.prepare("PRAGMA table_info(prompt_logs)").all():"node:sqlite"===a.kind&&(b=a.db.prepare("PRAGMA table_info(prompt_logs)").all())}catch{b=[]}let c=new Set(b.map(a=>a.name)),d=(b,d)=>{c.has(b)||a.exec(`ALTER TABLE prompt_logs ADD COLUMN ${b} ${d};`)};d("client_ip","TEXT"),d("client_port","TEXT"),d("client_user_agent","TEXT"),d("client_host","TEXT"),d("source_tool","TEXT"),d("source_tool_label","TEXT"),d("source_host","TEXT"),d("provider","TEXT"),d("account_name","TEXT"),d("connection_id","TEXT"),d("display_model","TEXT"),d("content_mode","TEXT"),d("payload_hash","TEXT"),d("payload_size_bytes","INTEGER DEFAULT 0"),a.exec("CREATE INDEX IF NOT EXISTS idx_prompt_logs_client_ip ON prompt_logs(client_ip);"),a.exec("CREATE INDEX IF NOT EXISTS idx_prompt_logs_source_tool ON prompt_logs(source_tool);")}async function A(a){await a.query(`
125
147
  ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS client_ip TEXT;
126
148
  ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS client_port TEXT;
127
149
  ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS client_user_agent TEXT;
@@ -133,70 +155,88 @@
133
155
  ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS account_name TEXT;
134
156
  ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS connection_id TEXT;
135
157
  ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS display_model TEXT;
158
+ ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS content_mode TEXT;
159
+ ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS payload_hash TEXT;
160
+ ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS payload_size_bytes BIGINT DEFAULT 0;
136
161
 
137
162
  CREATE INDEX IF NOT EXISTS idx_prompt_logs_client_ip
138
163
  ON prompt_logs(client_ip);
139
164
 
140
165
  CREATE INDEX IF NOT EXISTS idx_prompt_logs_source_tool
141
166
  ON prompt_logs(source_tool);
142
- `)}async function y(a,b,c,d){let[e]=await a.query(`
167
+ `)}async function B(a,b,c,d){let[e]=await a.query(`
143
168
  SELECT 1 AS found
144
169
  FROM INFORMATION_SCHEMA.COLUMNS
145
170
  WHERE TABLE_SCHEMA = ?
146
171
  AND TABLE_NAME = ?
147
172
  AND COLUMN_NAME = ?
148
173
  LIMIT 1
149
- `,[b,c,d]);return e.length>0}async function z(a,b,c,d){let[e]=await a.query(`
174
+ `,[b,c,d]);return e.length>0}async function C(a,b,c,d){let[e]=await a.query(`
150
175
  SELECT 1 AS found
151
176
  FROM INFORMATION_SCHEMA.STATISTICS
152
177
  WHERE TABLE_SCHEMA = ?
153
178
  AND TABLE_NAME = ?
154
179
  AND INDEX_NAME = ?
155
180
  LIMIT 1
156
- `,[b,c,d]);return e.length>0}async function A(a,b){let c=async(c,d)=>{await y(a,b.database,"prompt_logs",c)||await a.query(`ALTER TABLE prompt_logs ADD COLUMN ${c} ${d}`)};await c("client_ip","VARCHAR(64)"),await c("client_port","VARCHAR(32)"),await c("client_user_agent","TEXT"),await c("client_host","TEXT"),await c("source_tool","VARCHAR(80)"),await c("source_tool_label","VARCHAR(120)"),await c("source_host","VARCHAR(255)"),await c("provider","VARCHAR(120)"),await c("account_name","VARCHAR(255)"),await c("connection_id","VARCHAR(120)"),await c("display_model","VARCHAR(512)"),await z(a,b.database,"prompt_logs","idx_prompt_logs_client_ip")||await a.query("CREATE INDEX idx_prompt_logs_client_ip ON prompt_logs(client_ip)"),await z(a,b.database,"prompt_logs","idx_prompt_logs_source_tool")||await a.query("CREATE INDEX idx_prompt_logs_source_tool ON prompt_logs(source_tool)")}function B(a,b=[]){if(null==a)return b;if("string"==typeof a)return a.trim()&&b.push(a.trim()),b;if(Array.isArray(a)){for(let c of a)B(c,b);return b}return"object"==typeof a&&("string"==typeof a.text&&a.text.trim()&&b.push(a.text.trim()),Array.isArray(a.parts)&&B(a.parts,b)),b}function C(a){return String(a||"").trim()}function D(a){let b=C(a);if(!b)return"";try{return new URL(b).hostname||""}catch{return b.replace(/^https?:\/\//,"").replace(/\/.*$/,"").replace(/:\d+$/,"")}}async function E(a){try{var b,d;let f;if(await m(),!h||!i)return;let j=await u();if(b=a.stage,!j?.enabled||("client"===b?!1===j.logClientRequest:"source"===b||"openai"===b?!1===j.logSourceRequest:"target"===b?!1===j.logTargetRequest:"provider_response"===b?!0!==j.logProviderResponse:"error"===b&&!1===j.logErrors))return;let k=new Date().toISOString(),l=(d=a.contentLoggingMode||a.context?.contentLoggingMode,f=String(d||"inherit").trim().toLowerCase(),g.has(f)?f:"inherit"),n="disabled"===l,o=n?"[promptlogs disabled on this combo]":(a.promptText||(function a(b,c=0,d=[]){if(null==b||c>10||d.join("\n").length>2e5)return d;let e=0===c?function(a){let b=function(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=a.request&&"object"==typeof a.request?a.request:a;for(let c of[a.body?.request&&"object"==typeof a.body.request?a.body.request:null,a.payload?.request&&"object"==typeof a.payload.request?a.payload.request:null,b])if(!(!c||"object"!=typeof c||Array.isArray(c))&&(c.systemInstruction||Array.isArray(c.contents)||Array.isArray(c.tools)))return c;return null}(a);if(!b)return null;let c=[],d=B(b.systemInstruction,[]);d.length&&c.push(`[SYSTEM]
157
- ${d.join("\n\n")}`);let e=[];for(let a of Array.isArray(b.tools)?b.tools:[])for(let b of Array.isArray(a?.functionDeclarations)?a.functionDeclarations:[]){let a=C(b?.name),c=C(b?.description);(a||c)&&e.push(c?`${a}: ${c}`:a)}e.length&&c.push(`[TOOLS]
158
- ${e.join("\n")}`);let f=[];for(let a of Array.isArray(b.contents)?b.contents:[]){let b=C(a?.role)||"message",c=B(a,[]);c.length&&f.push(`${b}: ${c.join("\n")}`)}return f.length&&c.push(`[MESSAGES]
159
- ${f.join("\n\n")}`),c.length?c:null}(b):null;if(e)return d.push(...e),d;if("string"==typeof b)return b.trim()&&d.push(b),d;if(Array.isArray(b)){for(let e of b)a(e,c+1,d);return d}if("object"==typeof b)for(let[e,f]of Object.entries(b)){let b=e.toLowerCase();["content","text","prompt","input","message"].includes(b)?a(f,c+1,d):c<6&&("messages"===b||"contents"===b||"parts"===b||"body"===b||"request"===b||"payload"===b)&&a(f,c+1,d)}return d})(a.request||a.response||{}).join("\n\n")).slice(0,5e5),p=q(a.headers||a.request?.headers||{}),y=r(a.headers||a.request?.headers||{}),z=s(p,a.clientInfo||{}),E=s(y,a.sourceInfo||{}),F=function(a={}){var b,c;let d,e,f,g=a.context||{},h=function(a){let b=C(a),c=b.indexOf("/");if(c<=0)return"";let d=b.slice(0,c);return/^[a-z][a-z0-9_-]{1,60}$/i.test(d)?d:""}(a.model),i=C(g.provider)||C(a.provider)||C(a.providerId)||C(a.provider_id)||h||"",j=(d=C(i),/^openai-compatible-chat-[0-9a-f-]{20,}$/i.test(d)||/^openai-compatible-[0-9a-f-]{20,}$/i.test(d))?"":i,k=C(g.accountName)||C(g.account_name)||C(g.connectionName)||C(a.accountName)||C(a.account_name)||C(a.keyName)||C(a.key_name)||"",l=C(g.connectionId)||C(a.connectionId)||C(a.connection_id)||"",m=(b=C(a.model),c=j||h,e=C(b),(f=C(c))&&e.startsWith(`${f}/`)?e.slice(f.length+1):e),n=D(a.providerUrl)||D(a.endpoint),o="";return j&&k&&k!==j?o=`${j}/${k}`:j?o=j:k?o=k:n&&(o=n),{provider:j||null,accountName:k||null,connectionId:l||null,displayModel:o&&m?`${o}/${m}`:null}}(a),G={id:`${Date.now()}_${Math.random().toString(16).slice(2)}`,created_at:k,session_id:a.sessionId||null,source_format:a.sourceFormat||null,target_format:a.targetFormat||null,model:a.model||null,endpoint:a.endpoint||null,stage:a.stage||null,provider_url:a.providerUrl||null,provider:F.provider||null,account_name:F.accountName||null,connection_id:F.connectionId||null,display_model:F.displayModel||null,client_ip:z.client_ip||null,client_port:z.client_port||null,client_user_agent:z.client_user_agent||null,client_host:z.client_host||null,source_tool:E.source_tool||null,source_tool_label:E.source_tool_label||null,source_host:E.source_host||null,prompt_text:o||null,full_request_json:n?null:a.request?JSON.stringify(a.request):null,response_text:n?null:"string"==typeof a.response?a.response:null,status_code:a.statusCode||null,error_text:a.errorText||null,meta_json:n?JSON.stringify({contentLoggingMode:"disabled",contentRedacted:!0}):a.meta?JSON.stringify(a.meta):null};if("postgres"===j.type){let a=new(await Promise.resolve().then(c.bind(c,64939))).Client({host:j.host,port:Number(j.port||5432),database:j.database,user:j.username,password:j.password,ssl:!!j.ssl&&{rejectUnauthorized:!1}});try{await a.connect(),await a.query(v("postgres")),await x(a),await a.query(`INSERT INTO prompt_logs (
181
+ `,[b,c,d]);return e.length>0}async function D(a,b){let c=async(c,d)=>{await B(a,b.database,"prompt_logs",c)||await a.query(`ALTER TABLE prompt_logs ADD COLUMN ${c} ${d}`)};await c("client_ip","VARCHAR(64)"),await c("client_port","VARCHAR(32)"),await c("client_user_agent","TEXT"),await c("client_host","TEXT"),await c("source_tool","VARCHAR(80)"),await c("source_tool_label","VARCHAR(120)"),await c("source_host","VARCHAR(255)"),await c("provider","VARCHAR(120)"),await c("account_name","VARCHAR(255)"),await c("connection_id","VARCHAR(120)"),await c("display_model","VARCHAR(512)"),await c("content_mode","VARCHAR(32)"),await c("payload_hash","CHAR(64)"),await c("payload_size_bytes","BIGINT DEFAULT 0"),await C(a,b.database,"prompt_logs","idx_prompt_logs_payload_hash")||await a.query("CREATE INDEX idx_prompt_logs_payload_hash ON prompt_logs(payload_hash)"),await a.query(`CREATE TABLE IF NOT EXISTS prompt_log_payloads (
182
+ payload_hash CHAR(64) PRIMARY KEY,
183
+ created_at DATETIME(3) NOT NULL,
184
+ last_seen_at DATETIME(3) NOT NULL,
185
+ content_type VARCHAR(64),
186
+ payload_size_bytes BIGINT DEFAULT 0,
187
+ ref_count BIGINT DEFAULT 1,
188
+ payload_json JSON,
189
+ INDEX idx_prompt_log_payloads_created_at (created_at),
190
+ INDEX idx_prompt_log_payloads_last_seen_at (last_seen_at)
191
+ ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci`),await C(a,b.database,"prompt_logs","idx_prompt_logs_client_ip")||await a.query("CREATE INDEX idx_prompt_logs_client_ip ON prompt_logs(client_ip)"),await C(a,b.database,"prompt_logs","idx_prompt_logs_source_tool")||await a.query("CREATE INDEX idx_prompt_logs_source_tool ON prompt_logs(source_tool)")}function E(a){return Buffer.byteLength(String(a||""),"utf8")}function F(a,b,c=null){if(b)return JSON.stringify({contentLoggingMode:"disabled",contentRedacted:!0});let d=a.meta&&"object"==typeof a.meta?{...a.meta}:a.meta?{value:a.meta}:{};for(let a of["body","requestBody","responseBody","fullRequestJson","fullResponseJson","payload","request","response"])Object.prototype.hasOwnProperty.call(d,a)&&delete d[a];return d.contentLoggingMode=i(a.contentLoggingMode||a.context?.contentLoggingMode),d.contentMode=c?.contentMode||"full",c?.payloadHash&&(d.payloadHash=c.payloadHash,d.payloadSizeBytes=c.payloadSizeBytes||0,d.payloadStorage="prompt_log_payloads"),Object.keys(d).length?JSON.stringify(d):null}async function G(a,b,c){if(!c)return null;let d=c&&l?.createHash?l.createHash("sha256").update(c).digest("hex"):null;if(!d)return null;let e=E(c),f=b.created_at.replace("T"," ").replace("Z","");return await a.query(`INSERT INTO prompt_log_payloads (
192
+ payload_hash, created_at, last_seen_at, content_type, payload_size_bytes, ref_count, payload_json
193
+ ) VALUES (?, ?, ?, ?, ?, 1, CAST(? AS JSON))
194
+ ON DUPLICATE KEY UPDATE
195
+ last_seen_at = VALUES(last_seen_at),
196
+ ref_count = ref_count + 1`,[d,f,f,"request_json",e,c]),{payloadHash:d,payloadSizeBytes:e,contentMode:"full"}}function H(a,b=[]){if(null==a)return b;if("string"==typeof a)return a.trim()&&b.push(a.trim()),b;if(Array.isArray(a)){for(let c of a)H(c,b);return b}return"object"==typeof a&&("string"==typeof a.text&&a.text.trim()&&b.push(a.text.trim()),Array.isArray(a.parts)&&H(a.parts,b)),b}function I(a){return String(a||"").trim()}function J(a){let b=I(a);if(!b)return"";try{return new URL(b).hostname||""}catch{return b.replace(/^https?:\/\//,"").replace(/\/.*$/,"").replace(/:\d+$/,"")}}async function K(a){try{var b;if(await p(),!j||!k)return;let d=await x(),f=i(a.contentLoggingMode||a.context?.contentLoggingMode),h="disabled"===f;if(!d?.enabled||(b=a.stage,(!d?.enabled||("client"===b?!1===d.logClientRequest:"source"===b||"openai"===b?!1===d.logSourceRequest:"target"===b?!1===d.logTargetRequest:"provider_response"===b?!0!==d.logProviderResponse:"error"===b&&!1===d.logErrors))&&!h))return;let l=new Date().toISOString(),m=h?g:(a.promptText||(function a(b,c=0,d=[]){if(null==b||c>10||d.join("\n").length>2e5)return d;let e=0===c?function(a){let b=function(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=a.request&&"object"==typeof a.request?a.request:a;for(let c of[a.body?.request&&"object"==typeof a.body.request?a.body.request:null,a.payload?.request&&"object"==typeof a.payload.request?a.payload.request:null,b])if(!(!c||"object"!=typeof c||Array.isArray(c))&&(c.systemInstruction||Array.isArray(c.contents)||Array.isArray(c.tools)))return c;return null}(a);if(!b)return null;let c=[],d=H(b.systemInstruction,[]);d.length&&c.push(`[SYSTEM]
197
+ ${d.join("\n\n")}`);let e=[];for(let a of Array.isArray(b.tools)?b.tools:[])for(let b of Array.isArray(a?.functionDeclarations)?a.functionDeclarations:[]){let a=I(b?.name),c=I(b?.description);(a||c)&&e.push(c?`${a}: ${c}`:a)}e.length&&c.push(`[TOOLS]
198
+ ${e.join("\n")}`);let f=[];for(let a of Array.isArray(b.contents)?b.contents:[]){let b=I(a?.role)||"message",c=H(a,[]);c.length&&f.push(`${b}: ${c.join("\n")}`)}return f.length&&c.push(`[MESSAGES]
199
+ ${f.join("\n\n")}`),c.length?c:null}(b):null;if(e)return d.push(...e),d;if("string"==typeof b)return b.trim()&&d.push(b),d;if(Array.isArray(b)){for(let e of b)a(e,c+1,d);return d}if("object"==typeof b)for(let[e,f]of Object.entries(b)){let b=e.toLowerCase();["content","text","prompt","input","message"].includes(b)?a(f,c+1,d):c<6&&("messages"===b||"contents"===b||"parts"===b||"body"===b||"request"===b||"payload"===b)&&a(f,c+1,d)}return d})(a.request||a.response||{}).join("\n\n")).slice(0,5e5),n=h||!a.request?null:function(a){if(null==a)return null;if("string"==typeof a)try{return JSON.parse(a),a}catch{return JSON.stringify(a)}try{return JSON.stringify(a)}catch{return JSON.stringify(String(a))}}(a.request),o="mysql"===d.type?null:n,q=h?null:"string"==typeof a.response?a.response.slice(0,5e5):null,r=t(a.headers||a.request?.headers||{}),s=u(a.headers||a.request?.headers||{}),B=v(r,a.clientInfo||{}),C=v(s,a.sourceInfo||{}),K=function(a={}){var b,c;let d,e,f,g=a.context||{},h=function(a){let b=I(a),c=b.indexOf("/");if(c<=0)return"";let d=b.slice(0,c);return/^[a-z][a-z0-9_-]{1,60}$/i.test(d)?d:""}(a.model),i=I(g.provider)||I(a.provider)||I(a.providerId)||I(a.provider_id)||h||"",j=(d=I(i),/^openai-compatible-chat-[0-9a-f-]{20,}$/i.test(d)||/^openai-compatible-[0-9a-f-]{20,}$/i.test(d))?"":i,k=I(g.accountName)||I(g.account_name)||I(g.connectionName)||I(a.accountName)||I(a.account_name)||I(a.keyName)||I(a.key_name)||"",l=I(g.connectionId)||I(a.connectionId)||I(a.connection_id)||"",m=(b=I(a.model),c=j||h,e=I(b),(f=I(c))&&e.startsWith(`${f}/`)?e.slice(f.length+1):e),n=J(a.providerUrl)||J(a.endpoint),o="";return j&&k&&k!==j?o=`${j}/${k}`:j?o=j:k?o=k:n&&(o=n),{provider:j||null,accountName:k||null,connectionId:l||null,displayModel:o&&m?`${o}/${m}`:null}}(a),L={id:`${Date.now()}_${Math.random().toString(16).slice(2)}`,created_at:l,session_id:a.sessionId||null,source_format:a.sourceFormat||null,target_format:a.targetFormat||null,model:a.model||null,endpoint:a.endpoint||null,stage:a.stage||null,provider_url:a.providerUrl||null,provider:K.provider||null,account_name:K.accountName||null,connection_id:K.connectionId||null,display_model:K.displayModel||null,client_ip:B.client_ip||null,client_port:B.client_port||null,client_user_agent:B.client_user_agent||null,client_host:B.client_host||null,source_tool:C.source_tool||null,source_tool_label:C.source_tool_label||null,source_host:C.source_host||null,content_mode:h?"disabled":"full",payload_hash:null,payload_size_bytes:n?E(n):0,prompt_text:m||null,full_request_json:o,response_text:q,status_code:a.statusCode||null,error_text:a.errorText||null,meta_json:F(a,h)};if("postgres"===d.type){let a=new(await Promise.resolve().then(c.bind(c,64939))).Client({host:d.host,port:Number(d.port||5432),database:d.database,user:d.username,password:d.password,ssl:!!d.ssl&&{rejectUnauthorized:!1}});try{await a.connect(),await a.query(y("postgres")),await A(a),await a.query(`INSERT INTO prompt_logs (
160
200
  id, created_at, session_id, source_format, target_format, model,
161
201
  endpoint, stage, provider_url, provider, account_name, connection_id, display_model,
162
202
  client_ip, client_port, client_user_agent, client_host,
163
- source_tool, source_tool_label, source_host,
203
+ source_tool, source_tool_label, source_host, content_mode, payload_hash, payload_size_bytes,
164
204
  prompt_text, full_request_json,
165
205
  response_text, status_code, error_text, meta_json
166
206
  ) VALUES (
167
207
  $1, $2, $3, $4, $5, $6,
168
208
  $7, $8, $9, $10, $11, $12, $13,
169
209
  $14, $15, $16, $17,
170
- $18, $19, $20,
171
- $21, $22::jsonb,
172
- $23, $24, $25, $26::jsonb
173
- )`,[G.id,G.created_at,G.session_id,G.source_format,G.target_format,G.model,G.endpoint,G.stage,G.provider_url,G.provider,G.account_name,G.connection_id,G.display_model,G.client_ip,G.client_port,G.client_user_agent,G.client_host,G.source_tool,G.source_tool_label,G.source_host,G.prompt_text,G.full_request_json,G.response_text,G.status_code,G.error_text,G.meta_json]),G.session_id&&G.display_model&&await a.query(`UPDATE prompt_logs
210
+ $18, $19, $20, $21, $22, $23,
211
+ $24, $25::jsonb,
212
+ $26, $27, $28, $29::jsonb
213
+ )`,[L.id,L.created_at,L.session_id,L.source_format,L.target_format,L.model,L.endpoint,L.stage,L.provider_url,L.provider,L.account_name,L.connection_id,L.display_model,L.client_ip,L.client_port,L.client_user_agent,L.client_host,L.source_tool,L.source_tool_label,L.source_host,L.content_mode,L.payload_hash,L.payload_size_bytes,L.prompt_text,L.full_request_json,L.response_text,L.status_code,L.error_text,L.meta_json]),L.session_id&&L.display_model&&await a.query(`UPDATE prompt_logs
174
214
  SET provider = COALESCE(provider, $1),
175
215
  account_name = COALESCE(account_name, $2),
176
216
  connection_id = COALESCE(connection_id, $3),
177
217
  display_model = $4
178
- WHERE session_id = $5`,[G.provider,G.account_name,G.connection_id,G.display_model,G.session_id])}finally{await a.end()}return}if("mysql"===j.type){let a=await c.e(8491).then(c.t.bind(c,38491,19)),b=await a.createConnection({host:j.host,port:Number(j.port||3306),database:j.database,user:j.username,password:j.password,ssl:j.ssl?{}:void 0,multipleStatements:!0});try{await b.query(v("mysql")),await A(b,j),await b.query(`INSERT INTO prompt_logs (
218
+ WHERE session_id = $5`,[L.provider,L.account_name,L.connection_id,L.display_model,L.session_id])}finally{await a.end()}return}if("mysql"===d.type){let b=await c.e(8491).then(c.t.bind(c,38491,19)),e=await b.createConnection({host:d.host,port:Number(d.port||3306),database:d.database,user:d.username,password:d.password,ssl:d.ssl?{}:void 0,multipleStatements:!0});try{await e.query(y("mysql")),await D(e,d);let b=await G(e,L,n);b&&(L.payload_hash=b.payloadHash,L.payload_size_bytes=b.payloadSizeBytes,L.meta_json=F(a,h,b)),await e.query(`INSERT INTO prompt_logs (
179
219
  id, created_at, session_id, source_format, target_format, model,
180
220
  endpoint, stage, provider_url, provider, account_name, connection_id, display_model,
181
221
  client_ip, client_port, client_user_agent, client_host,
182
- source_tool, source_tool_label, source_host,
222
+ source_tool, source_tool_label, source_host, content_mode, payload_hash, payload_size_bytes,
183
223
  prompt_text, full_request_json,
184
224
  response_text, status_code, error_text, meta_json
185
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CAST(? AS JSON), ?, ?, ?, CAST(? AS JSON))`,[G.id,G.created_at.replace("T"," ").replace("Z",""),G.session_id,G.source_format,G.target_format,G.model,G.endpoint,G.stage,G.provider_url,G.provider,G.account_name,G.connection_id,G.display_model,G.client_ip,G.client_port,G.client_user_agent,G.client_host,G.source_tool,G.source_tool_label,G.source_host,G.prompt_text,G.full_request_json,G.response_text,G.status_code,G.error_text,G.meta_json]),G.session_id&&G.display_model&&await b.query(`UPDATE prompt_logs
225
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CAST(? AS JSON), ?, ?, ?, CAST(? AS JSON))`,[L.id,L.created_at.replace("T"," ").replace("Z",""),L.session_id,L.source_format,L.target_format,L.model,L.endpoint,L.stage,L.provider_url,L.provider,L.account_name,L.connection_id,L.display_model,L.client_ip,L.client_port,L.client_user_agent,L.client_host,L.source_tool,L.source_tool_label,L.source_host,L.content_mode,L.payload_hash,L.payload_size_bytes,L.prompt_text,L.full_request_json,L.response_text,L.status_code,L.error_text,L.meta_json]),L.session_id&&L.display_model&&await e.query(`UPDATE prompt_logs
186
226
  SET provider = COALESCE(provider, ?),
187
227
  account_name = COALESCE(account_name, ?),
188
228
  connection_id = COALESCE(connection_id, ?),
189
229
  display_model = ?
190
- WHERE session_id = ?`,[G.provider,G.account_name,G.connection_id,G.display_model,G.session_id])}finally{await b.end()}return}let H=j.sqlitePath||(e.DATA_DIR?i.join(e.DATA_DIR,"logs","promptLogs.sqlite"):null);if(!H)return;h.mkdirSync(i.dirname(H),{recursive:!0});let I=await t(H);try{I.exec(v("sqlite")),await w(I),I.run(`INSERT INTO prompt_logs (
230
+ WHERE session_id = ?`,[L.provider,L.account_name,L.connection_id,L.display_model,L.session_id])}finally{await e.end()}return}let M=d.sqlitePath||(e.DATA_DIR?k.join(e.DATA_DIR,"logs","promptLogs.sqlite"):null);if(!M)return;j.mkdirSync(k.dirname(M),{recursive:!0});let N=await w(M);try{N.exec(y("sqlite")),await z(N),N.run(`INSERT INTO prompt_logs (
191
231
  id, created_at, session_id, source_format, target_format, model,
192
232
  endpoint, stage, provider_url, provider, account_name, connection_id, display_model,
193
233
  client_ip, client_port, client_user_agent, client_host,
194
- source_tool, source_tool_label, source_host,
234
+ source_tool, source_tool_label, source_host, content_mode, payload_hash, payload_size_bytes,
195
235
  prompt_text, full_request_json,
196
236
  response_text, status_code, error_text, meta_json
197
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[G.id,G.created_at,G.session_id,G.source_format,G.target_format,G.model,G.endpoint,G.stage,G.provider_url,G.provider,G.account_name,G.connection_id,G.display_model,G.client_ip,G.client_port,G.client_user_agent,G.client_host,G.source_tool,G.source_tool_label,G.source_host,G.prompt_text,G.full_request_json,G.response_text,G.status_code,G.error_text,G.meta_json]),G.session_id&&G.display_model&&I.run(`UPDATE prompt_logs
237
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[L.id,L.created_at,L.session_id,L.source_format,L.target_format,L.model,L.endpoint,L.stage,L.provider_url,L.provider,L.account_name,L.connection_id,L.display_model,L.client_ip,L.client_port,L.client_user_agent,L.client_host,L.source_tool,L.source_tool_label,L.source_host,L.content_mode,L.payload_hash,L.payload_size_bytes,L.prompt_text,L.full_request_json,L.response_text,L.status_code,L.error_text,L.meta_json]),L.session_id&&L.display_model&&N.run(`UPDATE prompt_logs
198
238
  SET provider = COALESCE(provider, ?),
199
239
  account_name = COALESCE(account_name, ?),
200
240
  connection_id = COALESCE(connection_id, ?),
201
241
  display_model = ?
202
- WHERE session_id = ?`,[G.provider,G.account_name,G.connection_id,G.display_model,G.session_id])}finally{I.close()}}catch(a){n("db-write",`[PromptDB] Failed to write prompt log: ${a.message}`)}}async function F(a,b,c){if(await m(),!h||!j)return null;try{h.existsSync(j)||h.mkdirSync(j,{recursive:!0});let d=function(a=new Date){let b=a=>String(a).padStart(2,"0"),c=a.getFullYear(),d=b(a.getMonth()+1),e=b(a.getDate()),f=b(a.getHours()),g=b(a.getMinutes()),h=b(a.getSeconds()),i=String(a.getMilliseconds()).padStart(3,"0");return`${c}${d}${e}_${f}${g}${h}_${i}`}(),e=(c||"unknown").replace(/[/:]/g,"-"),f=`${a}_${b}_${e}_${d}`,g=i.join(j,f);return h.mkdirSync(g,{recursive:!0}),g}catch(a){return console.log("[LOG] Failed to create log session:",a.message),null}}function G(a,b,c){if(h&&a)try{let d=i.join(a,b);h.writeFileSync(d,JSON.stringify(c,null,2))}catch(a){console.log(`[LOG] Failed to write ${b}:`,a.message)}}function H(a){if(!a)return{};let b={...a},c=["authorization","x-api-key","cookie","token","api-key","openai-api-key","anthropic-api-key","gemini-api-key","google-api-key"];for(let a of Object.keys(b)){let d=a.toLowerCase();if(c.some(a=>d.includes(a))){let c=String(b[a]||"");c.length>16?b[a]=`${c.slice(0,6)}...${c.slice(-4)}`:c.length>0&&(b[a]="***")}}return b}async function I(a,b,c,d={}){if(!f)return{sessionPath:null,logClientRawRequest(){},logRawRequest(){},logOpenAIRequest(){},logTargetRequest(){},logProviderResponse(){},appendProviderChunk(){},appendOpenAIChunk(){},logConvertedResponse(){},appendConvertedChunk(){},logError(){}};let e=await F(a,b,c),g=e?String(e).split(/[\\/]/).pop():null,j={},k={};return{get sessionPath(){return e},logClientRawRequest(f,h,i={}){let l={timestamp:new Date().toISOString(),endpoint:f,headers:H(i),body:h};j=s(j,q(i)),k=s(k,r(i)),G(e,"1_req_client.json",l),E({stage:"client",clientInfo:j,sourceInfo:k,sessionId:g,sourceFormat:a,targetFormat:b,model:c,context:d,endpoint:f,request:l})},logRawRequest(f,h={}){let i={timestamp:new Date().toISOString(),headers:H(h),body:f};j=s(j,q(h)),k=s(k,r(h)),G(e,"2_req_source.json",i),E({stage:"source",clientInfo:j,sourceInfo:k,sessionId:g,sourceFormat:a,targetFormat:b,model:c,context:d,request:i})},logOpenAIRequest(f){let h={timestamp:new Date().toISOString(),body:f};G(e,"3_req_openai.json",h),E({stage:"openai",clientInfo:j,sourceInfo:k,sessionId:g,sourceFormat:a,targetFormat:b,model:c,context:d,request:h})},logTargetRequest(f,h,i){let l={timestamp:new Date().toISOString(),url:f,headers:H(h),body:i};G(e,"4_req_target.json",l),E({stage:"target",clientInfo:j,sourceInfo:k,sessionId:g,sourceFormat:a,targetFormat:b,model:c,context:d,endpoint:f,providerUrl:f,request:l})},logProviderResponse(f,h,i,l){let m={timestamp:new Date().toISOString(),status:f,statusText:h,headers:i?"function"==typeof i.entries?Object.fromEntries(i.entries()):i:{},body:l};G(e,"5_res_provider.json",m),E({stage:"provider_response",clientInfo:j,sourceInfo:k,sessionId:g,sourceFormat:a,targetFormat:b,model:c,context:d,statusCode:f,response:l,meta:m})},appendProviderChunk(a){if(h&&e)try{let b=i.join(e,"5_res_provider.txt");h.appendFileSync(b,a)}catch{}},appendOpenAIChunk(a){if(h&&e)try{let b=i.join(e,"6_res_openai.txt");h.appendFileSync(b,a)}catch{}},logConvertedResponse(a){G(e,"7_res_client.json",{timestamp:new Date().toISOString(),body:a})},appendConvertedChunk(a){if(h&&e)try{let b=i.join(e,"7_res_client.txt");h.appendFileSync(b,a)}catch{}},logError(f,h=null){let i={timestamp:new Date().toISOString(),error:f?.message||String(f),stack:f?.stack,requestBody:h};G(e,"6_error.json",i),E({stage:"error",clientInfo:j,sourceInfo:k,sessionId:g,sourceFormat:a,targetFormat:b,model:c,context:d,errorText:i.error,request:h,meta:i})}}}}};
242
+ WHERE session_id = ?`,[L.provider,L.account_name,L.connection_id,L.display_model,L.session_id])}finally{N.close()}}catch(a){q("db-write",`[PromptDB] Failed to write prompt log: ${a.message}`)}}async function L(a,b,c){if(await p(),!j||!m)return null;try{j.existsSync(m)||j.mkdirSync(m,{recursive:!0});let d=function(a=new Date){let b=a=>String(a).padStart(2,"0"),c=a.getFullYear(),d=b(a.getMonth()+1),e=b(a.getDate()),f=b(a.getHours()),g=b(a.getMinutes()),h=b(a.getSeconds()),i=String(a.getMilliseconds()).padStart(3,"0");return`${c}${d}${e}_${f}${g}${h}_${i}`}(),e=(c||"unknown").replace(/[/:]/g,"-"),f=`${a}_${b}_${e}_${d}`,g=k.join(m,f);return j.mkdirSync(g,{recursive:!0}),g}catch(a){return console.log("[LOG] Failed to create log session:",a.message),null}}function M(a){if(!a)return{};let b={...a},c=["authorization","x-api-key","cookie","token","api-key","openai-api-key","anthropic-api-key","gemini-api-key","google-api-key"];for(let a of Object.keys(b)){let d=a.toLowerCase();if(c.some(a=>d.includes(a))){let c=String(b[a]||"");c.length>16?b[a]=`${c.slice(0,6)}...${c.slice(-4)}`:c.length>0&&(b[a]="***")}}return b}async function N(a,b,c,d={}){if(!f)return{sessionPath:null,logClientRawRequest(){},logRawRequest(){},logOpenAIRequest(){},logTargetRequest(){},logProviderResponse(){},appendProviderChunk(){},appendOpenAIChunk(){},logConvertedResponse(){},appendConvertedChunk(){},logError(){}};let e=await L(a,b,c),h=e?String(e).split(/[\\/]/).pop():null,l="disabled"===i(d?.contentLoggingMode),m={},n={},o=(a,b)=>{var c=l?function(a={}){let b={timestamp:a.timestamp||new Date().toISOString(),contentLoggingMode:"disabled",contentRedacted:!0,note:g};return a.endpoint&&(b.endpoint=a.endpoint),a.url&&(b.url=a.url),void 0!==a.status&&(b.status=a.status),void 0!==a.statusText&&(b.statusText=a.statusText),void 0!==a.error&&(b.error=a.error),b}(b):b;if(j&&e)try{let b=k.join(e,a);j.writeFileSync(b,JSON.stringify(c,null,2))}catch(b){console.log(`[LOG] Failed to write ${a}:`,b.message)}};return{get sessionPath(){return e},logClientRawRequest(e,f,g={}){let i={timestamp:new Date().toISOString(),endpoint:e,headers:M(g),body:f};m=v(m,t(g)),n=v(n,u(g)),o("1_req_client.json",i),K({stage:"client",clientInfo:m,sourceInfo:n,sessionId:h,sourceFormat:a,targetFormat:b,model:c,context:d,endpoint:e,request:i})},logRawRequest(e,f={}){let g={timestamp:new Date().toISOString(),headers:M(f),body:e};m=v(m,t(f)),n=v(n,u(f)),o("2_req_source.json",g),K({stage:"source",clientInfo:m,sourceInfo:n,sessionId:h,sourceFormat:a,targetFormat:b,model:c,context:d,request:g})},logOpenAIRequest(e){let f={timestamp:new Date().toISOString(),body:e};o("3_req_openai.json",f),K({stage:"openai",clientInfo:m,sourceInfo:n,sessionId:h,sourceFormat:a,targetFormat:b,model:c,context:d,request:f})},logTargetRequest(e,f,g){let i={timestamp:new Date().toISOString(),url:e,headers:M(f),body:g};o("4_req_target.json",i),K({stage:"target",clientInfo:m,sourceInfo:n,sessionId:h,sourceFormat:a,targetFormat:b,model:c,context:d,endpoint:e,providerUrl:e,request:i})},logProviderResponse(e,f,g,i){let j={timestamp:new Date().toISOString(),status:e,statusText:f,headers:g?"function"==typeof g.entries?Object.fromEntries(g.entries()):g:{},body:i};o("5_res_provider.json",j),K({stage:"provider_response",clientInfo:m,sourceInfo:n,sessionId:h,sourceFormat:a,targetFormat:b,model:c,context:d,statusCode:e,response:i,meta:j})},appendProviderChunk(a){if(!l&&j&&e)try{let b=k.join(e,"5_res_provider.txt");j.appendFileSync(b,a)}catch{}},appendOpenAIChunk(a){if(!l&&j&&e)try{let b=k.join(e,"6_res_openai.txt");j.appendFileSync(b,a)}catch{}},logConvertedResponse(a){o("7_res_client.json",{timestamp:new Date().toISOString(),body:a})},appendConvertedChunk(a){if(!l&&j&&e)try{let b=k.join(e,"7_res_client.txt");j.appendFileSync(b,a)}catch{}},logError(e,f=null){let g={timestamp:new Date().toISOString(),error:e?.message||String(e),stack:e?.stack,requestBody:f};o("6_error.json",g),K({stage:"error",clientInfo:m,sourceInfo:n,sessionId:h,sourceFormat:a,targetFormat:b,model:c,context:d,errorText:g.error,request:f,meta:g})}}}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=5206,exports.ids=[5206],exports.modules={92825:(a,b,c)=>{c.d(b,{CO:()=>z,Qx:()=>C,cf:()=>D,ih:()=>B,sU:()=>E,uj:()=>A});var d=c(25060);let e="(|(sAMAccountName={{username}})(userPrincipalName={{username}})(mail={{username}}))",f=["dn","cn","displayName","mail","sAMAccountName","userPrincipalName","distinguishedName","memberOf"],g="1.2.840.113556.1.4.1941";function h(a){return String(a||"").trim()}function i(a){return Array.isArray(a)?a.map(a=>h(a)).filter(Boolean):String(a||"").split(/[,\n]/).map(a=>h(a)).filter(Boolean)}function j(a){return[...new Set(a.filter(Boolean))]}function k(a){return String(a||"").trim().toLowerCase()}function l(a){return String(a||"").replace(/[\\*()\u0000]/g,a=>{switch(a){case"\\":return"\\5c";case"*":return"\\2a";case"(":return"\\28";case")":return"\\29";case"\0":return"\\00";default:return a}})}function m(a={}){let b=h(a.ldapUserBaseDn||a.ldapBaseDn);return{enabled:!0===a.ldapEnabled,url:h(a.ldapUrl),bindDn:h(a.ldapBindDn),bindPassword:a.ldapBindPassword||"",baseDn:b,userBaseDn:b,userSearchFilter:h(a.ldapUserSearchFilter)||e,userNameAttribute:h(a.ldapUserNameAttribute)||"sAMAccountName",userDisplayAttribute:h(a.ldapUserDisplayAttribute)||"displayName",userEmailAttribute:h(a.ldapUserEmailAttribute)||"mail",allowedUsers:i(a.ldapAllowedUsers),allowAnyUser:!0===a.ldapAllowAnyUser,loginAllowedGroupDn:h(a.ldapLoginAllowedGroupDn),adminGroupDn:h(a.ldapAdminGroupDn),monitorAdminGroupDn:h(a.ldapMonitorAdminGroupDn),nestedGroups:!1!==a.ldapNestedGroups,tlsRejectUnauthorized:function(a,b=!1){return null==a||""===a?b:!0===a||"true"===a}(a.ldapTlsRejectUnauthorized,!0),connectTimeoutMs:Number(a.ldapConnectTimeoutMs||8e3)}}function n(a,{requirePassword:b=!0}={}){if(!a.enabled)throw Error("LDAP login is disabled.");if(!a.url)throw Error("LDAP URL is required.");if(!a.userBaseDn)throw Error("LDAP User Base DN is required.");if(!a.bindDn)throw Error("LDAP Bind DN is required.");if(b&&!a.bindPassword)throw Error("LDAP Bind password is required.")}async function o(a,b){let c=new d.Kj({url:a.url,timeout:a.connectTimeoutMs,connectTimeout:a.connectTimeoutMs,tlsOptions:{rejectUnauthorized:!1!==a.tlsRejectUnauthorized}});try{return await c.bind(a.bindDn,a.bindPassword||""),await b(c)}finally{try{await c.unbind()}catch{}}}function p(a,b){let c=a?.[b];return Array.isArray(c)?c[0]||"":c||""}function q(a,b){let c=a?.[b];return Array.isArray(c)?c.map(String).filter(Boolean):c?[String(c)]:[]}function r(a,b){let c=b.userNameAttribute||"sAMAccountName",d=b.userDisplayAttribute||"displayName",e=b.userEmailAttribute||"mail",f=p(a,c)||p(a,"sAMAccountName")||p(a,"userPrincipalName")||p(a,"mail")||a.dn;return{dn:a.dn,username:f,displayName:p(a,d)||p(a,"displayName")||p(a,"cn")||f,email:p(a,e)||p(a,"mail")||p(a,"userPrincipalName")||"",userPrincipalName:p(a,"userPrincipalName")||"",sAMAccountName:p(a,"sAMAccountName")||"",memberOf:q(a,"memberOf")}}function s(a,b={}){let c=a.allowedUsers.map(k).filter(Boolean);return 0!==c.length&&(function(a={}){return[a.username,a.email,a.displayName,a.userPrincipalName,a.sAMAccountName,a.dn].map(k).filter(Boolean)})(b).some(a=>c.includes(a))}async function t(a,b,c){var d;let g,i,k=(d=b.userSearchFilter,g=h(d)||e,i=l(c),g.replaceAll("{{username}}",i).replaceAll("{username}",i));return(await a.search(b.userBaseDn,{scope:"sub",filter:k,sizeLimit:1,attributes:j([...f,b.userNameAttribute,b.userDisplayAttribute,b.userEmailAttribute])})).searchEntries[0]||null}async function u(a,b,c,d){if(!b.nestedGroups)return!1;try{let e=`(&(distinguishedName=${l(c)})(memberOf:${g}:=${l(d)}))`;return(await a.search(b.userBaseDn,{scope:"sub",filter:e,sizeLimit:1,attributes:["dn"]})).searchEntries.length>0}catch{return!1}}async function v(a,b){try{let c=(await a.search(b,{scope:"base",filter:"(objectClass=*)",sizeLimit:1,attributes:["member","uniqueMember"]})).searchEntries[0]||{};return j([...q(c,"member"),...q(c,"uniqueMember")])}catch{return[]}}async function w(a,b,c,d){let e=h(d);if(!e)return!1;let f=h(c?.dn);return!!f&&(!!(q(c,"memberOf").map(k).includes(k(e))||await u(a,b,f,e))||(await v(a,e)).map(k).includes(k(f)))}async function x(a,b,c,d){let e=b.userNameAttribute||"sAMAccountName",h=b.userDisplayAttribute||"displayName",i=b.userEmailAttribute||"mail",k=String(c||"").trim(),m=l(k||"*"),n=k?`(|(${e}=*${m}*)(${h}=*${m}*)(${i}=*${m}*)(userPrincipalName=*${m}*)(sAMAccountName=*${m}*))`:"(|(sAMAccountName=*)(userPrincipalName=*)(mail=*))",o=b.nestedGroups?`(memberOf:${g}:=${l(d)})`:`(memberOf=${l(d)})`,p=`(&(&(objectCategory=person)(objectClass=user)(!(objectClass=computer))(!(userAccountControl:1.2.840.113556.1.4.803:=2)))${n}${o})`;return(await a.search(b.userBaseDn,{scope:"sub",filter:p,sizeLimit:100,attributes:j([...f,e,h,i])})).searchEntries.map(a=>r(a,b))}async function y(a,b,c,d){let e=await v(a,d),g=[];for(let d of e.slice(0,200))try{let e=(await a.search(d,{scope:"base",filter:"(objectClass=*)",sizeLimit:1,attributes:j([...f,b.userNameAttribute,b.userDisplayAttribute,b.userEmailAttribute])})).searchEntries[0];if(e?.dn){let a=r(e,b);(function(a,b){let c=k(b);return!c||[a.username,a.displayName,a.email,a.userPrincipalName,a.sAMAccountName,a.dn].map(k).some(a=>a.includes(c))})(a,c)&&g.push(a)}}catch{}return g}function z(a={}){let b=m(a);return!!(b.enabled&&b.url&&b.bindDn&&b.bindPassword&&b.userBaseDn)}function A(a={}){let b=m(a);return{ldapEnabled:b.enabled,ldapUrl:b.url,ldapBindDn:b.bindDn,ldapBaseDn:b.userBaseDn,ldapUserBaseDn:b.userBaseDn,ldapUserSearchFilter:b.userSearchFilter,ldapUserNameAttribute:b.userNameAttribute,ldapUserDisplayAttribute:b.userDisplayAttribute,ldapUserEmailAttribute:b.userEmailAttribute,ldapLoginAllowedGroupDn:b.loginAllowedGroupDn,ldapAdminGroupDn:b.adminGroupDn,ldapMonitorAdminGroupDn:b.monitorAdminGroupDn,ldapNestedGroups:b.nestedGroups,ldapAllowedUsers:b.allowedUsers,ldapAllowAnyUser:b.allowAnyUser,ldapTlsRejectUnauthorized:b.tlsRejectUnauthorized,ldapConnectTimeoutMs:b.connectTimeoutMs,ldapHasBindPassword:!!a.ldapBindPassword,ldapConfigured:z(a)}}function B(a={}){let b={};for(let c of["ldapUrl","ldapBindDn","ldapBaseDn","ldapUserBaseDn","ldapUserSearchFilter","ldapUserNameAttribute","ldapUserDisplayAttribute","ldapUserEmailAttribute","ldapLoginAllowedGroupDn","ldapAdminGroupDn","ldapMonitorAdminGroupDn"])Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=h(a[c]));if(Object.prototype.hasOwnProperty.call(b,"ldapUserBaseDn")&&(b.ldapBaseDn=b.ldapUserBaseDn),Object.prototype.hasOwnProperty.call(a,"ldapEnabled")&&(b.ldapEnabled=!0===a.ldapEnabled),Object.prototype.hasOwnProperty.call(a,"ldapBindPassword")){let c=String(a.ldapBindPassword||"");c&&(b.ldapBindPassword=c)}if(Object.prototype.hasOwnProperty.call(a,"ldapClearBindPassword")&&!0===a.ldapClearBindPassword&&(b.ldapBindPassword=""),Object.prototype.hasOwnProperty.call(a,"ldapAllowedUsers")&&(b.ldapAllowedUsers=i(a.ldapAllowedUsers)),Object.prototype.hasOwnProperty.call(a,"ldapAllowAnyUser")&&(b.ldapAllowAnyUser=!0===a.ldapAllowAnyUser),Object.prototype.hasOwnProperty.call(a,"ldapNestedGroups")&&(b.ldapNestedGroups=!1!==a.ldapNestedGroups),Object.prototype.hasOwnProperty.call(a,"ldapTlsRejectUnauthorized")&&(b.ldapTlsRejectUnauthorized=!1!==a.ldapTlsRejectUnauthorized),Object.prototype.hasOwnProperty.call(a,"ldapConnectTimeoutMs")){let c=Number(a.ldapConnectTimeoutMs);b.ldapConnectTimeoutMs=Number.isFinite(c)&&c>0?Math.min(c,3e4):8e3}return b}async function C(a={}){let b=m(a);return n(b),await o(b,async a=>{let c=await a.search(b.userBaseDn,{scope:"sub",filter:"(objectClass=*)",sizeLimit:1,attributes:["dn"]}),d=!0,e=!0,f=!0;return b.loginAllowedGroupDn&&(d=(await v(a,b.loginAllowedGroupDn)).length>=0),b.adminGroupDn&&(e=(await v(a,b.adminGroupDn)).length>=0),b.monitorAdminGroupDn&&(f=(await v(a,b.monitorAdminGroupDn)).length>=0),{ok:!0,message:`LDAP bind and user base search OK. Found ${c.searchEntries.length} object(s).${b.loginAllowedGroupDn?" Login group DN is readable.":""}${b.adminGroupDn?" Admin group DN is readable.":""}${b.monitorAdminGroupDn?" Monitor admin group DN is readable.":""}`,loginGroupOk:d,adminGroupOk:e,monitorAdminGroupOk:f}})}async function D(a={},b=""){let c=m(a);return n(c),await o(c,async a=>{if(c.loginAllowedGroupDn){let d=await x(a,c,b,c.loginAllowedGroupDn).catch(()=>[]);return d.length>0?d:await y(a,c,b,c.loginAllowedGroupDn)}let d=c.userNameAttribute||"sAMAccountName",e=c.userDisplayAttribute||"displayName",g=c.userEmailAttribute||"mail",h=String(b||"").trim(),i=l(h||"*"),k=h?`(|(${d}=*${i}*)(${e}=*${i}*)(${g}=*${i}*)(userPrincipalName=*${i}*)(sAMAccountName=*${i}*))`:"(|(sAMAccountName=*)(userPrincipalName=*)(mail=*))",m=`(&(&(objectCategory=person)(objectClass=user)(!(objectClass=computer))(!(userAccountControl:1.2.840.113556.1.4.803:=2)))${k})`;return(await a.search(c.userBaseDn,{scope:"sub",filter:m,sizeLimit:100,attributes:j([...f,d,e,g])})).searchEntries.map(a=>r(a,c))})}async function E(a={},b,c){let e=m(a);n(e);let f=h(b),g=String(c||"");if(!f)throw Error("LDAP username is required.");if(!g)throw Error("LDAP password is required.");return await o(e,async a=>{let b=await t(a,e,f);if(!b?.dn)throw Error("LDAP user was not found.");let c=new d.Kj({url:e.url,timeout:e.connectTimeoutMs,connectTimeout:e.connectTimeoutMs,tlsOptions:{rejectUnauthorized:!1!==e.tlsRejectUnauthorized}});try{await c.bind(b.dn,g)}finally{try{await c.unbind()}catch{}}let h=r(b,e),i=e.loginAllowedGroupDn;if(i){if(!await w(a,e,b,i))throw Error("This LDAP user is not a member of the allowed login group.")}else if(!e.allowAnyUser&&e.allowedUsers.length>0&&!s(e,h))throw Error("This LDAP user is not allowed to access the dashboard.");let j=!!e.adminGroupDn&&await w(a,e,b,e.adminGroupDn),k=s(e,h),l=j||k,m=!l&&!!e.monitorAdminGroupDn&&await w(a,e,b,e.monitorAdminGroupDn);return{...h,isLoginAllowed:!0,isAdmin:l,isMonitorAdmin:m,adminSource:j?"ldap-admin-group":k?"manual-admin-list":"none",monitorAdminSource:m?"ldap-monitor-admin-group":"none"}})}}};
@@ -176,165 +176,4 @@
176
176
  FROM request_error_events
177
177
  ${k.clause}
178
178
  ORDER BY created_at DESC
179
- LIMIT ${Q}`,[...k.params,50]);return{disabled:!1,total:n,summary:{total:n,serverImpacting:O,gateway:J,upstream:K,client:L,rateLimit:M,unknown:N,serverImpactingRate:n?O/n:0,clientRate:n?L/n:0,rateLimitRate:n?M/n:0},topErrors:v(w),topServerErrors:v(E),topClientErrors:v(F),topRateLimitErrors:v(G),byFaultOwner:H.map(a=>z(a,{faultOwner:a.key})),byStatusCode:await P(q,"status"),byStatusClass:await P("status_class","statusClass"),byErrorType:await P("error_type","errorType"),byErrorSource:await P("error_source","errorSource"),byProvider:await P("provider","provider"),byModel:await P("model","model"),byClientIp:await P("client_ip_normalized","clientIp"),bySourceTool:await P("source_tool","sourceTool"),recent:R}}catch(a){return w({disabled:!0,error:a?.message||String(a)})}finally{await c.close()}}},45903:(a,b,c)=>{c.d(b,{AP:()=>m,BY:()=>w,I6:()=>k,L7:()=>l,dX:()=>v,r:()=>j});var d=c(89718),e=c(33873),f=c.n(e),g=c(29021),h=c.n(g);let i={enabled:!1,type:"sqlite",sqlitePath:"",host:"",port:"",database:"",username:"",password:"",ssl:!1,createDatabase:!1,logClientRequest:!0,logSourceRequest:!0,logTargetRequest:!0,logProviderResponse:!1,logErrors:!0,retentionDays:30};function j(a){let b={...a||{}};return b.password&&(b.password="********"),b}function k(a={},b={}){let c={...i,...b||{},...a||{}};c.enabled=!!c.enabled,c.type=["sqlite","postgres","mysql"].includes(c.type)?c.type:"sqlite",c.ssl=!!c.ssl,c.createDatabase=!!c.createDatabase,c.logClientRequest=!1!==c.logClientRequest,c.logSourceRequest=!1!==c.logSourceRequest,c.logTargetRequest=!1!==c.logTargetRequest,c.logProviderResponse=!0===c.logProviderResponse,c.logErrors=!1!==c.logErrors;let d=Number(c.retentionDays);return c.retentionDays=Number.isFinite(d)&&d>0?Math.floor(d):30,"********"===c.password&&(c.password=b?.password||""),c.host=String(c.host||"").trim(),c.port=String(c.port||"").trim(),c.database=String(c.database||"").trim(),c.username=String(c.username||"").trim(),c.password=String(c.password||""),c.sqlitePath=String(c.sqlitePath||"").trim(),c}async function l(){let a=await (0,d.mt)();return{...i,...a?.promptLogDb||{}}}async function m(a){let b=await (0,d.mt)(),c=k(a,b?.promptLogDb||{});return await (0,d.Xx)({promptLogDb:c}),c}async function n(a){let b,d=a.sqlitePath||(b=process.env.DATA_DIR||"/var/lib/bluerouter",f().join(b,"logs","promptLogs.sqlite"));h().mkdirSync(f().dirname(d),{recursive:!0});try{let a=await Promise.resolve().then(c.t.bind(c,87550,23)),b=new(a.default||a)(d);return b.pragma("journal_mode = WAL"),b.pragma("busy_timeout = 5000"),{type:"sqlite",sqlitePath:d,exec(a){b.exec(a)},all:(a,c=[])=>b.prepare(a).all(...c),close(){b.close()}}}catch{let a=new(await Promise.resolve().then(c.t.bind(c,80099,23))).DatabaseSync(d);return a.exec("PRAGMA journal_mode = WAL"),a.exec("PRAGMA busy_timeout = 5000"),{type:"sqlite",sqlitePath:d,exec(b){a.exec(b)},all:(b,c=[])=>a.prepare(b).all(...c),close(){a.close()}}}}async function o(a,b=null){let d=new(await Promise.resolve().then(c.bind(c,64939))).Client({host:a.host,port:Number(a.port||5432),database:b||a.database,user:a.username,password:a.password,ssl:!!a.ssl&&{rejectUnauthorized:!1}});return await d.connect(),{type:"postgres",client:d,async exec(a){await d.query(a)},async close(){await d.end()}}}async function p(a,b=!0){let d=await c.e(8491).then(c.t.bind(c,38491,19)),e=await d.createConnection({host:a.host,port:Number(a.port||3306),database:b?a.database:void 0,user:a.username,password:a.password,ssl:a.ssl?{}:void 0,multipleStatements:!0});return{type:"mysql",conn:e,async exec(a){await e.query(a)},async close(){await e.end()}}}async function q(a){let b=new Set(a.all("PRAGMA table_info(prompt_logs)").map(a=>a.name)),c=(c,d)=>{b.has(c)||a.exec(`ALTER TABLE prompt_logs ADD COLUMN ${c} ${d};`)};c("client_ip","TEXT"),c("client_port","TEXT"),c("client_user_agent","TEXT"),c("client_host","TEXT"),c("source_tool","TEXT"),c("source_tool_label","TEXT"),c("source_host","TEXT"),c("provider","TEXT"),c("account_name","TEXT"),c("connection_id","TEXT"),c("display_model","TEXT"),a.exec("CREATE INDEX IF NOT EXISTS idx_prompt_logs_client_ip ON prompt_logs(client_ip);"),a.exec("CREATE INDEX IF NOT EXISTS idx_prompt_logs_source_tool ON prompt_logs(source_tool);")}async function r(a){await a.exec(`
180
- ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS client_ip TEXT;
181
- ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS client_port TEXT;
182
- ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS client_user_agent TEXT;
183
- ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS client_host TEXT;
184
- ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS source_tool TEXT;
185
- ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS source_tool_label TEXT;
186
- ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS source_host TEXT;
187
- ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS provider TEXT;
188
- ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS account_name TEXT;
189
- ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS connection_id TEXT;
190
- ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS display_model TEXT;
191
-
192
- CREATE INDEX IF NOT EXISTS idx_prompt_logs_client_ip
193
- ON prompt_logs(client_ip);
194
-
195
- CREATE INDEX IF NOT EXISTS idx_prompt_logs_source_tool
196
- ON prompt_logs(source_tool);
197
- `)}async function s(a,b,c,d){let[e]=await a.query(`
198
- SELECT 1 AS found
199
- FROM INFORMATION_SCHEMA.COLUMNS
200
- WHERE TABLE_SCHEMA = ?
201
- AND TABLE_NAME = ?
202
- AND COLUMN_NAME = ?
203
- LIMIT 1
204
- `,[b,c,d]);return e.length>0}async function t(a,b,c,d){let[e]=await a.query(`
205
- SELECT 1 AS found
206
- FROM INFORMATION_SCHEMA.STATISTICS
207
- WHERE TABLE_SCHEMA = ?
208
- AND TABLE_NAME = ?
209
- AND INDEX_NAME = ?
210
- LIMIT 1
211
- `,[b,c,d]);return e.length>0}async function u(a,b){let c=async(c,d)=>{await s(a.conn,b.database,"prompt_logs",c)||await a.conn.query(`ALTER TABLE prompt_logs ADD COLUMN ${c} ${d}`)};await c("client_ip","VARCHAR(64)"),await c("client_port","VARCHAR(32)"),await c("client_user_agent","TEXT"),await c("client_host","TEXT"),await c("source_tool","VARCHAR(80)"),await c("source_tool_label","VARCHAR(120)"),await c("source_host","VARCHAR(255)"),await c("provider","VARCHAR(120)"),await c("account_name","VARCHAR(255)"),await c("connection_id","VARCHAR(120)"),await c("display_model","VARCHAR(512)"),await t(a.conn,b.database,"prompt_logs","idx_prompt_logs_client_ip")||await a.conn.query("CREATE INDEX idx_prompt_logs_client_ip ON prompt_logs(client_ip)"),await t(a.conn,b.database,"prompt_logs","idx_prompt_logs_source_tool")||await a.conn.query("CREATE INDEX idx_prompt_logs_source_tool ON prompt_logs(source_tool)")}async function v(a=null){let b=k(a||await l());if("sqlite"===b.type){let a=await n(b);try{return a.exec(`
212
- CREATE TABLE IF NOT EXISTS prompt_logs (
213
- id TEXT PRIMARY KEY,
214
- created_at TEXT NOT NULL,
215
- session_id TEXT,
216
- source_format TEXT,
217
- target_format TEXT,
218
- model TEXT,
219
- endpoint TEXT,
220
- stage TEXT,
221
- provider_url TEXT,
222
- provider TEXT,
223
- account_name TEXT,
224
- connection_id TEXT,
225
- display_model TEXT,
226
- client_ip TEXT,
227
- client_port TEXT,
228
- client_user_agent TEXT,
229
- client_host TEXT,
230
- source_tool TEXT,
231
- source_tool_label TEXT,
232
- source_host TEXT,
233
- prompt_text TEXT,
234
- full_request_json TEXT,
235
- response_text TEXT,
236
- status_code INTEGER,
237
- error_text TEXT,
238
- meta_json TEXT
239
- );
240
-
241
- CREATE INDEX IF NOT EXISTS idx_prompt_logs_created_at
242
- ON prompt_logs(created_at DESC);
243
-
244
- CREATE INDEX IF NOT EXISTS idx_prompt_logs_model
245
- ON prompt_logs(model);
246
-
247
- CREATE INDEX IF NOT EXISTS idx_prompt_logs_stage
248
- ON prompt_logs(stage);
249
-
250
- CREATE INDEX IF NOT EXISTS idx_prompt_logs_session
251
- ON prompt_logs(session_id);
252
-
253
- CREATE INDEX IF NOT EXISTS idx_prompt_logs_client_ip
254
- ON prompt_logs(client_ip);
255
-
256
- CREATE INDEX IF NOT EXISTS idx_prompt_logs_source_tool
257
- ON prompt_logs(source_tool);
258
- `),await q(a),{ok:!0,type:"sqlite",message:"SQLite prompt log schema is ready",sqlitePath:a.sqlitePath}}finally{a.close()}}if("postgres"===b.type){if(!b.host||!b.database||!b.username)throw Error("PostgreSQL host, database, and username are required");if(b.createDatabase){let a=await o(b,"postgres");try{let c=await a.client.query("SELECT 1 FROM pg_database WHERE datname = $1",[b.database]);if(0===c.rowCount){let c=b.database.replace(/"/g,'""');await a.client.query(`CREATE DATABASE "${c}"`)}}finally{await a.close()}}let a=await o(b);try{return await a.exec(`
259
- CREATE TABLE IF NOT EXISTS prompt_logs (
260
- id TEXT PRIMARY KEY,
261
- created_at TIMESTAMPTZ NOT NULL,
262
- session_id TEXT,
263
- source_format TEXT,
264
- target_format TEXT,
265
- model TEXT,
266
- endpoint TEXT,
267
- stage TEXT,
268
- provider_url TEXT,
269
- provider TEXT,
270
- account_name TEXT,
271
- connection_id TEXT,
272
- display_model TEXT,
273
- client_ip TEXT,
274
- client_port TEXT,
275
- client_user_agent TEXT,
276
- client_host TEXT,
277
- source_tool TEXT,
278
- source_tool_label TEXT,
279
- source_host TEXT,
280
- prompt_text TEXT,
281
- full_request_json JSONB,
282
- response_text TEXT,
283
- status_code INTEGER,
284
- error_text TEXT,
285
- meta_json JSONB
286
- );
287
-
288
- CREATE INDEX IF NOT EXISTS idx_prompt_logs_created_at
289
- ON prompt_logs(created_at DESC);
290
-
291
- CREATE INDEX IF NOT EXISTS idx_prompt_logs_model
292
- ON prompt_logs(model);
293
-
294
- CREATE INDEX IF NOT EXISTS idx_prompt_logs_stage
295
- ON prompt_logs(stage);
296
-
297
- CREATE INDEX IF NOT EXISTS idx_prompt_logs_session
298
- ON prompt_logs(session_id);
299
-
300
- CREATE INDEX IF NOT EXISTS idx_prompt_logs_client_ip
301
- ON prompt_logs(client_ip);
302
-
303
- CREATE INDEX IF NOT EXISTS idx_prompt_logs_source_tool
304
- ON prompt_logs(source_tool);
305
- `),await r(a),{ok:!0,type:"postgres",message:"PostgreSQL prompt log schema is ready"}}finally{await a.close()}}if("mysql"===b.type){if(!b.host||!b.database||!b.username)throw Error("MySQL host, database, and username are required");if(b.createDatabase){let a=await p(b,!1);try{let c=b.database.replace(/`/g,"``");await a.exec(`CREATE DATABASE IF NOT EXISTS \`${c}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci`)}finally{await a.close()}}let a=await p(b,!0);try{return await a.exec(`
306
- CREATE TABLE IF NOT EXISTS prompt_logs (
307
- id VARCHAR(80) PRIMARY KEY,
308
- created_at DATETIME(3) NOT NULL,
309
- session_id VARCHAR(255),
310
- source_format VARCHAR(80),
311
- target_format VARCHAR(80),
312
- model VARCHAR(255),
313
- endpoint TEXT,
314
- stage VARCHAR(80),
315
- provider_url TEXT,
316
- provider VARCHAR(120),
317
- account_name VARCHAR(255),
318
- connection_id VARCHAR(120),
319
- display_model VARCHAR(512),
320
- client_ip VARCHAR(64),
321
- client_port VARCHAR(32),
322
- client_user_agent TEXT,
323
- client_host TEXT,
324
- source_tool VARCHAR(80),
325
- source_tool_label VARCHAR(120),
326
- source_host VARCHAR(255),
327
- prompt_text LONGTEXT,
328
- full_request_json JSON,
329
- response_text LONGTEXT,
330
- status_code INT,
331
- error_text TEXT,
332
- meta_json JSON,
333
- INDEX idx_prompt_logs_created_at (created_at),
334
- INDEX idx_prompt_logs_model (model),
335
- INDEX idx_prompt_logs_stage (stage),
336
- INDEX idx_prompt_logs_session (session_id),
337
- INDEX idx_prompt_logs_client_ip (client_ip),
338
- INDEX idx_prompt_logs_source_tool (source_tool)
339
- );
340
- `),await u(a,b),{ok:!0,type:"mysql",message:"MySQL prompt log schema is ready"}}finally{await a.close()}}throw Error(`Unsupported database type: ${b.type}`)}async function w(a=null){let b=k(a||await l());if("sqlite"===b.type){let a=await n(b);try{return a.exec("SELECT 1;"),{ok:!0,type:"sqlite",message:"SQLite connection OK",sqlitePath:a.sqlitePath}}finally{a.close()}}if("postgres"===b.type){let a=await o(b);try{return await a.exec("SELECT 1;"),{ok:!0,type:"postgres",message:"PostgreSQL connection OK"}}finally{await a.close()}}if("mysql"===b.type){let a=await p(b,!0);try{return await a.exec("SELECT 1;"),{ok:!0,type:"mysql",message:"MySQL connection OK"}}finally{await a.close()}}throw Error(`Unsupported database type: ${b.type}`)}}};
179
+ LIMIT ${Q}`,[...k.params,50]);return{disabled:!1,total:n,summary:{total:n,serverImpacting:O,gateway:J,upstream:K,client:L,rateLimit:M,unknown:N,serverImpactingRate:n?O/n:0,clientRate:n?L/n:0,rateLimitRate:n?M/n:0},topErrors:v(w),topServerErrors:v(E),topClientErrors:v(F),topRateLimitErrors:v(G),byFaultOwner:H.map(a=>z(a,{faultOwner:a.key})),byStatusCode:await P(q,"status"),byStatusClass:await P("status_class","statusClass"),byErrorType:await P("error_type","errorType"),byErrorSource:await P("error_source","errorSource"),byProvider:await P("provider","provider"),byModel:await P("model","model"),byClientIp:await P("client_ip_normalized","clientIp"),bySourceTool:await P("source_tool","sourceTool"),recent:R}}catch(a){return w({disabled:!0,error:a?.message||String(a)})}finally{await c.close()}}}};
@@ -0,0 +1,81 @@
1
+ "use strict";exports.id=6050,exports.ids=[6050],exports.modules={50122:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},94755:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(50122);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}},97242:(a,b,c)=>{c.d(b,{DU:()=>z,Ws:()=>A,_3:()=>C,nv:()=>B});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(45903);let i=new Set;function j(a,b,c=null){let d=Number(a);if(!Number.isFinite(d)||d<0)return b;let e=Math.floor(d);return c?Math.min(e,c):e}function k(a){return String(a||"").trim()}async function l(){let a=(0,h.I6)(await (0,h.L7)());return a.sqlitePath||(a.sqlitePath=g().join(process.env.DATA_DIR||"/var/lib/bluerouter","logs","promptLogs.sqlite")),a}async function m(a){try{let b=await Promise.resolve().then(c.t.bind(c,87550,23)),d=new(b.default||b)(a);return d.pragma("busy_timeout = 5000"),{all:(a,b={})=>d.prepare(a).all(b),get:(a,b={})=>d.prepare(a).get(b),run:(a,b={})=>d.prepare(a).run(b),close:()=>d.close()}}catch{let b=new(await Promise.resolve().then(c.t.bind(c,80099,23))).DatabaseSync(a);return b.exec("PRAGMA busy_timeout = 5000"),{all:(a,c={})=>b.prepare(a).all(c),get:(a,c={})=>b.prepare(a).get(c),run:(a,c={})=>b.prepare(a).run(c),close:()=>b.close()}}}async function n(a){let b=new(await Promise.resolve().then(c.bind(c,64939))).Client({host:a.host,port:Number(a.port||5432),database:a.database,user:a.username,password:a.password,ssl:!!a.ssl&&{rejectUnauthorized:!1}});return await b.connect(),{query:async(a,c=[])=>(await b.query(a,c)).rows,queryOne:async(a,c=[])=>(await b.query(a,c)).rows[0]||null,async exec(a,c=[]){await b.query(a,c)},async close(){await b.end()}}}async function o(a){let b=await c.e(8491).then(c.t.bind(c,38491,19)),d=await b.createConnection({host:a.host,port:Number(a.port||3306),database:a.database,user:a.username,password:a.password,ssl:a.ssl?{}:void 0,dateStrings:!0});return{async query(a,b=[]){let[c]=await d.query(a,b);return c},async queryOne(a,b=[]){let[c]=await d.query(a,b);return c[0]||null},async exec(a,b=[]){await d.query(a,b)},async close(){await d.end()}}}async function p(a,b){if(!b||b.full_request_json)return b;let c=function(a={}){return String(a.payload_hash||function(a){if(!a)return{};if("object"==typeof a)return a;try{return JSON.parse(a)}catch{return{}}}(a.meta_json).payloadHash||"").trim()}(b);if(!c)return b;try{let d=await a.queryOne("SELECT COUNT(1) AS count FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'prompt_log_payloads'");if(0===Number(d?.count||0))return b;let e=await a.queryOne("SELECT payload_json FROM prompt_log_payloads WHERE payload_hash = ?",[c]);if(!e)return b;let f=e.payload_json;return{...b,full_request_json:"string"==typeof f?f:JSON.stringify(f)}}catch{return b}}async function q(a){if(!e().existsSync(a.sqlitePath))return;let b=await m(a.sqlitePath);try{if(!b.get("SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'prompt_logs'"))return;for(let a of["CREATE INDEX IF NOT EXISTS idx_prompt_logs_created_id ON prompt_logs(created_at DESC, id)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_stage_created_at ON prompt_logs(stage, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_model_created_at ON prompt_logs(model, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_display_model_created_at ON prompt_logs(display_model, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_session_created_at ON prompt_logs(session_id, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_client_ip_created_at ON prompt_logs(client_ip, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_source_tool_created_at ON prompt_logs(source_tool, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_connection_created_at ON prompt_logs(connection_id, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_account_created_at ON prompt_logs(account_name, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_provider_created_at ON prompt_logs(provider, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_status_created_at ON prompt_logs(status_code, created_at DESC)"])b.run(a)}finally{b.close()}}async function r(a){let b=await n(a);try{for(let a of["CREATE INDEX IF NOT EXISTS idx_prompt_logs_created_id ON prompt_logs (created_at DESC, id)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_stage_created_at ON prompt_logs (stage, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_model_created_at ON prompt_logs (model, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_display_model_created_at ON prompt_logs (display_model, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_session_created_at ON prompt_logs (session_id, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_client_ip_created_at ON prompt_logs (client_ip, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_source_tool_created_at ON prompt_logs (source_tool, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_connection_created_at ON prompt_logs (connection_id, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_account_created_at ON prompt_logs (account_name, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_provider_created_at ON prompt_logs (provider, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_status_created_at ON prompt_logs (status_code, created_at DESC)"])await b.exec(a)}finally{await b.close()}}async function s(a,b,c){let d=await a.queryOne("SELECT COUNT(1) AS count FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'prompt_logs' AND INDEX_NAME = ?",[b]);0===Number(d?.count||0)&&await a.exec(c)}async function t(a){let b=await o(a);try{let a=await b.queryOne("SELECT COUNT(1) AS count FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'prompt_logs'");if(0===Number(a?.count||0))return;for(let[a,c]of[["idx_prompt_logs_created_id","CREATE INDEX idx_prompt_logs_created_id ON prompt_logs (created_at DESC, id)"],["idx_prompt_logs_stage_created_at","CREATE INDEX idx_prompt_logs_stage_created_at ON prompt_logs (stage, created_at DESC)"],["idx_prompt_logs_model_created_at","CREATE INDEX idx_prompt_logs_model_created_at ON prompt_logs (model, created_at DESC)"],["idx_prompt_logs_display_model_created_at","CREATE INDEX idx_prompt_logs_display_model_created_at ON prompt_logs (display_model, created_at DESC)"],["idx_prompt_logs_session_created_at","CREATE INDEX idx_prompt_logs_session_created_at ON prompt_logs (session_id, created_at DESC)"],["idx_prompt_logs_client_ip_created_at","CREATE INDEX idx_prompt_logs_client_ip_created_at ON prompt_logs (client_ip, created_at DESC)"],["idx_prompt_logs_source_tool_created_at","CREATE INDEX idx_prompt_logs_source_tool_created_at ON prompt_logs (source_tool, created_at DESC)"],["idx_prompt_logs_connection_created_at","CREATE INDEX idx_prompt_logs_connection_created_at ON prompt_logs (connection_id, created_at DESC)"],["idx_prompt_logs_account_created_at","CREATE INDEX idx_prompt_logs_account_created_at ON prompt_logs (account_name, created_at DESC)"],["idx_prompt_logs_provider_created_at","CREATE INDEX idx_prompt_logs_provider_created_at ON prompt_logs (provider, created_at DESC)"],["idx_prompt_logs_status_created_at","CREATE INDEX idx_prompt_logs_status_created_at ON prompt_logs (status_code, created_at DESC)"],["idx_prompt_logs_payload_hash","CREATE INDEX idx_prompt_logs_payload_hash ON prompt_logs (payload_hash)"]])await s(b,a,c)}finally{await b.close()}}async function u(a){if(!a.enabled)return;let b="sqlite"===a.type?`sqlite:${a.sqlitePath}`:`${a.type}:${a.host||""}:${a.port||""}:${a.database||""}`;if(!i.has(b))try{"sqlite"===a.type?await q(a):"postgres"===a.type?await r(a):"mysql"===a.type&&await t(a),i.add(b)}catch(a){console.warn("[prompt-logs] Unable to ensure query indexes:",a.message)}}async function v(a){if(!e().existsSync(a.sqlitePath))return{models:[],stages:[],missing:!0,dbInfo:{type:"sqlite",sqlitePath:a.sqlitePath}};let b=await m(a.sqlitePath);try{if(!b.get("SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'prompt_logs'"))return{models:[],stages:[],missing:!0,dbInfo:{type:"sqlite",sqlitePath:a.sqlitePath}};let c=b.all("SELECT DISTINCT COALESCE(NULLIF(display_model, ''), model) AS model FROM prompt_logs WHERE model IS NOT NULL AND model <> '' ORDER BY model LIMIT 300").map(a=>a.model),d=b.all("SELECT DISTINCT stage FROM prompt_logs WHERE stage IS NOT NULL AND stage <> '' ORDER BY stage LIMIT 100").map(a=>a.stage);return{models:c,stages:d,dbInfo:{type:"sqlite",sqlitePath:a.sqlitePath}}}finally{b.close()}}async function w(a){let b="postgres"===a.type?await n(a):await o(a);try{let c=(await b.query("SELECT DISTINCT COALESCE(NULLIF(display_model, ''), model) AS model FROM prompt_logs WHERE model IS NOT NULL AND model <> '' ORDER BY model LIMIT 300")).map(a=>a.model),d=(await b.query("SELECT DISTINCT stage FROM prompt_logs WHERE stage IS NOT NULL AND stage <> '' ORDER BY stage LIMIT 100")).map(a=>a.stage);return{models:c,stages:d,dbInfo:{type:a.type,host:a.host,database:a.database}}}finally{await b.close()}}async function x(a,b){if(!e().existsSync(a.sqlitePath))return{rows:[],total:0,models:[],stages:[],missing:!0,dbInfo:{type:"sqlite",sqlitePath:a.sqlitePath}};let c=await m(a.sqlitePath);try{let d,e;if(!c.get("SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'prompt_logs'"))return{rows:[],total:0,models:[],stages:[],missing:!0,dbInfo:{type:"sqlite",sqlitePath:a.sqlitePath}};let{clause:f,params:g}=(d=[],e={limit:b.limit,offset:b.offset},b.keyword&&(d.push(`(
2
+ prompt_text LIKE @keyword OR
3
+ response_text LIKE @keyword OR
4
+ error_text LIKE @keyword OR
5
+ model LIKE @keyword OR
6
+ endpoint LIKE @keyword OR
7
+ provider_url LIKE @keyword OR
8
+ provider LIKE @keyword OR
9
+ account_name LIKE @keyword OR
10
+ connection_id LIKE @keyword OR
11
+ display_model LIKE @keyword OR
12
+ session_id LIKE @keyword OR
13
+ client_ip LIKE @keyword OR
14
+ client_host LIKE @keyword OR
15
+ client_user_agent LIKE @keyword OR
16
+ source_tool LIKE @keyword OR
17
+ source_tool_label LIKE @keyword OR
18
+ source_host LIKE @keyword
19
+ )`),e.keyword=`%${b.keyword}%`),b.model&&(d.push("(model = @model OR display_model = @model)"),e.model=b.model),b.stage&&(d.push("stage = @stage"),e.stage=b.stage),b.sessionId&&(d.push("session_id = @sessionId"),e.sessionId=b.sessionId),b.clientIp&&(d.push("client_ip LIKE @clientIp"),e.clientIp=`%${b.clientIp}%`),b.sourceTool&&(d.push("(source_tool LIKE @sourceTool OR source_tool_label LIKE @sourceTool OR source_host LIKE @sourceTool)"),e.sourceTool=`%${b.sourceTool}%`),b.dateFrom&&(d.push("created_at >= @dateFrom"),e.dateFrom=b.dateFrom),b.dateTo&&(d.push("created_at <= @dateTo"),e.dateTo=b.dateTo),{clause:d.length?`WHERE ${d.join(" AND ")}`:"",params:e}),h=c.get(`SELECT COUNT(*) AS count FROM prompt_logs ${f}`,g)?.count||0,i=c.all(`
20
+ SELECT
21
+ id,
22
+ created_at,
23
+ session_id,
24
+ source_format,
25
+ target_format,
26
+ model,
27
+ endpoint,
28
+ stage,
29
+ provider_url,
30
+ provider,
31
+ account_name,
32
+ connection_id,
33
+ display_model,
34
+ client_ip,
35
+ client_port,
36
+ client_user_agent,
37
+ client_host,
38
+ source_tool,
39
+ source_tool_label,
40
+ source_host,
41
+ substr(coalesce(prompt_text,''), 1, 900) AS prompt_preview,
42
+ length(coalesce(prompt_text,'')) AS prompt_length,
43
+ substr(coalesce(response_text,''), 1, 400) AS response_preview,
44
+ status_code,
45
+ error_text
46
+ FROM prompt_logs
47
+ ${f}
48
+ ORDER BY created_at DESC
49
+ LIMIT @limit OFFSET @offset
50
+ `,g),j=[],k=[];if(b.includeOptions){let b=await v(a);j=b.models,k=b.stages}return{rows:i,total:h,models:j,stages:k,dbInfo:{type:"sqlite",sqlitePath:a.sqlitePath}}}finally{c.close()}}async function y(a,b){let c=a.type,d="postgres"===c?await n(a):await o(a);try{let e=function(a,b){let c=[],d=[],e=a=>(d.push(a),"postgres"===b)?`$${d.length}`:"?",f="postgres"===b?"ILIKE":"LIKE";if(a.keyword){let b=`%${a.keyword}%`;c.push(`(${["prompt_text","response_text","error_text","model","endpoint","provider_url","provider","account_name","connection_id","display_model","session_id","client_ip","client_host","client_user_agent","source_tool","source_tool_label","source_host"].map(a=>`${a} ${f} ${e(b)}`).join(" OR ")})`)}if(a.model&&c.push(`(model = ${e(a.model)} OR display_model = ${e(a.model)})`),a.stage&&c.push(`stage = ${e(a.stage)}`),a.sessionId&&c.push(`session_id = ${e(a.sessionId)}`),a.clientIp&&c.push(`client_ip ${f} ${e(`%${a.clientIp}%`)}`),a.sourceTool){let b=`%${a.sourceTool}%`;c.push(`(source_tool ${f} ${e(b)} OR source_tool_label ${f} ${e(b)} OR source_host ${f} ${e(b)})`)}return a.dateFrom&&c.push(`created_at >= ${e(a.dateFrom)}`),a.dateTo&&c.push(`created_at <= ${e(a.dateTo)}`),{clause:c.length?`WHERE ${c.join(" AND ")}`:"",params:d,add:e}}(b,c),f=[...e.params],g=await d.queryOne(`SELECT COUNT(*) AS count FROM prompt_logs ${e.clause}`,f),h=e.add(b.limit),i=e.add(b.offset),j="postgres"===c?"LEFT(coalesce(prompt_text,''), 900)":"SUBSTRING(coalesce(prompt_text,''), 1, 900)",k="postgres"===c?"char_length(coalesce(prompt_text,''))":"CHAR_LENGTH(coalesce(prompt_text,''))",l="postgres"===c?"LEFT(coalesce(response_text,''), 400)":"SUBSTRING(coalesce(response_text,''), 1, 400)",m=await d.query(`
51
+ SELECT
52
+ id,
53
+ created_at,
54
+ session_id,
55
+ source_format,
56
+ target_format,
57
+ model,
58
+ endpoint,
59
+ stage,
60
+ provider_url,
61
+ provider,
62
+ account_name,
63
+ connection_id,
64
+ display_model,
65
+ client_ip,
66
+ client_port,
67
+ client_user_agent,
68
+ client_host,
69
+ source_tool,
70
+ source_tool_label,
71
+ source_host,
72
+ ${j} AS prompt_preview,
73
+ ${k} AS prompt_length,
74
+ ${l} AS response_preview,
75
+ status_code,
76
+ error_text
77
+ FROM prompt_logs
78
+ ${e.clause}
79
+ ORDER BY created_at DESC
80
+ LIMIT ${h} OFFSET ${i}
81
+ `,e.params),n=[],o=[];if(b.includeOptions){let b=await w(a);n=b.models,o=b.stages}return{rows:m,total:Number(g?.count||0),models:n,stages:o,dbInfo:{type:a.type,host:a.host,database:a.database}}}finally{await d.close()}}async function z(){let a=await l();if(!a.enabled)return{disabled:!0,models:[],stages:[],dbInfo:{type:a.type}};if(await u(a),"sqlite"===a.type)return v(a);if("postgres"===a.type||"mysql"===a.type)return w(a);throw Error(`Unsupported prompt log database type: ${a.type}`)}async function A(a={}){let b=await l(),c=function(a={}){return{keyword:k(a.keyword),model:k(a.model),stage:k(a.stage),sessionId:k(a.sessionId),clientIp:k(a.clientIp),sourceTool:k(a.sourceTool),dateFrom:k(a.dateFrom),dateTo:k(a.dateTo),limit:j(a.limit,50,200),offset:j(a.offset,0),includeOptions:!0===a.includeOptions}}(a);if(!b.enabled)return{disabled:!0,rows:[],total:0,models:[],stages:[],dbInfo:{type:b.type}};if(await u(b),"sqlite"===b.type)return x(b,c);if("postgres"===b.type||"mysql"===b.type)return y(b,c);throw Error(`Unsupported prompt log database type: ${b.type}`)}async function B(a){let b=await l();if("sqlite"===b.type){if(!e().existsSync(b.sqlitePath))return null;let c=await m(b.sqlitePath);try{return c.get("SELECT * FROM prompt_logs WHERE id = @id",{id:a})||null}finally{c.close()}}if("postgres"===b.type){let c=await n(b);try{return await c.queryOne("SELECT * FROM prompt_logs WHERE id = $1",[a])}finally{await c.close()}}if("mysql"===b.type){let c=await o(b);try{let b=await c.queryOne("SELECT * FROM prompt_logs WHERE id = ?",[a]);return await p(c,b)}finally{await c.close()}}throw Error(`Unsupported prompt log database type: ${b.type}`)}async function C(a){let b=await l();if("sqlite"===b.type){if(!e().existsSync(b.sqlitePath))return{changed:0};let c=await m(b.sqlitePath);try{return{changed:c.run("DELETE FROM prompt_logs WHERE id = @id",{id:a}).changes||0}}finally{c.close()}}if("postgres"===b.type){let c=await n(b);try{let b=await c.queryOne("SELECT COUNT(*) AS count FROM prompt_logs WHERE id = $1",[a]);return await c.exec("DELETE FROM prompt_logs WHERE id = $1",[a]),{changed:Number(b?.count||0)}}finally{await c.close()}}if("mysql"===b.type){let c=await o(b);try{return await c.exec("DELETE FROM prompt_logs WHERE id = ?",[a]),{changed:1}}finally{await c.close()}}throw Error(`Unsupported prompt log database type: ${b.type}`)}}};