@morphllm/morphsdk 0.2.173 → 0.2.175

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 (239) hide show
  1. package/dist/{chunk-C3V5FHZI.js → chunk-2SHUV3AB.js} +2 -2
  2. package/dist/{chunk-JXJBF6CV.js → chunk-2WC7TSEL.js} +2 -2
  3. package/dist/{chunk-5RTWSAZ6.js → chunk-3TWDAXXO.js} +2 -2
  4. package/dist/{chunk-S5R4H5HM.js → chunk-4MNI34G7.js} +2 -2
  5. package/dist/{chunk-SM3OQZRS.js → chunk-4NTL6M55.js} +3 -3
  6. package/dist/{chunk-FN4ADWFQ.js → chunk-5HNJNDDQ.js} +2 -2
  7. package/dist/{chunk-GESRH23M.js → chunk-AWBZNBAD.js} +2 -2
  8. package/dist/{chunk-33ZRF6X3.js → chunk-BQ52QYAU.js} +2 -2
  9. package/dist/chunk-CABQ652L.js +42 -0
  10. package/dist/chunk-CABQ652L.js.map +1 -0
  11. package/dist/{chunk-QE6JHRVD.js → chunk-CBIXYMY2.js} +2 -2
  12. package/dist/{chunk-577P2AXE.js → chunk-D6C7K7T7.js} +2 -2
  13. package/dist/{chunk-ZFOR3LI4.js → chunk-DB4C63ND.js} +2 -2
  14. package/dist/{chunk-CEZQSARX.js → chunk-EYXMABTT.js} +2 -2
  15. package/dist/{chunk-W6AGNJ5O.js → chunk-FGSPSUZA.js} +3 -3
  16. package/dist/{chunk-MQTMT4OR.js → chunk-GFPOP6ZY.js} +2 -2
  17. package/dist/{chunk-TW3XQET2.js → chunk-GGGHLBME.js} +2 -2
  18. package/dist/{chunk-EJ2CQO4V.js → chunk-GIQZQM3I.js} +2 -2
  19. package/dist/{chunk-3I4LCNWJ.js → chunk-GMIXIA7W.js} +2 -2
  20. package/dist/{chunk-Z3KRXUNG.js → chunk-HBE26KJG.js} +2 -2
  21. package/dist/{chunk-I4FCFIBU.js → chunk-I5PAAUJW.js} +4 -4
  22. package/dist/{chunk-QCFHQPHC.js → chunk-ICA7P5TD.js} +6 -6
  23. package/dist/{chunk-RXCHMNCY.js → chunk-ICFZAOSH.js} +2 -2
  24. package/dist/{chunk-ACWLQFYS.js → chunk-IRBMNRZC.js} +10 -10
  25. package/dist/{chunk-TS56XYWB.js → chunk-JOBCDCRP.js} +3 -3
  26. package/dist/chunk-KRTQESOL.js +143 -0
  27. package/dist/chunk-KRTQESOL.js.map +1 -0
  28. package/dist/{chunk-VLZ6PNAD.js → chunk-LN7GNFET.js} +7 -7
  29. package/dist/{chunk-AZOSA7VT.js → chunk-LPXMSR5E.js} +2 -2
  30. package/dist/{chunk-73DQQMGR.js → chunk-OHF5K3HA.js} +17 -3
  31. package/dist/chunk-OHF5K3HA.js.map +1 -0
  32. package/dist/chunk-PICGNBUE.js +35 -0
  33. package/dist/chunk-PICGNBUE.js.map +1 -0
  34. package/dist/{chunk-3GNXTHHB.js → chunk-TNNLID5P.js} +2 -2
  35. package/dist/{chunk-NBKL7VWX.js → chunk-TPGWVT3F.js} +30 -30
  36. package/dist/{chunk-7EUJ2AKS.js → chunk-TVZ5QVUV.js} +2 -2
  37. package/dist/{chunk-CV7SLK6R.js → chunk-TY2GIOLP.js} +2 -2
  38. package/dist/{chunk-QE3SPHIM.js → chunk-XRYUQSUC.js} +4 -4
  39. package/dist/{chunk-YGNPVOUO.js → chunk-Y5AZ6FOQ.js} +3 -3
  40. package/dist/chunk-ZCEDWXQV.js +134 -0
  41. package/dist/chunk-ZCEDWXQV.js.map +1 -0
  42. package/dist/client.cjs +16 -2
  43. package/dist/client.cjs.map +1 -1
  44. package/dist/client.js +32 -32
  45. package/dist/core/client.cjs +16 -2
  46. package/dist/core/client.cjs.map +1 -1
  47. package/dist/core/client.js +4 -4
  48. package/dist/core/error.cjs +16 -2
  49. package/dist/core/error.cjs.map +1 -1
  50. package/dist/core/error.js +3 -3
  51. package/dist/core/index.cjs +16 -2
  52. package/dist/core/index.cjs.map +1 -1
  53. package/dist/core/index.js +4 -4
  54. package/dist/edge.cjs +16 -2
  55. package/dist/edge.cjs.map +1 -1
  56. package/dist/edge.js +7 -7
  57. package/dist/git/client.cjs +16 -2
  58. package/dist/git/client.cjs.map +1 -1
  59. package/dist/git/client.js +5 -5
  60. package/dist/git/index.cjs +16 -2
  61. package/dist/git/index.cjs.map +1 -1
  62. package/dist/git/index.js +5 -5
  63. package/dist/index.cjs +16 -2
  64. package/dist/index.cjs.map +1 -1
  65. package/dist/index.js +37 -37
  66. package/dist/modelrouter/core.cjs +16 -2
  67. package/dist/modelrouter/core.cjs.map +1 -1
  68. package/dist/modelrouter/core.js +5 -5
  69. package/dist/modelrouter/index.cjs +16 -2
  70. package/dist/modelrouter/index.cjs.map +1 -1
  71. package/dist/modelrouter/index.js +5 -5
  72. package/dist/otel-Dk8kdhmZ.d.ts +42 -0
  73. package/dist/subagents/anthropic.cjs +16 -2
  74. package/dist/subagents/anthropic.cjs.map +1 -1
  75. package/dist/subagents/anthropic.js +11 -11
  76. package/dist/subagents/vercel.cjs +16 -2
  77. package/dist/subagents/vercel.cjs.map +1 -1
  78. package/dist/subagents/vercel.js +11 -11
  79. package/dist/tools/browser/anthropic.cjs +16 -2
  80. package/dist/tools/browser/anthropic.cjs.map +1 -1
  81. package/dist/tools/browser/anthropic.js +8 -8
  82. package/dist/tools/browser/core.cjs +16 -2
  83. package/dist/tools/browser/core.cjs.map +1 -1
  84. package/dist/tools/browser/core.js +7 -7
  85. package/dist/tools/browser/index.cjs +16 -2
  86. package/dist/tools/browser/index.cjs.map +1 -1
  87. package/dist/tools/browser/index.js +15 -15
  88. package/dist/tools/browser/openai.cjs +16 -2
  89. package/dist/tools/browser/openai.cjs.map +1 -1
  90. package/dist/tools/browser/openai.js +8 -8
  91. package/dist/tools/browser/profiles/core.cjs +16 -2
  92. package/dist/tools/browser/profiles/core.cjs.map +1 -1
  93. package/dist/tools/browser/profiles/core.js +3 -3
  94. package/dist/tools/browser/profiles/index.cjs +16 -2
  95. package/dist/tools/browser/profiles/index.cjs.map +1 -1
  96. package/dist/tools/browser/profiles/index.js +3 -3
  97. package/dist/tools/browser/vercel.cjs +16 -2
  98. package/dist/tools/browser/vercel.cjs.map +1 -1
  99. package/dist/tools/browser/vercel.js +8 -8
  100. package/dist/tools/codebase_search/anthropic.cjs +16 -2
  101. package/dist/tools/codebase_search/anthropic.cjs.map +1 -1
  102. package/dist/tools/codebase_search/anthropic.js +6 -6
  103. package/dist/tools/codebase_search/core.cjs +16 -2
  104. package/dist/tools/codebase_search/core.cjs.map +1 -1
  105. package/dist/tools/codebase_search/core.js +5 -5
  106. package/dist/tools/codebase_search/index.cjs +16 -2
  107. package/dist/tools/codebase_search/index.cjs.map +1 -1
  108. package/dist/tools/codebase_search/index.js +10 -10
  109. package/dist/tools/codebase_search/openai.cjs +16 -2
  110. package/dist/tools/codebase_search/openai.cjs.map +1 -1
  111. package/dist/tools/codebase_search/openai.js +6 -6
  112. package/dist/tools/codebase_search/vercel.cjs +16 -2
  113. package/dist/tools/codebase_search/vercel.cjs.map +1 -1
  114. package/dist/tools/codebase_search/vercel.js +6 -6
  115. package/dist/tools/compact/core.cjs +16 -2
  116. package/dist/tools/compact/core.cjs.map +1 -1
  117. package/dist/tools/compact/core.js +5 -5
  118. package/dist/tools/compact/index.cjs +16 -2
  119. package/dist/tools/compact/index.cjs.map +1 -1
  120. package/dist/tools/compact/index.js +6 -6
  121. package/dist/tools/fastapply/anthropic.cjs +16 -2
  122. package/dist/tools/fastapply/anthropic.cjs.map +1 -1
  123. package/dist/tools/fastapply/anthropic.js +7 -7
  124. package/dist/tools/fastapply/apply.cjs +16 -2
  125. package/dist/tools/fastapply/apply.cjs.map +1 -1
  126. package/dist/tools/fastapply/apply.js +2 -2
  127. package/dist/tools/fastapply/core.cjs +16 -2
  128. package/dist/tools/fastapply/core.cjs.map +1 -1
  129. package/dist/tools/fastapply/core.js +6 -6
  130. package/dist/tools/fastapply/index.cjs +16 -2
  131. package/dist/tools/fastapply/index.cjs.map +1 -1
  132. package/dist/tools/fastapply/index.js +11 -11
  133. package/dist/tools/fastapply/openai.cjs +16 -2
  134. package/dist/tools/fastapply/openai.cjs.map +1 -1
  135. package/dist/tools/fastapply/openai.js +7 -7
  136. package/dist/tools/fastapply/vercel.cjs +16 -2
  137. package/dist/tools/fastapply/vercel.cjs.map +1 -1
  138. package/dist/tools/fastapply/vercel.js +7 -7
  139. package/dist/tools/index.cjs +16 -2
  140. package/dist/tools/index.cjs.map +1 -1
  141. package/dist/tools/index.js +11 -11
  142. package/dist/tools/reflex/core.cjs +16 -2
  143. package/dist/tools/reflex/core.cjs.map +1 -1
  144. package/dist/tools/reflex/core.js +5 -5
  145. package/dist/tools/reflex/index.cjs +16 -2
  146. package/dist/tools/reflex/index.cjs.map +1 -1
  147. package/dist/tools/reflex/index.js +5 -5
  148. package/dist/tools/utils/resilience.cjs +16 -2
  149. package/dist/tools/utils/resilience.cjs.map +1 -1
  150. package/dist/tools/utils/resilience.js +2 -2
  151. package/dist/tools/warp_grep/agent/runner.cjs +16 -2
  152. package/dist/tools/warp_grep/agent/runner.cjs.map +1 -1
  153. package/dist/tools/warp_grep/agent/runner.js +3 -3
  154. package/dist/tools/warp_grep/anthropic.cjs +16 -2
  155. package/dist/tools/warp_grep/anthropic.cjs.map +1 -1
  156. package/dist/tools/warp_grep/anthropic.js +11 -11
  157. package/dist/tools/warp_grep/client.cjs +16 -2
  158. package/dist/tools/warp_grep/client.cjs.map +1 -1
  159. package/dist/tools/warp_grep/client.js +10 -10
  160. package/dist/tools/warp_grep/gemini.cjs +16 -2
  161. package/dist/tools/warp_grep/gemini.cjs.map +1 -1
  162. package/dist/tools/warp_grep/gemini.js +10 -10
  163. package/dist/tools/warp_grep/harness.js +6 -6
  164. package/dist/tools/warp_grep/index.cjs +16 -2
  165. package/dist/tools/warp_grep/index.cjs.map +1 -1
  166. package/dist/tools/warp_grep/index.js +16 -16
  167. package/dist/tools/warp_grep/openai.cjs +16 -2
  168. package/dist/tools/warp_grep/openai.cjs.map +1 -1
  169. package/dist/tools/warp_grep/openai.js +11 -11
  170. package/dist/tools/warp_grep/providers/local.js +2 -2
  171. package/dist/tools/warp_grep/vercel.cjs +16 -2
  172. package/dist/tools/warp_grep/vercel.cjs.map +1 -1
  173. package/dist/tools/warp_grep/vercel.js +11 -11
  174. package/dist/tracing/core.cjs +355 -0
  175. package/dist/tracing/core.cjs.map +1 -0
  176. package/dist/tracing/core.d.ts +50 -0
  177. package/dist/tracing/core.js +13 -0
  178. package/dist/tracing/core.js.map +1 -0
  179. package/dist/tracing/index.cjs +367 -0
  180. package/dist/tracing/index.cjs.map +1 -0
  181. package/dist/tracing/index.d.ts +5 -0
  182. package/dist/tracing/index.js +18 -0
  183. package/dist/tracing/index.js.map +1 -0
  184. package/dist/tracing/interaction.cjs +192 -0
  185. package/dist/tracing/interaction.cjs.map +1 -0
  186. package/dist/tracing/interaction.d.ts +31 -0
  187. package/dist/tracing/interaction.js +9 -0
  188. package/dist/tracing/interaction.js.map +1 -0
  189. package/dist/tracing/otel.cjs +56 -0
  190. package/dist/tracing/otel.cjs.map +1 -0
  191. package/dist/tracing/otel.d.ts +2 -0
  192. package/dist/tracing/otel.js +10 -0
  193. package/dist/tracing/otel.js.map +1 -0
  194. package/dist/tracing/signals.cjs +59 -0
  195. package/dist/tracing/signals.cjs.map +1 -0
  196. package/dist/tracing/signals.d.ts +13 -0
  197. package/dist/tracing/signals.js +8 -0
  198. package/dist/tracing/signals.js.map +1 -0
  199. package/dist/tracing/types.cjs +19 -0
  200. package/dist/tracing/types.cjs.map +1 -0
  201. package/dist/tracing/types.d.ts +136 -0
  202. package/dist/tracing/types.js +1 -0
  203. package/dist/tracing/types.js.map +1 -0
  204. package/dist/version.cjs +16 -2
  205. package/dist/version.cjs.map +1 -1
  206. package/dist/version.js +1 -1
  207. package/package.json +16 -2
  208. package/dist/chunk-73DQQMGR.js.map +0 -1
  209. /package/dist/{chunk-C3V5FHZI.js.map → chunk-2SHUV3AB.js.map} +0 -0
  210. /package/dist/{chunk-JXJBF6CV.js.map → chunk-2WC7TSEL.js.map} +0 -0
  211. /package/dist/{chunk-5RTWSAZ6.js.map → chunk-3TWDAXXO.js.map} +0 -0
  212. /package/dist/{chunk-S5R4H5HM.js.map → chunk-4MNI34G7.js.map} +0 -0
  213. /package/dist/{chunk-SM3OQZRS.js.map → chunk-4NTL6M55.js.map} +0 -0
  214. /package/dist/{chunk-FN4ADWFQ.js.map → chunk-5HNJNDDQ.js.map} +0 -0
  215. /package/dist/{chunk-GESRH23M.js.map → chunk-AWBZNBAD.js.map} +0 -0
  216. /package/dist/{chunk-33ZRF6X3.js.map → chunk-BQ52QYAU.js.map} +0 -0
  217. /package/dist/{chunk-QE6JHRVD.js.map → chunk-CBIXYMY2.js.map} +0 -0
  218. /package/dist/{chunk-577P2AXE.js.map → chunk-D6C7K7T7.js.map} +0 -0
  219. /package/dist/{chunk-ZFOR3LI4.js.map → chunk-DB4C63ND.js.map} +0 -0
  220. /package/dist/{chunk-CEZQSARX.js.map → chunk-EYXMABTT.js.map} +0 -0
  221. /package/dist/{chunk-W6AGNJ5O.js.map → chunk-FGSPSUZA.js.map} +0 -0
  222. /package/dist/{chunk-MQTMT4OR.js.map → chunk-GFPOP6ZY.js.map} +0 -0
  223. /package/dist/{chunk-TW3XQET2.js.map → chunk-GGGHLBME.js.map} +0 -0
  224. /package/dist/{chunk-EJ2CQO4V.js.map → chunk-GIQZQM3I.js.map} +0 -0
  225. /package/dist/{chunk-3I4LCNWJ.js.map → chunk-GMIXIA7W.js.map} +0 -0
  226. /package/dist/{chunk-Z3KRXUNG.js.map → chunk-HBE26KJG.js.map} +0 -0
  227. /package/dist/{chunk-I4FCFIBU.js.map → chunk-I5PAAUJW.js.map} +0 -0
  228. /package/dist/{chunk-QCFHQPHC.js.map → chunk-ICA7P5TD.js.map} +0 -0
  229. /package/dist/{chunk-RXCHMNCY.js.map → chunk-ICFZAOSH.js.map} +0 -0
  230. /package/dist/{chunk-ACWLQFYS.js.map → chunk-IRBMNRZC.js.map} +0 -0
  231. /package/dist/{chunk-TS56XYWB.js.map → chunk-JOBCDCRP.js.map} +0 -0
  232. /package/dist/{chunk-VLZ6PNAD.js.map → chunk-LN7GNFET.js.map} +0 -0
  233. /package/dist/{chunk-AZOSA7VT.js.map → chunk-LPXMSR5E.js.map} +0 -0
  234. /package/dist/{chunk-3GNXTHHB.js.map → chunk-TNNLID5P.js.map} +0 -0
  235. /package/dist/{chunk-NBKL7VWX.js.map → chunk-TPGWVT3F.js.map} +0 -0
  236. /package/dist/{chunk-7EUJ2AKS.js.map → chunk-TVZ5QVUV.js.map} +0 -0
  237. /package/dist/{chunk-CV7SLK6R.js.map → chunk-TY2GIOLP.js.map} +0 -0
  238. /package/dist/{chunk-QE3SPHIM.js.map → chunk-XRYUQSUC.js.map} +0 -0
  239. /package/dist/{chunk-YGNPVOUO.js.map → chunk-Y5AZ6FOQ.js.map} +0 -0
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-2HMEZZKK.js";
5
5
  import {
6
6
  executeBrowserTask
7
- } from "./chunk-I4FCFIBU.js";
7
+ } from "./chunk-I5PAAUJW.js";
8
8
  import {
9
9
  __export
10
10
  } from "./chunk-PZ5AY32C.js";
