@windrun-huaiin/backend-core 15.0.0 → 16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/LICENSE +1 -1
  2. package/dist/app/api/stripe/checkout/route.js +2 -2
  3. package/dist/app/api/stripe/checkout/route.mjs +1 -1
  4. package/dist/app/api/stripe/customer-portal/route.js +2 -2
  5. package/dist/app/api/stripe/customer-portal/route.mjs +1 -1
  6. package/dist/app/api/user/anonymous/init/route.js +6 -6
  7. package/dist/app/api/user/anonymous/init/route.mjs +1 -1
  8. package/dist/app/api/webhook/clerk/user/route.js +4 -4
  9. package/dist/app/api/webhook/clerk/user/route.mjs +1 -1
  10. package/dist/app/api/webhook/stripe/route.js +2 -2
  11. package/dist/app/api/webhook/stripe/route.mjs +1 -1
  12. package/dist/auth/auth-middleware.js +3 -3
  13. package/dist/auth/auth-middleware.mjs +1 -1
  14. package/dist/auth/auth-utils.js +10 -10
  15. package/dist/auth/auth-utils.mjs +1 -1
  16. package/dist/index.d.ts +1 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +44 -0
  19. package/dist/index.mjs +8 -1
  20. package/dist/lib/index.js +19 -0
  21. package/dist/lib/index.mjs +1 -1
  22. package/dist/lib/money-price-helper.js +3 -3
  23. package/dist/lib/money-price-helper.mjs +1 -1
  24. package/dist/lib/stripe-config.js +8 -8
  25. package/dist/lib/stripe-config.mjs +1 -1
  26. package/dist/lib/upstash/qstash.d.ts +20 -7
  27. package/dist/lib/upstash/qstash.d.ts.map +1 -1
  28. package/dist/lib/upstash/qstash.js +45 -19
  29. package/dist/lib/upstash/qstash.mjs +35 -9
  30. package/dist/lib/upstash/redis-counter.js +7 -7
  31. package/dist/lib/upstash/redis-counter.mjs +1 -1
  32. package/dist/lib/upstash/redis-favorite.js +9 -9
  33. package/dist/lib/upstash/redis-favorite.mjs +1 -1
  34. package/dist/lib/upstash/redis-like.js +9 -9
  35. package/dist/lib/upstash/redis-like.mjs +1 -1
  36. package/dist/lib/upstash/redis-lock.js +6 -6
  37. package/dist/lib/upstash/redis-lock.mjs +1 -1
  38. package/dist/lib/upstash/redis-structures.d.ts +83 -0
  39. package/dist/lib/upstash/redis-structures.d.ts.map +1 -1
  40. package/dist/lib/upstash/redis-structures.js +245 -25
  41. package/dist/lib/upstash/redis-structures.mjs +203 -2
  42. package/dist/lib/upstash-config.d.ts.map +1 -1
  43. package/dist/lib/upstash-config.js +90 -18
  44. package/dist/lib/upstash-config.mjs +80 -8
  45. package/dist/prisma/prisma-transaction-util.js +2 -2
  46. package/dist/prisma/prisma-transaction-util.mjs +1 -1
  47. package/dist/services/aggregate/anonymous.aggregate.service.js +6 -6
  48. package/dist/services/aggregate/anonymous.aggregate.service.mjs +1 -1
  49. package/dist/services/aggregate/billing.aggregate.service.js +21 -21
  50. package/dist/services/aggregate/billing.aggregate.service.mjs +1 -1
  51. package/dist/services/aggregate/user.aggregate.service.js +10 -10
  52. package/dist/services/aggregate/user.aggregate.service.mjs +1 -1
  53. package/dist/services/ai/abort.d.ts +2 -0
  54. package/dist/services/ai/abort.d.ts.map +1 -0
  55. package/dist/services/ai/abort.js +24 -0
  56. package/dist/services/ai/abort.mjs +22 -0
  57. package/dist/services/ai/env.d.ts +21 -0
  58. package/dist/services/ai/env.d.ts.map +1 -0
  59. package/dist/services/ai/env.js +85 -0
  60. package/dist/services/ai/env.mjs +80 -0
  61. package/dist/services/ai/error.d.ts +3 -0
  62. package/dist/services/ai/error.d.ts.map +1 -0
  63. package/dist/services/ai/error.js +54 -0
  64. package/dist/services/ai/error.mjs +52 -0
  65. package/dist/services/ai/index.d.ts +9 -0
  66. package/dist/services/ai/index.d.ts.map +1 -0
  67. package/dist/services/ai/index.js +30 -0
  68. package/dist/services/ai/index.mjs +7 -0
  69. package/dist/services/ai/message-builder.d.ts +4 -0
  70. package/dist/services/ai/message-builder.d.ts.map +1 -0
  71. package/dist/services/ai/message-builder.js +15 -0
  72. package/dist/services/ai/message-builder.mjs +13 -0
  73. package/dist/services/ai/mock.d.ts +30 -0
  74. package/dist/services/ai/mock.d.ts.map +1 -0
  75. package/dist/services/ai/mock.js +314 -0
  76. package/dist/services/ai/mock.mjs +308 -0
  77. package/dist/services/ai/openrouter-client.d.ts +12 -0
  78. package/dist/services/ai/openrouter-client.d.ts.map +1 -0
  79. package/dist/services/ai/openrouter-client.js +81 -0
  80. package/dist/services/ai/openrouter-client.mjs +78 -0
  81. package/dist/services/ai/route.d.ts +6 -0
  82. package/dist/services/ai/route.d.ts.map +1 -0
  83. package/dist/services/ai/route.js +178 -0
  84. package/dist/services/ai/route.mjs +173 -0
  85. package/dist/services/ai/types.d.ts +98 -0
  86. package/dist/services/ai/types.d.ts.map +1 -0
  87. package/dist/services/context/user-context-service.js +3 -3
  88. package/dist/services/context/user-context-service.mjs +1 -1
  89. package/dist/services/database/apilog.service.js +14 -14
  90. package/dist/services/database/apilog.service.mjs +1 -1
  91. package/dist/services/database/credit.service.js +20 -20
  92. package/dist/services/database/credit.service.mjs +1 -1
  93. package/dist/services/database/creditAuditLog.service.js +13 -13
  94. package/dist/services/database/creditAuditLog.service.mjs +1 -1
  95. package/dist/services/database/subscription.service.js +16 -16
  96. package/dist/services/database/subscription.service.mjs +1 -1
  97. package/dist/services/database/transaction.service.js +18 -18
  98. package/dist/services/database/transaction.service.mjs +1 -1
  99. package/dist/services/database/user.service.js +14 -14
  100. package/dist/services/database/user.service.mjs +1 -1
  101. package/dist/services/database/userBackup.service.js +15 -15
  102. package/dist/services/database/userBackup.service.mjs +1 -1
  103. package/dist/services/stripe/webhook-handler.js +13 -13
  104. package/dist/services/stripe/webhook-handler.mjs +3 -3
  105. package/package.json +14 -4
  106. package/src/index.ts +1 -0
  107. package/src/lib/upstash/qstash.ts +55 -15
  108. package/src/lib/upstash/redis-structures.ts +248 -0
  109. package/src/lib/upstash-config.ts +106 -4
  110. package/src/services/ai/abort.ts +26 -0
  111. package/src/services/ai/env.ts +120 -0
  112. package/src/services/ai/error.ts +64 -0
  113. package/src/services/ai/index.ts +8 -0
  114. package/src/services/ai/message-builder.ts +17 -0
  115. package/src/services/ai/mock.ts +378 -0
  116. package/src/services/ai/openrouter-client.ts +94 -0
  117. package/src/services/ai/route.ts +218 -0
  118. package/src/services/ai/types.ts +131 -0
  119. package/dist/_virtual/_commonjs-dynamic-modules.js +0 -7
  120. package/dist/_virtual/_commonjs-dynamic-modules.mjs +0 -5
  121. package/dist/_virtual/_commonjsHelpers.js +0 -10
  122. package/dist/_virtual/_commonjsHelpers.mjs +0 -7
  123. package/dist/_virtual/aes.js +0 -5
  124. package/dist/_virtual/aes.mjs +0 -3
  125. package/dist/_virtual/blowfish.js +0 -5
  126. package/dist/_virtual/blowfish.mjs +0 -3
  127. package/dist/_virtual/cipher-core.js +0 -5
  128. package/dist/_virtual/cipher-core.mjs +0 -3
  129. package/dist/_virtual/core.js +0 -5
  130. package/dist/_virtual/core.mjs +0 -3
  131. package/dist/_virtual/enc-base64.js +0 -5
  132. package/dist/_virtual/enc-base64.mjs +0 -3
  133. package/dist/_virtual/enc-base64url.js +0 -5
  134. package/dist/_virtual/enc-base64url.mjs +0 -3
  135. package/dist/_virtual/enc-utf16.js +0 -5
  136. package/dist/_virtual/enc-utf16.mjs +0 -3
  137. package/dist/_virtual/evpkdf.js +0 -5
  138. package/dist/_virtual/evpkdf.mjs +0 -3
  139. package/dist/_virtual/format-hex.js +0 -5
  140. package/dist/_virtual/format-hex.mjs +0 -3
  141. package/dist/_virtual/hmac.js +0 -5
  142. package/dist/_virtual/hmac.mjs +0 -3
  143. package/dist/_virtual/index.js +0 -11
  144. package/dist/_virtual/index.mjs +0 -7
  145. package/dist/_virtual/index2.js +0 -5
  146. package/dist/_virtual/index2.mjs +0 -3
  147. package/dist/_virtual/lib-typedarrays.js +0 -5
  148. package/dist/_virtual/lib-typedarrays.mjs +0 -3
  149. package/dist/_virtual/md5.js +0 -5
  150. package/dist/_virtual/md5.mjs +0 -3
  151. package/dist/_virtual/mode-cfb.js +0 -5
  152. package/dist/_virtual/mode-cfb.mjs +0 -3
  153. package/dist/_virtual/mode-ctr-gladman.js +0 -5
  154. package/dist/_virtual/mode-ctr-gladman.mjs +0 -3
  155. package/dist/_virtual/mode-ctr.js +0 -5
  156. package/dist/_virtual/mode-ctr.mjs +0 -3
  157. package/dist/_virtual/mode-ecb.js +0 -5
  158. package/dist/_virtual/mode-ecb.mjs +0 -3
  159. package/dist/_virtual/mode-ofb.js +0 -5
  160. package/dist/_virtual/mode-ofb.mjs +0 -3
  161. package/dist/_virtual/pad-ansix923.js +0 -5
  162. package/dist/_virtual/pad-ansix923.mjs +0 -3
  163. package/dist/_virtual/pad-iso10126.js +0 -5
  164. package/dist/_virtual/pad-iso10126.mjs +0 -3
  165. package/dist/_virtual/pad-iso97971.js +0 -5
  166. package/dist/_virtual/pad-iso97971.mjs +0 -3
  167. package/dist/_virtual/pad-nopadding.js +0 -5
  168. package/dist/_virtual/pad-nopadding.mjs +0 -3
  169. package/dist/_virtual/pad-zeropadding.js +0 -5
  170. package/dist/_virtual/pad-zeropadding.mjs +0 -3
  171. package/dist/_virtual/pbkdf2.js +0 -5
  172. package/dist/_virtual/pbkdf2.mjs +0 -3
  173. package/dist/_virtual/rabbit-legacy.js +0 -5
  174. package/dist/_virtual/rabbit-legacy.mjs +0 -3
  175. package/dist/_virtual/rabbit.js +0 -5
  176. package/dist/_virtual/rabbit.mjs +0 -3
  177. package/dist/_virtual/rc4.js +0 -5
  178. package/dist/_virtual/rc4.mjs +0 -3
  179. package/dist/_virtual/ripemd160.js +0 -5
  180. package/dist/_virtual/ripemd160.mjs +0 -3
  181. package/dist/_virtual/sha1.js +0 -5
  182. package/dist/_virtual/sha1.mjs +0 -3
  183. package/dist/_virtual/sha224.js +0 -5
  184. package/dist/_virtual/sha224.mjs +0 -3
  185. package/dist/_virtual/sha256.js +0 -5
  186. package/dist/_virtual/sha256.mjs +0 -3
  187. package/dist/_virtual/sha3.js +0 -5
  188. package/dist/_virtual/sha3.mjs +0 -3
  189. package/dist/_virtual/sha384.js +0 -5
  190. package/dist/_virtual/sha384.mjs +0 -3
  191. package/dist/_virtual/sha512.js +0 -5
  192. package/dist/_virtual/sha512.mjs +0 -3
  193. package/dist/_virtual/tripledes.js +0 -5
  194. package/dist/_virtual/tripledes.mjs +0 -3
  195. package/dist/_virtual/x64-core.js +0 -5
  196. package/dist/_virtual/x64-core.mjs +0 -3
  197. package/dist/node_modules/.pnpm/@rollup_plugin-typescript@12.1.4_rollup@4.46.2_tslib@2.8.1_typescript@5.9.3/node_modules/tslib/tslib.es6.js +0 -48
  198. package/dist/node_modules/.pnpm/@rollup_plugin-typescript@12.1.4_rollup@4.46.2_tslib@2.8.1_typescript@5.9.3/node_modules/tslib/tslib.es6.mjs +0 -45
  199. package/dist/node_modules/.pnpm/@upstash_qstash@2.10.1/node_modules/@upstash/qstash/chunk-35B33QW3.js +0 -1848
  200. package/dist/node_modules/.pnpm/@upstash_qstash@2.10.1/node_modules/@upstash/qstash/chunk-35B33QW3.mjs +0 -1830
  201. package/dist/node_modules/.pnpm/@upstash_redis@1.37.0/node_modules/@upstash/redis/chunk-IH7W44G6.js +0 -5308
  202. package/dist/node_modules/.pnpm/@upstash_redis@1.37.0/node_modules/@upstash/redis/chunk-IH7W44G6.mjs +0 -5302
  203. package/dist/node_modules/.pnpm/@upstash_redis@1.37.0/node_modules/@upstash/redis/nodejs.js +0 -116
  204. package/dist/node_modules/.pnpm/@upstash_redis@1.37.0/node_modules/@upstash/redis/nodejs.mjs +0 -113
  205. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/aes.js +0 -248
  206. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/aes.mjs +0 -246
  207. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/blowfish.js +0 -485
  208. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/blowfish.mjs +0 -483
  209. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/cipher-core.js +0 -906
  210. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/cipher-core.mjs +0 -904
  211. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/core.js +0 -818
  212. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/core.mjs +0 -816
  213. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64.js +0 -146
  214. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64.mjs +0 -144
  215. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64url.js +0 -158
  216. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64url.mjs +0 -156
  217. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-utf16.js +0 -159
  218. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-utf16.mjs +0 -157
  219. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/evpkdf.js +0 -146
  220. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/evpkdf.mjs +0 -144
  221. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/format-hex.js +0 -77
  222. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/format-hex.mjs +0 -75
  223. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/hmac.js +0 -153
  224. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/hmac.mjs +0 -151
  225. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/index.js +0 -62
  226. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/index.mjs +0 -60
  227. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/lib-typedarrays.js +0 -86
  228. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/lib-typedarrays.mjs +0 -84
  229. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/md5.js +0 -278
  230. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/md5.mjs +0 -276
  231. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-cfb.js +0 -91
  232. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-cfb.mjs +0 -89
  233. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr-gladman.js +0 -127
  234. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr-gladman.mjs +0 -125
  235. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr.js +0 -69
  236. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr.mjs +0 -67
  237. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ecb.js +0 -51
  238. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ecb.mjs +0 -49
  239. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ofb.js +0 -65
  240. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ofb.mjs +0 -63
  241. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-ansix923.js +0 -60
  242. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-ansix923.mjs +0 -58
  243. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso10126.js +0 -55
  244. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso10126.mjs +0 -53
  245. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso97971.js +0 -51
  246. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso97971.mjs +0 -49
  247. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-nopadding.js +0 -41
  248. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-nopadding.mjs +0 -39
  249. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-zeropadding.js +0 -58
  250. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-zeropadding.mjs +0 -56
  251. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pbkdf2.js +0 -157
  252. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pbkdf2.mjs +0 -155
  253. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit-legacy.js +0 -204
  254. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit-legacy.mjs +0 -202
  255. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit.js +0 -206
  256. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit.mjs +0 -204
  257. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rc4.js +0 -153
  258. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rc4.mjs +0 -151
  259. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/ripemd160.js +0 -277
  260. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/ripemd160.mjs +0 -275
  261. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha1.js +0 -160
  262. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha1.mjs +0 -158
  263. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha224.js +0 -91
  264. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha224.mjs +0 -89
  265. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha256.js +0 -209
  266. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha256.mjs +0 -207
  267. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha3.js +0 -337
  268. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha3.mjs +0 -335
  269. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha384.js +0 -95
  270. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha384.mjs +0 -93
  271. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha512.js +0 -337
  272. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha512.mjs +0 -335
  273. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/tripledes.js +0 -793
  274. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/tripledes.mjs +0 -791
  275. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/x64-core.js +0 -314
  276. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/x64-core.mjs +0 -312
  277. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/jws/compact/verify.js +0 -26
  278. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/jws/compact/verify.mjs +0 -24
  279. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/jws/flattened/verify.js +0 -127
  280. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/jws/flattened/verify.mjs +0 -125
  281. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/jwt/verify.js +0 -20
  282. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/jwt/verify.mjs +0 -18
  283. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/key/import.js +0 -31
  284. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/key/import.mjs +0 -29
  285. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/buffer_utils.js +0 -18
  286. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/buffer_utils.mjs +0 -14
  287. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/check_key_type.js +0 -82
  288. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/check_key_type.mjs +0 -80
  289. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/crypto_key.js +0 -103
  290. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/crypto_key.mjs +0 -101
  291. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/epoch.js +0 -7
  292. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/epoch.mjs +0 -3
  293. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/invalid_key_input.js +0 -38
  294. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/invalid_key_input.mjs +0 -33
  295. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/is_disjoint.js +0 -27
  296. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/is_disjoint.mjs +0 -23
  297. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/is_jwk.js +0 -21
  298. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/is_jwk.mjs +0 -16
  299. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/is_object.js +0 -22
  300. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/is_object.mjs +0 -18
  301. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/jwt_claims_set.js +0 -111
  302. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/jwt_claims_set.mjs +0 -107
  303. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/secs.js +0 -61
  304. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/secs.mjs +0 -57
  305. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/validate_algorithms.js +0 -16
  306. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/validate_algorithms.mjs +0 -12
  307. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/validate_crit.js +0 -40
  308. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/validate_crit.mjs +0 -36
  309. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/base64url.js +0 -15
  310. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/base64url.mjs +0 -13
  311. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/check_key_length.js +0 -23
  312. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/check_key_length.mjs +0 -19
  313. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/dsa_digest.js +0 -30
  314. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/dsa_digest.mjs +0 -26
  315. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/get_named_curve.js +0 -60
  316. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/get_named_curve.mjs +0 -56
  317. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/get_sign_verify_key.js +0 -35
  318. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/get_sign_verify_key.mjs +0 -31
  319. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/hmac_digest.js +0 -20
  320. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/hmac_digest.mjs +0 -16
  321. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/is_key_like.js +0 -15
  322. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/is_key_like.mjs +0 -10
  323. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/is_key_object.js +0 -28
  324. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/is_key_object.mjs +0 -5
  325. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/jwk_to_key.js +0 -14
  326. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/jwk_to_key.mjs +0 -10
  327. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/node_key.js +0 -115
  328. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/node_key.mjs +0 -111
  329. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/sign.js +0 -42
  330. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/sign.mjs +0 -19
  331. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/verify.js +0 -54
  332. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/verify.mjs +0 -31
  333. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/webcrypto.js +0 -32
  334. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/webcrypto.mjs +0 -7
  335. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/util/errors.js +0 -69
  336. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/util/errors.mjs +0 -60
  337. package/dist/node_modules/.pnpm/neverthrow@7.2.0/node_modules/neverthrow/dist/index.es.js +0 -422
  338. package/dist/node_modules/.pnpm/neverthrow@7.2.0/node_modules/neverthrow/dist/index.es.mjs +0 -415
  339. package/dist/node_modules/.pnpm/uncrypto@0.1.3/node_modules/uncrypto/dist/crypto.web.js +0 -6
  340. package/dist/node_modules/.pnpm/uncrypto@0.1.3/node_modules/uncrypto/dist/crypto.web.mjs +0 -4
