briyah 1.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 (354) hide show
  1. package/.prettierrc +7 -0
  2. package/dist/ai/LLM/anthropic.module.d.ts +2 -0
  3. package/dist/ai/LLM/anthropic.module.js +21 -0
  4. package/dist/ai/LLM/anthropic.service.d.ts +27 -0
  5. package/dist/ai/LLM/anthropic.service.js +329 -0
  6. package/dist/ai/LLM/base-ai.service.d.ts +45 -0
  7. package/dist/ai/LLM/base-ai.service.js +409 -0
  8. package/dist/ai/LLM/deepseek.module.d.ts +2 -0
  9. package/dist/ai/LLM/deepseek.module.js +21 -0
  10. package/dist/ai/LLM/deepseek.service.d.ts +15 -0
  11. package/dist/ai/LLM/deepseek.service.js +279 -0
  12. package/dist/ai/LLM/fal.module.d.ts +2 -0
  13. package/dist/ai/LLM/fal.module.js +21 -0
  14. package/dist/ai/LLM/fal.service.d.ts +17 -0
  15. package/dist/ai/LLM/fal.service.js +314 -0
  16. package/dist/ai/LLM/googleai.module.d.ts +2 -0
  17. package/dist/ai/LLM/googleai.module.js +21 -0
  18. package/dist/ai/LLM/googleai.service.d.ts +20 -0
  19. package/dist/ai/LLM/googleai.service.js +271 -0
  20. package/dist/ai/LLM/grok.module.d.ts +2 -0
  21. package/dist/ai/LLM/grok.module.js +21 -0
  22. package/dist/ai/LLM/grok.service.d.ts +14 -0
  23. package/dist/ai/LLM/grok.service.js +263 -0
  24. package/dist/ai/LLM/mock.module.d.ts +2 -0
  25. package/dist/ai/LLM/mock.module.js +21 -0
  26. package/dist/ai/LLM/mock.service.d.ts +13 -0
  27. package/dist/ai/LLM/mock.service.js +194 -0
  28. package/dist/ai/LLM/openai.module.d.ts +2 -0
  29. package/dist/ai/LLM/openai.module.js +21 -0
  30. package/dist/ai/LLM/openai.service.d.ts +21 -0
  31. package/dist/ai/LLM/openai.service.js +421 -0
  32. package/dist/ai/LLM/together.module.d.ts +2 -0
  33. package/dist/ai/LLM/together.module.js +21 -0
  34. package/dist/ai/LLM/together.service.d.ts +18 -0
  35. package/dist/ai/LLM/together.service.js +285 -0
  36. package/dist/ai/LLM/vertexai.module.d.ts +2 -0
  37. package/dist/ai/LLM/vertexai.module.js +21 -0
  38. package/dist/ai/LLM/vertexai.service.d.ts +17 -0
  39. package/dist/ai/LLM/vertexai.service.js +323 -0
  40. package/dist/ai/agent-config.d.ts +32 -0
  41. package/dist/ai/agent-config.js +2 -0
  42. package/dist/ai/agent-factory.d.ts +15 -0
  43. package/dist/ai/agent-factory.js +24 -0
  44. package/dist/ai/agent-message.service.d.ts +9 -0
  45. package/dist/ai/agent-message.service.js +56 -0
  46. package/dist/ai/agent-store.module.d.ts +2 -0
  47. package/dist/ai/agent-store.module.js +21 -0
  48. package/dist/ai/agent-store.service.d.ts +31 -0
  49. package/dist/ai/agent-store.service.js +352 -0
  50. package/dist/ai/agent.d.ts +75 -0
  51. package/dist/ai/agent.js +174 -0
  52. package/dist/ai/ai-factory.module.d.ts +2 -0
  53. package/dist/ai/ai-factory.module.js +40 -0
  54. package/dist/ai/ai-factory.service.d.ts +24 -0
  55. package/dist/ai/ai-factory.service.js +94 -0
  56. package/dist/ai/artifact.module.d.ts +2 -0
  57. package/dist/ai/artifact.module.js +22 -0
  58. package/dist/ai/artifact.service.d.ts +21 -0
  59. package/dist/ai/artifact.service.js +239 -0
  60. package/dist/ai/attached-file.module.d.ts +2 -0
  61. package/dist/ai/attached-file.module.js +22 -0
  62. package/dist/ai/attached-file.service.d.ts +35 -0
  63. package/dist/ai/attached-file.service.js +253 -0
  64. package/dist/ai/model_prices.d.ts +2 -0
  65. package/dist/ai/model_prices.js +54 -0
  66. package/dist/ai/published-agents.service.d.ts +13 -0
  67. package/dist/ai/published-agents.service.js +118 -0
  68. package/dist/app/balance-message.service.d.ts +8 -0
  69. package/dist/app/balance-message.service.js +45 -0
  70. package/dist/app/balance.module.d.ts +2 -0
  71. package/dist/app/balance.module.js +20 -0
  72. package/dist/app/balance.service.d.ts +18 -0
  73. package/dist/app/balance.service.js +158 -0
  74. package/dist/app/stripe.controller.d.ts +31 -0
  75. package/dist/app/stripe.controller.js +150 -0
  76. package/dist/app/stripe.module.d.ts +2 -0
  77. package/dist/app/stripe.module.js +22 -0
  78. package/dist/app/stripe.service.d.ts +28 -0
  79. package/dist/app/stripe.service.js +198 -0
  80. package/dist/app/transaction.service.d.ts +15 -0
  81. package/dist/app/transaction.service.js +139 -0
  82. package/dist/app/user-service-factory.d.ts +21 -0
  83. package/dist/app/user-service-factory.js +81 -0
  84. package/dist/app/user-service-manager.d.ts +28 -0
  85. package/dist/app/user-service-manager.js +102 -0
  86. package/dist/app.controller.d.ts +232 -0
  87. package/dist/app.controller.js +2536 -0
  88. package/dist/app.module.d.ts +2 -0
  89. package/dist/app.module.js +45 -0
  90. package/dist/app.service.d.ts +186 -0
  91. package/dist/app.service.js +1334 -0
  92. package/dist/auth/agent-access.decorator.d.ts +2 -0
  93. package/dist/auth/agent-access.decorator.js +10 -0
  94. package/dist/auth/auth.controller.d.ts +38 -0
  95. package/dist/auth/auth.controller.js +356 -0
  96. package/dist/auth/auth.module.d.ts +2 -0
  97. package/dist/auth/auth.module.js +55 -0
  98. package/dist/auth/auth.service.d.ts +14 -0
  99. package/dist/auth/auth.service.js +84 -0
  100. package/dist/auth/dto/bot-login.dto.d.ts +4 -0
  101. package/dist/auth/dto/bot-login.dto.js +2 -0
  102. package/dist/auth/dto/password-reset.dto.d.ts +11 -0
  103. package/dist/auth/dto/password-reset.dto.js +2 -0
  104. package/dist/auth/dto/phone-login.dto.d.ts +8 -0
  105. package/dist/auth/dto/phone-login.dto.js +2 -0
  106. package/dist/auth/dto/phone-verification.dto.d.ts +9 -0
  107. package/dist/auth/dto/phone-verification.dto.js +2 -0
  108. package/dist/auth/jwt-auth.guard.d.ts +13 -0
  109. package/dist/auth/jwt-auth.guard.js +143 -0
  110. package/dist/auth/jwt.strategy.d.ts +17 -0
  111. package/dist/auth/jwt.strategy.js +45 -0
  112. package/dist/auth/phone-validation.service.d.ts +7 -0
  113. package/dist/auth/phone-validation.service.js +50 -0
  114. package/dist/auth/public.decorator.d.ts +2 -0
  115. package/dist/auth/public.decorator.js +7 -0
  116. package/dist/auth/rate-limit.service.d.ts +16 -0
  117. package/dist/auth/rate-limit.service.js +84 -0
  118. package/dist/auth/room-access.decorator.d.ts +2 -0
  119. package/dist/auth/room-access.decorator.js +10 -0
  120. package/dist/auth/scopes.decorator.d.ts +2 -0
  121. package/dist/auth/scopes.decorator.js +7 -0
  122. package/dist/auth/scopes.guard.d.ts +9 -0
  123. package/dist/auth/scopes.guard.js +82 -0
  124. package/dist/auth/session.guard.d.ts +7 -0
  125. package/dist/auth/session.guard.js +55 -0
  126. package/dist/auth/twilio.service.d.ts +15 -0
  127. package/dist/auth/twilio.service.js +139 -0
  128. package/dist/auth/users.service.d.ts +24 -0
  129. package/dist/auth/users.service.js +149 -0
  130. package/dist/common/errors.d.ts +12 -0
  131. package/dist/common/errors.js +43 -0
  132. package/dist/config/configuration.module.d.ts +2 -0
  133. package/dist/config/configuration.module.js +20 -0
  134. package/dist/config/configuration.service.d.ts +26 -0
  135. package/dist/config/configuration.service.js +131 -0
  136. package/dist/main.js +15749 -0
  137. package/dist/room/artifact-store.service.d.ts +15 -0
  138. package/dist/room/artifact-store.service.js +226 -0
  139. package/dist/room/artifact.d.ts +6 -0
  140. package/dist/room/artifact.js +2 -0
  141. package/dist/room/message.d.ts +19 -0
  142. package/dist/room/message.js +70 -0
  143. package/dist/room/published-rooms.service.d.ts +12 -0
  144. package/dist/room/published-rooms.service.js +108 -0
  145. package/dist/room/room-config.d.ts +12 -0
  146. package/dist/room/room-config.js +2 -0
  147. package/dist/room/room-factory.d.ts +7 -0
  148. package/dist/room/room-factory.js +16 -0
  149. package/dist/room/room-message.module.d.ts +2 -0
  150. package/dist/room/room-message.module.js +21 -0
  151. package/dist/room/room-message.service.d.ts +8 -0
  152. package/dist/room/room-message.service.js +44 -0
  153. package/dist/room/room-store.module.d.ts +2 -0
  154. package/dist/room/room-store.module.js +25 -0
  155. package/dist/room/room-store.service.d.ts +38 -0
  156. package/dist/room/room-store.service.js +353 -0
  157. package/dist/room/room.d.ts +107 -0
  158. package/dist/room/room.js +833 -0
  159. package/dist/sdk/briyah-config.d.ts +13 -0
  160. package/dist/sdk/briyah-config.js +32 -0
  161. package/dist/sdk/briyah.d.ts +36 -0
  162. package/dist/sdk/briyah.js +122 -0
  163. package/dist/sdk/index.d.ts +6 -0
  164. package/dist/sdk/index.js +11 -0
  165. package/dist/server/src/ai/LLM/anthropic.module.d.ts +2 -0
  166. package/dist/server/src/ai/LLM/anthropic.module.js +21 -0
  167. package/dist/server/src/ai/LLM/anthropic.service.d.ts +27 -0
  168. package/dist/server/src/ai/LLM/anthropic.service.js +329 -0
  169. package/dist/server/src/ai/LLM/base-ai.service.d.ts +45 -0
  170. package/dist/server/src/ai/LLM/base-ai.service.js +409 -0
  171. package/dist/server/src/ai/LLM/deepseek.module.d.ts +2 -0
  172. package/dist/server/src/ai/LLM/deepseek.module.js +21 -0
  173. package/dist/server/src/ai/LLM/deepseek.service.d.ts +15 -0
  174. package/dist/server/src/ai/LLM/deepseek.service.js +279 -0
  175. package/dist/server/src/ai/LLM/fal.module.d.ts +2 -0
  176. package/dist/server/src/ai/LLM/fal.module.js +21 -0
  177. package/dist/server/src/ai/LLM/fal.service.d.ts +17 -0
  178. package/dist/server/src/ai/LLM/fal.service.js +314 -0
  179. package/dist/server/src/ai/LLM/googleai.module.d.ts +2 -0
  180. package/dist/server/src/ai/LLM/googleai.module.js +21 -0
  181. package/dist/server/src/ai/LLM/googleai.service.d.ts +20 -0
  182. package/dist/server/src/ai/LLM/googleai.service.js +271 -0
  183. package/dist/server/src/ai/LLM/grok.module.d.ts +2 -0
  184. package/dist/server/src/ai/LLM/grok.module.js +21 -0
  185. package/dist/server/src/ai/LLM/grok.service.d.ts +14 -0
  186. package/dist/server/src/ai/LLM/grok.service.js +263 -0
  187. package/dist/server/src/ai/LLM/mock.module.d.ts +2 -0
  188. package/dist/server/src/ai/LLM/mock.module.js +21 -0
  189. package/dist/server/src/ai/LLM/mock.service.d.ts +13 -0
  190. package/dist/server/src/ai/LLM/mock.service.js +194 -0
  191. package/dist/server/src/ai/LLM/openai.module.d.ts +2 -0
  192. package/dist/server/src/ai/LLM/openai.module.js +21 -0
  193. package/dist/server/src/ai/LLM/openai.service.d.ts +21 -0
  194. package/dist/server/src/ai/LLM/openai.service.js +421 -0
  195. package/dist/server/src/ai/LLM/together.module.d.ts +2 -0
  196. package/dist/server/src/ai/LLM/together.module.js +21 -0
  197. package/dist/server/src/ai/LLM/together.service.d.ts +18 -0
  198. package/dist/server/src/ai/LLM/together.service.js +285 -0
  199. package/dist/server/src/ai/LLM/vertexai.module.d.ts +2 -0
  200. package/dist/server/src/ai/LLM/vertexai.module.js +21 -0
  201. package/dist/server/src/ai/LLM/vertexai.service.d.ts +17 -0
  202. package/dist/server/src/ai/LLM/vertexai.service.js +323 -0
  203. package/dist/server/src/ai/agent-config.d.ts +32 -0
  204. package/dist/server/src/ai/agent-config.js +2 -0
  205. package/dist/server/src/ai/agent-factory.d.ts +15 -0
  206. package/dist/server/src/ai/agent-factory.js +24 -0
  207. package/dist/server/src/ai/agent-message.service.d.ts +9 -0
  208. package/dist/server/src/ai/agent-message.service.js +56 -0
  209. package/dist/server/src/ai/agent-store.module.d.ts +2 -0
  210. package/dist/server/src/ai/agent-store.module.js +21 -0
  211. package/dist/server/src/ai/agent-store.service.d.ts +31 -0
  212. package/dist/server/src/ai/agent-store.service.js +352 -0
  213. package/dist/server/src/ai/agent.d.ts +75 -0
  214. package/dist/server/src/ai/agent.js +174 -0
  215. package/dist/server/src/ai/ai-factory.module.d.ts +2 -0
  216. package/dist/server/src/ai/ai-factory.module.js +40 -0
  217. package/dist/server/src/ai/ai-factory.service.d.ts +24 -0
  218. package/dist/server/src/ai/ai-factory.service.js +94 -0
  219. package/dist/server/src/ai/artifact.module.d.ts +2 -0
  220. package/dist/server/src/ai/artifact.module.js +22 -0
  221. package/dist/server/src/ai/artifact.service.d.ts +21 -0
  222. package/dist/server/src/ai/artifact.service.js +239 -0
  223. package/dist/server/src/ai/attached-file.module.d.ts +2 -0
  224. package/dist/server/src/ai/attached-file.module.js +22 -0
  225. package/dist/server/src/ai/attached-file.service.d.ts +35 -0
  226. package/dist/server/src/ai/attached-file.service.js +253 -0
  227. package/dist/server/src/ai/model_prices.d.ts +2 -0
  228. package/dist/server/src/ai/model_prices.js +54 -0
  229. package/dist/server/src/ai/published-agents.service.d.ts +13 -0
  230. package/dist/server/src/ai/published-agents.service.js +118 -0
  231. package/dist/server/src/app/balance-message.service.d.ts +8 -0
  232. package/dist/server/src/app/balance-message.service.js +45 -0
  233. package/dist/server/src/app/balance.module.d.ts +2 -0
  234. package/dist/server/src/app/balance.module.js +20 -0
  235. package/dist/server/src/app/balance.service.d.ts +18 -0
  236. package/dist/server/src/app/balance.service.js +158 -0
  237. package/dist/server/src/app/stripe.controller.d.ts +31 -0
  238. package/dist/server/src/app/stripe.controller.js +148 -0
  239. package/dist/server/src/app/stripe.module.d.ts +2 -0
  240. package/dist/server/src/app/stripe.module.js +22 -0
  241. package/dist/server/src/app/stripe.service.d.ts +28 -0
  242. package/dist/server/src/app/stripe.service.js +198 -0
  243. package/dist/server/src/app/transaction.service.d.ts +15 -0
  244. package/dist/server/src/app/transaction.service.js +139 -0
  245. package/dist/server/src/app/user-service-factory.d.ts +21 -0
  246. package/dist/server/src/app/user-service-factory.js +81 -0
  247. package/dist/server/src/app/user-service-manager.d.ts +28 -0
  248. package/dist/server/src/app/user-service-manager.js +102 -0
  249. package/dist/server/src/app.controller.d.ts +232 -0
  250. package/dist/server/src/app.controller.js +2534 -0
  251. package/dist/server/src/app.module.d.ts +2 -0
  252. package/dist/server/src/app.module.js +45 -0
  253. package/dist/server/src/app.service.d.ts +186 -0
  254. package/dist/server/src/app.service.js +1334 -0
  255. package/dist/server/src/auth/agent-access.decorator.d.ts +2 -0
  256. package/dist/server/src/auth/agent-access.decorator.js +10 -0
  257. package/dist/server/src/auth/auth.controller.d.ts +38 -0
  258. package/dist/server/src/auth/auth.controller.js +356 -0
  259. package/dist/server/src/auth/auth.module.d.ts +2 -0
  260. package/dist/server/src/auth/auth.module.js +55 -0
  261. package/dist/server/src/auth/auth.service.d.ts +14 -0
  262. package/dist/server/src/auth/auth.service.js +84 -0
  263. package/dist/server/src/auth/dto/bot-login.dto.d.ts +4 -0
  264. package/dist/server/src/auth/dto/bot-login.dto.js +2 -0
  265. package/dist/server/src/auth/dto/password-reset.dto.d.ts +11 -0
  266. package/dist/server/src/auth/dto/password-reset.dto.js +2 -0
  267. package/dist/server/src/auth/dto/phone-login.dto.d.ts +8 -0
  268. package/dist/server/src/auth/dto/phone-login.dto.js +2 -0
  269. package/dist/server/src/auth/dto/phone-verification.dto.d.ts +9 -0
  270. package/dist/server/src/auth/dto/phone-verification.dto.js +2 -0
  271. package/dist/server/src/auth/jwt-auth.guard.d.ts +13 -0
  272. package/dist/server/src/auth/jwt-auth.guard.js +143 -0
  273. package/dist/server/src/auth/jwt.strategy.d.ts +17 -0
  274. package/dist/server/src/auth/jwt.strategy.js +45 -0
  275. package/dist/server/src/auth/phone-validation.service.d.ts +7 -0
  276. package/dist/server/src/auth/phone-validation.service.js +50 -0
  277. package/dist/server/src/auth/public.decorator.d.ts +2 -0
  278. package/dist/server/src/auth/public.decorator.js +7 -0
  279. package/dist/server/src/auth/rate-limit.service.d.ts +16 -0
  280. package/dist/server/src/auth/rate-limit.service.js +84 -0
  281. package/dist/server/src/auth/room-access.decorator.d.ts +2 -0
  282. package/dist/server/src/auth/room-access.decorator.js +10 -0
  283. package/dist/server/src/auth/scopes.decorator.d.ts +2 -0
  284. package/dist/server/src/auth/scopes.decorator.js +7 -0
  285. package/dist/server/src/auth/scopes.guard.d.ts +9 -0
  286. package/dist/server/src/auth/scopes.guard.js +82 -0
  287. package/dist/server/src/auth/session.guard.d.ts +7 -0
  288. package/dist/server/src/auth/session.guard.js +55 -0
  289. package/dist/server/src/auth/twilio.service.d.ts +15 -0
  290. package/dist/server/src/auth/twilio.service.js +139 -0
  291. package/dist/server/src/auth/users.service.d.ts +24 -0
  292. package/dist/server/src/auth/users.service.js +149 -0
  293. package/dist/server/src/common/errors.d.ts +12 -0
  294. package/dist/server/src/common/errors.js +43 -0
  295. package/dist/server/src/config/configuration.module.d.ts +2 -0
  296. package/dist/server/src/config/configuration.module.js +20 -0
  297. package/dist/server/src/config/configuration.service.d.ts +26 -0
  298. package/dist/server/src/config/configuration.service.js +131 -0
  299. package/dist/server/src/room/artifact-store.service.d.ts +15 -0
  300. package/dist/server/src/room/artifact-store.service.js +226 -0
  301. package/dist/server/src/room/artifact.d.ts +6 -0
  302. package/dist/server/src/room/artifact.js +2 -0
  303. package/dist/server/src/room/message.d.ts +19 -0
  304. package/dist/server/src/room/message.js +70 -0
  305. package/dist/server/src/room/published-rooms.service.d.ts +12 -0
  306. package/dist/server/src/room/published-rooms.service.js +108 -0
  307. package/dist/server/src/room/room-config.d.ts +12 -0
  308. package/dist/server/src/room/room-config.js +2 -0
  309. package/dist/server/src/room/room-factory.d.ts +7 -0
  310. package/dist/server/src/room/room-factory.js +16 -0
  311. package/dist/server/src/room/room-message.module.d.ts +2 -0
  312. package/dist/server/src/room/room-message.module.js +21 -0
  313. package/dist/server/src/room/room-message.service.d.ts +8 -0
  314. package/dist/server/src/room/room-message.service.js +44 -0
  315. package/dist/server/src/room/room-store.module.d.ts +2 -0
  316. package/dist/server/src/room/room-store.module.js +25 -0
  317. package/dist/server/src/room/room-store.service.d.ts +38 -0
  318. package/dist/server/src/room/room-store.service.js +353 -0
  319. package/dist/server/src/room/room.d.ts +107 -0
  320. package/dist/server/src/room/room.js +833 -0
  321. package/dist/server/src/sdk/briyah-config.d.ts +13 -0
  322. package/dist/server/src/sdk/briyah-config.js +32 -0
  323. package/dist/server/src/sdk/briyah.d.ts +36 -0
  324. package/dist/server/src/sdk/briyah.js +122 -0
  325. package/dist/server/src/sdk/index.d.ts +6 -0
  326. package/dist/server/src/sdk/index.js +11 -0
  327. package/dist/server/src/shared/shared.module.d.ts +2 -0
  328. package/dist/server/src/shared/shared.module.js +46 -0
  329. package/dist/server/src/story/story-message.service.d.ts +10 -0
  330. package/dist/server/src/story/story-message.service.js +57 -0
  331. package/dist/server/src/story/story-progress.service.d.ts +8 -0
  332. package/dist/server/src/story/story-progress.service.js +44 -0
  333. package/dist/server/src/story/story-store.module.d.ts +2 -0
  334. package/dist/server/src/story/story-store.module.js +22 -0
  335. package/dist/server/src/story/story-store.service.d.ts +23 -0
  336. package/dist/server/src/story/story-store.service.js +392 -0
  337. package/dist/server/src/story/story.service.d.ts +94 -0
  338. package/dist/server/src/story/story.service.js +1797 -0
  339. package/dist/shared/shared.module.d.ts +2 -0
  340. package/dist/shared/shared.module.js +46 -0
  341. package/dist/shared/types/app.types.d.ts +296 -0
  342. package/dist/shared/types/app.types.js +17 -0
  343. package/dist/story/story-message.service.d.ts +10 -0
  344. package/dist/story/story-message.service.js +57 -0
  345. package/dist/story/story-progress.service.d.ts +8 -0
  346. package/dist/story/story-progress.service.js +44 -0
  347. package/dist/story/story-store.module.d.ts +2 -0
  348. package/dist/story/story-store.module.js +22 -0
  349. package/dist/story/story-store.service.d.ts +23 -0
  350. package/dist/story/story-store.service.js +392 -0
  351. package/dist/story/story.service.d.ts +94 -0
  352. package/dist/story/story.service.js +1797 -0
  353. package/eslint.config.js +29 -0
  354. package/package.json +125 -0