@@ -93,4 +93,4 @@ export {
93
93
  createBrowserTool,
94
94
  openai_exports
95
95
  };
96
- //# sourceMappingURL=chunk-C3V5FHZI.js.map
96
+ //# sourceMappingURL=chunk-2SHUV3AB.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SDK_VERSION
3
- } from "./chunk-73DQQMGR.js";
3
+ } from "./chunk-OHF5K3HA.js";
4
4
 
5
5
  // tools/utils/resilience.ts
6
6
  var DEFAULT_RETRY_CONFIG = {
@@ -91,4 +91,4 @@ export {
91
91
  withTimeout,
92
92
  MorphError
93
93
  };
94
- //# sourceMappingURL=chunk-JXJBF6CV.js.map
94
+ //# sourceMappingURL=chunk-2WC7TSEL.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  WarpGrepClient,
3
3
  formatResult
4
- } from "./chunk-ACWLQFYS.js";
4
+ } from "./chunk-IRBMNRZC.js";
5
5
  import {
6
6
  CODEBASE_SEARCH_TOOL,
7
7
  SEND_MESSAGE_TOOL,
@@ -285,4 +285,4 @@ function deduplicateContexts(contexts) {
285
285
  export {
286
286
  createExploreSubagent
287
287
  };
288
- //# sourceMappingURL=chunk-5RTWSAZ6.js.map
288
+ //# sourceMappingURL=chunk-3TWDAXXO.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  MorphAPIClient
3
- } from "./chunk-QE3SPHIM.js";
3
+ } from "./chunk-XRYUQSUC.js";
4
4
  import {
5
5
  logger
6
6
  } from "./chunk-F3NCFNUX.js";