@@ -0,0 +1,21 @@
1
+ import type { AIMockHandler, AIRuntimeContext, OpenRouterClientConfig } from './types';
2
+ export type OpenRouterEnvConfig = {
3
+ appName: string;
4
+ timeoutMs: number;
5
+ apiKey: string;
6
+ modelName: string;
7
+ enableMock: boolean;
8
+ mockType: number;
9
+ mockTimeoutSeconds: number;
10
+ mockStreamChunkDelayMs: number;
11
+ mockStreamChunkSize: number;
12
+ contextWindowTurns: number;
13
+ debug: boolean;
14
+ baseUrl?: string;
15
+ referer?: string;
16
+ };
17
+ export declare function getOpenRouterEnvConfig(): OpenRouterEnvConfig;
18
+ export declare function createOpenRouterClientConfigFromEnv(overrides?: Partial<OpenRouterClientConfig>): OpenRouterClientConfig;
19
+ export declare function createOpenRouterMockFromEnv(): AIMockHandler | undefined;
20
+ export declare function createOpenRouterMockFromEnvForContext(context?: AIRuntimeContext): AIMockHandler | undefined;
21
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/services/ai/env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAgBvF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAUF,wBAAgB,sBAAsB,IAAI,mBAAmB,CAiB5D;AAED,wBAAgB,mCAAmC,CACjD,SAAS,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAC1C,sBAAsB,CAexB;AAED,wBAAgB,2BAA2B,IAAI,aAAa,GAAG,SAAS,CAEvE;AAWD,wBAAgB,qCAAqC,CACnD,OAAO,CAAC,EAAE,gBAAgB,GACzB,aAAa,GAAG,SAAS,CA0B3B"}
@@ -0,0 +1,85 @@
1
+ 'use strict';
2
+
3
+ var mock = require('./mock.js');
4
+
5
+ function parseNumber(value, fallback) {
6
+ const parsed = Number(value);
7
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
8
+ }
9
+ function parseBoolean(value, fallback) {
10
+ if (value === undefined) {
11
+ return fallback;
12
+ }
13
+ return value === '1' || value === 'true' || value === 'TRUE';
14
+ }
15
+ function getOpenRouterEnvConfig() {
16
+ return {
17
+ appName: process.env.NEXT_PUBLIC_APP_NAME || 'DDaaS',
18
+ timeoutMs: parseNumber(process.env.OPENROUTER_TIMEOUT_SECONDS, 240) * 1000,
19
+ apiKey: process.env.OPENROUTER_API_KEY || '',
20
+ modelName: process.env.NEXT_PUBLIC_OPENROUTER_MODEL_NAME || 'google/gemini-2.0-flash-001',
21
+ enableMock: parseBoolean(process.env.OPENROUTER_ENABLE_MOCK, true),
22
+ mockType: parseNumber(process.env.OPENROUTER_MOCK_TYPE, 0),
23
+ mockTimeoutSeconds: parseNumber(process.env.OPENROUTER_MOCK_TIMEOUT_SECONDS, 3),
24
+ mockStreamChunkDelayMs: parseNumber(process.env.OPENROUTER_MOCK_STREAM_CHUNK_DELAY_MS, 60),
25
+ mockStreamChunkSize: parseNumber(process.env.OPENROUTER_MOCK_STREAM_CHUNK_SIZE, 8),
26
+ contextWindowTurns: parseNumber(process.env.NEXT_PUBLIC_CHAT_CONTEXT_WINDOW_TURNS, 6),
27
+ debug: parseBoolean(process.env.NEXT_PUBLIC_OPENROUTER_DEBUG, false),
28
+ baseUrl: process.env.OPENROUTER_BASE_URL,
29
+ referer: process.env.NEXT_PUBLIC_BASE_URL || 'http://localhost:3000',
30
+ };
31
+ }
32
+ function createOpenRouterClientConfigFromEnv(overrides) {
33
+ var _a, _b, _c, _d, _e, _f;
34
+ const envConfig = getOpenRouterEnvConfig();
35
+ return {
36
+ apiKey: (_a = overrides === null || overrides === void 0 ? void 0 : overrides.apiKey) !== null && _a !== void 0 ? _a : envConfig.apiKey,
37
+ baseUrl: (_b = overrides === null || overrides === void 0 ? void 0 : overrides.baseUrl) !== null && _b !== void 0 ? _b : envConfig.baseUrl,
38
+ defaultModel: (_c = overrides === null || overrides === void 0 ? void 0 : overrides.defaultModel) !== null && _c !== void 0 ? _c : envConfig.modelName,
39
+ referer: (_d = overrides === null || overrides === void 0 ? void 0 : overrides.referer) !== null && _d !== void 0 ? _d : envConfig.referer,
40
+ title: (_e = overrides === null || overrides === void 0 ? void 0 : overrides.title) !== null && _e !== void 0 ? _e : envConfig.appName,
41
+ timeoutMs: (_f = overrides === null || overrides === void 0 ? void 0 : overrides.timeoutMs) !== null && _f !== void 0 ? _f : envConfig.timeoutMs,
42
+ provider: overrides === null || overrides === void 0 ? void 0 : overrides.provider,
43
+ temperature: overrides === null || overrides === void 0 ? void 0 : overrides.temperature,
44
+ maxTokens: overrides === null || overrides === void 0 ? void 0 : overrides.maxTokens,
45
+ fetchImpl: overrides === null || overrides === void 0 ? void 0 : overrides.fetchImpl,
46
+ };
47
+ }
48
+ function createOpenRouterMockFromEnv() {
49
+ return createOpenRouterMockFromEnvForContext();
50
+ }
51
+ function getRequestMockOverride(context) {
52
+ var _a;
53
+ const value = (_a = context === null || context === void 0 ? void 0 : context.input.metadata) === null || _a === void 0 ? void 0 : _a.mock;
54
+ if (!value || typeof value !== 'object') {
55
+ return null;
56
+ }
57
+ return value;
58
+ }
59
+ function createOpenRouterMockFromEnvForContext(context) {
60
+ var _a, _b, _c, _d;
61
+ const envConfig = getOpenRouterEnvConfig();
62
+ if (!envConfig.enableMock) {
63
+ return undefined;
64
+ }
65
+ const requestOverride = getRequestMockOverride(context);
66
+ if ((requestOverride === null || requestOverride === void 0 ? void 0 : requestOverride.enabled) === false) {
67
+ return undefined;
68
+ }
69
+ const mockType = (_a = requestOverride === null || requestOverride === void 0 ? void 0 : requestOverride.type) !== null && _a !== void 0 ? _a : envConfig.mockType;
70
+ const mockTimeoutSeconds = (_b = requestOverride === null || requestOverride === void 0 ? void 0 : requestOverride.timeoutSeconds) !== null && _b !== void 0 ? _b : envConfig.mockTimeoutSeconds;
71
+ const mockStreamChunkDelayMs = (_c = requestOverride === null || requestOverride === void 0 ? void 0 : requestOverride.chunkDelayMs) !== null && _c !== void 0 ? _c : envConfig.mockStreamChunkDelayMs;
72
+ const mockStreamChunkSize = (_d = requestOverride === null || requestOverride === void 0 ? void 0 : requestOverride.chunkSize) !== null && _d !== void 0 ? _d : envConfig.mockStreamChunkSize;
73
+ return mock.createScenarioMockHandler({
74
+ text: 'This is a mock AI response from the shared backend-core runtime. Configure OPENROUTER_API_KEY and disable OPENROUTER_ENABLE_MOCK to use the real upstream model.',
75
+ mockType,
76
+ mockTimeoutSeconds,
77
+ mockStreamChunkDelayMs,
78
+ mockStreamChunkSize,
79
+ });
80
+ }
81
+
82
+ exports.createOpenRouterClientConfigFromEnv = createOpenRouterClientConfigFromEnv;
83
+ exports.createOpenRouterMockFromEnv = createOpenRouterMockFromEnv;
84
+ exports.createOpenRouterMockFromEnvForContext = createOpenRouterMockFromEnvForContext;
85
+ exports.getOpenRouterEnvConfig = getOpenRouterEnvConfig;
@@ -0,0 +1,80 @@
1
+ import { createScenarioMockHandler } from './mock.mjs';
2
+
3
+ function parseNumber(value, fallback) {
4
+ const parsed = Number(value);
5
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
6
+ }
7
+ function parseBoolean(value, fallback) {
8
+ if (value === undefined) {
9
+ return fallback;
10
+ }
11
+ return value === '1' || value === 'true' || value === 'TRUE';
12
+ }
13
+ function getOpenRouterEnvConfig() {
14
+ return {
15
+ appName: process.env.NEXT_PUBLIC_APP_NAME || 'DDaaS',
16
+ timeoutMs: parseNumber(process.env.OPENROUTER_TIMEOUT_SECONDS, 240) * 1000,
17
+ apiKey: process.env.OPENROUTER_API_KEY || '',
18
+ modelName: process.env.NEXT_PUBLIC_OPENROUTER_MODEL_NAME || 'google/gemini-2.0-flash-001',
19
+ enableMock: parseBoolean(process.env.OPENROUTER_ENABLE_MOCK, true),
20
+ mockType: parseNumber(process.env.OPENROUTER_MOCK_TYPE, 0),
21
+ mockTimeoutSeconds: parseNumber(process.env.OPENROUTER_MOCK_TIMEOUT_SECONDS, 3),
22
+ mockStreamChunkDelayMs: parseNumber(process.env.OPENROUTER_MOCK_STREAM_CHUNK_DELAY_MS, 60),
23
+ mockStreamChunkSize: parseNumber(process.env.OPENROUTER_MOCK_STREAM_CHUNK_SIZE, 8),
24
+ contextWindowTurns: parseNumber(process.env.NEXT_PUBLIC_CHAT_CONTEXT_WINDOW_TURNS, 6),
25
+ debug: parseBoolean(process.env.NEXT_PUBLIC_OPENROUTER_DEBUG, false),
26
+ baseUrl: process.env.OPENROUTER_BASE_URL,
27
+ referer: process.env.NEXT_PUBLIC_BASE_URL || 'http://localhost:3000',
28
+ };
29
+ }
30
+ function createOpenRouterClientConfigFromEnv(overrides) {
31
+ var _a, _b, _c, _d, _e, _f;
32
+ const envConfig = getOpenRouterEnvConfig();
33
+ return {
34
+ apiKey: (_a = overrides === null || overrides === void 0 ? void 0 : overrides.apiKey) !== null && _a !== void 0 ? _a : envConfig.apiKey,
35
+ baseUrl: (_b = overrides === null || overrides === void 0 ? void 0 : overrides.baseUrl) !== null && _b !== void 0 ? _b : envConfig.baseUrl,
36
+ defaultModel: (_c = overrides === null || overrides === void 0 ? void 0 : overrides.defaultModel) !== null && _c !== void 0 ? _c : envConfig.modelName,
37
+ referer: (_d = overrides === null || overrides === void 0 ? void 0 : overrides.referer) !== null && _d !== void 0 ? _d : envConfig.referer,
38
+ title: (_e = overrides === null || overrides === void 0 ? void 0 : overrides.title) !== null && _e !== void 0 ? _e : envConfig.appName,
39
+ timeoutMs: (_f = overrides === null || overrides === void 0 ? void 0 : overrides.timeoutMs) !== null && _f !== void 0 ? _f : envConfig.timeoutMs,
40
+ provider: overrides === null || overrides === void 0 ? void 0 : overrides.provider,
41
+ temperature: overrides === null || overrides === void 0 ? void 0 : overrides.temperature,
42
+ maxTokens: overrides === null || overrides === void 0 ? void 0 : overrides.maxTokens,
43
+ fetchImpl: overrides === null || overrides === void 0 ? void 0 : overrides.fetchImpl,
44
+ };
45
+ }
46
+ function createOpenRouterMockFromEnv() {
47
+ return createOpenRouterMockFromEnvForContext();
48
+ }
49
+ function getRequestMockOverride(context) {
50
+ var _a;
51
+ const value = (_a = context === null || context === void 0 ? void 0 : context.input.metadata) === null || _a === void 0 ? void 0 : _a.mock;
52
+ if (!value || typeof value !== 'object') {
53
+ return null;
54
+ }
55
+ return value;
56
+ }
57
+ function createOpenRouterMockFromEnvForContext(context) {
58
+ var _a, _b, _c, _d;
59
+ const envConfig = getOpenRouterEnvConfig();
60
+ if (!envConfig.enableMock) {
61
+ return undefined;
62
+ }
63
+ const requestOverride = getRequestMockOverride(context);
64
+ if ((requestOverride === null || requestOverride === void 0 ? void 0 : requestOverride.enabled) === false) {
65
+ return undefined;
66
+ }
67
+ const mockType = (_a = requestOverride === null || requestOverride === void 0 ? void 0 : requestOverride.type) !== null && _a !== void 0 ? _a : envConfig.mockType;
68
+ const mockTimeoutSeconds = (_b = requestOverride === null || requestOverride === void 0 ? void 0 : requestOverride.timeoutSeconds) !== null && _b !== void 0 ? _b : envConfig.mockTimeoutSeconds;
69
+ const mockStreamChunkDelayMs = (_c = requestOverride === null || requestOverride === void 0 ? void 0 : requestOverride.chunkDelayMs) !== null && _c !== void 0 ? _c : envConfig.mockStreamChunkDelayMs;
70
+ const mockStreamChunkSize = (_d = requestOverride === null || requestOverride === void 0 ? void 0 : requestOverride.chunkSize) !== null && _d !== void 0 ? _d : envConfig.mockStreamChunkSize;
71
+ return createScenarioMockHandler({
72
+ text: 'This is a mock AI response from the shared backend-core runtime. Configure OPENROUTER_API_KEY and disable OPENROUTER_ENABLE_MOCK to use the real upstream model.',
73
+ mockType,
74
+ mockTimeoutSeconds,
75
+ mockStreamChunkDelayMs,
76
+ mockStreamChunkSize,
77
+ });
78
+ }
79
+
80
+ export { createOpenRouterClientConfigFromEnv, createOpenRouterMockFromEnv, createOpenRouterMockFromEnvForContext, getOpenRouterEnvConfig };
@@ -0,0 +1,3 @@
1
+ import { type AIErrorPayload } from '@windrun-huaiin/contracts/ai';
2
+ export declare function normalizeAIError(error: unknown): AIErrorPayload;
3
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../src/services/ai/error.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAC;AA2BtC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAiC/D"}
@@ -0,0 +1,54 @@
1
+ 'use strict';
2
+
3
+ var ai = require('@windrun-huaiin/contracts/ai');
4
+
5
+ function isObject(value) {
6
+ return typeof value === 'object' && value !== null;
7
+ }
8
+ function getProviderErrorMessage(data) {
9
+ if (!isObject(data)) {
10
+ return null;
11
+ }
12
+ const error = data.error;
13
+ if (isObject(error) && typeof error.message === 'string') {
14
+ return error.message;
15
+ }
16
+ if (typeof data.message === 'string') {
17
+ return data.message;
18
+ }
19
+ return null;
20
+ }
21
+ function isAbortError(error) {
22
+ return error instanceof DOMException && error.name === 'AbortError';
23
+ }
24
+ function normalizeAIError(error) {
25
+ var _a;
26
+ if (isObject(error) && typeof error.status === 'number') {
27
+ const message = (_a = getProviderErrorMessage(error)) !== null && _a !== void 0 ? _a : (typeof error.message === 'string' ? error.message : 'Error communicating with AI');
28
+ return ai.createAIErrorPayload({
29
+ message,
30
+ upstreamStatusCode: error.status,
31
+ });
32
+ }
33
+ if (error instanceof Response) {
34
+ return ai.createAIErrorPayload({
35
+ message: error.statusText || 'Error communicating with AI',
36
+ upstreamStatusCode: error.status || 500,
37
+ });
38
+ }
39
+ if (isAbortError(error)) {
40
+ return {
41
+ error: 'Request timed out',
42
+ status: 'timeout',
43
+ upstreamStatusCode: 408,
44
+ };
45
+ }
46
+ return {
47
+ error: error instanceof Error ? error.message : 'Error communicating with AI',
48
+ status: 'failed',
49
+ failureReason: 'unknown',
50
+ upstreamStatusCode: 500,
51
+ };
52
+ }
53
+
54
+ exports.normalizeAIError = normalizeAIError;
@@ -0,0 +1,52 @@
1
+ import { createAIErrorPayload } from '@windrun-huaiin/contracts/ai';
2
+
3
+ function isObject(value) {
4
+ return typeof value === 'object' && value !== null;
5
+ }
6
+ function getProviderErrorMessage(data) {
7
+ if (!isObject(data)) {
8
+ return null;
9
+ }
10
+ const error = data.error;
11
+ if (isObject(error) && typeof error.message === 'string') {
12
+ return error.message;
13
+ }
14
+ if (typeof data.message === 'string') {
15
+ return data.message;
16
+ }
17
+ return null;
18
+ }
19
+ function isAbortError(error) {
20
+ return error instanceof DOMException && error.name === 'AbortError';
21
+ }
22
+ function normalizeAIError(error) {
23
+ var _a;
24
+ if (isObject(error) && typeof error.status === 'number') {
25
+ const message = (_a = getProviderErrorMessage(error)) !== null && _a !== void 0 ? _a : (typeof error.message === 'string' ? error.message : 'Error communicating with AI');
26
+ return createAIErrorPayload({
27
+ message,
28
+ upstreamStatusCode: error.status,
29
+ });
30
+ }
31
+ if (error instanceof Response) {
32
+ return createAIErrorPayload({
33
+ message: error.statusText || 'Error communicating with AI',
34
+ upstreamStatusCode: error.status || 500,
35
+ });
36
+ }
37
+ if (isAbortError(error)) {
38
+ return {
39
+ error: 'Request timed out',
40
+ status: 'timeout',
41
+ upstreamStatusCode: 408,
42
+ };
43
+ }
44
+ return {
45
+ error: error instanceof Error ? error.message : 'Error communicating with AI',
46
+ status: 'failed',
47
+ failureReason: 'unknown',
48
+ upstreamStatusCode: 500,
49
+ };
50
+ }
51
+
52
+ export { normalizeAIError };
@@ -0,0 +1,9 @@
1
+ export * from './types';
2
+ export * from './abort';
3
+ export * from './error';
4
+ export * from './env';
5
+ export * from './message-builder';
6
+ export * from './mock';
7
+ export * from './openrouter-client';
8
+ export * from './route';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/ai/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC"}
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ var abort = require('./abort.js');
4
+ var error = require('./error.js');
5
+ var env = require('./env.js');
6
+ var messageBuilder = require('./message-builder.js');
7
+ var mock = require('./mock.js');
8
+ var openrouterClient = require('./openrouter-client.js');
9
+ var route = require('./route.js');
10
+
11
+
12
+
13
+ exports.createUpstreamAbortSignal = abort.createUpstreamAbortSignal;
14
+ exports.normalizeAIError = error.normalizeAIError;
15
+ exports.createOpenRouterClientConfigFromEnv = env.createOpenRouterClientConfigFromEnv;
16
+ exports.createOpenRouterMockFromEnv = env.createOpenRouterMockFromEnv;
17
+ exports.createOpenRouterMockFromEnvForContext = env.createOpenRouterMockFromEnvForContext;
18
+ exports.getOpenRouterEnvConfig = env.getOpenRouterEnvConfig;
19
+ exports.buildModelMessages = messageBuilder.buildModelMessages;
20
+ exports.createConfigurableMockHandler = mock.createConfigurableMockHandler;
21
+ exports.createErrorMockResponse = mock.createErrorMockResponse;
22
+ exports.createScenarioMockHandler = mock.createScenarioMockHandler;
23
+ exports.createSimpleMockHandler = mock.createSimpleMockHandler;
24
+ exports.getMockScenario = mock.getMockScenario;
25
+ exports.callOpenRouterStream = openrouterClient.callOpenRouterStream;
26
+ exports.guardedOpenRouterStreamStart = openrouterClient.guardedOpenRouterStreamStart;
27
+ exports.createOpenRouterRoute = route.createOpenRouterRoute;
28
+ exports.dynamic = route.dynamic;
29
+ exports.revalidate = route.revalidate;
30
+ exports.runtime = route.runtime;
@@ -0,0 +1,7 @@
1
+ export { createUpstreamAbortSignal } from './abort.mjs';
2
+ export { normalizeAIError } from './error.mjs';
3
+ export { createOpenRouterClientConfigFromEnv, createOpenRouterMockFromEnv, createOpenRouterMockFromEnvForContext, getOpenRouterEnvConfig } from './env.mjs';
4
+ export { buildModelMessages } from './message-builder.mjs';
5
+ export { createConfigurableMockHandler, createErrorMockResponse, createScenarioMockHandler, createSimpleMockHandler, getMockScenario } from './mock.mjs';
6
+ export { callOpenRouterStream, guardedOpenRouterStreamStart } from './openrouter-client.mjs';
7
+ export { createOpenRouterRoute, dynamic, revalidate, runtime } from './route.mjs';
@@ -0,0 +1,4 @@
1
+ import { type AIRuntimeRequest } from '@windrun-huaiin/contracts/ai';
2
+ import type { OpenRouterRequestBody } from './types';
3
+ export declare function buildModelMessages(messages: AIRuntimeRequest['messages']): OpenRouterRequestBody['messages'];
4
+ //# sourceMappingURL=message-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-builder.d.ts","sourceRoot":"","sources":["../../../src/services/ai/message-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,GACrC,qBAAqB,CAAC,UAAU,CAAC,CAQnC"}
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ var ai = require('@windrun-huaiin/contracts/ai');
4
+
5
+ function buildModelMessages(messages) {
6
+ return messages
7
+ .filter((message) => message.status !== 'failed')
8
+ .map((message) => ({
9
+ role: message.role,
10
+ content: ai.getMessageText(message),
11
+ }))
12
+ .filter((message) => message.content.trim().length > 0);
13
+ }
14
+
15
+ exports.buildModelMessages = buildModelMessages;
@@ -0,0 +1,13 @@
1
+ import { getMessageText } from '@windrun-huaiin/contracts/ai';
2
+
3
+ function buildModelMessages(messages) {
4
+ return messages
5
+ .filter((message) => message.status !== 'failed')
6
+ .map((message) => ({
7
+ role: message.role,
8
+ content: getMessageText(message),
9
+ }))
10
+ .filter((message) => message.content.trim().length > 0);
11
+ }
12
+
13
+ export { buildModelMessages };
@@ -0,0 +1,30 @@
1
+ import type { AIMockHandler } from './types';
2
+ export declare function createSimpleMockHandler(text: string): AIMockHandler;
3
+ export declare function createErrorMockResponse(statusCode: number, message: string): Response;
4
+ type MockFailureType = 'timeout' | 'request_aborted' | 'stream_error';
5
+ type MockScenario = {
6
+ mode?: 'text_stream' | 'event_sequence';
7
+ initialDelayMs?: number;
8
+ streamFailureType?: MockFailureType;
9
+ streamFailureAfterChunks?: number;
10
+ immediateErrorType?: MockFailureType;
11
+ };
12
+ export type ConfigurableMockOptions = {
13
+ text: string;
14
+ initialDelayMs?: number;
15
+ chunkDelayMs?: number;
16
+ chunkSize?: number;
17
+ streamFailureType?: MockFailureType;
18
+ streamFailureAfterChunks?: number;
19
+ };
20
+ export declare function getMockScenario(mockType: number, mockTimeoutMs: number): MockScenario;
21
+ export declare function createConfigurableMockHandler(options: ConfigurableMockOptions): AIMockHandler;
22
+ export declare function createScenarioMockHandler(params: {
23
+ text: string;
24
+ mockType: number;
25
+ mockTimeoutSeconds: number;
26
+ mockStreamChunkDelayMs: number;
27
+ mockStreamChunkSize: number;
28
+ }): AIMockHandler;
29
+ export {};
30
+ //# sourceMappingURL=mock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../../src/services/ai/mock.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,SAAS,CAAC;AA8B/D,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAqBnE;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,YAQ1E;AAED,KAAK,eAAe,GAAG,SAAS,GAAG,iBAAiB,GAAG,cAAc,CAAC;AAEtE,KAAK,YAAY,GAAG;IAClB,IAAI,CAAC,EAAE,aAAa,GAAG,gBAAgB,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,eAAe,CAAC;IACpC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,kBAAkB,CAAC,EAAE,eAAe,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,eAAe,CAAC;IACpC,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,YAAY,CA2CrF;AA6CD,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,uBAAuB,GAAG,aAAa,CA0E7F;AAiGD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CAAC;CAC7B,GAAG,aAAa,CA0BhB"}