@warlock.js/core 4.8.0 → 4.8.1

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 (769) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/esm/connectors/ai-connector.mjs +1 -1
  3. package/package.json +12 -9
  4. package/esm/ai/src/agent/agent-input-builder.mjs +0 -133
  5. package/esm/ai/src/agent/agent-input-builder.mjs.map +0 -1
  6. package/esm/ai/src/agent/agent-log-event.mjs +0 -101
  7. package/esm/ai/src/agent/agent-log-event.mjs.map +0 -1
  8. package/esm/ai/src/agent/agent-stream.mjs +0 -82
  9. package/esm/ai/src/agent/agent-stream.mjs.map +0 -1
  10. package/esm/ai/src/agent/agent-to-stream-event.mjs +0 -86
  11. package/esm/ai/src/agent/agent-to-stream-event.mjs.map +0 -1
  12. package/esm/ai/src/agent/agent.mjs +0 -1276
  13. package/esm/ai/src/agent/agent.mjs.map +0 -1
  14. package/esm/ai/src/agent/index.mjs +0 -5
  15. package/esm/ai/src/agent/json-stream-guard.mjs +0 -400
  16. package/esm/ai/src/agent/json-stream-guard.mjs.map +0 -1
  17. package/esm/ai/src/agent/signature.mjs +0 -57
  18. package/esm/ai/src/agent/signature.mjs.map +0 -1
  19. package/esm/ai/src/agent/snapshot.mjs +0 -101
  20. package/esm/ai/src/agent/snapshot.mjs.map +0 -1
  21. package/esm/ai/src/agent/spawn-sub-agent.mjs +0 -68
  22. package/esm/ai/src/agent/spawn-sub-agent.mjs.map +0 -1
  23. package/esm/ai/src/ai.mjs +0 -191
  24. package/esm/ai/src/ai.mjs.map +0 -1
  25. package/esm/ai/src/batch/batch.mjs +0 -198
  26. package/esm/ai/src/batch/batch.mjs.map +0 -1
  27. package/esm/ai/src/batch/index.mjs +0 -3
  28. package/esm/ai/src/batch/run-batch-item.mjs +0 -100
  29. package/esm/ai/src/batch/run-batch-item.mjs.map +0 -1
  30. package/esm/ai/src/batch/run-with-concurrency.mjs +0 -39
  31. package/esm/ai/src/batch/run-with-concurrency.mjs.map +0 -1
  32. package/esm/ai/src/checkpoint/memory.mjs +0 -0
  33. package/esm/ai/src/checkpoint/memory.mjs.map +0 -1
  34. package/esm/ai/src/checkpoint/pg.mjs +0 -265
  35. package/esm/ai/src/checkpoint/pg.mjs.map +0 -1
  36. package/esm/ai/src/checkpoint/redis.mjs +0 -200
  37. package/esm/ai/src/checkpoint/redis.mjs.map +0 -1
  38. package/esm/ai/src/config.mjs +0 -59
  39. package/esm/ai/src/config.mjs.map +0 -1
  40. package/esm/ai/src/contracts/end.type.mjs +0 -47
  41. package/esm/ai/src/contracts/end.type.mjs.map +0 -1
  42. package/esm/ai/src/errors/agent-cancelled-error.mjs +0 -43
  43. package/esm/ai/src/errors/agent-cancelled-error.mjs.map +0 -1
  44. package/esm/ai/src/errors/agent-drift-error.mjs +0 -31
  45. package/esm/ai/src/errors/agent-drift-error.mjs.map +0 -1
  46. package/esm/ai/src/errors/agent-execution-error.mjs +0 -35
  47. package/esm/ai/src/errors/agent-execution-error.mjs.map +0 -1
  48. package/esm/ai/src/errors/agent-max-trips-error.mjs +0 -41
  49. package/esm/ai/src/errors/agent-max-trips-error.mjs.map +0 -1
  50. package/esm/ai/src/errors/ai-error.mjs +0 -68
  51. package/esm/ai/src/errors/ai-error.mjs.map +0 -1
  52. package/esm/ai/src/errors/budget-exceeded-error.mjs +0 -31
  53. package/esm/ai/src/errors/budget-exceeded-error.mjs.map +0 -1
  54. package/esm/ai/src/errors/content-filter-error.mjs +0 -28
  55. package/esm/ai/src/errors/content-filter-error.mjs.map +0 -1
  56. package/esm/ai/src/errors/context-length-exceeded-error.mjs +0 -31
  57. package/esm/ai/src/errors/context-length-exceeded-error.mjs.map +0 -1
  58. package/esm/ai/src/errors/guardrail-violation-error.mjs +0 -41
  59. package/esm/ai/src/errors/guardrail-violation-error.mjs.map +0 -1
  60. package/esm/ai/src/errors/index.mjs +0 -40
  61. package/esm/ai/src/errors/invalid-request-error.mjs +0 -31
  62. package/esm/ai/src/errors/invalid-request-error.mjs.map +0 -1
  63. package/esm/ai/src/errors/max-iterations-error.mjs +0 -32
  64. package/esm/ai/src/errors/max-iterations-error.mjs.map +0 -1
  65. package/esm/ai/src/errors/max-steps-exceeded-error.mjs +0 -21
  66. package/esm/ai/src/errors/max-steps-exceeded-error.mjs.map +0 -1
  67. package/esm/ai/src/errors/orchestrator-cancelled-error.mjs +0 -31
  68. package/esm/ai/src/errors/orchestrator-cancelled-error.mjs.map +0 -1
  69. package/esm/ai/src/errors/orchestrator-config-error.mjs +0 -30
  70. package/esm/ai/src/errors/orchestrator-config-error.mjs.map +0 -1
  71. package/esm/ai/src/errors/orchestrator-drift-error.mjs +0 -37
  72. package/esm/ai/src/errors/orchestrator-drift-error.mjs.map +0 -1
  73. package/esm/ai/src/errors/orchestrator-failed-error.mjs +0 -36
  74. package/esm/ai/src/errors/orchestrator-failed-error.mjs.map +0 -1
  75. package/esm/ai/src/errors/outbound-policy-error.mjs +0 -32
  76. package/esm/ai/src/errors/outbound-policy-error.mjs.map +0 -1
  77. package/esm/ai/src/errors/planner-cancelled-error.mjs +0 -29
  78. package/esm/ai/src/errors/planner-cancelled-error.mjs.map +0 -1
  79. package/esm/ai/src/errors/planner-drift-error.mjs +0 -33
  80. package/esm/ai/src/errors/planner-drift-error.mjs.map +0 -1
  81. package/esm/ai/src/errors/planner-failed-error.mjs +0 -37
  82. package/esm/ai/src/errors/planner-failed-error.mjs.map +0 -1
  83. package/esm/ai/src/errors/planner-plan-invalid-error.mjs +0 -25
  84. package/esm/ai/src/errors/planner-plan-invalid-error.mjs.map +0 -1
  85. package/esm/ai/src/errors/prompt-refinement-error.mjs +0 -27
  86. package/esm/ai/src/errors/prompt-refinement-error.mjs.map +0 -1
  87. package/esm/ai/src/errors/provider-auth-error.mjs +0 -26
  88. package/esm/ai/src/errors/provider-auth-error.mjs.map +0 -1
  89. package/esm/ai/src/errors/provider-error.mjs +0 -42
  90. package/esm/ai/src/errors/provider-error.mjs.map +0 -1
  91. package/esm/ai/src/errors/provider-rate-limit-error.mjs +0 -31
  92. package/esm/ai/src/errors/provider-rate-limit-error.mjs.map +0 -1
  93. package/esm/ai/src/errors/provider-timeout-error.mjs +0 -26
  94. package/esm/ai/src/errors/provider-timeout-error.mjs.map +0 -1
  95. package/esm/ai/src/errors/quota-exceeded-error.mjs +0 -40
  96. package/esm/ai/src/errors/quota-exceeded-error.mjs.map +0 -1
  97. package/esm/ai/src/errors/routing-error.mjs +0 -23
  98. package/esm/ai/src/errors/routing-error.mjs.map +0 -1
  99. package/esm/ai/src/errors/schema-validation-error.mjs +0 -37
  100. package/esm/ai/src/errors/schema-validation-error.mjs.map +0 -1
  101. package/esm/ai/src/errors/step-failed-error.mjs +0 -19
  102. package/esm/ai/src/errors/step-failed-error.mjs.map +0 -1
  103. package/esm/ai/src/errors/supervisor-cancelled-error.mjs +0 -29
  104. package/esm/ai/src/errors/supervisor-cancelled-error.mjs.map +0 -1
  105. package/esm/ai/src/errors/supervisor-drift-error.mjs +0 -30
  106. package/esm/ai/src/errors/supervisor-drift-error.mjs.map +0 -1
  107. package/esm/ai/src/errors/supervisor-failed-error.mjs +0 -43
  108. package/esm/ai/src/errors/supervisor-failed-error.mjs.map +0 -1
  109. package/esm/ai/src/errors/supervisor-routing-error.mjs +0 -39
  110. package/esm/ai/src/errors/supervisor-routing-error.mjs.map +0 -1
  111. package/esm/ai/src/errors/tool-execution-error.mjs +0 -32
  112. package/esm/ai/src/errors/tool-execution-error.mjs.map +0 -1
  113. package/esm/ai/src/errors/workflow-cancelled-error.mjs +0 -23
  114. package/esm/ai/src/errors/workflow-cancelled-error.mjs.map +0 -1
  115. package/esm/ai/src/errors/workflow-drift-error.mjs +0 -24
  116. package/esm/ai/src/errors/workflow-drift-error.mjs.map +0 -1
  117. package/esm/ai/src/errors/workflow-error.mjs +0 -18
  118. package/esm/ai/src/errors/workflow-error.mjs.map +0 -1
  119. package/esm/ai/src/eval/dataset.mjs +0 -112
  120. package/esm/ai/src/eval/dataset.mjs.map +0 -1
  121. package/esm/ai/src/eval/eval-runner.mjs +0 -135
  122. package/esm/ai/src/eval/eval-runner.mjs.map +0 -1
  123. package/esm/ai/src/eval/index.mjs +0 -48
  124. package/esm/ai/src/eval/index.mjs.map +0 -1
  125. package/esm/ai/src/eval/judge-scorer.mjs +0 -87
  126. package/esm/ai/src/eval/judge-scorer.mjs.map +0 -1
  127. package/esm/ai/src/eval/regression.mjs +0 -51
  128. package/esm/ai/src/eval/regression.mjs.map +0 -1
  129. package/esm/ai/src/eval/report-json.mjs +0 -33
  130. package/esm/ai/src/eval/report-json.mjs.map +0 -1
  131. package/esm/ai/src/eval/report-junit.mjs +0 -60
  132. package/esm/ai/src/eval/report-junit.mjs.map +0 -1
  133. package/esm/ai/src/eval/scorers.mjs +0 -101
  134. package/esm/ai/src/eval/scorers.mjs.map +0 -1
  135. package/esm/ai/src/guard/detectors/index.mjs +0 -6
  136. package/esm/ai/src/guard/detectors/injection.mjs +0 -254
  137. package/esm/ai/src/guard/detectors/injection.mjs.map +0 -1
  138. package/esm/ai/src/guard/detectors/moderation.mjs +0 -134
  139. package/esm/ai/src/guard/detectors/moderation.mjs.map +0 -1
  140. package/esm/ai/src/guard/detectors/pii.mjs +0 -199
  141. package/esm/ai/src/guard/detectors/pii.mjs.map +0 -1
  142. package/esm/ai/src/guard/detectors/topic.mjs +0 -99
  143. package/esm/ai/src/guard/detectors/topic.mjs.map +0 -1
  144. package/esm/ai/src/guard/errors.mjs +0 -18
  145. package/esm/ai/src/guard/errors.mjs.map +0 -1
  146. package/esm/ai/src/guard/guard.mjs +0 -209
  147. package/esm/ai/src/guard/guard.mjs.map +0 -1
  148. package/esm/ai/src/guard/guardrail.mjs +0 -22
  149. package/esm/ai/src/guard/guardrail.mjs.map +0 -1
  150. package/esm/ai/src/human/errors.mjs +0 -60
  151. package/esm/ai/src/human/errors.mjs.map +0 -1
  152. package/esm/ai/src/human/human-approval.mjs +0 -170
  153. package/esm/ai/src/human/human-approval.mjs.map +0 -1
  154. package/esm/ai/src/human/policy.mjs +0 -67
  155. package/esm/ai/src/human/policy.mjs.map +0 -1
  156. package/esm/ai/src/human/register.mjs +0 -37
  157. package/esm/ai/src/human/register.mjs.map +0 -1
  158. package/esm/ai/src/human/resume-seed.mjs +0 -53
  159. package/esm/ai/src/human/resume-seed.mjs.map +0 -1
  160. package/esm/ai/src/human/resume.mjs +0 -121
  161. package/esm/ai/src/human/resume.mjs.map +0 -1
  162. package/esm/ai/src/human/stores/index.mjs +0 -5
  163. package/esm/ai/src/human/stores/memory.mjs +0 -91
  164. package/esm/ai/src/human/stores/memory.mjs.map +0 -1
  165. package/esm/ai/src/human/stores/pg.mjs +0 -220
  166. package/esm/ai/src/human/stores/pg.mjs.map +0 -1
  167. package/esm/ai/src/human/stores/redis.mjs +0 -201
  168. package/esm/ai/src/human/stores/redis.mjs.map +0 -1
  169. package/esm/ai/src/image/image-cost.mjs +0 -55
  170. package/esm/ai/src/image/image-cost.mjs.map +0 -1
  171. package/esm/ai/src/image/image.mjs +0 -112
  172. package/esm/ai/src/image/image.mjs.map +0 -1
  173. package/esm/ai/src/image/index.mjs +0 -4
  174. package/esm/ai/src/index.mjs +0 -196
  175. package/esm/ai/src/memory/derive-id.mjs +0 -24
  176. package/esm/ai/src/memory/derive-id.mjs.map +0 -1
  177. package/esm/ai/src/memory/episodic-memory.mjs +0 -106
  178. package/esm/ai/src/memory/episodic-memory.mjs.map +0 -1
  179. package/esm/ai/src/memory/memory.mjs +0 -166
  180. package/esm/ai/src/memory/memory.mjs.map +0 -1
  181. package/esm/ai/src/memory/procedural-memory.mjs +0 -103
  182. package/esm/ai/src/memory/procedural-memory.mjs.map +0 -1
  183. package/esm/ai/src/memory/semantic-memory.mjs +0 -80
  184. package/esm/ai/src/memory/semantic-memory.mjs.map +0 -1
  185. package/esm/ai/src/memory/working-memory.mjs +0 -62
  186. package/esm/ai/src/memory/working-memory.mjs.map +0 -1
  187. package/esm/ai/src/middleware/builtins/budget.mjs +0 -219
  188. package/esm/ai/src/middleware/builtins/budget.mjs.map +0 -1
  189. package/esm/ai/src/middleware/builtins/guardrail.mjs +0 -76
  190. package/esm/ai/src/middleware/builtins/guardrail.mjs.map +0 -1
  191. package/esm/ai/src/middleware/builtins/semantic-cache.mjs +0 -149
  192. package/esm/ai/src/middleware/builtins/semantic-cache.mjs.map +0 -1
  193. package/esm/ai/src/middleware/helpers/compose.mjs +0 -52
  194. package/esm/ai/src/middleware/helpers/compose.mjs.map +0 -1
  195. package/esm/ai/src/middleware/helpers/for-tool.mjs +0 -80
  196. package/esm/ai/src/middleware/helpers/for-tool.mjs.map +0 -1
  197. package/esm/ai/src/middleware/index.mjs +0 -10
  198. package/esm/ai/src/middleware/pipeline.mjs +0 -100
  199. package/esm/ai/src/middleware/pipeline.mjs.map +0 -1
  200. package/esm/ai/src/middleware/utils/extract-user-text.mjs +0 -47
  201. package/esm/ai/src/middleware/utils/extract-user-text.mjs.map +0 -1
  202. package/esm/ai/src/middleware/utils/namespaced-state.mjs +0 -60
  203. package/esm/ai/src/middleware/utils/namespaced-state.mjs.map +0 -1
  204. package/esm/ai/src/mock/index.mjs +0 -4
  205. package/esm/ai/src/mock/mock-agent.mjs +0 -3
  206. package/esm/ai/src/mock/mock-router.mjs +0 -58
  207. package/esm/ai/src/mock/mock-router.mjs.map +0 -1
  208. package/esm/ai/src/model/fallback-model.mjs +0 -218
  209. package/esm/ai/src/model/fallback-model.mjs.map +0 -1
  210. package/esm/ai/src/model/index.mjs +0 -3
  211. package/esm/ai/src/object-stream/index.mjs +0 -4
  212. package/esm/ai/src/object-stream/parse-partial-json.mjs +0 -78
  213. package/esm/ai/src/object-stream/parse-partial-json.mjs.map +0 -1
  214. package/esm/ai/src/object-stream/stream-object.mjs +0 -97
  215. package/esm/ai/src/object-stream/stream-object.mjs.map +0 -1
  216. package/esm/ai/src/observe/index.mjs +0 -4
  217. package/esm/ai/src/observe/observer-registry.mjs +0 -35
  218. package/esm/ai/src/observe/observer-registry.mjs.map +0 -1
  219. package/esm/ai/src/observe/resolve-observers.mjs +0 -73
  220. package/esm/ai/src/observe/resolve-observers.mjs.map +0 -1
  221. package/esm/ai/src/orchestrator/as-tool.mjs +0 -98
  222. package/esm/ai/src/orchestrator/as-tool.mjs.map +0 -1
  223. package/esm/ai/src/orchestrator/checkpoint.mjs +0 -75
  224. package/esm/ai/src/orchestrator/checkpoint.mjs.map +0 -1
  225. package/esm/ai/src/orchestrator/commands.mjs +0 -34
  226. package/esm/ai/src/orchestrator/commands.mjs.map +0 -1
  227. package/esm/ai/src/orchestrator/compaction.mjs +0 -206
  228. package/esm/ai/src/orchestrator/compaction.mjs.map +0 -1
  229. package/esm/ai/src/orchestrator/dispatch.mjs +0 -171
  230. package/esm/ai/src/orchestrator/dispatch.mjs.map +0 -1
  231. package/esm/ai/src/orchestrator/emitter.mjs +0 -85
  232. package/esm/ai/src/orchestrator/emitter.mjs.map +0 -1
  233. package/esm/ai/src/orchestrator/execution.mjs +0 -395
  234. package/esm/ai/src/orchestrator/execution.mjs.map +0 -1
  235. package/esm/ai/src/orchestrator/index.mjs +0 -11
  236. package/esm/ai/src/orchestrator/load.mjs +0 -49
  237. package/esm/ai/src/orchestrator/load.mjs.map +0 -1
  238. package/esm/ai/src/orchestrator/lock.mjs +0 -75
  239. package/esm/ai/src/orchestrator/lock.mjs.map +0 -1
  240. package/esm/ai/src/orchestrator/memory.mjs +0 -141
  241. package/esm/ai/src/orchestrator/memory.mjs.map +0 -1
  242. package/esm/ai/src/orchestrator/orchestrator-stream.mjs +0 -98
  243. package/esm/ai/src/orchestrator/orchestrator-stream.mjs.map +0 -1
  244. package/esm/ai/src/orchestrator/orchestrator.mjs +0 -206
  245. package/esm/ai/src/orchestrator/orchestrator.mjs.map +0 -1
  246. package/esm/ai/src/orchestrator/resume.mjs +0 -74
  247. package/esm/ai/src/orchestrator/resume.mjs.map +0 -1
  248. package/esm/ai/src/orchestrator/session-lock.mjs +0 -83
  249. package/esm/ai/src/orchestrator/session-lock.mjs.map +0 -1
  250. package/esm/ai/src/orchestrator/signature.mjs +0 -120
  251. package/esm/ai/src/orchestrator/signature.mjs.map +0 -1
  252. package/esm/ai/src/orchestrator/window.mjs +0 -56
  253. package/esm/ai/src/orchestrator/window.mjs.map +0 -1
  254. package/esm/ai/src/planner/dag-scheduler.mjs +0 -97
  255. package/esm/ai/src/planner/dag-scheduler.mjs.map +0 -1
  256. package/esm/ai/src/planner/index.mjs +0 -6
  257. package/esm/ai/src/planner/plan-prompt.mjs +0 -31
  258. package/esm/ai/src/planner/plan-prompt.mjs.map +0 -1
  259. package/esm/ai/src/planner/plan-schema.mjs +0 -120
  260. package/esm/ai/src/planner/plan-schema.mjs.map +0 -1
  261. package/esm/ai/src/planner/planner-run.mjs +0 -769
  262. package/esm/ai/src/planner/planner-run.mjs.map +0 -1
  263. package/esm/ai/src/planner/planner.mjs +0 -144
  264. package/esm/ai/src/planner/planner.mjs.map +0 -1
  265. package/esm/ai/src/planner/signature.mjs +0 -27
  266. package/esm/ai/src/planner/signature.mjs.map +0 -1
  267. package/esm/ai/src/planner/snapshot.mjs +0 -95
  268. package/esm/ai/src/planner/snapshot.mjs.map +0 -1
  269. package/esm/ai/src/prompt/errors.mjs +0 -73
  270. package/esm/ai/src/prompt/errors.mjs.map +0 -1
  271. package/esm/ai/src/prompt/index.mjs +0 -4
  272. package/esm/ai/src/prompt/prompt-langfuse-sync.mjs +0 -104
  273. package/esm/ai/src/prompt/prompt-langfuse-sync.mjs.map +0 -1
  274. package/esm/ai/src/prompt/prompt-validate.mjs +0 -170
  275. package/esm/ai/src/prompt/prompt-validate.mjs.map +0 -1
  276. package/esm/ai/src/prompt/prompt.mjs +0 -218
  277. package/esm/ai/src/prompt/prompt.mjs.map +0 -1
  278. package/esm/ai/src/prompts/index.mjs +0 -3
  279. package/esm/ai/src/prompts/prompts-manager.mjs +0 -410
  280. package/esm/ai/src/prompts/prompts-manager.mjs.map +0 -1
  281. package/esm/ai/src/prompts/prompts-validate.mjs +0 -0
  282. package/esm/ai/src/prompts/prompts-validate.mjs.map +0 -1
  283. package/esm/ai/src/rag/as-tool.mjs +0 -48
  284. package/esm/ai/src/rag/as-tool.mjs.map +0 -1
  285. package/esm/ai/src/rag/chunk/chunk.mjs +0 -44
  286. package/esm/ai/src/rag/chunk/chunk.mjs.map +0 -1
  287. package/esm/ai/src/rag/chunk/fixed.mjs +0 -32
  288. package/esm/ai/src/rag/chunk/fixed.mjs.map +0 -1
  289. package/esm/ai/src/rag/chunk/markdown.mjs +0 -75
  290. package/esm/ai/src/rag/chunk/markdown.mjs.map +0 -1
  291. package/esm/ai/src/rag/chunk/recursive.mjs +0 -132
  292. package/esm/ai/src/rag/chunk/recursive.mjs.map +0 -1
  293. package/esm/ai/src/rag/chunk/sentence.mjs +0 -73
  294. package/esm/ai/src/rag/chunk/sentence.mjs.map +0 -1
  295. package/esm/ai/src/rag/hybrid/bm25.mjs +0 -51
  296. package/esm/ai/src/rag/hybrid/bm25.mjs.map +0 -1
  297. package/esm/ai/src/rag/hybrid/hybrid-rank.mjs +0 -29
  298. package/esm/ai/src/rag/hybrid/hybrid-rank.mjs.map +0 -1
  299. package/esm/ai/src/rag/hybrid/rrf.mjs +0 -30
  300. package/esm/ai/src/rag/hybrid/rrf.mjs.map +0 -1
  301. package/esm/ai/src/rag/index.mjs +0 -18
  302. package/esm/ai/src/rag/loaders/errors.mjs +0 -25
  303. package/esm/ai/src/rag/loaders/errors.mjs.map +0 -1
  304. package/esm/ai/src/rag/loaders/index.mjs +0 -7
  305. package/esm/ai/src/rag/loaders/load-html.mjs +0 -138
  306. package/esm/ai/src/rag/loaders/load-html.mjs.map +0 -1
  307. package/esm/ai/src/rag/loaders/load-pdf.mjs +0 -150
  308. package/esm/ai/src/rag/loaders/load-pdf.mjs.map +0 -1
  309. package/esm/ai/src/rag/loaders/load-text.mjs +0 -60
  310. package/esm/ai/src/rag/loaders/load-text.mjs.map +0 -1
  311. package/esm/ai/src/rag/loaders/load-web.mjs +0 -89
  312. package/esm/ai/src/rag/loaders/load-web.mjs.map +0 -1
  313. package/esm/ai/src/rag/rag.mjs +0 -126
  314. package/esm/ai/src/rag/rag.mjs.map +0 -1
  315. package/esm/ai/src/rag/rerank/keyword-reranker.mjs +0 -58
  316. package/esm/ai/src/rag/rerank/keyword-reranker.mjs.map +0 -1
  317. package/esm/ai/src/rag/rerank/llm-reranker.mjs +0 -85
  318. package/esm/ai/src/rag/rerank/llm-reranker.mjs.map +0 -1
  319. package/esm/ai/src/rag/retrieve.mjs +0 -68
  320. package/esm/ai/src/rag/retrieve.mjs.map +0 -1
  321. package/esm/ai/src/rag/store/cache-vector-store.mjs +0 -48
  322. package/esm/ai/src/rag/store/cache-vector-store.mjs.map +0 -1
  323. package/esm/ai/src/rag/store/pg-vector-store.mjs +0 -328
  324. package/esm/ai/src/rag/store/pg-vector-store.mjs.map +0 -1
  325. package/esm/ai/src/rag/transforms/multi-query.mjs +0 -41
  326. package/esm/ai/src/rag/transforms/multi-query.mjs.map +0 -1
  327. package/esm/ai/src/security/index.mjs +0 -5
  328. package/esm/ai/src/security/outbound-policy.mjs +0 -187
  329. package/esm/ai/src/security/outbound-policy.mjs.map +0 -1
  330. package/esm/ai/src/security/private-ip.mjs +0 -48
  331. package/esm/ai/src/security/private-ip.mjs.map +0 -1
  332. package/esm/ai/src/security/redact.mjs +0 -60
  333. package/esm/ai/src/security/redact.mjs.map +0 -1
  334. package/esm/ai/src/serve/serve.mjs +0 -90
  335. package/esm/ai/src/serve/serve.mjs.map +0 -1
  336. package/esm/ai/src/serve/sse.mjs +0 -25
  337. package/esm/ai/src/serve/sse.mjs.map +0 -1
  338. package/esm/ai/src/serve/stream-to-sse.mjs +0 -37
  339. package/esm/ai/src/serve/stream-to-sse.mjs.map +0 -1
  340. package/esm/ai/src/skills/catalog.mjs +0 -140
  341. package/esm/ai/src/skills/catalog.mjs.map +0 -1
  342. package/esm/ai/src/skills/index.mjs +0 -11
  343. package/esm/ai/src/skills/load-skill-tool.mjs +0 -65
  344. package/esm/ai/src/skills/load-skill-tool.mjs.map +0 -1
  345. package/esm/ai/src/skills/save-skill-tool.mjs +0 -65
  346. package/esm/ai/src/skills/save-skill-tool.mjs.map +0 -1
  347. package/esm/ai/src/skills/skills.mjs +0 -109
  348. package/esm/ai/src/skills/skills.mjs.map +0 -1
  349. package/esm/ai/src/skills/sources/directory-source.mjs +0 -108
  350. package/esm/ai/src/skills/sources/directory-source.mjs.map +0 -1
  351. package/esm/ai/src/skills/sources/index.mjs +0 -27
  352. package/esm/ai/src/skills/sources/index.mjs.map +0 -1
  353. package/esm/ai/src/skills/sources/parse-frontmatter.mjs +0 -46
  354. package/esm/ai/src/skills/sources/parse-frontmatter.mjs.map +0 -1
  355. package/esm/ai/src/skills/sources/store-source.mjs +0 -15
  356. package/esm/ai/src/skills/sources/store-source.mjs.map +0 -1
  357. package/esm/ai/src/skills/sources/url-source.mjs +0 -117
  358. package/esm/ai/src/skills/sources/url-source.mjs.map +0 -1
  359. package/esm/ai/src/snapshot/memory.mjs +0 -81
  360. package/esm/ai/src/snapshot/memory.mjs.map +0 -1
  361. package/esm/ai/src/snapshot/pg.mjs +0 -146
  362. package/esm/ai/src/snapshot/pg.mjs.map +0 -1
  363. package/esm/ai/src/snapshot/redis.mjs +0 -101
  364. package/esm/ai/src/snapshot/redis.mjs.map +0 -1
  365. package/esm/ai/src/speech/index.mjs +0 -3
  366. package/esm/ai/src/speech/speech.mjs +0 -122
  367. package/esm/ai/src/speech/speech.mjs.map +0 -1
  368. package/esm/ai/src/supervisor/as-tool.mjs +0 -74
  369. package/esm/ai/src/supervisor/as-tool.mjs.map +0 -1
  370. package/esm/ai/src/supervisor/cancellation.mjs +0 -22
  371. package/esm/ai/src/supervisor/cancellation.mjs.map +0 -1
  372. package/esm/ai/src/supervisor/decide.mjs +0 -272
  373. package/esm/ai/src/supervisor/decide.mjs.map +0 -1
  374. package/esm/ai/src/supervisor/emitter.mjs +0 -47
  375. package/esm/ai/src/supervisor/emitter.mjs.map +0 -1
  376. package/esm/ai/src/supervisor/entries.mjs +0 -206
  377. package/esm/ai/src/supervisor/entries.mjs.map +0 -1
  378. package/esm/ai/src/supervisor/execution.mjs +0 -1921
  379. package/esm/ai/src/supervisor/execution.mjs.map +0 -1
  380. package/esm/ai/src/supervisor/fan-out.mjs +0 -65
  381. package/esm/ai/src/supervisor/fan-out.mjs.map +0 -1
  382. package/esm/ai/src/supervisor/index.mjs +0 -14
  383. package/esm/ai/src/supervisor/router-factory.mjs +0 -141
  384. package/esm/ai/src/supervisor/router-factory.mjs.map +0 -1
  385. package/esm/ai/src/supervisor/router-prompt.mjs +0 -52
  386. package/esm/ai/src/supervisor/router-prompt.mjs.map +0 -1
  387. package/esm/ai/src/supervisor/signature.mjs +0 -89
  388. package/esm/ai/src/supervisor/signature.mjs.map +0 -1
  389. package/esm/ai/src/supervisor/snapshot.mjs +0 -69
  390. package/esm/ai/src/supervisor/snapshot.mjs.map +0 -1
  391. package/esm/ai/src/supervisor/supervisor-stream.mjs +0 -89
  392. package/esm/ai/src/supervisor/supervisor-stream.mjs.map +0 -1
  393. package/esm/ai/src/supervisor/supervisor.mjs +0 -144
  394. package/esm/ai/src/supervisor/supervisor.mjs.map +0 -1
  395. package/esm/ai/src/system-prompt/index.mjs +0 -7
  396. package/esm/ai/src/system-prompt/instruction.mjs +0 -57
  397. package/esm/ai/src/system-prompt/instruction.mjs.map +0 -1
  398. package/esm/ai/src/system-prompt/persona.mjs +0 -57
  399. package/esm/ai/src/system-prompt/persona.mjs.map +0 -1
  400. package/esm/ai/src/system-prompt/refined-system-prompt.mjs +0 -461
  401. package/esm/ai/src/system-prompt/refined-system-prompt.mjs.map +0 -1
  402. package/esm/ai/src/system-prompt/render-placeholders.mjs +0 -58
  403. package/esm/ai/src/system-prompt/render-placeholders.mjs.map +0 -1
  404. package/esm/ai/src/system-prompt/system-prompt.mjs +0 -286
  405. package/esm/ai/src/system-prompt/system-prompt.mjs.map +0 -1
  406. package/esm/ai/src/team/gates.mjs +0 -48
  407. package/esm/ai/src/team/gates.mjs.map +0 -1
  408. package/esm/ai/src/team/index.mjs +0 -3
  409. package/esm/ai/src/team/team.mjs +0 -94
  410. package/esm/ai/src/team/team.mjs.map +0 -1
  411. package/esm/ai/src/tool/executable-as-tool.mjs +0 -81
  412. package/esm/ai/src/tool/executable-as-tool.mjs.map +0 -1
  413. package/esm/ai/src/tool/index.mjs +0 -4
  414. package/esm/ai/src/tool/tool.mjs +0 -185
  415. package/esm/ai/src/tool/tool.mjs.map +0 -1
  416. package/esm/ai/src/transcribe/audio-input.mjs +0 -84
  417. package/esm/ai/src/transcribe/audio-input.mjs.map +0 -1
  418. package/esm/ai/src/transcribe/index.mjs +0 -4
  419. package/esm/ai/src/transcribe/transcribe.mjs +0 -127
  420. package/esm/ai/src/transcribe/transcribe.mjs.map +0 -1
  421. package/esm/ai/src/utils/compute-cost.mjs +0 -112
  422. package/esm/ai/src/utils/compute-cost.mjs.map +0 -1
  423. package/esm/ai/src/utils/extract-json-lenient.mjs +0 -97
  424. package/esm/ai/src/utils/extract-json-lenient.mjs.map +0 -1
  425. package/esm/ai/src/utils/extract-json-payload.mjs +0 -39
  426. package/esm/ai/src/utils/extract-json-payload.mjs.map +0 -1
  427. package/esm/ai/src/utils/generate-run-id.mjs +0 -23
  428. package/esm/ai/src/utils/generate-run-id.mjs.map +0 -1
  429. package/esm/ai/src/utils/index.mjs +0 -12
  430. package/esm/ai/src/utils/json-schema.mjs +0 -89
  431. package/esm/ai/src/utils/json-schema.mjs.map +0 -1
  432. package/esm/ai/src/utils/prepare-attachment-part.mjs +0 -232
  433. package/esm/ai/src/utils/prepare-attachment-part.mjs.map +0 -1
  434. package/esm/ai/src/utils/resolve-attachment.mjs +0 -74
  435. package/esm/ai/src/utils/resolve-attachment.mjs.map +0 -1
  436. package/esm/ai/src/utils/run-context.mjs +0 -89
  437. package/esm/ai/src/utils/run-context.mjs.map +0 -1
  438. package/esm/ai/src/utils/safe-json-parse.mjs +0 -22
  439. package/esm/ai/src/utils/safe-json-parse.mjs.map +0 -1
  440. package/esm/ai/src/utils/stamp-report-lineage.mjs +0 -45
  441. package/esm/ai/src/utils/stamp-report-lineage.mjs.map +0 -1
  442. package/esm/ai/src/vcr/cassette-io.mjs +0 -57
  443. package/esm/ai/src/vcr/cassette-io.mjs.map +0 -1
  444. package/esm/ai/src/vcr/errors.mjs +0 -37
  445. package/esm/ai/src/vcr/errors.mjs.map +0 -1
  446. package/esm/ai/src/vcr/hash-request.mjs +0 -118
  447. package/esm/ai/src/vcr/hash-request.mjs.map +0 -1
  448. package/esm/ai/src/vcr/index.mjs +0 -5
  449. package/esm/ai/src/vcr/vcr.mjs +0 -248
  450. package/esm/ai/src/vcr/vcr.mjs.map +0 -1
  451. package/esm/ai/src/workflow/as-tool.mjs +0 -49
  452. package/esm/ai/src/workflow/as-tool.mjs.map +0 -1
  453. package/esm/ai/src/workflow/cancellation.mjs +0 -44
  454. package/esm/ai/src/workflow/cancellation.mjs.map +0 -1
  455. package/esm/ai/src/workflow/emitter.mjs +0 -40
  456. package/esm/ai/src/workflow/emitter.mjs.map +0 -1
  457. package/esm/ai/src/workflow/engine.mjs +0 -363
  458. package/esm/ai/src/workflow/engine.mjs.map +0 -1
  459. package/esm/ai/src/workflow/index.mjs +0 -5
  460. package/esm/ai/src/workflow/retry.mjs +0 -32
  461. package/esm/ai/src/workflow/retry.mjs.map +0 -1
  462. package/esm/ai/src/workflow/router.mjs +0 -56
  463. package/esm/ai/src/workflow/router.mjs.map +0 -1
  464. package/esm/ai/src/workflow/run-scoped-emitter.mjs +0 -32
  465. package/esm/ai/src/workflow/run-scoped-emitter.mjs.map +0 -1
  466. package/esm/ai/src/workflow/signature.mjs +0 -34
  467. package/esm/ai/src/workflow/signature.mjs.map +0 -1
  468. package/esm/ai/src/workflow/snapshot.mjs +0 -77
  469. package/esm/ai/src/workflow/snapshot.mjs.map +0 -1
  470. package/esm/ai/src/workflow/state.mjs +0 -37
  471. package/esm/ai/src/workflow/state.mjs.map +0 -1
  472. package/esm/ai/src/workflow/step-runner.mjs +0 -370
  473. package/esm/ai/src/workflow/step-runner.mjs.map +0 -1
  474. package/esm/ai/src/workflow/step.mjs +0 -37
  475. package/esm/ai/src/workflow/step.mjs.map +0 -1
  476. package/esm/ai/src/workflow/workflow.mjs +0 -122
  477. package/esm/ai/src/workflow/workflow.mjs.map +0 -1
  478. package/esm/ai-openai/src/embedder.mjs +0 -4
  479. package/esm/ai-openai/src/image.mjs +0 -5
  480. package/esm/ai-openai/src/index.mjs +0 -7
  481. package/esm/ai-openai/src/model.mjs +0 -5
  482. package/esm/ai-openai/src/sdk.mjs +0 -9
  483. package/esm/ai-openai/src/speech.mjs +0 -5
  484. package/esm/ai-openai/src/transcription.mjs +0 -6
  485. package/esm/ai-openai/src/utils/index.mjs +0 -5
  486. package/esm/ai-openai/src/utils/to-openai-messages.mjs +0 -3
  487. package/esm/ai-openai/src/utils/to-openai-tools.mjs +0 -3
  488. package/esm/ai-openai/src/utils/wrap-openai-error.mjs +0 -4
  489. package/esm/node_modules/langfuse/lib/index.mjs +0 -1827
  490. package/esm/node_modules/langfuse/lib/index.mjs.map +0 -1
  491. package/esm/node_modules/langfuse-core/lib/index.mjs +0 -1770
  492. package/esm/node_modules/langfuse-core/lib/index.mjs.map +0 -1
  493. package/esm/node_modules/mustache/mustache.mjs +0 -587
  494. package/esm/node_modules/mustache/mustache.mjs.map +0 -1
  495. package/esm/node_modules/openai/_vendor/partial-json-parser/parser.mjs +0 -180
  496. package/esm/node_modules/openai/_vendor/partial-json-parser/parser.mjs.map +0 -1
  497. package/esm/node_modules/openai/auth/workload-identity-auth.mjs +0 -80
  498. package/esm/node_modules/openai/auth/workload-identity-auth.mjs.map +0 -1
  499. package/esm/node_modules/openai/azure.mjs +0 -82
  500. package/esm/node_modules/openai/azure.mjs.map +0 -1
  501. package/esm/node_modules/openai/client.mjs +0 -638
  502. package/esm/node_modules/openai/client.mjs.map +0 -1
  503. package/esm/node_modules/openai/core/api-promise.mjs +0 -75
  504. package/esm/node_modules/openai/core/api-promise.mjs.map +0 -1
  505. package/esm/node_modules/openai/core/error.mjs +0 -110
  506. package/esm/node_modules/openai/core/error.mjs.map +0 -1
  507. package/esm/node_modules/openai/core/pagination.mjs +0 -160
  508. package/esm/node_modules/openai/core/pagination.mjs.map +0 -1
  509. package/esm/node_modules/openai/core/resource.mjs +0 -10
  510. package/esm/node_modules/openai/core/resource.mjs.map +0 -1
  511. package/esm/node_modules/openai/core/streaming.mjs +0 -238
  512. package/esm/node_modules/openai/core/streaming.mjs.map +0 -1
  513. package/esm/node_modules/openai/index.mjs +0 -8
  514. package/esm/node_modules/openai/internal/decoders/line.mjs +0 -91
  515. package/esm/node_modules/openai/internal/decoders/line.mjs.map +0 -1
  516. package/esm/node_modules/openai/internal/detect-platform.mjs +0 -123
  517. package/esm/node_modules/openai/internal/detect-platform.mjs.map +0 -1
  518. package/esm/node_modules/openai/internal/errors.mjs +0 -26
  519. package/esm/node_modules/openai/internal/errors.mjs.map +0 -1
  520. package/esm/node_modules/openai/internal/headers.mjs +0 -65
  521. package/esm/node_modules/openai/internal/headers.mjs.map +0 -1
  522. package/esm/node_modules/openai/internal/parse.mjs +0 -41
  523. package/esm/node_modules/openai/internal/parse.mjs.map +0 -1
  524. package/esm/node_modules/openai/internal/qs/formats.mjs +0 -12
  525. package/esm/node_modules/openai/internal/qs/formats.mjs.map +0 -1
  526. package/esm/node_modules/openai/internal/qs/stringify.mjs +0 -179
  527. package/esm/node_modules/openai/internal/qs/stringify.mjs.map +0 -1
  528. package/esm/node_modules/openai/internal/qs/utils.mjs +0 -65
  529. package/esm/node_modules/openai/internal/qs/utils.mjs.map +0 -1
  530. package/esm/node_modules/openai/internal/request-options.mjs +0 -11
  531. package/esm/node_modules/openai/internal/request-options.mjs.map +0 -1
  532. package/esm/node_modules/openai/internal/shims.mjs +0 -77
  533. package/esm/node_modules/openai/internal/shims.mjs.map +0 -1
  534. package/esm/node_modules/openai/internal/to-file.mjs +0 -63
  535. package/esm/node_modules/openai/internal/to-file.mjs.map +0 -1
  536. package/esm/node_modules/openai/internal/tslib.mjs +0 -16
  537. package/esm/node_modules/openai/internal/tslib.mjs.map +0 -1
  538. package/esm/node_modules/openai/internal/uploads.mjs +0 -94
  539. package/esm/node_modules/openai/internal/uploads.mjs.map +0 -1
  540. package/esm/node_modules/openai/internal/utils/base64.mjs +0 -22
  541. package/esm/node_modules/openai/internal/utils/base64.mjs.map +0 -1
  542. package/esm/node_modules/openai/internal/utils/bytes.mjs +0 -26
  543. package/esm/node_modules/openai/internal/utils/bytes.mjs.map +0 -1
  544. package/esm/node_modules/openai/internal/utils/env.mjs +0 -16
  545. package/esm/node_modules/openai/internal/utils/env.mjs.map +0 -1
  546. package/esm/node_modules/openai/internal/utils/log.mjs +0 -58
  547. package/esm/node_modules/openai/internal/utils/log.mjs.map +0 -1
  548. package/esm/node_modules/openai/internal/utils/path.mjs +0 -62
  549. package/esm/node_modules/openai/internal/utils/path.mjs.map +0 -1
  550. package/esm/node_modules/openai/internal/utils/query.mjs +0 -10
  551. package/esm/node_modules/openai/internal/utils/query.mjs.map +0 -1
  552. package/esm/node_modules/openai/internal/utils/sleep.mjs +0 -6
  553. package/esm/node_modules/openai/internal/utils/sleep.mjs.map +0 -1
  554. package/esm/node_modules/openai/internal/utils/uuid.mjs +0 -18
  555. package/esm/node_modules/openai/internal/utils/uuid.mjs.map +0 -1
  556. package/esm/node_modules/openai/internal/utils/values.mjs +0 -41
  557. package/esm/node_modules/openai/internal/utils/values.mjs.map +0 -1
  558. package/esm/node_modules/openai/lib/AbstractChatCompletionRunner.mjs +0 -247
  559. package/esm/node_modules/openai/lib/AbstractChatCompletionRunner.mjs.map +0 -1
  560. package/esm/node_modules/openai/lib/AssistantStream.mjs +0 -472
  561. package/esm/node_modules/openai/lib/AssistantStream.mjs.map +0 -1
  562. package/esm/node_modules/openai/lib/ChatCompletionRunner.mjs +0 -26
  563. package/esm/node_modules/openai/lib/ChatCompletionRunner.mjs.map +0 -1
  564. package/esm/node_modules/openai/lib/ChatCompletionStream.mjs +0 -423
  565. package/esm/node_modules/openai/lib/ChatCompletionStream.mjs.map +0 -1
  566. package/esm/node_modules/openai/lib/ChatCompletionStreamingRunner.mjs +0 -26
  567. package/esm/node_modules/openai/lib/ChatCompletionStreamingRunner.mjs.map +0 -1
  568. package/esm/node_modules/openai/lib/EventStream.mjs +0 -163
  569. package/esm/node_modules/openai/lib/EventStream.mjs.map +0 -1
  570. package/esm/node_modules/openai/lib/ResponsesParser.mjs +0 -94
  571. package/esm/node_modules/openai/lib/ResponsesParser.mjs.map +0 -1
  572. package/esm/node_modules/openai/lib/RunnableFunction.mjs +0 -8
  573. package/esm/node_modules/openai/lib/RunnableFunction.mjs.map +0 -1
  574. package/esm/node_modules/openai/lib/Util.mjs +0 -19
  575. package/esm/node_modules/openai/lib/Util.mjs.map +0 -1
  576. package/esm/node_modules/openai/lib/chatCompletionUtils.mjs +0 -11
  577. package/esm/node_modules/openai/lib/chatCompletionUtils.mjs.map +0 -1
  578. package/esm/node_modules/openai/lib/parser.mjs +0 -88
  579. package/esm/node_modules/openai/lib/parser.mjs.map +0 -1
  580. package/esm/node_modules/openai/lib/responses/ResponseStream.mjs +0 -231
  581. package/esm/node_modules/openai/lib/responses/ResponseStream.mjs.map +0 -1
  582. package/esm/node_modules/openai/resources/admin/admin.mjs +0 -15
  583. package/esm/node_modules/openai/resources/admin/admin.mjs.map +0 -1
  584. package/esm/node_modules/openai/resources/admin/organization/admin-api-keys.mjs +0 -81
  585. package/esm/node_modules/openai/resources/admin/organization/admin-api-keys.mjs.map +0 -1
  586. package/esm/node_modules/openai/resources/admin/organization/audit-logs.mjs +0 -31
  587. package/esm/node_modules/openai/resources/admin/organization/audit-logs.mjs.map +0 -1
  588. package/esm/node_modules/openai/resources/admin/organization/certificates.mjs +0 -153
  589. package/esm/node_modules/openai/resources/admin/organization/certificates.mjs.map +0 -1
  590. package/esm/node_modules/openai/resources/admin/organization/data-retention.mjs +0 -42
  591. package/esm/node_modules/openai/resources/admin/organization/data-retention.mjs.map +0 -1
  592. package/esm/node_modules/openai/resources/admin/organization/groups/groups.mjs +0 -106
  593. package/esm/node_modules/openai/resources/admin/organization/groups/groups.mjs.map +0 -1
  594. package/esm/node_modules/openai/resources/admin/organization/groups/roles.mjs +0 -88
  595. package/esm/node_modules/openai/resources/admin/organization/groups/roles.mjs.map +0 -1
  596. package/esm/node_modules/openai/resources/admin/organization/groups/users.mjs +0 -88
  597. package/esm/node_modules/openai/resources/admin/organization/groups/users.mjs.map +0 -1
  598. package/esm/node_modules/openai/resources/admin/organization/invites.mjs +0 -83
  599. package/esm/node_modules/openai/resources/admin/organization/invites.mjs.map +0 -1
  600. package/esm/node_modules/openai/resources/admin/organization/organization.mjs +0 -45
  601. package/esm/node_modules/openai/resources/admin/organization/organization.mjs.map +0 -1
  602. package/esm/node_modules/openai/resources/admin/organization/projects/api-keys.mjs +0 -72
  603. package/esm/node_modules/openai/resources/admin/organization/projects/api-keys.mjs.map +0 -1
  604. package/esm/node_modules/openai/resources/admin/organization/projects/certificates.mjs +0 -78
  605. package/esm/node_modules/openai/resources/admin/organization/projects/certificates.mjs.map +0 -1
  606. package/esm/node_modules/openai/resources/admin/organization/projects/data-retention.mjs +0 -46
  607. package/esm/node_modules/openai/resources/admin/organization/projects/data-retention.mjs.map +0 -1
  608. package/esm/node_modules/openai/resources/admin/organization/projects/groups/groups.mjs +0 -95
  609. package/esm/node_modules/openai/resources/admin/organization/projects/groups/groups.mjs.map +0 -1
  610. package/esm/node_modules/openai/resources/admin/organization/projects/groups/roles.mjs +0 -91
  611. package/esm/node_modules/openai/resources/admin/organization/projects/groups/roles.mjs.map +0 -1
  612. package/esm/node_modules/openai/resources/admin/organization/projects/hosted-tool-permissions.mjs +0 -45
  613. package/esm/node_modules/openai/resources/admin/organization/projects/hosted-tool-permissions.mjs.map +0 -1
  614. package/esm/node_modules/openai/resources/admin/organization/projects/model-permissions.mjs +0 -63
  615. package/esm/node_modules/openai/resources/admin/organization/projects/model-permissions.mjs.map +0 -1
  616. package/esm/node_modules/openai/resources/admin/organization/projects/projects.mjs +0 -137
  617. package/esm/node_modules/openai/resources/admin/organization/projects/projects.mjs.map +0 -1
  618. package/esm/node_modules/openai/resources/admin/organization/projects/rate-limits.mjs +0 -51
  619. package/esm/node_modules/openai/resources/admin/organization/projects/rate-limits.mjs.map +0 -1
  620. package/esm/node_modules/openai/resources/admin/organization/projects/roles.mjs +0 -108
  621. package/esm/node_modules/openai/resources/admin/organization/projects/roles.mjs.map +0 -1
  622. package/esm/node_modules/openai/resources/admin/organization/projects/service-accounts.mjs +0 -112
  623. package/esm/node_modules/openai/resources/admin/organization/projects/service-accounts.mjs.map +0 -1
  624. package/esm/node_modules/openai/resources/admin/organization/projects/spend-alerts.mjs +0 -106
  625. package/esm/node_modules/openai/resources/admin/organization/projects/spend-alerts.mjs.map +0 -1
  626. package/esm/node_modules/openai/resources/admin/organization/projects/users/roles.mjs +0 -91
  627. package/esm/node_modules/openai/resources/admin/organization/projects/users/roles.mjs.map +0 -1
  628. package/esm/node_modules/openai/resources/admin/organization/projects/users/users.mjs +0 -118
  629. package/esm/node_modules/openai/resources/admin/organization/projects/users/users.mjs.map +0 -1
  630. package/esm/node_modules/openai/resources/admin/organization/roles.mjs +0 -96
  631. package/esm/node_modules/openai/resources/admin/organization/roles.mjs.map +0 -1
  632. package/esm/node_modules/openai/resources/admin/organization/spend-alerts.mjs +0 -97
  633. package/esm/node_modules/openai/resources/admin/organization/spend-alerts.mjs.map +0 -1
  634. package/esm/node_modules/openai/resources/admin/organization/usage.mjs +0 -207
  635. package/esm/node_modules/openai/resources/admin/organization/usage.mjs.map +0 -1
  636. package/esm/node_modules/openai/resources/admin/organization/users/roles.mjs +0 -88
  637. package/esm/node_modules/openai/resources/admin/organization/users/roles.mjs.map +0 -1
  638. package/esm/node_modules/openai/resources/admin/organization/users/users.mjs +0 -82
  639. package/esm/node_modules/openai/resources/admin/organization/users/users.mjs.map +0 -1
  640. package/esm/node_modules/openai/resources/audio/audio.mjs +0 -21
  641. package/esm/node_modules/openai/resources/audio/audio.mjs.map +0 -1
  642. package/esm/node_modules/openai/resources/audio/speech.mjs +0 -39
  643. package/esm/node_modules/openai/resources/audio/speech.mjs.map +0 -1
  644. package/esm/node_modules/openai/resources/audio/transcriptions.mjs +0 -22
  645. package/esm/node_modules/openai/resources/audio/transcriptions.mjs.map +0 -1
  646. package/esm/node_modules/openai/resources/audio/translations.mjs +0 -21
  647. package/esm/node_modules/openai/resources/audio/translations.mjs.map +0 -1
  648. package/esm/node_modules/openai/resources/batches.mjs +0 -54
  649. package/esm/node_modules/openai/resources/batches.mjs.map +0 -1
  650. package/esm/node_modules/openai/resources/beta/assistants.mjs +0 -78
  651. package/esm/node_modules/openai/resources/beta/assistants.mjs.map +0 -1
  652. package/esm/node_modules/openai/resources/beta/beta.mjs +0 -24
  653. package/esm/node_modules/openai/resources/beta/beta.mjs.map +0 -1
  654. package/esm/node_modules/openai/resources/beta/chatkit/chatkit.mjs +0 -18
  655. package/esm/node_modules/openai/resources/beta/chatkit/chatkit.mjs.map +0 -1
  656. package/esm/node_modules/openai/resources/beta/chatkit/sessions.mjs +0 -49
  657. package/esm/node_modules/openai/resources/beta/chatkit/sessions.mjs.map +0 -1
  658. package/esm/node_modules/openai/resources/beta/chatkit/threads.mjs +0 -85
  659. package/esm/node_modules/openai/resources/beta/chatkit/threads.mjs.map +0 -1
  660. package/esm/node_modules/openai/resources/beta/realtime/realtime.mjs +0 -21
  661. package/esm/node_modules/openai/resources/beta/realtime/realtime.mjs.map +0 -1
  662. package/esm/node_modules/openai/resources/beta/realtime/sessions.mjs +0 -33
  663. package/esm/node_modules/openai/resources/beta/realtime/sessions.mjs.map +0 -1
  664. package/esm/node_modules/openai/resources/beta/realtime/transcription-sessions.mjs +0 -33
  665. package/esm/node_modules/openai/resources/beta/realtime/transcription-sessions.mjs.map +0 -1
  666. package/esm/node_modules/openai/resources/beta/threads/messages.mjs +0 -83
  667. package/esm/node_modules/openai/resources/beta/threads/messages.mjs.map +0 -1
  668. package/esm/node_modules/openai/resources/beta/threads/runs/runs.mjs +0 -183
  669. package/esm/node_modules/openai/resources/beta/threads/runs/runs.mjs.map +0 -1
  670. package/esm/node_modules/openai/resources/beta/threads/runs/steps.mjs +0 -45
  671. package/esm/node_modules/openai/resources/beta/threads/runs/steps.mjs.map +0 -1
  672. package/esm/node_modules/openai/resources/beta/threads/threads.mjs +0 -101
  673. package/esm/node_modules/openai/resources/beta/threads/threads.mjs.map +0 -1
  674. package/esm/node_modules/openai/resources/chat/chat.mjs +0 -15
  675. package/esm/node_modules/openai/resources/chat/chat.mjs.map +0 -1
  676. package/esm/node_modules/openai/resources/chat/completions/completions.mjs +0 -123
  677. package/esm/node_modules/openai/resources/chat/completions/completions.mjs.map +0 -1
  678. package/esm/node_modules/openai/resources/chat/completions/index.mjs +0 -7
  679. package/esm/node_modules/openai/resources/chat/completions/messages.mjs +0 -35
  680. package/esm/node_modules/openai/resources/chat/completions/messages.mjs.map +0 -1
  681. package/esm/node_modules/openai/resources/chat/index.mjs +0 -5
  682. package/esm/node_modules/openai/resources/completions.mjs +0 -20
  683. package/esm/node_modules/openai/resources/completions.mjs.map +0 -1
  684. package/esm/node_modules/openai/resources/containers/containers.mjs +0 -57
  685. package/esm/node_modules/openai/resources/containers/containers.mjs.map +0 -1
  686. package/esm/node_modules/openai/resources/containers/files/content.mjs +0 -23
  687. package/esm/node_modules/openai/resources/containers/files/content.mjs.map +0 -1
  688. package/esm/node_modules/openai/resources/containers/files/files.mjs +0 -63
  689. package/esm/node_modules/openai/resources/containers/files/files.mjs.map +0 -1
  690. package/esm/node_modules/openai/resources/conversations/conversations.mjs +0 -57
  691. package/esm/node_modules/openai/resources/conversations/conversations.mjs.map +0 -1
  692. package/esm/node_modules/openai/resources/conversations/items.mjs +0 -57
  693. package/esm/node_modules/openai/resources/conversations/items.mjs.map +0 -1
  694. package/esm/node_modules/openai/resources/embeddings.mjs +0 -48
  695. package/esm/node_modules/openai/resources/embeddings.mjs.map +0 -1
  696. package/esm/node_modules/openai/resources/evals/evals.mjs +0 -73
  697. package/esm/node_modules/openai/resources/evals/evals.mjs.map +0 -1
  698. package/esm/node_modules/openai/resources/evals/runs/output-items.mjs +0 -35
  699. package/esm/node_modules/openai/resources/evals/runs/output-items.mjs.map +0 -1
  700. package/esm/node_modules/openai/resources/evals/runs/runs.mjs +0 -72
  701. package/esm/node_modules/openai/resources/evals/runs/runs.mjs.map +0 -1
  702. package/esm/node_modules/openai/resources/files.mjs +0 -111
  703. package/esm/node_modules/openai/resources/files.mjs.map +0 -1
  704. package/esm/node_modules/openai/resources/fine-tuning/alpha/alpha.mjs +0 -15
  705. package/esm/node_modules/openai/resources/fine-tuning/alpha/alpha.mjs.map +0 -1
  706. package/esm/node_modules/openai/resources/fine-tuning/alpha/graders.mjs +0 -60
  707. package/esm/node_modules/openai/resources/fine-tuning/alpha/graders.mjs.map +0 -1
  708. package/esm/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.mjs +0 -15
  709. package/esm/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.mjs.map +0 -1
  710. package/esm/node_modules/openai/resources/fine-tuning/checkpoints/permissions.mjs +0 -102
  711. package/esm/node_modules/openai/resources/fine-tuning/checkpoints/permissions.mjs.map +0 -1
  712. package/esm/node_modules/openai/resources/fine-tuning/fine-tuning.mjs +0 -24
  713. package/esm/node_modules/openai/resources/fine-tuning/fine-tuning.mjs.map +0 -1
  714. package/esm/node_modules/openai/resources/fine-tuning/jobs/checkpoints.mjs +0 -34
  715. package/esm/node_modules/openai/resources/fine-tuning/jobs/checkpoints.mjs.map +0 -1
  716. package/esm/node_modules/openai/resources/fine-tuning/jobs/jobs.mjs +0 -148
  717. package/esm/node_modules/openai/resources/fine-tuning/jobs/jobs.mjs.map +0 -1
  718. package/esm/node_modules/openai/resources/fine-tuning/methods.mjs +0 -8
  719. package/esm/node_modules/openai/resources/fine-tuning/methods.mjs.map +0 -1
  720. package/esm/node_modules/openai/resources/graders/grader-models.mjs +0 -8
  721. package/esm/node_modules/openai/resources/graders/grader-models.mjs.map +0 -1
  722. package/esm/node_modules/openai/resources/graders/graders.mjs +0 -15
  723. package/esm/node_modules/openai/resources/graders/graders.mjs.map +0 -1
  724. package/esm/node_modules/openai/resources/images.mjs +0 -46
  725. package/esm/node_modules/openai/resources/images.mjs.map +0 -1
  726. package/esm/node_modules/openai/resources/index.mjs +0 -27
  727. package/esm/node_modules/openai/resources/models.mjs +0 -44
  728. package/esm/node_modules/openai/resources/models.mjs.map +0 -1
  729. package/esm/node_modules/openai/resources/moderations.mjs +0 -23
  730. package/esm/node_modules/openai/resources/moderations.mjs.map +0 -1
  731. package/esm/node_modules/openai/resources/realtime/calls.mjs +0 -79
  732. package/esm/node_modules/openai/resources/realtime/calls.mjs.map +0 -1
  733. package/esm/node_modules/openai/resources/realtime/client-secrets.mjs +0 -39
  734. package/esm/node_modules/openai/resources/realtime/client-secrets.mjs.map +0 -1
  735. package/esm/node_modules/openai/resources/realtime/realtime.mjs +0 -18
  736. package/esm/node_modules/openai/resources/realtime/realtime.mjs.map +0 -1
  737. package/esm/node_modules/openai/resources/responses/input-items.mjs +0 -31
  738. package/esm/node_modules/openai/resources/responses/input-items.mjs.map +0 -1
  739. package/esm/node_modules/openai/resources/responses/input-tokens.mjs +0 -27
  740. package/esm/node_modules/openai/resources/responses/input-tokens.mjs.map +0 -1
  741. package/esm/node_modules/openai/resources/responses/responses.mjs +0 -110
  742. package/esm/node_modules/openai/resources/responses/responses.mjs.map +0 -1
  743. package/esm/node_modules/openai/resources/skills/content.mjs +0 -22
  744. package/esm/node_modules/openai/resources/skills/content.mjs.map +0 -1
  745. package/esm/node_modules/openai/resources/skills/skills.mjs +0 -69
  746. package/esm/node_modules/openai/resources/skills/skills.mjs.map +0 -1
  747. package/esm/node_modules/openai/resources/skills/versions/content.mjs +0 -23
  748. package/esm/node_modules/openai/resources/skills/versions/content.mjs.map +0 -1
  749. package/esm/node_modules/openai/resources/skills/versions/versions.mjs +0 -58
  750. package/esm/node_modules/openai/resources/skills/versions/versions.mjs.map +0 -1
  751. package/esm/node_modules/openai/resources/uploads/parts.mjs +0 -34
  752. package/esm/node_modules/openai/resources/uploads/parts.mjs.map +0 -1
  753. package/esm/node_modules/openai/resources/uploads/uploads.mjs +0 -84
  754. package/esm/node_modules/openai/resources/uploads/uploads.mjs.map +0 -1
  755. package/esm/node_modules/openai/resources/vector-stores/file-batches.mjs +0 -126
  756. package/esm/node_modules/openai/resources/vector-stores/file-batches.mjs.map +0 -1
  757. package/esm/node_modules/openai/resources/vector-stores/files.mjs +0 -147
  758. package/esm/node_modules/openai/resources/vector-stores/files.mjs.map +0 -1
  759. package/esm/node_modules/openai/resources/vector-stores/vector-stores.mjs +0 -87
  760. package/esm/node_modules/openai/resources/vector-stores/vector-stores.mjs.map +0 -1
  761. package/esm/node_modules/openai/resources/videos.mjs +0 -115
  762. package/esm/node_modules/openai/resources/videos.mjs.map +0 -1
  763. package/esm/node_modules/openai/resources/webhooks/index.mjs +0 -3
  764. package/esm/node_modules/openai/resources/webhooks/webhooks.mjs +0 -69
  765. package/esm/node_modules/openai/resources/webhooks/webhooks.mjs.map +0 -1
  766. package/esm/node_modules/openai/resources/webhooks.mjs +0 -4
  767. package/esm/node_modules/openai/streaming.mjs +0 -3
  768. package/esm/node_modules/openai/version.mjs +0 -6
  769. package/esm/node_modules/openai/version.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../../../../../../@warlock.js/node_modules/langfuse-core/lib/index.mjs"],"sourcesContent":["import mustache from 'mustache';\n\nclass SimpleEventEmitter {\n constructor() {\n this.events = {};\n this.events = {};\n }\n on(event, listener) {\n if (!this.events[event]) {\n this.events[event] = [];\n }\n this.events[event].push(listener);\n return () => {\n this.events[event] = this.events[event].filter(x => x !== listener);\n };\n }\n emit(event, payload) {\n for (const listener of this.events[event] || []) {\n listener(payload);\n }\n for (const listener of this.events[\"*\"] || []) {\n listener(event, payload);\n }\n }\n}\n\nconst DEFAULT_PROMPT_CACHE_TTL_SECONDS = 60;\nclass LangfusePromptCacheItem {\n constructor(value, ttlSeconds) {\n this.value = value;\n this._expiry = Date.now() + ttlSeconds * 1000;\n }\n get isExpired() {\n return Date.now() > this._expiry;\n }\n}\nclass LangfusePromptCache {\n constructor() {\n this._cache = new Map();\n this._defaultTtlSeconds = DEFAULT_PROMPT_CACHE_TTL_SECONDS;\n this._refreshingKeys = new Map();\n }\n getIncludingExpired(key) {\n return this._cache.get(key) ?? null;\n }\n set(key, value, ttlSeconds) {\n const effectiveTtlSeconds = ttlSeconds ?? this._defaultTtlSeconds;\n this._cache.set(key, new LangfusePromptCacheItem(value, effectiveTtlSeconds));\n }\n addRefreshingPromise(key, promise) {\n this._refreshingKeys.set(key, promise);\n promise.then(() => {\n this._refreshingKeys.delete(key);\n }).catch(() => {\n this._refreshingKeys.delete(key);\n });\n }\n isRefreshing(key) {\n return this._refreshingKeys.has(key);\n }\n invalidate(promptName) {\n console.log(\"invalidating\", promptName, this._cache.keys());\n for (const key of this._cache.keys()) {\n if (key.startsWith(promptName)) {\n this._cache.delete(key);\n }\n }\n }\n}\n\nvar LangfusePersistedProperty;\n(function (LangfusePersistedProperty) {\n LangfusePersistedProperty[\"Props\"] = \"props\";\n LangfusePersistedProperty[\"Queue\"] = \"queue\";\n LangfusePersistedProperty[\"OptedOut\"] = \"opted_out\";\n})(LangfusePersistedProperty || (LangfusePersistedProperty = {}));\nvar ChatMessageType;\n(function (ChatMessageType) {\n ChatMessageType[\"ChatMessage\"] = \"chatmessage\";\n ChatMessageType[\"Placeholder\"] = \"placeholder\";\n})(ChatMessageType || (ChatMessageType = {}));\n\nmustache.escape = function (text) {\n return text;\n};\nclass BasePromptClient {\n constructor(prompt, isFallback = false, type) {\n this.name = prompt.name;\n this.version = prompt.version;\n this.config = prompt.config;\n this.labels = prompt.labels;\n this.tags = prompt.tags;\n this.isFallback = isFallback;\n this.type = type;\n this.commitMessage = prompt.commitMessage;\n }\n _transformToLangchainVariables(content) {\n const jsonEscapedContent = this.escapeJsonForLangchain(content);\n return jsonEscapedContent.replace(/\\{\\{(\\w+)\\}\\}/g, \"{$1}\");\n }\n /**\n * Escapes every curly brace that is part of a JSON object by doubling it.\n *\n * A curly brace is considered “JSON-related” when, after skipping any immediate\n * whitespace, the next non-whitespace character is a single (') or double (\") quote.\n *\n * Braces that are already doubled (e.g. `{{variable}}` placeholders) are left untouched.\n *\n * @param text - Input string that may contain JSON snippets.\n * @returns The string with JSON-related braces doubled.\n */\n escapeJsonForLangchain(text) {\n const out = []; // collected characters\n const stack = []; // true = “this { belongs to JSON”, false = normal “{”\n let i = 0;\n const n = text.length;\n while (i < n) {\n const ch = text[i];\n // ---------- opening brace ----------\n if (ch === \"{\") {\n // leave existing “{{ …” untouched\n if (i + 1 < n && text[i + 1] === \"{\") {\n out.push(\"{{\");\n i += 2;\n continue;\n }\n // look ahead to find the next non-space character\n let j = i + 1;\n while (j < n && /\\s/.test(text[j])) {\n j++;\n }\n const isJson = j < n && (text[j] === \"'\" || text[j] === '\"');\n out.push(isJson ? \"{{\" : \"{\");\n stack.push(isJson); // remember how this “{” was treated\n i += 1;\n continue;\n }\n // ---------- closing brace ----------\n if (ch === \"}\") {\n // leave existing “… }}” untouched\n if (i + 1 < n && text[i + 1] === \"}\") {\n out.push(\"}}\");\n i += 2;\n continue;\n }\n const isJson = stack.pop() ?? false;\n out.push(isJson ? \"}}\" : \"}\");\n i += 1;\n continue;\n }\n // ---------- any other character ----------\n out.push(ch);\n i += 1;\n }\n return out.join(\"\");\n }\n}\nclass TextPromptClient extends BasePromptClient {\n constructor(prompt, isFallback = false) {\n super(prompt, isFallback, \"text\");\n this.promptResponse = prompt;\n this.prompt = prompt.prompt;\n }\n compile(variables, _placeholders) {\n return mustache.render(this.promptResponse.prompt, variables ?? {});\n }\n getLangchainPrompt(_options) {\n /**\n * Converts Langfuse prompt into string compatible with Langchain PromptTemplate.\n *\n * It specifically adapts the mustache-style double curly braces {{variable}} used in Langfuse\n * to the single curly brace {variable} format expected by Langchain.\n *\n * @returns {string} The string that can be plugged into Langchain's PromptTemplate.\n */\n return this._transformToLangchainVariables(this.prompt);\n }\n toJSON() {\n return JSON.stringify({\n name: this.name,\n prompt: this.prompt,\n version: this.version,\n isFallback: this.isFallback,\n tags: this.tags,\n labels: this.labels,\n type: this.type,\n config: this.config\n });\n }\n}\nclass ChatPromptClient extends BasePromptClient {\n constructor(prompt, isFallback = false) {\n const normalizedPrompt = ChatPromptClient.normalizePrompt(prompt.prompt);\n const typedPrompt = {\n ...prompt,\n prompt: normalizedPrompt\n };\n super(typedPrompt, isFallback, \"chat\");\n this.promptResponse = typedPrompt;\n this.prompt = normalizedPrompt;\n }\n static normalizePrompt(prompt) {\n // Convert ChatMessages to ChatMessageWithPlaceholders for backward compatibility\n return prompt.map(item => {\n if (\"type\" in item) {\n // Already has type field (new format)\n return item;\n } else {\n // Plain ChatMessage (legacy format) - add type field\n return {\n type: ChatMessageType.ChatMessage,\n ...item\n };\n }\n });\n }\n compile(variables, placeholders) {\n /**\n * Compiles the chat prompt by replacing placeholders and variables with provided values.\n *\n * First fills-in placeholders by from the provided placeholder parameter.\n * Then compiles variables into the message content.\n * Unresolved placeholders are included in the output as placeholder objects.\n * If you only want to fill-in placeholders, pass an empty object for variables.\n *\n * @param variables - Key-value pairs for Mustache variable substitution in message content\n * @param placeholders - Key-value pairs where keys are placeholder names and values can be ChatMessage arrays\n * @returns Array of ChatMessage objects and placeholder objects with placeholders replaced and variables rendered\n */\n const messagesWithPlaceholdersReplaced = [];\n const placeholderValues = placeholders ?? {};\n for (const item of this.prompt) {\n if (\"type\" in item && item.type === ChatMessageType.Placeholder) {\n const placeholderValue = placeholderValues[item.name];\n if (Array.isArray(placeholderValue) && placeholderValue.length > 0 && placeholderValue.every(msg => typeof msg === \"object\" && \"role\" in msg && \"content\" in msg)) {\n messagesWithPlaceholdersReplaced.push(...placeholderValue);\n } else if (Array.isArray(placeholderValue) && placeholderValue.length === 0) ; else if (placeholderValue !== undefined) {\n // Non-standard placeholder value format, just stringfiy\n messagesWithPlaceholdersReplaced.push(JSON.stringify(placeholderValue));\n } else {\n // Keep unresolved placeholder in the output\n messagesWithPlaceholdersReplaced.push(item);\n }\n } else if (\"role\" in item && \"content\" in item && item.type === ChatMessageType.ChatMessage) {\n messagesWithPlaceholdersReplaced.push({\n role: item.role,\n content: item.content\n });\n }\n }\n return messagesWithPlaceholdersReplaced.map(item => {\n if (typeof item === \"object\" && item !== null && \"role\" in item && \"content\" in item) {\n return {\n ...item,\n content: mustache.render(item.content, variables ?? {})\n };\n } else {\n // Return placeholder or stringified value as-is\n return item;\n }\n });\n }\n getLangchainPrompt(options) {\n /*\n * Converts Langfuse prompt into format compatible with Langchain PromptTemplate.\n *\n * Fills-in placeholders from provided values and converts unresolved ones to Langchain MessagesPlaceholder objects.\n * Transforms variables from {{var}} to {var} format for Langchain without rendering them.\n *\n * @param options - Configuration object\n * @param options.placeholders - Key-value pairs where keys are placeholder names and values can be ChatMessage arrays\n * @returns Array of ChatMessage objects and Langchain MessagesPlaceholder objects with variables transformed for Langchain compatibility.\n *\n * @example\n * ```typescript\n * const client = new ChatPromptClient(prompt);\n * client.getLangchainPrompt({ placeholders: { examples: [{ role: \"user\", content: \"Hello\" }] } });\n * ```\n */\n const messagesWithPlaceholdersReplaced = [];\n const placeholderValues = options?.placeholders ?? {};\n for (const item of this.prompt) {\n if (\"type\" in item && item.type === ChatMessageType.Placeholder) {\n const placeholderValue = placeholderValues[item.name];\n if (Array.isArray(placeholderValue) && placeholderValue.length > 0 && placeholderValue.every(msg => typeof msg === \"object\" && \"role\" in msg && \"content\" in msg)) {\n // Complete placeholder fill-in, replace with it\n messagesWithPlaceholdersReplaced.push(...placeholderValue.map(msg => {\n return {\n role: msg.role,\n content: this._transformToLangchainVariables(msg.content)\n };\n }));\n } else if (Array.isArray(placeholderValue) && placeholderValue.length === 0) ; else if (placeholderValue !== undefined) {\n // Non-standard placeholder value, just stringify and add directly\n messagesWithPlaceholdersReplaced.push(JSON.stringify(placeholderValue));\n } else {\n // Convert unresolved placeholder to Langchain MessagesPlaceholder\n messagesWithPlaceholdersReplaced.push({\n variableName: item.name,\n optional: false\n });\n }\n } else if (\"role\" in item && \"content\" in item && item.type === ChatMessageType.ChatMessage) {\n messagesWithPlaceholdersReplaced.push({\n role: item.role,\n content: this._transformToLangchainVariables(item.content)\n });\n }\n }\n return messagesWithPlaceholdersReplaced;\n }\n toJSON() {\n return JSON.stringify({\n name: this.name,\n prompt: this.promptResponse.prompt.map(item => {\n if (\"type\" in item && item.type === ChatMessageType.ChatMessage) {\n const {\n type: _,\n ...messageWithoutType\n } = item;\n return messageWithoutType;\n }\n return item;\n }),\n version: this.version,\n isFallback: this.isFallback,\n tags: this.tags,\n labels: this.labels,\n type: this.type,\n config: this.config\n });\n }\n}\n\nfunction assert(truthyValue, message) {\n if (!truthyValue) {\n throw new Error(message);\n }\n}\nfunction removeTrailingSlash(url) {\n return url?.replace(/\\/+$/, \"\");\n}\nasync function retriable(fn, props = {}, log) {\n const {\n retryCount = 3,\n retryDelay = 5000,\n retryCheck = () => true\n } = props;\n let lastError = null;\n for (let i = 0; i < retryCount + 1; i++) {\n if (i > 0) {\n // don't wait when it's the first try\n await new Promise(resolve => setTimeout(resolve, retryDelay));\n log(`Retrying ${i + 1} of ${retryCount + 1}`);\n }\n try {\n const res = await fn();\n return res;\n } catch (e) {\n lastError = e;\n if (!retryCheck(e)) {\n throw e;\n }\n log(`Retriable error: ${JSON.stringify(e)}`);\n }\n }\n throw lastError;\n}\n// https://stackoverflow.com/a/8809472\nfunction generateUUID(globalThis) {\n // Public Domain/MIT\n let d = new Date().getTime(); //Timestamp\n let d2 = globalThis && globalThis.performance && globalThis.performance.now && globalThis.performance.now() * 1000 || 0; //Time in microseconds since page-load or 0 if unsupported\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n let r = Math.random() * 16; //random number between 0 and 16\n if (d > 0) {\n //Use timestamp until depleted\n r = (d + r) % 16 | 0;\n d = Math.floor(d / 16);\n } else {\n //Use microseconds since page-load if supported\n r = (d2 + r) % 16 | 0;\n d2 = Math.floor(d2 / 16);\n }\n return (c === \"x\" ? r : r & 0x3 | 0x8).toString(16);\n });\n}\nfunction currentTimestamp() {\n return new Date().getTime();\n}\nfunction currentISOTime() {\n return new Date().toISOString();\n}\nfunction safeSetTimeout(fn, timeout) {\n // NOTE: we use this so rarely that it is totally fine to do `safeSetTimeout(fn, 0)``\n // rather than setImmediate.\n const t = setTimeout(fn, timeout);\n // We unref if available to prevent Node.js hanging on exit\n t?.unref && t?.unref();\n return t;\n}\nfunction getEnv(key) {\n if (typeof process !== \"undefined\" && process.env[key]) {\n return process.env[key];\n } else if (typeof globalThis !== \"undefined\") {\n return globalThis[key];\n }\n return;\n}\nfunction configLangfuseSDK(params, secretRequired = true) {\n const {\n publicKey,\n secretKey,\n ...coreOptions\n } = params ?? {};\n // check environment variables if values not provided\n const finalPublicKey = publicKey ?? getEnv(\"LANGFUSE_PUBLIC_KEY\");\n const finalSecretKey = secretRequired ? secretKey ?? getEnv(\"LANGFUSE_SECRET_KEY\") : undefined;\n const finalBaseUrl = coreOptions.baseUrl ?? getEnv(\"LANGFUSE_BASEURL\");\n const finalCoreOptions = {\n ...coreOptions,\n baseUrl: finalBaseUrl\n };\n return {\n publicKey: finalPublicKey,\n ...(secretRequired ? {\n secretKey: finalSecretKey\n } : undefined),\n ...finalCoreOptions\n };\n}\nconst encodeQueryParams = params => {\n const queryParams = new URLSearchParams();\n Object.entries(params ?? {}).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n // check for date\n if (value instanceof Date) {\n queryParams.append(key, value.toISOString());\n } else {\n queryParams.append(key, value.toString());\n }\n }\n });\n return queryParams.toString();\n};\n\nvar utils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n assert: assert,\n configLangfuseSDK: configLangfuseSDK,\n currentISOTime: currentISOTime,\n currentTimestamp: currentTimestamp,\n encodeQueryParams: encodeQueryParams,\n generateUUID: generateUUID,\n getEnv: getEnv,\n removeTrailingSlash: removeTrailingSlash,\n retriable: retriable,\n safeSetTimeout: safeSetTimeout\n});\n\nconst common_release_envs = [\n// Vercel\n\"VERCEL_GIT_COMMIT_SHA\", \"NEXT_PUBLIC_VERCEL_GIT_COMMIT_SHA\",\n// Netlify\n\"COMMIT_REF\",\n// Render\n\"RENDER_GIT_COMMIT\",\n// GitLab CI\n\"CI_COMMIT_SHA\",\n// CicleCI\n\"CIRCLE_SHA1\",\n// Cloudflare pages\n\"CF_PAGES_COMMIT_SHA\",\n// AWS Amplify\n\"REACT_APP_GIT_SHA\",\n// Heroku\n\"SOURCE_VERSION\",\n// Trigger.dev\n\"TRIGGER_DEPLOYMENT_ID\"];\nfunction getCommonReleaseEnvs() {\n for (const key of common_release_envs) {\n const value = getEnv(key);\n if (value) {\n return value;\n }\n }\n return undefined;\n}\n\nlet fs = null;\nlet cryptoModule = null;\n// Use wrapper to prevent bundlers from trying to resolve the dynamic import\n// Otherwise, the import will be incorrectly resolved as a static import even though it's dynamic\n// Test for browser environment would fail because the import will be incorrectly resolved as a static import and fs and crypto will be unavailable\nconst dynamicImport = module => {\n return import( /* webpackIgnore: true */module);\n};\nif (typeof globalThis.Deno !== \"undefined\") {\n // Deno\n Promise.all([dynamicImport(\"node:fs\"), dynamicImport(\"node:crypto\")]).then(([importedFs, importedCrypto]) => {\n fs = importedFs;\n cryptoModule = importedCrypto;\n }).catch(); // Errors are handled on runtime\n} else if (typeof process !== \"undefined\" && process.versions?.node) {\n // Node\n Promise.all([dynamicImport(\"fs\"), dynamicImport(\"crypto\")]).then(([importedFs, importedCrypto]) => {\n fs = importedFs;\n cryptoModule = importedCrypto;\n }).catch(); // Errors are handled on runtime\n} else if (typeof crypto !== \"undefined\") {\n // Edge runtime (Cloudflare Workers, Vercel Cloud Function)\n cryptoModule = crypto;\n}\n/**\n * A class for wrapping media objects for upload to Langfuse.\n *\n * This class handles the preparation and formatting of media content for Langfuse,\n * supporting both base64 data URIs and raw content bytes.\n */\nclass LangfuseMedia {\n constructor(params) {\n const {\n obj,\n base64DataUri,\n contentType,\n contentBytes,\n filePath\n } = params;\n this.obj = obj;\n this._mediaId = undefined;\n if (base64DataUri) {\n const [contentBytesParsed, contentTypeParsed] = this.parseBase64DataUri(base64DataUri);\n this._contentBytes = contentBytesParsed;\n this._contentType = contentTypeParsed;\n this._source = \"base64_data_uri\";\n } else if (contentBytes && contentType) {\n this._contentBytes = contentBytes;\n this._contentType = contentType;\n this._source = \"bytes\";\n } else if (filePath && contentType) {\n if (!fs) {\n throw new Error(\"File system support is not available in this environment\");\n }\n if (!fs.existsSync(filePath)) {\n throw new Error(`File at path ${filePath} does not exist`);\n }\n this._contentBytes = this.readFile(filePath);\n this._contentType = this._contentBytes ? contentType : undefined;\n this._source = this._contentBytes ? \"file\" : undefined;\n } else {\n console.error(\"base64DataUri, or contentBytes and contentType, or filePath must be provided to LangfuseMedia\");\n }\n }\n readFile(filePath) {\n try {\n if (!fs) {\n throw new Error(\"File system support is not available in this environment\");\n }\n return fs.readFileSync(filePath);\n } catch (error) {\n console.error(`Error reading file at path ${filePath}`, error);\n return undefined;\n }\n }\n parseBase64DataUri(data) {\n try {\n if (!data || typeof data !== \"string\") {\n throw new Error(\"Data URI is not a string\");\n }\n if (!data.startsWith(\"data:\")) {\n throw new Error(\"Data URI does not start with 'data:'\");\n }\n const [header, actualData] = data.slice(5).split(\",\", 2);\n if (!header || !actualData) {\n throw new Error(\"Invalid URI\");\n }\n const headerParts = header.split(\";\");\n if (!headerParts.includes(\"base64\")) {\n throw new Error(\"Data is not base64 encoded\");\n }\n const contentType = headerParts[0];\n if (!contentType) {\n throw new Error(\"Content type is empty\");\n }\n return [Buffer.from(actualData, \"base64\"), contentType];\n } catch (error) {\n console.error(\"Error parsing base64 data URI\", error);\n return [undefined, undefined];\n }\n }\n get contentLength() {\n return this._contentBytes?.length;\n }\n get contentSha256Hash() {\n if (!this._contentBytes) {\n return undefined;\n }\n if (!cryptoModule) {\n console.error(\"Crypto support is not available in this environment\");\n return undefined;\n }\n const sha256Hash = cryptoModule.createHash(\"sha256\").update(this._contentBytes).digest(\"base64\");\n return sha256Hash;\n }\n toJSON() {\n if (!this._contentType || !this._source || !this._mediaId) {\n return `<Upload handling failed for LangfuseMedia of type ${this._contentType}>`;\n }\n return `@@@langfuseMedia:type=${this._contentType}|id=${this._mediaId}|source=${this._source}@@@`;\n }\n /**\n * Parses a media reference string into a ParsedMediaReference.\n *\n * Example reference string:\n * \"@@@langfuseMedia:type=image/jpeg|id=some-uuid|source=base64DataUri@@@\"\n *\n * @param referenceString - The reference string to parse.\n * @returns An object with the mediaId, source, and contentType.\n *\n * @throws Error if the reference string is invalid or missing required fields.\n */\n static parseReferenceString(referenceString) {\n const prefix = \"@@@langfuseMedia:\";\n const suffix = \"@@@\";\n if (!referenceString.startsWith(prefix)) {\n throw new Error(\"Reference string does not start with '@@@langfuseMedia:type='\");\n }\n if (!referenceString.endsWith(suffix)) {\n throw new Error(\"Reference string does not end with '@@@'\");\n }\n const content = referenceString.slice(prefix.length, -suffix.length);\n const pairs = content.split(\"|\");\n const parsedData = {};\n for (const pair of pairs) {\n const [key, value] = pair.split(\"=\", 2);\n parsedData[key] = value;\n }\n if (!(\"type\" in parsedData && \"id\" in parsedData && \"source\" in parsedData)) {\n throw new Error(\"Missing required fields in reference string\");\n }\n return {\n mediaId: parsedData[\"id\"],\n source: parsedData[\"source\"],\n contentType: parsedData[\"type\"]\n };\n }\n /**\n * Replaces the media reference strings in an object with base64 data URIs for the media content.\n *\n * This method recursively traverses an object (up to a maximum depth of 10) looking for media reference strings\n * in the format \"@@@langfuseMedia:...@@@\". When found, it fetches the actual media content using the provided\n * Langfuse client and replaces the reference string with a base64 data URI.\n *\n * If fetching media content fails for a reference string, a warning is logged and the reference string is left unchanged.\n *\n * @param params - Configuration object\n * @param params.obj - The object to process. Can be a primitive value, array, or nested object\n * @param params.langfuseClient - Langfuse client instance used to fetch media content\n * @param params.resolveWith - The representation of the media content to replace the media reference string with. Currently only \"base64DataUri\" is supported.\n * @param params.maxDepth - Optional. Default is 10. The maximum depth to traverse the object.\n *\n * @returns A deep copy of the input object with all media references replaced with base64 data URIs where possible\n *\n * @example\n * ```typescript\n * const obj = {\n * image: \"@@@langfuseMedia:type=image/jpeg|id=123|source=bytes@@@\",\n * nested: {\n * pdf: \"@@@langfuseMedia:type=application/pdf|id=456|source=bytes@@@\"\n * }\n * };\n *\n * const result = await LangfuseMedia.resolveMediaReferences({\n * obj,\n * langfuseClient\n * });\n *\n * // Result:\n * // {\n * // image: \"data:image/jpeg;base64,/9j/4AAQSkZJRg...\",\n * // nested: {\n * // pdf: \"data:application/pdf;base64,JVBERi0xLjcK...\"\n * // }\n * // }\n * ```\n */\n static async resolveMediaReferences(params) {\n const {\n obj,\n langfuseClient,\n maxDepth = 10\n } = params;\n async function traverse(obj, depth) {\n if (depth > maxDepth) {\n return obj;\n }\n // Handle string with potential media references\n if (typeof obj === \"string\") {\n const regex = /@@@langfuseMedia:.+?@@@/g;\n const referenceStringMatches = obj.match(regex);\n if (!referenceStringMatches) {\n return obj;\n }\n let result = obj;\n const referenceStringToMediaContentMap = new Map();\n await Promise.all(referenceStringMatches.map(async referenceString => {\n try {\n const parsedMediaReference = LangfuseMedia.parseReferenceString(referenceString);\n const mediaData = await langfuseClient.fetchMedia(parsedMediaReference.mediaId);\n const mediaContent = await langfuseClient.fetch(mediaData.url, {\n method: \"GET\",\n headers: {}\n });\n if (mediaContent.status !== 200) {\n throw new Error(\"Failed to fetch media content\");\n }\n const base64MediaContent = Buffer.from(await mediaContent.arrayBuffer()).toString(\"base64\");\n const base64DataUri = `data:${mediaData.contentType};base64,${base64MediaContent}`;\n referenceStringToMediaContentMap.set(referenceString, base64DataUri);\n } catch (error) {\n console.warn(\"Error fetching media content for reference string\", referenceString, error);\n // Do not replace the reference string if there's an error\n }\n }));\n for (const [referenceString, base64MediaContent] of referenceStringToMediaContentMap.entries()) {\n result = result.replaceAll(referenceString, base64MediaContent);\n }\n return result;\n }\n // Handle arrays\n if (Array.isArray(obj)) {\n return Promise.all(obj.map(async item => await traverse(item, depth + 1)));\n }\n // Handle objects\n if (typeof obj === \"object\" && obj !== null) {\n return Object.fromEntries(await Promise.all(Object.entries(obj).map(async ([key, value]) => [key, await traverse(value, depth + 1)])));\n }\n return obj;\n }\n return traverse(obj, 0);\n }\n}\n\n/**\n * A consistent sampling function that works for arbitrary strings across all JavaScript runtimes.\n */\nfunction isInSample(input, sampleRate) {\n if (sampleRate === undefined) {\n return true;\n } else if (sampleRate === 0) {\n return false;\n }\n if (sampleRate < 0 || sampleRate > 1 || isNaN(sampleRate)) {\n console.warn(\"Sample rate must be between 0 and 1. Ignoring setting.\");\n return true;\n }\n return simpleHash(input) < sampleRate;\n}\n/**\n * Simple and consistent string hashing function.\n * Uses character codes and prime numbers for good distribution.\n */\nfunction simpleHash(str) {\n let hash = 0;\n const prime = 31;\n for (let i = 0; i < str.length; i++) {\n // Use rolling multiplication instead of Math.pow\n hash = hash * prime + str.charCodeAt(i) >>> 0;\n }\n // Use bit operations for better distribution\n hash = (hash >>> 16 ^ hash) * 0x45d9f3b;\n hash = (hash >>> 16 ^ hash) * 0x45d9f3b;\n hash = hash >>> 16 ^ hash;\n return Math.abs(hash) / 0x7fffffff;\n}\n\nclass LangfuseMemoryStorage {\n constructor() {\n this._memoryStorage = {};\n }\n getProperty(key) {\n return this._memoryStorage[key];\n }\n setProperty(key, value) {\n this._memoryStorage[key] = value !== null ? value : undefined;\n }\n}\n\nconst MAX_EVENT_SIZE_BYTES = getEnv(\"LANGFUSE_MAX_EVENT_SIZE_BYTES\") ? Number(getEnv(\"LANGFUSE_MAX_EVENT_SIZE_BYTES\")) : 1_000_000;\nconst MAX_BATCH_SIZE_BYTES = getEnv(\"LANGFUSE_MAX_BATCH_SIZE_BYTES\") ? Number(getEnv(\"LANGFUSE_MAX_BATCH_SIZE_BYTES\")) : 2_500_000;\nconst ENVIRONMENT_PATTERN = /^(?!langfuse)[a-z0-9_-]+$/;\n// NOTE: This list whitelists environments that are used for traces ingested by Langfuse. Please mirror edits to this list in the Langfuse ingestion schema.\nconst WHITELISTED_LANGFUSE_INTERNAL_ENVIRONMENTS = [\"langfuse-prompt-experiment\"];\nclass LangfuseFetchHttpError extends Error {\n constructor(response, body) {\n super(\"HTTP error while fetching Langfuse: \" + response.status + \" and body: \" + body);\n this.response = response;\n this.name = \"LangfuseFetchHttpError\";\n }\n}\nclass LangfuseFetchNetworkError extends Error {\n constructor(error) {\n super(\"Network error while fetching Langfuse\", error instanceof Error ? {\n cause: error\n } : {});\n this.error = error;\n this.name = \"LangfuseFetchNetworkError\";\n }\n}\nfunction isLangfuseFetchHttpError(error) {\n return typeof error === \"object\" && error.name === \"LangfuseFetchHttpError\";\n}\nfunction isLangfuseFetchNetworkError(error) {\n return typeof error === \"object\" && error.name === \"LangfuseFetchNetworkError\";\n}\nfunction isLangfuseFetchError(err) {\n return isLangfuseFetchHttpError(err) || isLangfuseFetchNetworkError(err);\n}\n// Constants for URLs\nconst SUPPORT_URL = \"https://langfuse.com/support\";\nconst API_DOCS_URL = \"https://api.reference.langfuse.com\";\nconst RBAC_DOCS_URL = \"https://langfuse.com/docs/rbac\";\nconst INSTALLATION_DOCS_URL = \"https://langfuse.com/docs/sdk/typescript/guide\";\nconst RATE_LIMITS_URL = \"https://langfuse.com/faq/all/api-limits\";\nconst NPM_PACKAGE_URL = \"https://www.npmjs.com/package/langfuse\";\n// Error messages\nconst updatePromptResponse = `Make sure to keep your SDK updated, refer to ${NPM_PACKAGE_URL} for details.`;\nconst defaultServerErrorPrompt = `This is an unusual occurrence and we are monitoring it closely. For help, please contact support: ${SUPPORT_URL}.`;\nconst defaultErrorResponse = `Unexpected error occurred. Please check your request and contact support: ${SUPPORT_URL}.`;\n// Error response map\nconst errorResponseByCode = new Map([\n// Internal error category: 5xx errors, 404 error\n[500, `Internal server error occurred. For help, please contact support: ${SUPPORT_URL}`], [501, `Not implemented. Please check your request and contact support for help: ${SUPPORT_URL}.`], [502, `Bad gateway. ${defaultServerErrorPrompt}`], [503, `Service unavailable. ${defaultServerErrorPrompt}`], [504, `Gateway timeout. ${defaultServerErrorPrompt}`], [404, `Internal error occurred. ${defaultServerErrorPrompt}`],\n// Client error category: 4xx errors, excluding 404\n[400, `Bad request. Please check your request for any missing or incorrect parameters. Refer to our API docs: ${API_DOCS_URL} for details.`], [401, `Unauthorized. Please check your public/private host settings. Refer to our installation and setup guide: ${INSTALLATION_DOCS_URL} for details on SDK configuration.`], [403, `Forbidden. Please check your access control settings. Refer to our RBAC docs: ${RBAC_DOCS_URL} for details.`], [429, `Rate limit exceeded. For more information on rate limits please see: ${RATE_LIMITS_URL}`]]);\n// Returns a user-friendly error message based on the HTTP status code\nfunction getErrorResponseByCode(code) {\n if (!code) {\n return `${defaultErrorResponse} ${updatePromptResponse}`;\n }\n const errorResponse = errorResponseByCode.get(code) || defaultErrorResponse;\n return `${code}: ${errorResponse} ${updatePromptResponse}`;\n}\nfunction logIngestionError(error) {\n if (isLangfuseFetchHttpError(error)) {\n const code = error.response.status;\n const errorResponse = getErrorResponseByCode(code);\n console.error(\"[Langfuse SDK]\", errorResponse, `Error details: ${error}`);\n } else if (isLangfuseFetchNetworkError(error)) {\n console.error(\"[Langfuse SDK] Network error: \", error);\n } else {\n console.error(\"[Langfuse SDK] Unknown error:\", error);\n }\n}\nclass LangfuseCoreStateless {\n constructor(params) {\n this.additionalHeaders = {};\n this.debugMode = false;\n this.pendingEventProcessingPromises = {};\n this.pendingIngestionPromises = {};\n this.localEventExportMap = new Map();\n // internal\n this._events = new SimpleEventEmitter();\n const {\n publicKey,\n secretKey,\n enabled,\n _projectId,\n _isLocalEventExportEnabled,\n ...options\n } = params;\n this._events.on(\"error\", payload => {\n console.error(`[Langfuse SDK] ${typeof payload === \"string\" ? payload : JSON.stringify(payload)}`);\n });\n this.enabled = enabled === false ? false : true;\n this.publicKey = publicKey ?? \"\";\n this.secretKey = secretKey;\n this.baseUrl = removeTrailingSlash(options?.baseUrl || \"https://cloud.langfuse.com\");\n this.additionalHeaders = options?.additionalHeaders || {};\n this.flushAt = options?.flushAt ? Math.max(options?.flushAt, 1) : 15;\n this.flushInterval = options?.flushInterval ?? 10000;\n this.release = options?.release ?? getEnv(\"LANGFUSE_RELEASE\") ?? getCommonReleaseEnvs() ?? undefined;\n this.mask = options?.mask;\n this.sampleRate = options?.sampleRate ?? (getEnv(\"LANGFUSE_SAMPLE_RATE\") ? Number(getEnv(\"LANGFUSE_SAMPLE_RATE\")) : undefined);\n if (this.sampleRate) {\n this._events.emit(\"debug\", `Langfuse trace sampling enabled with sampleRate ${this.sampleRate}.`);\n }\n this.environment = options?.environment ?? getEnv(\"LANGFUSE_TRACING_ENVIRONMENT\");\n if (this.environment && !(ENVIRONMENT_PATTERN.test(this.environment) || WHITELISTED_LANGFUSE_INTERNAL_ENVIRONMENTS.includes(this.environment)) && !_isLocalEventExportEnabled) {\n this._events.emit(\"error\", `Invalid tracing environment set: ${this.environment} . Environment must match regex ${ENVIRONMENT_PATTERN}. Events will be rejected by Langfuse server.`);\n }\n this._retryOptions = {\n retryCount: options?.fetchRetryCount ?? 3,\n retryDelay: options?.fetchRetryDelay ?? 3000,\n retryCheck: isLangfuseFetchError\n };\n this.requestTimeout = options?.requestTimeout ?? 5000; // 5 seconds\n this.sdkIntegration = options?.sdkIntegration ?? \"DEFAULT\";\n this.isLocalEventExportEnabled = _isLocalEventExportEnabled ?? false;\n if (this.isLocalEventExportEnabled && !_projectId) {\n this._events.emit(\"error\", \"Local event export is enabled, but no project ID was provided. Disabling local export.\");\n this.isLocalEventExportEnabled = false;\n return;\n } else if (!this.isLocalEventExportEnabled && _projectId) {\n this._events.emit(\"error\", \"Local event export is disabled, but a project ID was provided. Disabling local export.\");\n this.isLocalEventExportEnabled = false;\n return;\n } else {\n this.projectId = _projectId;\n }\n }\n getSdkIntegration() {\n return this.sdkIntegration;\n }\n getCommonEventProperties() {\n return {\n $lib: this.getLibraryId(),\n $lib_version: this.getLibraryVersion()\n };\n }\n on(event, cb) {\n return this._events.on(event, cb);\n }\n debug(enabled = true) {\n this.removeDebugCallback?.();\n this.debugMode = enabled;\n if (enabled) {\n this.removeDebugCallback = this.on(\"*\", (event, payload) => {\n // we already have a logger attached to error events\n if (event === \"error\") {\n return;\n }\n console.log(\"[Langfuse Debug]\", event, JSON.stringify(payload));\n });\n }\n }\n /***\n *** Handlers for each object type\n ***/\n traceStateless(body) {\n const {\n id: bodyId,\n timestamp: bodyTimestamp,\n release: bodyRelease,\n ...rest\n } = body;\n const id = bodyId ?? generateUUID();\n const release = bodyRelease ?? this.release;\n const parsedBody = {\n id,\n release,\n timestamp: bodyTimestamp ?? new Date(),\n environment: this.environment,\n ...rest\n };\n this.enqueue(\"trace-create\", parsedBody);\n return id;\n }\n eventStateless(body) {\n const {\n id: bodyId,\n startTime: bodyStartTime,\n ...rest\n } = body;\n const id = bodyId ?? generateUUID();\n const parsedBody = {\n id,\n startTime: bodyStartTime ?? new Date(),\n environment: this.environment,\n ...rest\n };\n this.enqueue(\"event-create\", parsedBody);\n return id;\n }\n spanStateless(body) {\n const {\n id: bodyId,\n startTime: bodyStartTime,\n ...rest\n } = body;\n const id = bodyId || generateUUID();\n const parsedBody = {\n id,\n startTime: bodyStartTime ?? new Date(),\n environment: this.environment,\n ...rest\n };\n this.enqueue(\"span-create\", parsedBody);\n return id;\n }\n generationStateless(body) {\n const {\n id: bodyId,\n startTime: bodyStartTime,\n prompt,\n ...rest\n } = body;\n const promptDetails = prompt && !prompt.isFallback ? {\n promptName: prompt.name,\n promptVersion: prompt.version\n } : {};\n const id = bodyId || generateUUID();\n const parsedBody = {\n id,\n startTime: bodyStartTime ?? new Date(),\n environment: this.environment,\n ...promptDetails,\n ...rest\n };\n this.enqueue(\"generation-create\", parsedBody);\n return id;\n }\n scoreStateless(body) {\n const {\n id: bodyId,\n ...rest\n } = body;\n const id = bodyId || generateUUID();\n const parsedBody = {\n id,\n environment: this.environment,\n ...rest\n };\n this.enqueue(\"score-create\", parsedBody);\n return id;\n }\n updateSpanStateless(body) {\n this.enqueue(\"span-update\", body);\n return body.id;\n }\n updateGenerationStateless(body) {\n const {\n prompt,\n ...rest\n } = body;\n const promptDetails = prompt && !prompt.isFallback ? {\n promptName: prompt.name,\n promptVersion: prompt.version\n } : {};\n const parsedBody = {\n ...promptDetails,\n ...rest\n };\n this.enqueue(\"generation-update\", parsedBody);\n return body.id;\n }\n async _getDataset(name) {\n const encodedName = encodeURIComponent(name);\n return this.fetchAndLogErrors(`${this.baseUrl}/api/public/v2/datasets/${encodedName}`, this._getFetchOptions({\n method: \"GET\"\n }));\n }\n async _getDatasetItems(query) {\n const params = new URLSearchParams();\n Object.entries(query ?? {}).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n params.append(key, value.toString());\n }\n });\n return this.fetchAndLogErrors(`${this.baseUrl}/api/public/dataset-items?${params}`, this._getFetchOptions({\n method: \"GET\"\n }));\n }\n async _fetchMedia(id) {\n return this.fetchAndLogErrors(`${this.baseUrl}/api/public/media/${id}`, this._getFetchOptions({\n method: \"GET\"\n }));\n }\n async fetchTraces(query) {\n // destructure the response into data and meta to be explicit about the shape of the response and add type-warnings in case the API changes\n const {\n data,\n meta\n } = await this.fetchAndLogErrors(`${this.baseUrl}/api/public/traces?${encodeQueryParams(query)}`, this._getFetchOptions({\n method: \"GET\"\n }));\n return {\n data,\n meta\n };\n }\n async fetchTrace(traceId) {\n const res = await this.fetchAndLogErrors(`${this.baseUrl}/api/public/traces/${traceId}`, this._getFetchOptions({\n method: \"GET\"\n }));\n return {\n data: res\n };\n }\n async fetchObservations(query) {\n // destructure the response into data and meta to be explicit about the shape of the response and add type-warnings in case the API changes\n const {\n data,\n meta\n } = await this.fetchAndLogErrors(`${this.baseUrl}/api/public/observations?${encodeQueryParams(query)}`, this._getFetchOptions({\n method: \"GET\"\n }));\n return {\n data,\n meta\n };\n }\n async fetchObservation(observationId) {\n const res = await this.fetchAndLogErrors(`${this.baseUrl}/api/public/observations/${observationId}`, this._getFetchOptions({\n method: \"GET\"\n }));\n return {\n data: res\n };\n }\n async fetchSessions(query) {\n // destructure the response into data and meta to be explicit about the shape of the response and add type-warnings in case the API changes\n const {\n data,\n meta\n } = await this.fetchAndLogErrors(`${this.baseUrl}/api/public/sessions?${encodeQueryParams(query)}`, this._getFetchOptions({\n method: \"GET\"\n }));\n return {\n data,\n meta\n };\n }\n async getDatasetRun(params) {\n const encodedDatasetName = encodeURIComponent(params.datasetName);\n const encodedRunName = encodeURIComponent(params.runName);\n return this.fetchAndLogErrors(`${this.baseUrl}/api/public/datasets/${encodedDatasetName}/runs/${encodedRunName}`, this._getFetchOptions({\n method: \"GET\"\n }));\n }\n async getDatasetRuns(datasetName, query) {\n return this.fetchAndLogErrors(`${this.baseUrl}/api/public/datasets/${encodeURIComponent(datasetName)}/runs?${encodeQueryParams(query)}`, this._getFetchOptions({\n method: \"GET\"\n }));\n }\n async createDatasetRunItem(body) {\n return this.fetchAndLogErrors(`${this.baseUrl}/api/public/dataset-run-items`, this._getFetchOptions({\n method: \"POST\",\n body: JSON.stringify(body)\n }));\n }\n /**\n * Creates a dataset. Upserts the dataset if it already exists.\n *\n * @param dataset Can be either a string (name) or an object with name, description and metadata\n * @returns A promise that resolves to the response of the create operation.\n */\n async createDataset(dataset) {\n const body = typeof dataset === \"string\" ? {\n name: dataset\n } : dataset;\n return this.fetchAndLogErrors(`${this.baseUrl}/api/public/datasets`, this._getFetchOptions({\n method: \"POST\",\n body: JSON.stringify(body)\n }));\n }\n /**\n * Creates a dataset item. Upserts the item if it already exists.\n * @param body The body of the dataset item to be created.\n * @returns A promise that resolves to the response of the create operation.\n */\n async createDatasetItem(body) {\n return this.fetchAndLogErrors(`${this.baseUrl}/api/public/dataset-items`, this._getFetchOptions({\n method: \"POST\",\n body: JSON.stringify(body)\n }));\n }\n async getDatasetItem(id) {\n return this.fetchAndLogErrors(`${this.baseUrl}/api/public/dataset-items/${id}`, this._getFetchOptions({\n method: \"GET\"\n }));\n }\n _parsePayload(response) {\n try {\n return JSON.parse(response);\n } catch {\n return response;\n }\n }\n async createPromptStateless(body) {\n return this.fetchAndLogErrors(`${this.baseUrl}/api/public/v2/prompts`, this._getFetchOptions({\n method: \"POST\",\n body: JSON.stringify(body)\n }));\n }\n async updatePromptStateless(body) {\n return this.fetchAndLogErrors(`${this.baseUrl}/api/public/v2/prompts/${encodeURIComponent(body.name)}/versions/${encodeURIComponent(body.version)}`, this._getFetchOptions({\n method: \"PATCH\",\n body: JSON.stringify(body)\n }));\n }\n async getPromptStateless(name, version, label, maxRetries, requestTimeout // this will override the default requestTimeout for fetching prompts. Together with maxRetries, it can be used to fetch prompts fast when the first fetch is slow.\n ) {\n const encodedName = encodeURIComponent(name);\n const params = new URLSearchParams();\n // Add parameters only if they are provided\n if (version && label) {\n throw new Error(\"Provide either version or label, not both.\");\n }\n if (version) {\n params.append(\"version\", version.toString());\n }\n if (label) {\n params.append(\"label\", label);\n }\n const url = `${this.baseUrl}/api/public/v2/prompts/${encodedName}${params.size ? \"?\" + params : \"\"}`;\n const boundedMaxRetries = this._getBoundedMaxRetries({\n maxRetries,\n defaultMaxRetries: 2,\n maxRetriesUpperBound: 4\n });\n const retryOptions = {\n ...this._retryOptions,\n retryCount: boundedMaxRetries,\n retryDelay: 500\n };\n const retryLogger = string => this._events.emit(\"retry\", string + \", \" + url + \", \" + JSON.stringify(retryOptions));\n return retriable(async () => {\n const res = await this.fetch(url, this._getFetchOptions({\n method: \"GET\",\n fetchTimeout: requestTimeout ?? this.requestTimeout\n })).catch(e => {\n if (e.name === \"AbortError\") {\n throw new LangfuseFetchNetworkError(\"Fetch request timed out\");\n }\n throw new LangfuseFetchNetworkError(e);\n });\n if (res.status >= 500) {\n throw new LangfuseFetchHttpError(res, await res.text());\n }\n const data = await res.json();\n return {\n fetchResult: res.status === 200 ? \"success\" : \"failure\",\n data\n };\n }, retryOptions, retryLogger);\n }\n _getBoundedMaxRetries(params) {\n const defaultMaxRetries = Math.max(params.defaultMaxRetries ?? 2, 0);\n const maxRetriesUpperBound = Math.max(params.maxRetriesUpperBound ?? 4, 0);\n if (params.maxRetries === undefined) {\n return defaultMaxRetries;\n }\n return Math.min(Math.max(params.maxRetries, 0), maxRetriesUpperBound);\n }\n /***\n *** QUEUEING AND FLUSHING\n ***/\n enqueue(type, body) {\n if (!this.enabled) {\n return;\n }\n // Sampling\n const traceId = this.parseTraceId(type, body);\n if (!traceId) {\n this._events.emit(\"warning\", \"Failed to parse traceID for sampling. Please open a Github issue in https://github.com/langfuse/langfuse/issues/new/choose\");\n } else if (!isInSample(traceId, this.sampleRate)) {\n this._events.emit(\"debug\", `Event with trace ID ${traceId} is out of sample. Skipping.`);\n return;\n }\n const promise = this.processEnqueueEvent(type, body);\n const promiseId = generateUUID();\n this.pendingEventProcessingPromises[promiseId] = promise;\n promise.catch(e => {\n this._events.emit(\"error\", e);\n }).finally(() => {\n delete this.pendingEventProcessingPromises[promiseId];\n });\n }\n async processEnqueueEvent(type, body) {\n this.maskEventBodyInPlace(body);\n await this.processMediaInEvent(type, body);\n const finalEventBody = this.truncateEventBody(body, MAX_EVENT_SIZE_BYTES);\n try {\n JSON.stringify(finalEventBody);\n } catch (e) {\n this._events.emit(\"error\", `Event Body for ${type} is not JSON-serializable: ${e}`);\n return;\n }\n const queue = this.getPersistedProperty(LangfusePersistedProperty.Queue) || [];\n queue.push({\n id: generateUUID(),\n type,\n timestamp: currentISOTime(),\n body: finalEventBody,\n // TODO: fix typecast. EventBody is not correctly narrowed to the correct type dictated by the 'type' property. This should be part of a larger type cleanup.\n metadata: undefined\n });\n this.setPersistedProperty(LangfusePersistedProperty.Queue, queue);\n this._events.emit(type, finalEventBody);\n // Flush queued events if we meet the flushAt length\n if (queue.length >= this.flushAt) {\n this.flush();\n }\n if (this.flushInterval && !this._flushTimer) {\n this._flushTimer = safeSetTimeout(() => this.flush(), this.flushInterval);\n }\n }\n maskEventBodyInPlace(body) {\n if (!this.mask) {\n return;\n }\n const maskableKeys = [\"input\", \"output\"];\n for (const key of maskableKeys) {\n if (key in body) {\n try {\n body[key] = this.mask({\n data: body[key]\n });\n } catch (e) {\n this._events.emit(\"error\", `Error masking ${key}: ${e}`);\n body[key] = \"<fully masked due to failed mask function>\";\n }\n }\n }\n }\n /**\n * Truncates the event body if its byte size exceeds the specified maximum byte size.\n * Emits a warning event if truncation occurs.\n * The fields that may be truncated are: \"input\", \"output\", and \"metadata\".\n * The fields are truncated in the order of their size, from largest to smallest until the total byte size is within the limit.\n */\n truncateEventBody(body, maxByteSize) {\n const bodySize = this.getByteSize(body);\n if (bodySize <= maxByteSize) {\n return body;\n }\n this._events.emit(\"warning\", `Event Body is too large (${bodySize} bytes) and will be truncated`);\n // Sort keys by size and truncate the largest keys first\n const keysToCheck = [\"input\", \"output\", \"metadata\"];\n const keySizes = keysToCheck.map(key => ({\n key,\n size: key in body ? this.getByteSize(body[key]) : 0\n })).sort((a, b) => b.size - a.size);\n let result = {\n ...body\n };\n let currentSize = bodySize;\n for (const {\n key,\n size\n } of keySizes) {\n if (currentSize > maxByteSize && Object.prototype.hasOwnProperty.call(result, key)) {\n result = {\n ...result,\n [key]: \"<truncated due to size exceeding limit>\"\n };\n this._events.emit(\"warning\", `Truncated ${key} due to total size exceeding limit`);\n currentSize -= size;\n }\n }\n return result;\n }\n getByteSize(obj) {\n const serialized = JSON.stringify(obj);\n // Use TextEncoder if available, otherwise fallback to encodeURIComponent\n if (typeof TextEncoder !== \"undefined\") {\n return new TextEncoder().encode(serialized).length;\n } else {\n return encodeURIComponent(serialized).replace(/%[A-F\\d]{2}/g, \"U\").length;\n }\n }\n async processMediaInEvent(type, body) {\n if (!body) {\n return;\n }\n const traceId = this.parseTraceId(type, body);\n if (!traceId) {\n this._events.emit(\"warning\", \"traceId is required for media upload\");\n return;\n }\n const observationId = (type.includes(\"generation\") || type.includes(\"span\")) && body.id ? body.id : undefined;\n await Promise.all([\"input\", \"output\", \"metadata\"].map(async field => {\n if (body[field]) {\n body[field] = (await this.findAndProcessMedia({\n data: body[field],\n traceId,\n observationId,\n field\n }).catch(e => {\n this._events.emit(\"error\", `Error processing multimodal event: ${e}`);\n })) ?? body[field];\n }\n }));\n }\n parseTraceId(type, body) {\n return \"traceId\" in body ? body.traceId : type.includes(\"trace\") ? body.id : undefined;\n }\n async findAndProcessMedia({\n data,\n traceId,\n observationId,\n field\n }) {\n const seenObjects = new WeakMap();\n const maxLevels = 10;\n const processRecursively = async (data, level) => {\n if (typeof data === \"string\" && data.startsWith(\"data:\")) {\n const media = new LangfuseMedia({\n base64DataUri: data\n });\n await this.processMediaItem({\n media,\n traceId,\n observationId,\n field\n });\n return media;\n }\n if (typeof data !== \"object\" || data === null) {\n return data;\n }\n // Use WeakMap to detect cycles\n if (seenObjects.has(data) || level > maxLevels) {\n return data;\n }\n seenObjects.set(data, true);\n if (data instanceof LangfuseMedia || Object.prototype.toString.call(data) === \"[object LangfuseMedia]\") {\n await this.processMediaItem({\n media: data,\n traceId,\n observationId,\n field\n });\n return data;\n }\n if (Array.isArray(data)) {\n return await Promise.all(data.map(item => processRecursively(item, level + 1)));\n }\n // Parse OpenAI input audio data which is passed as base64 string NOT in the data uri format\n if (typeof data === \"object\" && data !== null) {\n if (\"input_audio\" in data && typeof data[\"input_audio\"] === \"object\" && \"data\" in data.input_audio) {\n const media = new LangfuseMedia({\n base64DataUri: `data:audio/${data.input_audio[\"format\"] || \"wav\"};base64,${data.input_audio.data}`\n });\n await this.processMediaItem({\n media,\n traceId,\n observationId,\n field\n });\n return {\n ...data,\n input_audio: {\n ...data.input_audio,\n data: media\n }\n };\n }\n // OpenAI output audio data is passed as base64 string NOT in the data uri format\n if (\"audio\" in data && typeof data[\"audio\"] === \"object\" && \"data\" in data.audio) {\n const media = new LangfuseMedia({\n base64DataUri: `data:audio/${data.audio[\"format\"] || \"wav\"};base64,${data.audio.data}`\n });\n await this.processMediaItem({\n media,\n traceId,\n observationId,\n field\n });\n return {\n ...data,\n audio: {\n ...data.audio,\n data: media\n }\n };\n }\n // Recursively process nested objects\n return Object.fromEntries(await Promise.all(Object.entries(data).map(async ([key, value]) => [key, await processRecursively(value, level + 1)])));\n }\n return data;\n };\n return await processRecursively(data, 1);\n }\n async processMediaItem({\n media,\n traceId,\n observationId,\n field\n }) {\n try {\n if (!media.contentLength || !media._contentType || !media.contentSha256Hash || !media._contentBytes) {\n return;\n }\n const getUploadUrlBody = {\n contentLength: media.contentLength,\n traceId,\n observationId,\n field,\n contentType: media._contentType,\n sha256Hash: media.contentSha256Hash\n };\n const fetchResponse = await this.fetch(`${this.baseUrl}/api/public/media`, this._getFetchOptions({\n method: \"POST\",\n body: JSON.stringify(getUploadUrlBody)\n }));\n const uploadUrlResponse = await fetchResponse.json();\n const {\n uploadUrl,\n mediaId\n } = uploadUrlResponse;\n media._mediaId = mediaId;\n if (uploadUrl) {\n this._events.emit(\"debug\", `Uploading media ${mediaId}`);\n const startTime = Date.now();\n const uploadResponse = await this.uploadMediaWithBackoff({\n uploadUrl,\n contentBytes: media._contentBytes,\n contentType: media._contentType,\n contentSha256Hash: media.contentSha256Hash,\n maxRetries: 3,\n baseDelay: 1000\n });\n if (!uploadResponse) {\n throw Error(\"Media upload process failed\");\n }\n const patchMediaBody = {\n uploadedAt: new Date().toISOString(),\n uploadHttpStatus: uploadResponse.status,\n uploadHttpError: await uploadResponse.text(),\n uploadTimeMs: Date.now() - startTime\n };\n await this.fetch(`${this.baseUrl}/api/public/media/${mediaId}`, this._getFetchOptions({\n method: \"PATCH\",\n body: JSON.stringify(patchMediaBody)\n }));\n this._events.emit(\"debug\", `Media upload status reported for ${mediaId}`);\n } else {\n this._events.emit(\"debug\", `Media ${mediaId} already uploaded`);\n }\n } catch (err) {\n this._events.emit(\"error\", `Error processing media item: ${err}`);\n }\n }\n async uploadMediaWithBackoff(params) {\n const {\n uploadUrl,\n contentType,\n contentSha256Hash,\n contentBytes,\n maxRetries,\n baseDelay\n } = params;\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n const uploadResponse = await this.fetch(uploadUrl, {\n method: \"PUT\",\n body: contentBytes,\n headers: {\n \"Content-Type\": contentType,\n \"x-amz-checksum-sha256\": contentSha256Hash,\n \"x-ms-blob-type\": \"BlockBlob\"\n }\n });\n if (attempt < maxRetries && uploadResponse.status !== 200 && uploadResponse.status !== 201) {\n throw new Error(`Upload failed with status ${uploadResponse.status}`);\n }\n return uploadResponse;\n } catch (e) {\n if (attempt === maxRetries) {\n throw e;\n }\n const delay = baseDelay * Math.pow(2, attempt);\n const jitter = Math.random() * 1000;\n await new Promise(resolve => setTimeout(resolve, delay + jitter));\n }\n }\n }\n /**\n * Asynchronously flushes all events that are not yet sent to the server.\n * This function always resolves, even if there were errors when flushing.\n * Errors are emitted as \"error\" events and the promise resolves.\n *\n * @returns {Promise<void>} A promise that resolves when the flushing is completed.\n */\n async flushAsync() {\n await Promise.all(Object.values(this.pendingEventProcessingPromises)).catch(e => {\n logIngestionError(e);\n });\n return new Promise((resolve, _reject) => {\n try {\n this.flush((err, data) => {\n if (err) {\n logIngestionError(err);\n resolve();\n } else {\n resolve(data);\n }\n });\n // safeguard against unexpected synchronous errors\n } catch (e) {\n console.error(\"[Langfuse SDK] Error while flushing Langfuse\", e);\n }\n });\n }\n // Flushes all events that are not yet sent to the server\n flush(callback) {\n if (this._flushTimer) {\n clearTimeout(this._flushTimer);\n this._flushTimer = null;\n }\n const queue = this.getPersistedProperty(LangfusePersistedProperty.Queue) || [];\n if (!queue.length) {\n return callback?.();\n }\n const items = queue.splice(0, this.flushAt);\n const {\n processedItems,\n remainingItems\n } = this.processQueueItems(items, MAX_EVENT_SIZE_BYTES, MAX_BATCH_SIZE_BYTES);\n this.setPersistedProperty(LangfusePersistedProperty.Queue, [...remainingItems, ...queue]);\n const promiseUUID = generateUUID();\n const done = err => {\n if (err) {\n this._events.emit(\"warning\", err);\n }\n callback?.(err, items);\n this._events.emit(\"flush\", items);\n };\n // If local event export is enabled, we don't send the events to the server, but instead store them in the localEventExportMap\n if (this.isLocalEventExportEnabled && this.projectId) {\n if (!this.localEventExportMap.has(this.projectId)) {\n this.localEventExportMap.set(this.projectId, [...items]);\n } else {\n this.localEventExportMap.get(this.projectId)?.push(...items);\n }\n done();\n return;\n }\n const payload = JSON.stringify({\n batch: processedItems,\n metadata: {\n batch_size: processedItems.length,\n sdk_integration: this.sdkIntegration,\n sdk_version: this.getLibraryVersion(),\n sdk_variant: this.getLibraryId(),\n public_key: this.publicKey,\n sdk_name: \"langfuse-js\"\n }\n }); // implicit conversion also of dates to strings\n const url = `${this.baseUrl}/api/public/ingestion`;\n const fetchOptions = this._getFetchOptions({\n method: \"POST\",\n body: payload\n });\n const requestPromise = this.fetchWithRetry(url, fetchOptions).then(() => done()).catch(err => {\n done(err);\n });\n this.pendingIngestionPromises[promiseUUID] = requestPromise;\n requestPromise.finally(() => {\n delete this.pendingIngestionPromises[promiseUUID];\n });\n }\n processQueueItems(queue, MAX_MSG_SIZE, BATCH_SIZE_LIMIT) {\n let totalSize = 0;\n const processedItems = [];\n const remainingItems = [];\n for (let i = 0; i < queue.length; i++) {\n try {\n const itemSize = new Blob([JSON.stringify(queue[i])]).size;\n // discard item if it exceeds the maximum size per event\n if (itemSize > MAX_MSG_SIZE) {\n console.warn(`Item exceeds size limit (size: ${itemSize}), dropping item.`);\n continue;\n }\n // if adding the next item would exceed the batch size limit, stop processing\n if (totalSize + itemSize >= BATCH_SIZE_LIMIT) {\n console.debug(`hit batch size limit (size: ${totalSize + itemSize})`);\n remainingItems.push(...queue.slice(i));\n console.log(`Remaining items: ${remainingItems.length}`);\n console.log(`processes items: ${processedItems.length}`);\n break;\n }\n // only add the item if it passes both requirements\n totalSize += itemSize;\n processedItems.push(queue[i]);\n } catch (error) {\n this._events.emit(\"error\", error);\n remainingItems.push(...queue.slice(i));\n break;\n }\n }\n return {\n processedItems,\n remainingItems\n };\n }\n _getFetchOptions(p) {\n const fetchOptions = {\n method: p.method,\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-Langfuse-Sdk-Name\": \"langfuse-js\",\n \"X-Langfuse-Sdk-Version\": this.getLibraryVersion(),\n \"X-Langfuse-Sdk-Variant\": this.getLibraryId(),\n \"X-Langfuse-Sdk-Integration\": this.sdkIntegration,\n \"X-Langfuse-Public-Key\": this.publicKey,\n ...this.additionalHeaders,\n ...this.constructAuthorizationHeader(this.publicKey, this.secretKey)\n },\n body: p.body,\n ...(p.fetchTimeout !== undefined ? {\n signal: AbortSignal.timeout(p.fetchTimeout)\n } : {})\n };\n return fetchOptions;\n }\n constructAuthorizationHeader(publicKey, secretKey) {\n if (secretKey === undefined) {\n return {\n Authorization: \"Bearer \" + publicKey\n };\n } else {\n const encodedCredentials = typeof btoa === \"function\" ?\n // btoa() is available, the code is running in a browser or edge environment\n btoa(publicKey + \":\" + secretKey) :\n // btoa() is not available, the code is running in Node.js\n Buffer.from(publicKey + \":\" + secretKey).toString(\"base64\");\n return {\n Authorization: \"Basic \" + encodedCredentials\n };\n }\n }\n async fetchWithRetry(url, options, retryOptions) {\n AbortSignal.timeout ??= function timeout(ms) {\n const ctrl = new AbortController();\n setTimeout(() => ctrl.abort(), ms);\n return ctrl.signal;\n };\n return await retriable(async () => {\n let res = null;\n try {\n res = await this.fetch(url, {\n signal: AbortSignal.timeout(this.requestTimeout),\n ...options\n });\n } catch (e) {\n // fetch will only throw on network errors or on timeouts\n throw new LangfuseFetchNetworkError(e);\n }\n if (res.status < 200 || res.status >= 400) {\n const body = await res.json();\n throw new LangfuseFetchHttpError(res, JSON.stringify(body));\n }\n const returnBody = await res.json();\n if (res.status === 207 && returnBody.errors.length > 0) {\n throw new LangfuseFetchHttpError(res, JSON.stringify(returnBody.errors));\n }\n return res;\n }, {\n ...this._retryOptions,\n ...retryOptions\n }, string => this._events.emit(\"retry\", string + \", \" + url + \", \" + JSON.stringify(options)));\n }\n async fetchAndLogErrors(url, options) {\n const res = await this.fetch(url, options);\n // 429 responses do not have a JSON body, so attempting to execute `json()`\n // will throw and error before the 429 is logged.\n const data = res.status === 429 ? await res.text() : await res.json();\n if (res.status < 200 || res.status >= 400) {\n logIngestionError(new LangfuseFetchHttpError(res, JSON.stringify(data)));\n }\n return data;\n }\n async shutdownAsync() {\n clearTimeout(this._flushTimer);\n try {\n await this.flushAsync();\n await Promise.all(Object.values(this.pendingIngestionPromises).map(x => x.catch(() => {\n // ignore errors as we are shutting down and can't deal with them anyways.\n })));\n // flush again in case there are new events that were added while we were waiting for the pending promises to resolve\n await this.flushAsync();\n } catch (e) {\n console.error(\"[Langfuse SDK] Error while shutting down Langfuse\", e);\n }\n }\n async _exportLocalEvents(projectId) {\n if (this.isLocalEventExportEnabled) {\n clearTimeout(this._flushTimer);\n await this.flushAsync();\n const events = this.localEventExportMap.get(projectId) ?? [];\n this.localEventExportMap.delete(projectId);\n return events;\n } else {\n this._events.emit(\"error\", \"Local event exports are disabled, but _exportLocalEvents() was called.\");\n return [];\n }\n }\n shutdown() {\n console.warn(\"shutdown() is deprecated. It does not wait for all events to be processed. Please use shutdownAsync() instead.\");\n void this.shutdownAsync();\n }\n async awaitAllQueuedAndPendingRequests() {\n clearTimeout(this._flushTimer);\n await this.flushAsync();\n await Promise.all(Object.values(this.pendingIngestionPromises));\n }\n}\nclass LangfuseWebStateless extends LangfuseCoreStateless {\n constructor(params) {\n const {\n flushAt,\n flushInterval,\n publicKey,\n enabled,\n ...rest\n } = params;\n let isObservabilityEnabled = enabled === false ? false : true;\n if (isObservabilityEnabled && !publicKey) {\n isObservabilityEnabled = false;\n console.warn(\"Langfuse public key not passed to constructor and not set as 'LANGFUSE_PUBLIC_KEY' environment variable. No observability data will be sent to Langfuse.\");\n }\n super({\n ...rest,\n publicKey,\n flushAt: flushAt ?? 1,\n flushInterval: flushInterval ?? 0,\n enabled: isObservabilityEnabled\n });\n }\n async score(body) {\n this.scoreStateless(body);\n await this.awaitAllQueuedAndPendingRequests();\n return this;\n }\n}\nclass LangfuseCore extends LangfuseCoreStateless {\n constructor(params) {\n const {\n publicKey,\n secretKey,\n enabled,\n _isLocalEventExportEnabled\n } = params;\n let isObservabilityEnabled = enabled === false ? false : true;\n if (_isLocalEventExportEnabled) {\n isObservabilityEnabled = true;\n } else if (!secretKey) {\n isObservabilityEnabled = false;\n if (enabled !== false) {\n console.warn(\"Langfuse secret key was not passed to constructor or not set as 'LANGFUSE_SECRET_KEY' environment variable. No observability data will be sent to Langfuse.\");\n }\n } else if (!publicKey) {\n isObservabilityEnabled = false;\n if (enabled !== false) {\n console.warn(\"Langfuse public key was not passed to constructor or not set as 'LANGFUSE_PUBLIC_KEY' environment variable. No observability data will be sent to Langfuse.\");\n }\n }\n super({\n ...params,\n enabled: isObservabilityEnabled\n });\n this._promptCache = new LangfusePromptCache();\n }\n trace(body) {\n const id = this.traceStateless(body ?? {});\n const t = new LangfuseTraceClient(this, id);\n if (getEnv(\"DEFER\") && body) {\n try {\n const deferRuntime = getEnv(\"__deferRuntime\");\n if (deferRuntime) {\n deferRuntime.langfuseTraces([{\n id: id,\n name: body.name || \"\",\n url: t.getTraceUrl()\n }]);\n }\n } catch {}\n }\n return t;\n }\n span(body) {\n const traceId = body.traceId || this.traceStateless({\n name: body.name\n });\n const id = this.spanStateless({\n ...body,\n traceId\n });\n return new LangfuseSpanClient(this, id, traceId);\n }\n generation(body) {\n const traceId = body.traceId || this.traceStateless({\n name: body.name\n });\n const id = this.generationStateless({\n ...body,\n traceId\n });\n return new LangfuseGenerationClient(this, id, traceId);\n }\n event(body) {\n const traceId = body.traceId || this.traceStateless({\n name: body.name\n });\n const id = this.eventStateless({\n ...body,\n traceId\n });\n return new LangfuseEventClient(this, id, traceId);\n }\n score(body) {\n this.scoreStateless(body);\n return this;\n }\n async getDataset(name, options) {\n const dataset = await this._getDataset(name);\n const items = [];\n let page = 1;\n while (true) {\n const itemsResponse = await this._getDatasetItems({\n datasetName: name,\n limit: options?.fetchItemsPageSize ?? 50,\n page\n });\n items.push(...itemsResponse.data);\n if (itemsResponse.meta.totalPages <= page) {\n break;\n }\n page++;\n }\n const returnDataset = {\n ...dataset,\n description: dataset.description ?? undefined,\n metadata: dataset.metadata ?? undefined,\n items: items.map(item => ({\n ...item,\n link: async (obj, runName, runArgs) => {\n await this.awaitAllQueuedAndPendingRequests();\n const data = await this.createDatasetRunItem({\n runName,\n datasetItemId: item.id,\n observationId: obj.observationId,\n traceId: obj.traceId,\n runDescription: runArgs?.description,\n metadata: runArgs?.metadata\n });\n return data;\n }\n }))\n };\n return returnDataset;\n }\n async createPrompt(body) {\n const labels = body.labels ?? [];\n const promptResponse = body.type === \"chat\" // necessary to get types right here\n ? await this.createPromptStateless({\n ...body,\n prompt: body.prompt.map(item => {\n if (\"type\" in item && item.type === ChatMessageType.Placeholder) {\n return {\n type: ChatMessageType.Placeholder,\n name: item.name\n };\n } else {\n // Handle regular ChatMessage (without type field) from API\n return {\n type: ChatMessageType.ChatMessage,\n ...item\n };\n }\n }),\n labels: body.isActive ? [...new Set([...labels, \"production\"])] : labels // backward compatibility for isActive\n }) : await this.createPromptStateless({\n ...body,\n type: body.type ?? \"text\",\n labels: body.isActive ? [...new Set([...labels, \"production\"])] : labels // backward compatibility for isActive\n });\n if (promptResponse.type === \"chat\") {\n return new ChatPromptClient(promptResponse);\n }\n return new TextPromptClient(promptResponse);\n }\n async updatePrompt(body) {\n const newPrompt = await this.updatePromptStateless(body);\n this._promptCache.invalidate(body.name);\n return newPrompt;\n }\n async getPrompt(name, version, options) {\n const cacheKey = this._getPromptCacheKey({\n name,\n version,\n label: options?.label\n });\n const cachedPrompt = this._promptCache.getIncludingExpired(cacheKey);\n if (!cachedPrompt || options?.cacheTtlSeconds === 0) {\n try {\n return await this._fetchPromptAndUpdateCache({\n name,\n version,\n label: options?.label,\n cacheTtlSeconds: options?.cacheTtlSeconds,\n maxRetries: options?.maxRetries,\n fetchTimeout: options?.fetchTimeoutMs\n });\n } catch (err) {\n if (options?.fallback) {\n const sharedFallbackParams = {\n name,\n version: version ?? 0,\n labels: options.label ? [options.label] : [],\n cacheTtlSeconds: options?.cacheTtlSeconds,\n config: {},\n tags: []\n };\n if (options.type === \"chat\") {\n return new ChatPromptClient({\n ...sharedFallbackParams,\n type: \"chat\",\n prompt: options.fallback.map(msg => ({\n type: ChatMessageType.ChatMessage,\n ...msg\n }))\n }, true);\n } else {\n return new TextPromptClient({\n ...sharedFallbackParams,\n type: \"text\",\n prompt: options.fallback\n }, true);\n }\n }\n throw err;\n }\n }\n if (cachedPrompt.isExpired) {\n // If the cache is not currently being refreshed, start refreshing it and register the promise in the cache\n if (!this._promptCache.isRefreshing(cacheKey)) {\n const refreshPromptPromise = this._fetchPromptAndUpdateCache({\n name,\n version,\n label: options?.label,\n cacheTtlSeconds: options?.cacheTtlSeconds,\n maxRetries: options?.maxRetries,\n fetchTimeout: options?.fetchTimeoutMs\n }).catch(() => {\n console.warn(`Failed to refresh prompt cache '${cacheKey}', stale cache will be used until next refresh succeeds.`);\n });\n this._promptCache.addRefreshingPromise(cacheKey, refreshPromptPromise);\n }\n return cachedPrompt.value;\n }\n return cachedPrompt.value;\n }\n _getPromptCacheKey(params) {\n const {\n name,\n version,\n label\n } = params;\n const parts = [name];\n if (version !== undefined) {\n parts.push(\"version:\" + version.toString());\n } else if (label !== undefined) {\n parts.push(\"label:\" + label);\n } else {\n parts.push(\"label:production\");\n }\n return parts.join(\"-\");\n }\n async _fetchPromptAndUpdateCache(params) {\n const cacheKey = this._getPromptCacheKey(params);\n try {\n const {\n name,\n version,\n cacheTtlSeconds,\n label,\n maxRetries,\n fetchTimeout\n } = params;\n const {\n data,\n fetchResult\n } = await this.getPromptStateless(name, version, label, maxRetries, fetchTimeout);\n if (fetchResult === \"failure\") {\n throw Error(data.message ?? \"Internal error while fetching prompt\");\n }\n let prompt;\n if (data.type === \"chat\") {\n prompt = new ChatPromptClient(data);\n } else {\n prompt = new TextPromptClient(data);\n }\n this._promptCache.set(cacheKey, prompt, cacheTtlSeconds);\n return prompt;\n } catch (error) {\n console.error(`[Langfuse SDK] Error while fetching prompt '${cacheKey}':`, error);\n throw error;\n }\n }\n async fetchMedia(id) {\n return await this._fetchMedia(id);\n }\n /**\n * Replaces the media reference strings in an object with base64 data URIs for the media content.\n *\n * This method recursively traverses an object (up to a maximum depth of 10) looking for media reference strings\n * in the format \"@@@langfuseMedia:...@@@\". When found, it fetches the actual media content using the provided\n * Langfuse client and replaces the reference string with a base64 data URI.\n *\n * If fetching media content fails for a reference string, a warning is logged and the reference string is left unchanged.\n *\n * @param params - Configuration object\n * @param params.obj - The object to process. Can be a primitive value, array, or nested object\n * @param params.langfuseClient - Langfuse client instance used to fetch media content\n * @param params.resolveWith - The representation of the media content to replace the media reference string with. Currently only \"base64DataUri\" is supported.\n * @param params.maxDepth - Optional. Default is 10. The maximum depth to traverse the object.\n *\n * @returns A deep copy of the input object with all media references replaced with base64 data URIs where possible\n *\n * @example\n * ```typescript\n * const obj = {\n * image: \"@@@langfuseMedia:type=image/jpeg|id=123|source=bytes@@@\",\n * nested: {\n * pdf: \"@@@langfuseMedia:type=application/pdf|id=456|source=bytes@@@\"\n * }\n * };\n *\n * const result = await LangfuseMedia.resolveMediaReferences({\n * obj,\n * langfuseClient\n * });\n *\n * // Result:\n * // {\n * // image: \"data:image/jpeg;base64,/9j/4AAQSkZJRg...\",\n * // nested: {\n * // pdf: \"data:application/pdf;base64,JVBERi0xLjcK...\"\n * // }\n * // }\n * ```\n */\n async resolveMediaReferences(params) {\n const {\n obj,\n ...rest\n } = params;\n return LangfuseMedia.resolveMediaReferences({\n ...rest,\n langfuseClient: this,\n obj\n });\n }\n _updateSpan(body) {\n this.updateSpanStateless(body);\n return this;\n }\n _updateGeneration(body) {\n this.updateGenerationStateless(body);\n return this;\n }\n}\nclass LangfuseObjectClient {\n constructor({\n client,\n id,\n traceId,\n observationId\n }) {\n this.client = client;\n this.id = id;\n this.traceId = traceId;\n this.observationId = observationId;\n }\n event(body) {\n return this.client.event({\n ...body,\n traceId: this.traceId,\n parentObservationId: this.observationId\n });\n }\n span(body) {\n return this.client.span({\n ...body,\n traceId: this.traceId,\n parentObservationId: this.observationId\n });\n }\n generation(body) {\n return this.client.generation({\n ...body,\n traceId: this.traceId,\n parentObservationId: this.observationId\n });\n }\n score(body) {\n this.client.score({\n ...body,\n traceId: this.traceId,\n observationId: this.observationId\n });\n return this;\n }\n getTraceUrl() {\n return `${this.client.baseUrl}/trace/${this.traceId}`;\n }\n}\nclass LangfuseTraceClient extends LangfuseObjectClient {\n constructor(client, traceId) {\n super({\n client,\n id: traceId,\n traceId,\n observationId: null\n });\n }\n update(body) {\n this.client.trace({\n ...body,\n id: this.id\n });\n return this;\n }\n}\nclass LangfuseObservationClient extends LangfuseObjectClient {\n constructor(client, id, traceId) {\n super({\n client,\n id,\n traceId,\n observationId: id\n });\n }\n}\nclass LangfuseSpanClient extends LangfuseObservationClient {\n constructor(client, id, traceId) {\n super(client, id, traceId);\n }\n update(body) {\n this.client._updateSpan({\n ...body,\n id: this.id,\n traceId: this.traceId\n });\n return this;\n }\n end(body) {\n this.client._updateSpan({\n ...body,\n id: this.id,\n traceId: this.traceId,\n endTime: new Date()\n });\n return this;\n }\n}\nclass LangfuseGenerationClient extends LangfuseObservationClient {\n constructor(client, id, traceId) {\n super(client, id, traceId);\n }\n update(body) {\n this.client._updateGeneration({\n ...body,\n id: this.id,\n traceId: this.traceId\n });\n return this;\n }\n end(body) {\n this.client._updateGeneration({\n ...body,\n id: this.id,\n traceId: this.traceId,\n endTime: new Date()\n });\n return this;\n }\n}\nclass LangfuseEventClient extends LangfuseObservationClient {\n constructor(client, id, traceId) {\n super(client, id, traceId);\n }\n}\n\nexport { ChatMessageType, ChatPromptClient, LangfuseCore, LangfuseEventClient, LangfuseGenerationClient, LangfuseMedia, LangfuseMemoryStorage, LangfuseObjectClient, LangfusePersistedProperty, LangfuseSpanClient, LangfuseTraceClient, LangfuseWebStateless, TextPromptClient, utils };\n//# sourceMappingURL=index.mjs.map\n"],"x_google_ignoreList":[0],"mappings":"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"}