@@ -139,4 +139,4 @@ export {
139
139
  FastApplyClient,
140
140
  executeEditFile
141
141
  };
142
- //# sourceMappingURL=chunk-S5R4H5HM.js.map
142
+ //# sourceMappingURL=chunk-4MNI34G7.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  MorphAPIClient
3
- } from "./chunk-QE3SPHIM.js";
3
+ } from "./chunk-XRYUQSUC.js";
4
4
  import {
5
5
  logger
6
6
  } from "./chunk-F3NCFNUX.js";
7
7
  import {
8
8
  MorphError
9
- } from "./chunk-JXJBF6CV.js";
9
+ } from "./chunk-2WC7TSEL.js";
10
10
  import {
11
11
  APIResource
12
12
  } from "./chunk-LKFZBBTD.js";
@@ -139,4 +139,4 @@ export {
139
139
  GeminiRouter,
140
140
  RawRouter
141
141
  };
142
- //# sourceMappingURL=chunk-SM3OQZRS.js.map
142
+ //# sourceMappingURL=chunk-4NTL6M55.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  MorphAPIClient
3
- } from "./chunk-QE3SPHIM.js";
3
+ } from "./chunk-XRYUQSUC.js";
4
4
  import {
5
5
  APIResource
6
6
  } from "./chunk-LKFZBBTD.js";