@@ -0,0 +1,13 @@
1
+ import { IConfigService } from '../app/user-service-manager';
2
+ export interface BriyahConfigOptions {
3
+ dataPath?: string;
4
+ userServiceCacheTimeoutMinutes?: number;
5
+ startingBalance?: number;
6
+ envOverrides?: Record<string, string>;
7
+ }
8
+ export declare class BriyahConfigService implements IConfigService {
9
+ private env;
10
+ constructor(options?: BriyahConfigOptions);
11
+ get<T = string>(key: string, defaultValue?: T): T;
12
+ getAll(): Record<string, string>;
13
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BriyahConfigService = void 0;
4
+ class BriyahConfigService {
5
+ env;
6
+ constructor(options) {
7
+ this.env = {
8
+ ...process.env,
9
+ ...(options?.envOverrides || {}),
10
+ };
11
+ if (options?.dataPath) {
12
+ this.env.SERVER_DATA_PATH = options.dataPath;
13
+ }
14
+ if (options?.userServiceCacheTimeoutMinutes !== undefined) {
15
+ this.env.USER_SERVICE_CACHE_TIMEOUT_MINUTES = String(options.userServiceCacheTimeoutMinutes);
16
+ }
17
+ if (options?.startingBalance !== undefined) {
18
+ this.env.STARTING_BALANCE = String(options.startingBalance);
19
+ }
20
+ }
21
+ get(key, defaultValue) {
22
+ const value = this.env[key];
23
+ if (value === undefined) {
24
+ return defaultValue;
25
+ }
26
+ return value;
27
+ }
28
+ getAll() {
29
+ return { ...this.env };
30
+ }
31
+ }
32
+ exports.BriyahConfigService = BriyahConfigService;
@@ -0,0 +1,36 @@
1
+ import { AiFactoryService } from '../ai/ai-factory.service';
2
+ import { PublishedAgentsService } from '../ai/published-agents.service';
3
+ import { BriyahConfigService, BriyahConfigOptions } from './briyah-config';
4
+ import { AppService } from '../app.service';
5
+ export declare class Briyah {
6
+ private configService;
7
+ private aiFactoryService;
8
+ private agentMessageService;
9
+ private roomMessageService;
10
+ private storyProgressService;
11
+ private storyMessageService;
12
+ private publishedAgentsService;
13
+ private publishedRoomsService;
14
+ private balanceMessageService;
15
+ private userServiceFactory;
16
+ private userServiceManager;
17
+ private initialized;
18
+ constructor(options?: BriyahConfigOptions);
19
+ private validateEnvironment;
20
+ private initializeSingletons;
21
+ init(): Promise<void>;
22
+ getAppService(userId: string): AppService;
23
+ removeUserService(userId: string): void;
24
+ getCacheStats(): {
25
+ cachedUsers: number;
26
+ users: {
27
+ userId: string;
28
+ ageMinutes: number;
29
+ }[];
30
+ };
31
+ shutdown(): Promise<void>;
32
+ isInitialized(): boolean;
33
+ getConfigService(): BriyahConfigService;
34
+ getAiFactoryService(): AiFactoryService;
35
+ getPublishedAgentsService(): PublishedAgentsService;
36
+ }
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Briyah = void 0;
4
+ const ai_factory_service_1 = require("../ai/ai-factory.service");
5
+ const openai_service_1 = require("../ai/LLM/openai.service");
6
+ const anthropic_service_1 = require("../ai/LLM/anthropic.service");
7
+ const vertexai_service_1 = require("../ai/LLM/vertexai.service");
8
+ const grok_service_1 = require("../ai/LLM/grok.service");
9
+ const deepseek_service_1 = require("../ai/LLM/deepseek.service");
10
+ const together_service_1 = require("../ai/LLM/together.service");
11
+ const mock_service_1 = require("../ai/LLM/mock.service");
12
+ const googleai_service_1 = require("../ai/LLM/googleai.service");
13
+ const agent_message_service_1 = require("../ai/agent-message.service");
14
+ const room_message_service_1 = require("../room/room-message.service");
15
+ const story_progress_service_1 = require("../story/story-progress.service");
16
+ const story_message_service_1 = require("../story/story-message.service");
17
+ const published_agents_service_1 = require("../ai/published-agents.service");
18
+ const published_rooms_service_1 = require("../room/published-rooms.service");
19
+ const balance_message_service_1 = require("../app/balance-message.service");
20
+ const user_service_manager_1 = require("../app/user-service-manager");
21
+ const user_service_factory_1 = require("../app/user-service-factory");
22
+ const briyah_config_1 = require("./briyah-config");
23
+ const fal_service_1 = require("../ai/LLM/fal.service");
24
+ class Briyah {
25
+ configService;
26
+ aiFactoryService;
27
+ agentMessageService;
28
+ roomMessageService;
29
+ storyProgressService;
30
+ storyMessageService;
31
+ publishedAgentsService;
32
+ publishedRoomsService;
33
+ balanceMessageService;
34
+ userServiceFactory;
35
+ userServiceManager;
36
+ initialized = false;
37
+ constructor(options) {
38
+ this.configService = new briyah_config_1.BriyahConfigService(options);
39
+ this.validateEnvironment();
40
+ this.initializeSingletons(options?.dataPath);
41
+ }
42
+ validateEnvironment() {
43
+ const hasAnyProvider = this.configService.get('ANTHROPIC_API_KEY') ||
44
+ this.configService.get('OPENAI_API_KEY') ||
45
+ this.configService.get('GOOGLE_VERTEX_PROJECT_ID') ||
46
+ this.configService.get('XAI_API_KEY') ||
47
+ this.configService.get('DEEPSEEK_API_KEY') ||
48
+ this.configService.get('TOGETHER_API_KEY');
49
+ this.configService.get('FAL_API_KEY');
50
+ if (!hasAnyProvider) {
51
+ console.warn('[Briyah] No LLM provider API keys configured. Some features will not be available.');
52
+ console.warn('[Briyah] Set one or more of: ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_VERTEX_PROJECT_ID, XAI_API_KEY, DEEPSEEK_API_KEY, TOGETHER_API_KEY');
53
+ }
54
+ const startingBalance = this.configService.get('STARTING_BALANCE');
55
+ if (!startingBalance) {
56
+ throw new Error('[Briyah] STARTING_BALANCE environment variable is required');
57
+ }
58
+ }
59
+ initializeSingletons(_baseDataPath) {
60
+ const openAiService = new openai_service_1.OpenAiService();
61
+ const anthropicService = new anthropic_service_1.AnthropicAiService();
62
+ const vertexService = new vertexai_service_1.VertexAiService();
63
+ const grokService = new grok_service_1.GrokAiService();
64
+ const deepseekService = new deepseek_service_1.DeepSeekAiService();
65
+ const togetherService = new together_service_1.TogetherAiService();
66
+ const mockService = new mock_service_1.MockAiService();
67
+ const googleAiService = new googleai_service_1.GoogleAiService();
68
+ const falAiService = new fal_service_1.FalAiService();
69
+ this.aiFactoryService = new ai_factory_service_1.AiFactoryService(openAiService, grokService, vertexService, anthropicService, deepseekService, togetherService, mockService, googleAiService, falAiService);
70
+ this.agentMessageService = new agent_message_service_1.AgentMessageService();
71
+ this.roomMessageService = new room_message_service_1.RoomMessageService();
72
+ this.storyProgressService = new story_progress_service_1.StoryProgressService();
73
+ this.storyMessageService = new story_message_service_1.StoryMessageService();
74
+ this.balanceMessageService = new balance_message_service_1.BalanceMessageService();
75
+ this.publishedAgentsService = new published_agents_service_1.PublishedAgentsService();
76
+ this.publishedRoomsService = new published_rooms_service_1.PublishedRoomsService();
77
+ this.userServiceFactory = new user_service_factory_1.UserServiceFactory(this.aiFactoryService, this.agentMessageService, this.roomMessageService, this.storyProgressService, this.storyMessageService, this.publishedAgentsService, this.publishedRoomsService, this.balanceMessageService);
78
+ this.userServiceManager = new user_service_manager_1.UserServiceManager(this.userServiceFactory, this.configService);
79
+ }
80
+ async init() {
81
+ if (this.initialized) {
82
+ console.warn('[Briyah] Already initialized');
83
+ return;
84
+ }
85
+ this.publishedAgentsService.onModuleInit();
86
+ this.userServiceManager.onModuleInit();
87
+ this.initialized = true;
88
+ }
89
+ getAppService(userId) {
90
+ if (!this.initialized) {
91
+ throw new Error('[Briyah] Must call init() before getAppService()');
92
+ }
93
+ return this.userServiceManager.getAppService(userId);
94
+ }
95
+ removeUserService(userId) {
96
+ this.userServiceManager.removeUserService(userId);
97
+ }
98
+ getCacheStats() {
99
+ return this.userServiceManager.getCacheStats();
100
+ }
101
+ async shutdown() {
102
+ if (!this.initialized) {
103
+ return;
104
+ }
105
+ this.userServiceManager.onModuleDestroy();
106
+ this.initialized = false;
107
+ console.log('[Briyah] Shutdown complete');
108
+ }
109
+ isInitialized() {
110
+ return this.initialized;
111
+ }
112
+ getConfigService() {
113
+ return this.configService;
114
+ }
115
+ getAiFactoryService() {
116
+ return this.aiFactoryService;
117
+ }
118
+ getPublishedAgentsService() {
119
+ return this.publishedAgentsService;
120
+ }
121
+ }
122
+ exports.Briyah = Briyah;
@@ -0,0 +1,6 @@
1
+ export { Briyah } from './briyah';
2
+ export { BriyahConfigService, BriyahConfigOptions } from './briyah-config';
3
+ export type { AppService } from '../app.service';
4
+ export type { AgentInfo, CreateAgentResponse, RoomInfo, RoomDetails, CreateRoomResponse, StoryInfo, CreateStoryResponse, ProcessTextResponse, FileList, PromptFileContent, AttachDocumentResponse, AgentMessagesResponse, RoomMessagesResponse, StoryState, Message, MessageAction, } from '@shared/types/app.types';
5
+ export { Agent } from '../ai/agent';
6
+ export { Room } from '../room/room';
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Room = exports.Agent = exports.BriyahConfigService = exports.Briyah = void 0;
4
+ var briyah_1 = require("./briyah");
5
+ Object.defineProperty(exports, "Briyah", { enumerable: true, get: function () { return briyah_1.Briyah; } });
6
+ var briyah_config_1 = require("./briyah-config");
7
+ Object.defineProperty(exports, "BriyahConfigService", { enumerable: true, get: function () { return briyah_config_1.BriyahConfigService; } });
8
+ var agent_1 = require("../ai/agent");
9
+ Object.defineProperty(exports, "Agent", { enumerable: true, get: function () { return agent_1.Agent; } });
10
+ var room_1 = require("../room/room");
11
+ Object.defineProperty(exports, "Room", { enumerable: true, get: function () { return room_1.Room; } });
@@ -0,0 +1,2 @@
1
+ export declare class AnthropicAiModule {
2
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AnthropicAiModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const anthropic_service_1 = require("./anthropic.service");
12
+ let AnthropicAiModule = class AnthropicAiModule {
13
+ };
14
+ exports.AnthropicAiModule = AnthropicAiModule;
15
+ exports.AnthropicAiModule = AnthropicAiModule = __decorate([
16
+ (0, common_1.Module)({
17
+ imports: [],
18
+ providers: [anthropic_service_1.AnthropicAiService],
19
+ exports: [anthropic_service_1.AnthropicAiService],
20
+ })
21
+ ], AnthropicAiModule);
@@ -0,0 +1,27 @@
1
+ import { Anthropic } from '@anthropic-ai/sdk';
2
+ import { Agent } from '../agent';
3
+ import { BaseAiService } from './base-ai.service';
4
+ import { ConfigurationService } from '../../config/configuration.service';
5
+ import { AgentStoreService } from '../agent-store.service';
6
+ import { BalanceService } from '../../app/balance.service';
7
+ import { ArtifactService } from '../artifact.service';
8
+ import { ModelInfo } from '@shared/types/app.types';
9
+ export declare class AnthropicAiService extends BaseAiService {
10
+ protected anthropic: Anthropic;
11
+ constructor();
12
+ createAgent(configService: ConfigurationService, agentStoreService: AgentStoreService, balanceService: BalanceService, artifactService: ArtifactService, agentName: string, agentNickname: string, description: string, promptFolder: string, modelName: string, storageDir?: string): Agent;
13
+ getServiceName(): string;
14
+ supportsImageGeneration(): boolean;
15
+ supportsPromptCaching(): boolean;
16
+ getCacheConfig(agent: Agent, cacheMessage: boolean): {
17
+ type: string;
18
+ ttl: string;
19
+ } | {
20
+ type: string;
21
+ ttl?: undefined;
22
+ };
23
+ fetchModelsFromApi(): Promise<ModelInfo[]>;
24
+ addToConversationHistory(agent: Agent, message: string, fromSelf?: boolean): void;
25
+ textPrompt(agent: Agent, prompt: string, jsonSchema?: any, saveResponse?: boolean, promptInstructions?: string, cacheConfig?: any, maxOutputChars?: number): Promise<any>;
26
+ private computeMessageCost;
27
+ }
@@ -0,0 +1,329 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.AnthropicAiService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const sdk_1 = require("@anthropic-ai/sdk");
18
+ const base_ai_service_1 = require("./base-ai.service");
19
+ const model_prices_1 = __importDefault(require("../model_prices"));
20
+ const errors_1 = require("../../common/errors");
21
+ let AnthropicAiService = class AnthropicAiService extends base_ai_service_1.BaseAiService {
22
+ anthropic;
23
+ constructor() {
24
+ super();
25
+ try {
26
+ const apiKey = process.env['ANTHROPIC_API_KEY'];
27
+ if (!apiKey) {
28
+ console.warn('ANTHROPIC_API_KEY environment variable not set. Anthropic service will not be available.');
29
+ this._isAvailable = false;
30
+ return;
31
+ }
32
+ this.anthropic = new sdk_1.Anthropic({
33
+ apiKey: apiKey,
34
+ timeout: 1200000,
35
+ maxRetries: 3,
36
+ });
37
+ }
38
+ catch (error) {
39
+ console.error('Error initializing Anthropic service:', error);
40
+ this._isAvailable = false;
41
+ }
42
+ }
43
+ createAgent(configService, agentStoreService, balanceService, artifactService, agentName, agentNickname, description, promptFolder, modelName, storageDir = '') {
44
+ let agent = super.createAgent(configService, agentStoreService, balanceService, artifactService, agentName, agentNickname, description, promptFolder, modelName, storageDir);
45
+ agent.promptCacheTTL = 5;
46
+ return agent;
47
+ }
48
+ getServiceName() {
49
+ return 'Anthropic';
50
+ }
51
+ supportsImageGeneration() {
52
+ return false;
53
+ }
54
+ supportsPromptCaching() {
55
+ return true;
56
+ }
57
+ getCacheConfig(agent, cacheMessage) {
58
+ if (!cacheMessage)
59
+ return null;
60
+ if (agent.promptCacheTTL === 0)
61
+ return null;
62
+ if (agent.promptCacheTTL > 5)
63
+ return { type: 'ephemeral', ttl: '1h' };
64
+ return { type: 'ephemeral' };
65
+ }
66
+ async fetchModelsFromApi() {
67
+ try {
68
+ const modelsResponse = await this.anthropic.models.list();
69
+ return modelsResponse.data.map((model) => ({
70
+ name: model.id,
71
+ description: model.id,
72
+ model: model.id,
73
+ service: 'Anthropic',
74
+ }));
75
+ }
76
+ catch (error) {
77
+ console.error('Error fetching Anthropic models:', error);
78
+ }
79
+ }
80
+ addToConversationHistory(agent, message, fromSelf = false) {
81
+ if (!agent.history) {
82
+ agent.history = [];
83
+ }
84
+ if (!message)
85
+ return;
86
+ agent.history.push({
87
+ role: fromSelf ? 'assistant' : 'user',
88
+ content: message,
89
+ });
90
+ agent.trimHistoryIfNeeded(10);
91
+ }
92
+ async textPrompt(agent, prompt, jsonSchema = null, saveResponse = true, promptInstructions = null, cacheConfig = false, maxOutputChars = 0) {
93
+ if (agent.balanceService && !agent.disableBalanceCheck) {
94
+ const hasSufficientBalance = agent.balanceService.hasSufficientBalance();
95
+ if (!hasSufficientBalance) {
96
+ throw new errors_1.InsufficientBalanceError('Insufficient balance. Please add funds to continue using AI services.');
97
+ }
98
+ }
99
+ const attachedFiles = agent.attachedFiles.filter((file) => file.serviceMetadata?.fileData);
100
+ let documentMessages = [];
101
+ for (const file of attachedFiles) {
102
+ if (file.serviceMetadata?.fileData) {
103
+ const fileData = new Uint8Array(file.serviceMetadata.fileData);
104
+ let fileContent;
105
+ if (file.mimeType === 'application/pdf') {
106
+ const base64Data = Buffer.from(fileData).toString('base64');
107
+ fileContent = {
108
+ type: 'document',
109
+ source: {
110
+ type: 'base64',
111
+ media_type: 'application/pdf',
112
+ data: base64Data,
113
+ },
114
+ };
115
+ }
116
+ else {
117
+ const textContent = Buffer.from(fileData).toString('utf-8');
118
+ fileContent = {
119
+ type: 'text',
120
+ text: `Attached file "${file.fileName}":\n\n${textContent}`,
121
+ };
122
+ }
123
+ documentMessages.push({ role: 'user', content: [fileContent] });
124
+ }
125
+ }
126
+ if (agent.attachedArtifacts && agent.attachedArtifacts.length > 0) {
127
+ for (const artifactId of agent.attachedArtifacts) {
128
+ const content = agent.artifactService.getArtifact(artifactId);
129
+ if (content && typeof content === 'string') {
130
+ const metadata = agent.artifactService.getArtifactMetadata(artifactId);
131
+ const fileName = metadata ? `${metadata.name}.md` : 'artifact.md';
132
+ const artifactMessage = {
133
+ role: 'user',
134
+ content: [
135
+ {
136
+ type: 'text',
137
+ text: `Document: ${fileName}\n\n${content}`,
138
+ },
139
+ ],
140
+ };
141
+ documentMessages.push(artifactMessage);
142
+ }
143
+ }
144
+ }
145
+ if (cacheConfig &&
146
+ documentMessages.length > 0 &&
147
+ documentMessages[documentMessages.length - 1].content &&
148
+ documentMessages[documentMessages.length - 1].content.length > 0) {
149
+ documentMessages[documentMessages.length - 1].content[0]['cache_control'] = cacheConfig;
150
+ }
151
+ let instructionText = promptInstructions || agent.systemInstruction;
152
+ if (jsonSchema) {
153
+ instructionText +=
154
+ '\n\nIMPORTANT: You MUST respond with ONLY valid JSON that conforms to the provided schema. Do not include any explanatory text, markdown formatting, or other content before or after the JSON. Your entire response should be parseable as JSON.\n\nJSON Schema:\n' +
155
+ JSON.stringify(jsonSchema, null, 2);
156
+ }
157
+ const systemBlocks = [];
158
+ if (instructionText)
159
+ systemBlocks.push({ type: 'text', text: instructionText });
160
+ systemBlocks.push({
161
+ type: 'text',
162
+ text: `Your agent identity is ${agent.agentName}: ${agent.description}`,
163
+ cache_control: cacheConfig,
164
+ });
165
+ const messageHistory = agent.history.map((msg) => ({
166
+ role: msg.role,
167
+ content: [{ type: 'text', text: msg.content }],
168
+ }));
169
+ if (cacheConfig && messageHistory && messageHistory.length > 0) {
170
+ messageHistory[messageHistory.length - 1].content[0]['cache_control'] = cacheConfig;
171
+ }
172
+ const messages = [...documentMessages, ...messageHistory];
173
+ if (prompt) {
174
+ messages.push({
175
+ role: 'user',
176
+ content: [{ type: 'text', text: prompt }],
177
+ });
178
+ }
179
+ const tools = [];
180
+ if (agent.allowSearch) {
181
+ tools.push({
182
+ type: 'web_search_20250305',
183
+ name: 'web_search',
184
+ max_uses: 5,
185
+ });
186
+ }
187
+ const maxRetries = 3;
188
+ let lastError = null;
189
+ let thinkingTokens = 0;
190
+ if (agent.reasoningEffort === 'low')
191
+ thinkingTokens = 1024;
192
+ else if (agent.reasoningEffort === 'medium')
193
+ thinkingTokens = 2048;
194
+ else if (agent.reasoningEffort === 'high')
195
+ thinkingTokens = 4096;
196
+ const modelInfo = model_prices_1.default[agent.modelName];
197
+ if (modelInfo && !modelInfo.supports_reasoning)
198
+ thinkingTokens = 0;
199
+ let maxOutputTokens;
200
+ if (modelInfo && modelInfo.max_output_tokens) {
201
+ if (agent.maxOutputTokens > 0)
202
+ maxOutputTokens = Math.min(modelInfo.max_output_tokens, agent.maxOutputTokens);
203
+ else
204
+ maxOutputTokens = modelInfo.max_output_tokens;
205
+ }
206
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
207
+ try {
208
+ const response = await this.anthropic.messages.create({
209
+ model: agent.modelName,
210
+ messages: messages,
211
+ system: systemBlocks,
212
+ max_tokens: maxOutputTokens,
213
+ temperature: thinkingTokens > 0 ? undefined : 0,
214
+ thinking: {
215
+ type: thinkingTokens > 0 ? 'enabled' : 'disabled',
216
+ budget_tokens: thinkingTokens > 0 ? thinkingTokens : undefined,
217
+ },
218
+ tools: tools.length > 0 ? tools : undefined,
219
+ });
220
+ let responseText = '';
221
+ if (response.content && response.content.length > 0) {
222
+ for (let i = 0; i < response.content.length; i++) {
223
+ const content = response.content[i];
224
+ if ('text' in content) {
225
+ responseText += content.text;
226
+ }
227
+ }
228
+ }
229
+ if (jsonSchema) {
230
+ responseText = this.trimToJson(responseText);
231
+ responseText = this.sanitizeJsonString(responseText);
232
+ }
233
+ if (response.usage) {
234
+ this.computeMessageCost(agent, response.usage);
235
+ }
236
+ let parsedResponse;
237
+ if (jsonSchema) {
238
+ try {
239
+ parsedResponse = JSON.parse(responseText);
240
+ if (saveResponse) {
241
+ agent.addToConversationHistory(prompt, false);
242
+ agent.addToConversationHistory(responseText, true);
243
+ }
244
+ return parsedResponse;
245
+ }
246
+ catch (parseError) {
247
+ lastError = parseError;
248
+ console.warn(`JSON parse attempt ${attempt}/${maxRetries} failed:`, parseError);
249
+ console.warn('Raw response:', responseText);
250
+ if (attempt < maxRetries) {
251
+ const retryMessage = `Your previous response was not valid JSON. Please respond with ONLY valid JSON that can be parsed. No explanatory text, no markdown, no formatting - just pure JSON that conforms to the schema. Here was the parsing error: ${parseError.message}`;
252
+ messages.push({
253
+ role: 'assistant',
254
+ content: [{ type: 'text', text: responseText }],
255
+ });
256
+ messages.push({
257
+ role: 'user',
258
+ content: [{ type: 'text', text: retryMessage }],
259
+ });
260
+ }
261
+ }
262
+ }
263
+ else {
264
+ if (responseText.length > maxOutputChars && maxOutputChars > 0) {
265
+ const retryMessage = `Your previous response exceeded the character limit of ${maxOutputChars}. Please try again with a shorter response.`;
266
+ messages.push({
267
+ role: 'assistant',
268
+ content: [{ type: 'text', text: responseText }],
269
+ });
270
+ messages.push({
271
+ role: 'user',
272
+ content: [{ type: 'text', text: retryMessage }],
273
+ });
274
+ }
275
+ else {
276
+ if (saveResponse) {
277
+ agent.addToConversationHistory(prompt, false);
278
+ agent.addToConversationHistory(responseText, true);
279
+ }
280
+ return responseText;
281
+ }
282
+ }
283
+ }
284
+ catch (apiError) {
285
+ lastError = apiError;
286
+ console.error(`API call attempt ${attempt}/${maxRetries} failed:`, apiError);
287
+ if (attempt < maxRetries) {
288
+ await new Promise((resolve) => setTimeout(resolve, 1000 * attempt));
289
+ }
290
+ }
291
+ }
292
+ throw new Error(`Failed to get valid response after ${maxRetries} attempts. Last error: ${lastError?.message || 'Unknown error'}`);
293
+ }
294
+ computeMessageCost(agent, usage) {
295
+ const modelInfo = model_prices_1.default[agent.modelName];
296
+ if (!modelInfo) {
297
+ console.error(`No price info found for model ${agent.modelName}`);
298
+ return 0;
299
+ }
300
+ const cacheCreationTokens = usage.cache_creation_input_tokens || 0;
301
+ const cacheReadTokens = usage.cache_read_input_tokens || 0;
302
+ const standardInputTokens = usage.input_tokens || 0;
303
+ const outputTokens = usage.output_tokens || 0;
304
+ const standardCost = standardInputTokens * modelInfo.input_cost_per_token;
305
+ const cacheCreationCost = cacheCreationTokens *
306
+ (modelInfo.cache_creation_input_token_cost || modelInfo.input_cost_per_token * 1.25);
307
+ const cacheReadCost = cacheReadTokens *
308
+ (modelInfo.cache_read_input_token_cost || modelInfo.input_cost_per_token * 0.1);
309
+ const outputCost = outputTokens * modelInfo.output_cost_per_token;
310
+ const markup = agent.disableMarkup ? 0 : outputCost * agent.markupRate;
311
+ const cost = standardCost + cacheCreationCost + cacheReadCost + outputCost + markup;
312
+ agent.totalInputTokens += standardInputTokens + cacheCreationTokens + cacheReadTokens;
313
+ agent.totalOutputTokens += outputTokens;
314
+ agent.totalCost += cost;
315
+ agent.totalMarkup += markup;
316
+ console.log(`Cost for ${agent.agentName} message: ${cost.toFixed(4)}, markup: ${markup.toFixed(4)}`);
317
+ if (agent.balanceService && cost > 0) {
318
+ agent.balanceService.decrementBalance(cost, markup);
319
+ }
320
+ if (cacheCreationTokens > 0 || cacheReadTokens > 0) {
321
+ console.log(`Cache metrics for ${agent.agentName}: creation=${cacheCreationTokens}, read=${cacheReadTokens}, standard=${standardInputTokens}`);
322
+ }
323
+ }
324
+ };
325
+ exports.AnthropicAiService = AnthropicAiService;
326
+ exports.AnthropicAiService = AnthropicAiService = __decorate([
327
+ (0, common_1.Injectable)(),
328
+ __metadata("design:paramtypes", [])
329
+ ], AnthropicAiService);
@@ -0,0 +1,45 @@
1
+ import { Agent } from '../agent';
2
+ import { ConfigurationService } from '../../config/configuration.service';
3
+ import { ArtifactService } from '../artifact.service';
4
+ import { AgentStoreService } from '../agent-store.service';
5
+ import { BalanceService } from '../../app/balance.service';
6
+ import { ModelInfo } from '@shared/types/app.types';
7
+ export interface ImageGenerationOptions {
8
+ model?: string;
9
+ size?: '1024x1024' | '1536x1024' | '1024x1536' | 'auto';
10
+ quality?: 'auto' | 'high' | 'medium' | 'low';
11
+ format?: 'png' | 'jpeg' | 'webp';
12
+ }
13
+ export declare class BaseAiService {
14
+ protected modelsCache: ModelInfo[];
15
+ protected _isAvailable: boolean;
16
+ constructor();
17
+ get isAvailable(): boolean;
18
+ getServiceName(): string;
19
+ supportsImageGeneration(): boolean;
20
+ supportsPromptCaching(): boolean;
21
+ getCacheConfig(_agent: Agent, _cacheMessage: boolean): any;
22
+ stripQuotes(quotedText: string): string;
23
+ protected findPromptFile(agent: Agent, fileName: string, extension: string): string | null;
24
+ getPreparedPrompt(agent: Agent, promptFileName: string, variables: any): string;
25
+ protected getPreparedSchema(agent: Agent, promptFileName: string): any;
26
+ listModels(): Promise<ModelInfo[]>;
27
+ protected fetchModelsFromApi(): Promise<ModelInfo[]>;
28
+ createAgent(configService: ConfigurationService, agentStoreService: AgentStoreService, balanceService: BalanceService, artifactService: ArtifactService, agentName: string, agentNickname: string, description: string, promptFolder: string, modelName: string, storageDir?: string): Agent;
29
+ textPrompt(agent: Agent, prompt: string, _jsonSchema?: any, _saveResponse?: boolean, _promptInstructions?: string, _cacheConfig?: any, _maxOutputChars?: number): Promise<any>;
30
+ generateImage(_agent: Agent, _prompt: string, _width: number, _height: number, _quality: string, _referenceImageArtifactIds?: string[], _options?: ImageGenerationOptions): Promise<{
31
+ artifactId?: string;
32
+ error?: any;
33
+ }>;
34
+ protected loadReferenceImages(agent: Agent, artifactIds: string[]): Promise<File[]>;
35
+ protected saveImageAsArtifact(agent: Agent, base64Data: string, prompt: string): Promise<string>;
36
+ preparedPrompt(agent: Agent, promptFileName: string, variables: any, saveResponse?: boolean, cacheConfig?: any, maxOutputChars?: number): Promise<any>;
37
+ instructedPrompt(agent: Agent, prompt: string, instructionFileName: string, variables: any, saveResponse?: boolean, cacheConfig?: any, maxOutputChars?: number): Promise<any>;
38
+ attachDocument(agent: Agent, fileName: string, fileData: Uint8Array): Promise<string>;
39
+ finishAgent(_agent: Agent): Promise<void>;
40
+ addToConversationHistory(agent: Agent, message: string, fromSelf?: boolean, developer?: boolean): void;
41
+ formatMessage(message: any): string;
42
+ trimResponseText(str: string): string;
43
+ trimToJson(str: string): string;
44
+ sanitizeJsonString(str: string): string;
45
+ }