@@ -558,4 +558,4 @@ var MorphGit = class extends APIResource {
558
558
  export {
559
559
  MorphGit
560
560
  };
561
- //# sourceMappingURL=chunk-FN4ADWFQ.js.map
561
+ //# sourceMappingURL=chunk-5HNJNDDQ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  executeEditFile
3
- } from "./chunk-S5R4H5HM.js";
3
+ } from "./chunk-4MNI34G7.js";
4
4
  import {
5
5
  EDIT_FILE_SYSTEM_PROMPT,
6
6
  EDIT_FILE_TOOL_DESCRIPTION
@@ -91,4 +91,4 @@ export {
91
91
  openai_default,
92
92
  openai_exports
93
93
  };
94
- //# sourceMappingURL=chunk-GESRH23M.js.map
94
+ //# sourceMappingURL=chunk-AWBZNBAD.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-YQMPVJ2L.js";
5
5
  import {
6
6
  executeCodebaseSearch
7
- } from "./chunk-W6AGNJ5O.js";
7
+ } from "./chunk-FGSPSUZA.js";
8
8
 
9
9
  // tools/codebase_search/openai.ts
10
10
  var codebaseSearchTool = {
@@ -125,4 +125,4 @@ export {
125
125
  getSystemPrompt,
126
126
  openai_default
127
127
  };
128
- //# sourceMappingURL=chunk-33ZRF6X3.js.map
128
+ //# sourceMappingURL=chunk-BQ52QYAU.js.map
@@ -0,0 +1,42 @@
1
+ import {
2
+ __export
3
+ } from "./chunk-PZ5AY32C.js";
4
+
5
+ // tracing/otel.ts
6
+ var otel_exports = {};
7
+ __export(otel_exports, {
8
+ default: () => otel_default,
9
+ metadata: () => metadata
10
+ });
11
+ var RESERVED_KEYS = /* @__PURE__ */ new Set(["user_id", "convo_id", "event_id", "event_name"]);
12
+ function uuid() {
13
+ const c = globalThis.crypto;
14
+ if (c?.randomUUID) return c.randomUUID();
15
+ return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (ch) => {
16
+ const r = Math.random() * 16 | 0;
17
+ const v = ch === "x" ? r : r & 3 | 8;
18
+ return v.toString(16);
19
+ });
20
+ }
21
+ function metadata(opts) {
22
+ const result = {
23
+ user_id: opts.userId,
24
+ event_id: opts.eventId ?? uuid()
25
+ };
26
+ if (opts.convoId) result.convo_id = opts.convoId;
27
+ if (opts.eventName) result.event_name = opts.eventName;
28
+ if (opts.properties) {
29
+ for (const [key, value] of Object.entries(opts.properties)) {
30
+ if (!RESERVED_KEYS.has(key)) result[key] = value;
31
+ }
32
+ }
33
+ return result;
34
+ }
35
+ var otel_default = { metadata };
36
+
37
+ export {
38
+ metadata,
39
+ otel_default,
40
+ otel_exports
41
+ };
42
+ //# sourceMappingURL=chunk-CABQ652L.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../tracing/otel.ts"],"sourcesContent":["/**\n * Morph Tracing — Vercel AI SDK helper.\n *\n * The Vercel AI SDK emits its own OpenTelemetry spans when you pass\n * `experimental_telemetry`. There is nothing to monkey-patch; instead you tag\n * each call with `metadata()` so Morph can attribute the resulting spans to a\n * user/conversation/event.\n *\n * @example\n * ```ts\n * import { generateText } from \"ai\";\n * import { metadata } from \"morphsdk/tracing/otel\";\n *\n * const res = await generateText({\n * model: openai(\"gpt-4o\"),\n * prompt: \"Hello!\",\n * experimental_telemetry: {\n * isEnabled: true,\n * metadata: metadata({ userId: \"user-123\", convoId: \"convo-456\" }),\n * },\n * });\n * ```\n */\nimport type { MetadataOptions } from './types.js';\n\n/**\n * Reserved metadata keys Morph owns. Custom `properties` can't overwrite these,\n * so attribution (user_id / convo_id / event_id) stays intact.\n *\n * The AI SDK stores metadata as `ai.telemetry.metadata.<key>`; Traceloop's span\n * processor copies them to `traceloop.association.properties.<key>`, which is\n * what ClickHouse views read. Use snake_case names (user_id, convo_id, …).\n */\nconst RESERVED_KEYS = new Set(['user_id', 'convo_id', 'event_id', 'event_name']);\n\nfunction uuid(): string {\n // Node 18+ and modern runtimes expose globalThis.crypto.randomUUID.\n const c = (globalThis as { crypto?: { randomUUID?: () => string } }).crypto;\n if (c?.randomUUID) return c.randomUUID();\n // Fallback: RFC4122-ish without crypto.\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (ch) => {\n const r = (Math.random() * 16) | 0;\n const v = ch === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * Build the metadata object for the Vercel AI SDK's\n * `experimental_telemetry.metadata`. The values are propagated to every span the\n * AI SDK creates for that call. Generate a fresh `eventId` per call for grouping.\n */\nexport function metadata(opts: MetadataOptions): Record<string, string> {\n const result: Record<string, string> = {\n user_id: opts.userId,\n event_id: opts.eventId ?? uuid(),\n };\n if (opts.convoId) result.convo_id = opts.convoId;\n if (opts.eventName) result.event_name = opts.eventName;\n if (opts.properties) {\n for (const [key, value] of Object.entries(opts.properties)) {\n if (!RESERVED_KEYS.has(key)) result[key] = value;\n }\n }\n return result;\n}\n\nexport default { metadata };\n"],"mappings":";;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAiCA,IAAM,gBAAgB,oBAAI,IAAI,CAAC,WAAW,YAAY,YAAY,YAAY,CAAC;AAE/E,SAAS,OAAe;AAEtB,QAAM,IAAK,WAA0D;AACrE,MAAI,GAAG,WAAY,QAAO,EAAE,WAAW;AAEvC,SAAO,uCAAuC,QAAQ,SAAS,CAAC,OAAO;AACrE,UAAM,IAAK,KAAK,OAAO,IAAI,KAAM;AACjC,UAAM,IAAI,OAAO,MAAM,IAAK,IAAI,IAAO;AACvC,WAAO,EAAE,SAAS,EAAE;AAAA,EACtB,CAAC;AACH;AAOO,SAAS,SAAS,MAA+C;AACtE,QAAM,SAAiC;AAAA,IACrC,SAAS,KAAK;AAAA,IACd,UAAU,KAAK,WAAW,KAAK;AAAA,EACjC;AACA,MAAI,KAAK,QAAS,QAAO,WAAW,KAAK;AACzC,MAAI,KAAK,UAAW,QAAO,aAAa,KAAK;AAC7C,MAAI,KAAK,YAAY;AACnB,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,UAAU,GAAG;AAC1D,UAAI,CAAC,cAAc,IAAI,GAAG,EAAG,QAAO,GAAG,IAAI;AAAA,IAC7C;AAAA,EACF;AACA,SAAO;AACT;AAEA,IAAO,eAAQ,EAAE,SAAS;","names":[]}
@@ -8,7 +8,7 @@ import {
8
8
  executeGitHubReadFile,
9
9
  executeToolCall,
10
10
  executeToolCallStreaming
11
- } from "./chunk-ACWLQFYS.js";
11
+ } from "./chunk-IRBMNRZC.js";
12
12
 
13
13
  // tools/warp_grep/vercel.ts
14
14
  import { tool } from "ai";
@@ -115,4 +115,4 @@ export {
115
115
  createGitHubReadFileTool,
116
116
  vercel_default
117
117
  };
118
- //# sourceMappingURL=chunk-QE6JHRVD.js.map
118
+ //# sourceMappingURL=chunk-CBIXYMY2.js.map
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-2VERUKO2.js";
13
13
  import {
14
14
  fetchWithRetry
15
- } from "./chunk-JXJBF6CV.js";
15
+ } from "./chunk-2WC7TSEL.js";
16
16
 
17
17
  // tools/browser/profiles/core.ts
18
18
  var DEFAULT_API_URL = process.env.MORPH_ENVIRONMENT === "DEV" ? "http://localhost:8000" : "https://browser.morphllm.com";
@@ -386,4 +386,4 @@ export {
386
386
  listRepos,
387
387
  getProfileState
388
388
  };
389
- //# sourceMappingURL=chunk-577P2AXE.js.map
389
+ //# sourceMappingURL=chunk-D6C7K7T7.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  MorphError
3
- } from "./chunk-JXJBF6CV.js";
3
+ } from "./chunk-2WC7TSEL.js";
4
4
 
5
5
  // core/error.ts
6
6
  async function toMorphError(response) {
@@ -21,4 +21,4 @@ async function toMorphError(response) {
21
21
  export {
22
22
  toMorphError
23
23
  };
24
- //# sourceMappingURL=chunk-ZFOR3LI4.js.map
24
+ //# sourceMappingURL=chunk-DB4C63ND.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  executeEditFile
3
- } from "./chunk-S5R4H5HM.js";
3
+ } from "./chunk-4MNI34G7.js";
4
4
  import {
5
5
  EDIT_FILE_SYSTEM_PROMPT,
6
6
  EDIT_FILE_TOOL_DESCRIPTION
@@ -79,4 +79,4 @@ export {
79
79
  getSystemPrompt,
80
80
  anthropic_exports
81
81
  };
82
- //# sourceMappingURL=chunk-CEZQSARX.js.map
82
+ //# sourceMappingURL=chunk-EYXMABTT.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  MorphAPIClient
3
- } from "./chunk-QE3SPHIM.js";
3
+ } from "./chunk-XRYUQSUC.js";
4
4
  import {
5
5
  logger
6
6
  } from "./chunk-F3NCFNUX.js";
7
7
  import {
8
8
  MorphError
9
- } from "./chunk-JXJBF6CV.js";
9
+ } from "./chunk-2WC7TSEL.js";
10
10
  import {
11
11
  APIResource
12
12
  } from "./chunk-LKFZBBTD.js";
@@ -94,4 +94,4 @@ export {
94
94
  CodebaseSearchClient,
95
95
  executeCodebaseSearch
96
96
  };
97
- //# sourceMappingURL=chunk-W6AGNJ5O.js.map
97
+ //# sourceMappingURL=chunk-FGSPSUZA.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-YQMPVJ2L.js";
5
5
  import {
6
6
  executeCodebaseSearch
7
- } from "./chunk-W6AGNJ5O.js";
7
+ } from "./chunk-FGSPSUZA.js";
8
8
 
9
9
  // tools/codebase_search/anthropic.ts
10
10
  function createCodebaseSearchTool(config) {
@@ -80,4 +80,4 @@ function formatResult(result) {
80
80
  export {
81
81
  createCodebaseSearchTool
82
82
  };
83
- //# sourceMappingURL=chunk-MQTMT4OR.js.map
83
+ //# sourceMappingURL=chunk-GFPOP6ZY.js.map
@@ -14,7 +14,7 @@ import {
14
14
  executeToolCall,
15
15
  formatGitHubReadFileResult,
16
16
  formatResult
17
- } from "./chunk-ACWLQFYS.js";
17
+ } from "./chunk-IRBMNRZC.js";
18
18
 
19
19
  // tools/warp_grep/openai.ts
20
20
  var TOOL_PARAMETERS = {
@@ -104,4 +104,4 @@ export {
104
104
  createGitHubReadFileTool,
105
105
  openai_default
106
106
  };
107
- //# sourceMappingURL=chunk-TW3XQET2.js.map
107
+ //# sourceMappingURL=chunk-GGGHLBME.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CompactClient
3
- } from "./chunk-TS56XYWB.js";
3
+ } from "./chunk-JOBCDCRP.js";
4
4
 
5
5
  // tools/compact/utils.ts
6
6
  async function compactFileContexts(files, query, apiKey, apiUrl, maxTokens = 1e4, maxConcurrency = 3) {
@@ -50,4 +50,4 @@ async function compactFileContexts(files, query, apiKey, apiUrl, maxTokens = 1e4
50
50
  export {
51
51
  compactFileContexts
52
52
  };
53
- //# sourceMappingURL=chunk-EJ2CQO4V.js.map
53
+ //# sourceMappingURL=chunk-GIQZQM3I.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  WarpGrepClient,
3
3
  formatResult
4
- } from "./chunk-ACWLQFYS.js";
4
+ } from "./chunk-IRBMNRZC.js";
5
5
  import {
6
6
  CODEBASE_SEARCH_TOOL,
7
7
  SEND_MESSAGE_TOOL,
@@ -262,4 +262,4 @@ function deduplicateContexts(contexts) {
262
262
  export {
263
263
  createExploreSubagent
264
264
  };
265
- //# sourceMappingURL=chunk-3I4LCNWJ.js.map
265
+ //# sourceMappingURL=chunk-GMIXIA7W.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  executeEditFile
3
- } from "./chunk-S5R4H5HM.js";
3
+ } from "./chunk-4MNI34G7.js";
4
4
  import {
5
5
  EDIT_FILE_SYSTEM_PROMPT,
6
6
  EDIT_FILE_TOOL_DESCRIPTION
@@ -86,4 +86,4 @@ export {
86
86
  vercel_default,
87
87
  vercel_exports
88
88
  };
89
- //# sourceMappingURL=chunk-Z3KRXUNG.js.map
89
+ //# sourceMappingURL=chunk-HBE26KJG.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ProfilesClient
3
- } from "./chunk-577P2AXE.js";
3
+ } from "./chunk-D6C7K7T7.js";
4
4
  import {
5
5
  buildEmbedCode,
6
6
  buildLiveIframe,
@@ -9,14 +9,14 @@ import {
9
9
  } from "./chunk-YTYCHRQ2.js";
10
10
  import {
11
11
  MorphAPIClient
12
- } from "./chunk-QE3SPHIM.js";
12
+ } from "./chunk-XRYUQSUC.js";
13
13
  import {
14
14
  logger
15
15
  } from "./chunk-F3NCFNUX.js";
16
16
  import {
17
17
  fetchWithRetry,
18
18
  withTimeout
19
- } from "./chunk-JXJBF6CV.js";
19
+ } from "./chunk-2WC7TSEL.js";
20
20
  import {
21
21
  APIResource
22
22
  } from "./chunk-LKFZBBTD.js";
@@ -619,4 +619,4 @@ export {
619
619
  getWebp,
620
620
  checkHealth
621
621
  };
622
- //# sourceMappingURL=chunk-I4FCFIBU.js.map
622
+ //# sourceMappingURL=chunk-I5PAAUJW.js.map
@@ -9,21 +9,21 @@ import {
9
9
  toolListDirectory,
10
10
  toolRead
11
11
  } from "./chunk-IA5K2HTC.js";
12
+ import {
13
+ AGENT_CONFIG,
14
+ DEFAULT_MODEL
15
+ } from "./chunk-CCJK3HTG.js";
12
16
  import {
13
17
  extractPathFromCommand,
14
18
  parseFinishFiles,
15
19
  parseReadLines
16
20
  } from "./chunk-FBRNUWEB.js";
17
- import {
18
- AGENT_CONFIG,
19
- DEFAULT_MODEL
20
- } from "./chunk-CCJK3HTG.js";
21
21
  import {
22
22
  logger
23
23
  } from "./chunk-F3NCFNUX.js";
24
24
  import {
25
25
  SDK_VERSION
26
- } from "./chunk-73DQQMGR.js";
26
+ } from "./chunk-OHF5K3HA.js";
27
27
 
28
28
  // tools/warp_grep/agent/runner.ts
29
29
  import OpenAI from "openai";
@@ -425,4 +425,4 @@ export {
425
425
  runWarpGrepStreaming,
426
426
  runWarpGrep
427
427
  };
428
- //# sourceMappingURL=chunk-QCFHQPHC.js.map
428
+ //# sourceMappingURL=chunk-ICA7P5TD.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-2HMEZZKK.js";
4
4
  import {
5
5
  executeBrowserTask
6
- } from "./chunk-I4FCFIBU.js";
6
+ } from "./chunk-I5PAAUJW.js";
7
7
  import {
8
8
  __export
9
9
  } from "./chunk-PZ5AY32C.js";
@@ -54,4 +54,4 @@ export {
54
54
  browserTool,
55
55
  vercel_exports
56
56
  };
57
- //# sourceMappingURL=chunk-RXCHMNCY.js.map
57
+ //# sourceMappingURL=chunk-ICFZAOSH.js.map
@@ -1,22 +1,22 @@
1
- import {
2
- parseGitHubUrl
3
- } from "./chunk-63VHBANJ.js";
4
- import {
5
- runWarpGrep,
6
- runWarpGrepStreaming
7
- } from "./chunk-QCFHQPHC.js";
8
1
  import {
9
2
  createCodeStorageHttpCommands
10
3
  } from "./chunk-GVGJIXV2.js";
11
4
  import {
12
5
  RemoteCommandsProvider
13
6
  } from "./chunk-A4D2CIIT.js";
7
+ import {
8
+ parseGitHubUrl
9
+ } from "./chunk-63VHBANJ.js";
10
+ import {
11
+ runWarpGrep,
12
+ runWarpGrepStreaming
13
+ } from "./chunk-ICA7P5TD.js";
14
14
  import {
15
15
  compactFileContexts
16
- } from "./chunk-EJ2CQO4V.js";
16
+ } from "./chunk-GIQZQM3I.js";
17
17
  import {
18
18
  MorphAPIClient
19
- } from "./chunk-QE3SPHIM.js";
19
+ } from "./chunk-XRYUQSUC.js";
20
20
  import {
21
21
  logger
22
22
  } from "./chunk-F3NCFNUX.js";
@@ -321,4 +321,4 @@ export {
321
321
  formatGitHubReadFileResult,
322
322
  formatResult
323
323
  };
324
- //# sourceMappingURL=chunk-ACWLQFYS.js.map
324
+ //# sourceMappingURL=chunk-IRBMNRZC.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  MorphAPIClient
3
- } from "./chunk-QE3SPHIM.js";
3
+ } from "./chunk-XRYUQSUC.js";
4
4
  import {
5
5
  MorphError
6
- } from "./chunk-JXJBF6CV.js";
6
+ } from "./chunk-2WC7TSEL.js";
7
7
  import {
8
8
  APIResource
9
9
  } from "./chunk-LKFZBBTD.js";
@@ -75,4 +75,4 @@ var CompactClient = class extends APIResource {
75
75
  export {
76
76
  CompactClient
77
77
  };
78
- //# sourceMappingURL=chunk-TS56XYWB.js.map
78
+ //# sourceMappingURL=chunk-JOBCDCRP.js.map
@@ -0,0 +1,143 @@
1
+ import {
2
+ shipSignal
3
+ } from "./chunk-PICGNBUE.js";
4
+ import {
5
+ createInteractionApi
6
+ } from "./chunk-ZCEDWXQV.js";
7
+ import {
8
+ metadata
9
+ } from "./chunk-CABQ652L.js";
10
+
11
+ // tracing/core.ts
12
+ import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
13
+ import * as traceloop from "@traceloop/node-server-sdk";
14
+ var DEFAULT_BASE_URL = "https://api.morphllm.com";
15
+ function log(debug, ...args) {
16
+ if (debug) console.log("[morph-tracing]", ...args);
17
+ }
18
+ var MorphTracing = class {
19
+ cfg;
20
+ active = /* @__PURE__ */ new Map();
21
+ enabled;
22
+ constructor(config = {}) {
23
+ const debug = config.debug ?? process.env.MORPH_TRACING_DEBUG === "1";
24
+ const apiKey = config.apiKey ?? process.env.MORPH_API_KEY ?? "";
25
+ const baseUrlRaw = config.baseUrl ?? process.env.MORPH_TRACES_URL ?? DEFAULT_BASE_URL;
26
+ const baseUrl = baseUrlRaw.replace(/\/+$/, "");
27
+ const isProd = process.env.NODE_ENV === "production";
28
+ this.cfg = {
29
+ apiKey,
30
+ baseUrl,
31
+ signalsEndpoint: `${baseUrl}/v1/signals`,
32
+ appName: config.appName ?? process.env.npm_package_name ?? "morph-app",
33
+ disableBatching: config.disableBatching ?? !isProd,
34
+ traceContent: config.traceContent ?? true,
35
+ debug
36
+ };
37
+ if (config.disabled) {
38
+ log(debug, "disabled \u2014 no tracing initialized");
39
+ this.enabled = false;
40
+ return;
41
+ }
42
+ if (!apiKey) {
43
+ console.warn(
44
+ "[morph-tracing] No API key (set MORPH_API_KEY or pass { apiKey }). Tracing disabled."
45
+ );
46
+ this.enabled = false;
47
+ return;
48
+ }
49
+ this.enabled = true;
50
+ if (config.useExternalOtel) {
51
+ traceloop.initialize({
52
+ baseUrl,
53
+ apiKey,
54
+ appName: this.cfg.appName,
55
+ tracingEnabled: false,
56
+ traceContent: this.cfg.traceContent,
57
+ silenceInitializationMessage: true
58
+ });
59
+ log(debug, "external OTEL mode \u2014 add createSpanProcessor() to your NodeSDK");
60
+ return;
61
+ }
62
+ const exporter = new OTLPTraceExporter({
63
+ url: `${baseUrl}/v1/traces`,
64
+ headers: { Authorization: `Bearer ${apiKey}`, ...config.headers }
65
+ });
66
+ traceloop.initialize({
67
+ baseUrl,
68
+ apiKey,
69
+ appName: this.cfg.appName,
70
+ exporter,
71
+ disableBatch: this.cfg.disableBatching,
72
+ traceContent: this.cfg.traceContent,
73
+ instrumentModules: config.instrumentModules,
74
+ tracingEnabled: true,
75
+ traceloopSyncEnabled: false,
76
+ silenceInitializationMessage: !debug
77
+ });
78
+ log(
79
+ debug,
80
+ `initialized \u2192 ${baseUrl}/v1/traces (batching ${this.cfg.disableBatching ? "off" : "on"})`
81
+ );
82
+ }
83
+ /** Begin a new traced interaction (a single user turn / agent run). */
84
+ begin(ctx) {
85
+ const interaction = createInteractionApi(ctx, this.cfg.traceContent);
86
+ this.active.set(interaction.getEventId(), interaction);
87
+ return interaction;
88
+ }
89
+ /** Look up an in-flight interaction by its eventId. */
90
+ getActiveInteraction(eventId) {
91
+ return this.active.get(eventId);
92
+ }
93
+ /**
94
+ * Non-interactive tracer for batch jobs where you only care about
95
+ * spans/token usage, not a user-facing interaction.
96
+ */
97
+ tracer(globalProperties = {}) {
98
+ return createInteractionApi(
99
+ { userId: globalProperties.userId ?? "batch", properties: globalProperties },
100
+ this.cfg.traceContent
101
+ );
102
+ }
103
+ /** Build Vercel AI SDK telemetry metadata (see `morphsdk/tracing/otel`). */
104
+ metadata(opts) {
105
+ return metadata(opts);
106
+ }
107
+ /** Attach a feedback/quality signal to an interaction by eventId. */
108
+ async trackSignal(signal) {
109
+ if (!this.enabled) return;
110
+ const signals = Array.isArray(signal) ? signal : [signal];
111
+ await shipSignal(this.cfg.signalsEndpoint, this.cfg.apiKey, signals, this.cfg.debug);
112
+ }
113
+ /** Span processor for `useExternalOtel: true` integrations. */
114
+ createSpanProcessor(options) {
115
+ return traceloop.createSpanProcessor({
116
+ apiKey: this.cfg.apiKey,
117
+ baseUrl: this.cfg.baseUrl,
118
+ ...options
119
+ });
120
+ }
121
+ /** Flush any batched spans immediately. Safe to call when idle. */
122
+ async forceFlush() {
123
+ if (!this.enabled) return;
124
+ try {
125
+ await traceloop.forceFlush();
126
+ } catch (err) {
127
+ log(this.cfg.debug, "forceFlush error (ignored):", err);
128
+ }
129
+ }
130
+ /** Flush and stop tracing. */
131
+ async shutdown() {
132
+ await this.forceFlush();
133
+ }
134
+ };
135
+ function morphTracing(config = {}) {
136
+ return new MorphTracing(config);
137
+ }
138
+
139
+ export {
140
+ MorphTracing,
141
+ morphTracing
142
+ };
143
+ //# sourceMappingURL=chunk-KRTQESOL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../tracing/core.ts"],"sourcesContent":["/**\n * Morph Tracing — core initialization.\n *\n * Thin Morph layer over OpenLLMetry / Traceloop. `morphTracing()` initializes\n * Traceloop with a JSON OTLP exporter pointed at Morph's ingest endpoint\n * (`${baseUrl}/v1/traces`, `Authorization: Bearer <apiKey>`) and returns a\n * `MorphTracing` handle for interactions, tools, and signals.\n *\n * We deliberately override Traceloop's default protobuf exporter with the\n * JSON-over-HTTP exporter so the ingest service can parse plain OTLP/JSON.\n */\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport * as traceloop from '@traceloop/node-server-sdk';\n\nimport { createInteractionApi, type Interaction, type Tracer } from './interaction.js';\nimport { metadata as buildMetadata } from './otel.js';\nimport { shipSignal } from './signals.js';\nimport type {\n MetadataOptions,\n MorphTracingConfig,\n SignalEvent,\n TraceContext,\n} from './types.js';\n\nconst DEFAULT_BASE_URL = 'https://api.morphllm.com';\n\nexport interface ResolvedConfig {\n apiKey: string;\n baseUrl: string;\n signalsEndpoint: string;\n appName: string;\n disableBatching: boolean;\n traceContent: boolean;\n debug: boolean;\n}\n\nfunction log(debug: boolean, ...args: unknown[]): void {\n if (debug) console.log('[morph-tracing]', ...args);\n}\n\n/**\n * Handle returned by {@link morphTracing}. Create interactions with `begin()`,\n * get a non-interactive `tracer()`, attach feedback with `trackSignal()`, and\n * flush/shutdown the exporter.\n */\nexport class MorphTracing {\n private readonly cfg: ResolvedConfig;\n private readonly active = new Map<string, Interaction>();\n readonly enabled: boolean;\n\n constructor(config: MorphTracingConfig = {}) {\n const debug = config.debug ?? process.env.MORPH_TRACING_DEBUG === '1';\n const apiKey = config.apiKey ?? process.env.MORPH_API_KEY ?? '';\n const baseUrlRaw =\n config.baseUrl ?? process.env.MORPH_TRACES_URL ?? DEFAULT_BASE_URL;\n const baseUrl = baseUrlRaw.replace(/\\/+$/, '');\n const isProd = process.env.NODE_ENV === 'production';\n\n this.cfg = {\n apiKey,\n baseUrl,\n signalsEndpoint: `${baseUrl}/v1/signals`,\n appName: config.appName ?? process.env.npm_package_name ?? 'morph-app',\n disableBatching: config.disableBatching ?? !isProd,\n traceContent: config.traceContent ?? true,\n debug,\n };\n\n if (config.disabled) {\n log(debug, 'disabled — no tracing initialized');\n this.enabled = false;\n return;\n }\n if (!apiKey) {\n console.warn(\n '[morph-tracing] No API key (set MORPH_API_KEY or pass { apiKey }). Tracing disabled.',\n );\n this.enabled = false;\n return;\n }\n\n this.enabled = true;\n if (config.useExternalOtel) {\n // Customer drives their own NodeSDK; just register config, no SDK start.\n traceloop.initialize({\n baseUrl,\n apiKey,\n appName: this.cfg.appName,\n tracingEnabled: false,\n traceContent: this.cfg.traceContent,\n silenceInitializationMessage: true,\n });\n log(debug, 'external OTEL mode — add createSpanProcessor() to your NodeSDK');\n return;\n }\n\n const exporter = new OTLPTraceExporter({\n url: `${baseUrl}/v1/traces`,\n headers: { Authorization: `Bearer ${apiKey}`, ...config.headers },\n });\n\n traceloop.initialize({\n baseUrl,\n apiKey,\n appName: this.cfg.appName,\n exporter,\n disableBatch: this.cfg.disableBatching,\n traceContent: this.cfg.traceContent,\n instrumentModules: config.instrumentModules as NonNullable<\n Parameters<typeof traceloop.initialize>[0]\n >['instrumentModules'],\n tracingEnabled: true,\n traceloopSyncEnabled: false,\n silenceInitializationMessage: !debug,\n });\n log(\n debug,\n `initialized → ${baseUrl}/v1/traces (batching ${this.cfg.disableBatching ? 'off' : 'on'})`,\n );\n }\n\n /** Begin a new traced interaction (a single user turn / agent run). */\n begin(ctx: TraceContext & { userId: string; event?: string }): Interaction {\n const interaction = createInteractionApi(ctx, this.cfg.traceContent);\n this.active.set(interaction.getEventId()!, interaction);\n return interaction;\n }\n\n /** Look up an in-flight interaction by its eventId. */\n getActiveInteraction(eventId: string): Interaction | undefined {\n return this.active.get(eventId);\n }\n\n /**\n * Non-interactive tracer for batch jobs where you only care about\n * spans/token usage, not a user-facing interaction.\n */\n tracer(globalProperties: Record<string, string> = {}): Tracer {\n return createInteractionApi(\n { userId: globalProperties.userId ?? 'batch', properties: globalProperties },\n this.cfg.traceContent,\n );\n }\n\n /** Build Vercel AI SDK telemetry metadata (see `morphsdk/tracing/otel`). */\n metadata(opts: MetadataOptions): Record<string, string> {\n return buildMetadata(opts);\n }\n\n /** Attach a feedback/quality signal to an interaction by eventId. */\n async trackSignal(signal: SignalEvent | SignalEvent[]): Promise<void> {\n if (!this.enabled) return;\n const signals = Array.isArray(signal) ? signal : [signal];\n await shipSignal(this.cfg.signalsEndpoint, this.cfg.apiKey, signals, this.cfg.debug);\n }\n\n /** Span processor for `useExternalOtel: true` integrations. */\n createSpanProcessor(\n options?: Parameters<typeof traceloop.createSpanProcessor>[0],\n ): ReturnType<typeof traceloop.createSpanProcessor> {\n return traceloop.createSpanProcessor({\n apiKey: this.cfg.apiKey,\n baseUrl: this.cfg.baseUrl,\n ...options,\n });\n }\n\n /** Flush any batched spans immediately. Safe to call when idle. */\n async forceFlush(): Promise<void> {\n if (!this.enabled) return;\n try {\n await traceloop.forceFlush();\n } catch (err) {\n log(this.cfg.debug, 'forceFlush error (ignored):', err);\n }\n }\n\n /** Flush and stop tracing. */\n async shutdown(): Promise<void> {\n await this.forceFlush();\n }\n}\n\n/** Initialize Morph Tracing and auto-instrument supported AI SDKs. */\nexport function morphTracing(config: MorphTracingConfig = {}): MorphTracing {\n return new MorphTracing(config);\n}\n"],"mappings":"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","names":[]}
@@ -1,3 +1,9 @@
1
+ import {
2
+ runRipgrep
3
+ } from "./chunk-TPP2UGQP.js";
4
+ import {
5
+ readAllLines
6
+ } from "./chunk-G2RSY56Q.js";
1
7
  import {
2
8
  fixPathRepetition,
3
9
  isSymlink,
@@ -5,12 +11,6 @@ import {
5
11
  resolveUnderRepo,
6
12
  toRepoRelative
7
13
  } from "./chunk-YPKNMYD4.js";
8
- import {
9
- runRipgrep
10
- } from "./chunk-TPP2UGQP.js";
11
- import {
12
- readAllLines
13
- } from "./chunk-G2RSY56Q.js";
14
14
  import {
15
15
  AGENT_CONFIG,
16
16
  DEFAULT_EXCLUDES
@@ -341,4 +341,4 @@ Details: ${res.stderr}` : ""}`
341
341
  export {
342
342
  LocalRipgrepProvider
343
343
  };
344
- //# sourceMappingURL=chunk-VLZ6PNAD.js.map
344
+ //# sourceMappingURL=chunk-LN7GNFET.js.map