@morphllm/morphsdk 0.2.173 → 0.2.174

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-73DQQMGR.js → chunk-2OHOIGNC.js} +17 -3
  2. package/dist/chunk-2OHOIGNC.js.map +1 -0
  3. package/dist/{chunk-CEZQSARX.js → chunk-2VMJYD6W.js} +2 -2
  4. package/dist/{chunk-RXCHMNCY.js → chunk-34NQGT2I.js} +2 -2
  5. package/dist/{chunk-AZOSA7VT.js → chunk-4IO2Z7US.js} +2 -2
  6. package/dist/{chunk-MQTMT4OR.js → chunk-4SQU273Z.js} +2 -2
  7. package/dist/{chunk-GESRH23M.js → chunk-7D7FJY7Y.js} +2 -2
  8. package/dist/{chunk-5RTWSAZ6.js → chunk-ABMYD6QV.js} +2 -2
  9. package/dist/{chunk-C3V5FHZI.js → chunk-APVS7EAO.js} +2 -2
  10. package/dist/{chunk-EJ2CQO4V.js → chunk-B2GSQO2U.js} +2 -2
  11. package/dist/{chunk-ZFOR3LI4.js → chunk-CBPPR3OM.js} +2 -2
  12. package/dist/{chunk-SM3OQZRS.js → chunk-DHFFOBSV.js} +3 -3
  13. package/dist/{chunk-QCFHQPHC.js → chunk-DK442LPX.js} +6 -6
  14. package/dist/{chunk-I4FCFIBU.js → chunk-GWRJD5WE.js} +4 -4
  15. package/dist/chunk-IDS4XQ4T.js +143 -0
  16. package/dist/chunk-IDS4XQ4T.js.map +1 -0
  17. package/dist/{chunk-33ZRF6X3.js → chunk-J5XHHP5X.js} +2 -2
  18. package/dist/{chunk-577P2AXE.js → chunk-L6LYTTZR.js} +2 -2
  19. package/dist/{chunk-VLZ6PNAD.js → chunk-LN7GNFET.js} +7 -7
  20. package/dist/{chunk-JXJBF6CV.js → chunk-M35HA2EQ.js} +2 -2
  21. package/dist/{chunk-S5R4H5HM.js → chunk-MB6ZYZ3V.js} +2 -2
  22. package/dist/chunk-MQMRIQNU.js +130 -0
  23. package/dist/chunk-MQMRIQNU.js.map +1 -0
  24. package/dist/{chunk-Z3KRXUNG.js → chunk-OERNLFLW.js} +2 -2
  25. package/dist/{chunk-FN4ADWFQ.js → chunk-OKBNOGD5.js} +2 -2
  26. package/dist/{chunk-3GNXTHHB.js → chunk-OYQT243T.js} +2 -2
  27. package/dist/chunk-PICGNBUE.js +35 -0
  28. package/dist/chunk-PICGNBUE.js.map +1 -0
  29. package/dist/{chunk-ACWLQFYS.js → chunk-QW3ARPU3.js} +10 -10
  30. package/dist/{chunk-TS56XYWB.js → chunk-RH2E2PTB.js} +3 -3
  31. package/dist/{chunk-NBKL7VWX.js → chunk-RM2U5DE4.js} +30 -30
  32. package/dist/{chunk-TW3XQET2.js → chunk-S3GAUEV6.js} +2 -2
  33. package/dist/{chunk-7EUJ2AKS.js → chunk-SSGEZ4GK.js} +2 -2
  34. package/dist/{chunk-QE6JHRVD.js → chunk-WKNYYI2G.js} +2 -2
  35. package/dist/{chunk-QE3SPHIM.js → chunk-XBUHHKHX.js} +4 -4
  36. package/dist/chunk-XQ4T5QDT.js +39 -0
  37. package/dist/chunk-XQ4T5QDT.js.map +1 -0
  38. package/dist/{chunk-YGNPVOUO.js → chunk-XVNI3Y3O.js} +3 -3
  39. package/dist/{chunk-W6AGNJ5O.js → chunk-ZG6JEYEG.js} +3 -3
  40. package/dist/{chunk-3I4LCNWJ.js → chunk-ZHWVJ7SF.js} +2 -2
  41. package/dist/{chunk-CV7SLK6R.js → chunk-ZRPPKRKS.js} +2 -2
  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-Dt36jfxw.d.ts +45 -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 +346 -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 +359 -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 +183 -0
  185. package/dist/tracing/interaction.cjs.map +1 -0
  186. package/dist/tracing/interaction.d.ts +26 -0
  187. package/dist/tracing/interaction.js +9 -0
  188. package/dist/tracing/interaction.js.map +1 -0
  189. package/dist/tracing/otel.cjs +53 -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 +12 -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 +134 -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-CEZQSARX.js.map → chunk-2VMJYD6W.js.map} +0 -0
  210. /package/dist/{chunk-RXCHMNCY.js.map → chunk-34NQGT2I.js.map} +0 -0
  211. /package/dist/{chunk-AZOSA7VT.js.map → chunk-4IO2Z7US.js.map} +0 -0
  212. /package/dist/{chunk-MQTMT4OR.js.map → chunk-4SQU273Z.js.map} +0 -0
  213. /package/dist/{chunk-GESRH23M.js.map → chunk-7D7FJY7Y.js.map} +0 -0
  214. /package/dist/{chunk-5RTWSAZ6.js.map → chunk-ABMYD6QV.js.map} +0 -0
  215. /package/dist/{chunk-C3V5FHZI.js.map → chunk-APVS7EAO.js.map} +0 -0
  216. /package/dist/{chunk-EJ2CQO4V.js.map → chunk-B2GSQO2U.js.map} +0 -0
  217. /package/dist/{chunk-ZFOR3LI4.js.map → chunk-CBPPR3OM.js.map} +0 -0
  218. /package/dist/{chunk-SM3OQZRS.js.map → chunk-DHFFOBSV.js.map} +0 -0
  219. /package/dist/{chunk-QCFHQPHC.js.map → chunk-DK442LPX.js.map} +0 -0
  220. /package/dist/{chunk-I4FCFIBU.js.map → chunk-GWRJD5WE.js.map} +0 -0
  221. /package/dist/{chunk-33ZRF6X3.js.map → chunk-J5XHHP5X.js.map} +0 -0
  222. /package/dist/{chunk-577P2AXE.js.map → chunk-L6LYTTZR.js.map} +0 -0
  223. /package/dist/{chunk-VLZ6PNAD.js.map → chunk-LN7GNFET.js.map} +0 -0
  224. /package/dist/{chunk-JXJBF6CV.js.map → chunk-M35HA2EQ.js.map} +0 -0
  225. /package/dist/{chunk-S5R4H5HM.js.map → chunk-MB6ZYZ3V.js.map} +0 -0
  226. /package/dist/{chunk-Z3KRXUNG.js.map → chunk-OERNLFLW.js.map} +0 -0
  227. /package/dist/{chunk-FN4ADWFQ.js.map → chunk-OKBNOGD5.js.map} +0 -0
  228. /package/dist/{chunk-3GNXTHHB.js.map → chunk-OYQT243T.js.map} +0 -0
  229. /package/dist/{chunk-ACWLQFYS.js.map → chunk-QW3ARPU3.js.map} +0 -0
  230. /package/dist/{chunk-TS56XYWB.js.map → chunk-RH2E2PTB.js.map} +0 -0
  231. /package/dist/{chunk-NBKL7VWX.js.map → chunk-RM2U5DE4.js.map} +0 -0
  232. /package/dist/{chunk-TW3XQET2.js.map → chunk-S3GAUEV6.js.map} +0 -0
  233. /package/dist/{chunk-7EUJ2AKS.js.map → chunk-SSGEZ4GK.js.map} +0 -0
  234. /package/dist/{chunk-QE6JHRVD.js.map → chunk-WKNYYI2G.js.map} +0 -0
  235. /package/dist/{chunk-QE3SPHIM.js.map → chunk-XBUHHKHX.js.map} +0 -0
  236. /package/dist/{chunk-YGNPVOUO.js.map → chunk-XVNI3Y3O.js.map} +0 -0
  237. /package/dist/{chunk-W6AGNJ5O.js.map → chunk-ZG6JEYEG.js.map} +0 -0
  238. /package/dist/{chunk-3I4LCNWJ.js.map → chunk-ZHWVJ7SF.js.map} +0 -0
  239. /package/dist/{chunk-CV7SLK6R.js.map → chunk-ZRPPKRKS.js.map} +0 -0
@@ -0,0 +1,130 @@
1
+ import {
2
+ metadata
3
+ } from "./chunk-XQ4T5QDT.js";
4
+
5
+ // tracing/interaction.ts
6
+ import { SpanStatusCode } from "@opentelemetry/api";
7
+ import * as traceloop from "@traceloop/node-server-sdk";
8
+ var ASSOC = "traceloop.association.properties.";
9
+ var ENTITY_INPUT = "traceloop.entity.input";
10
+ var ENTITY_OUTPUT = "traceloop.entity.output";
11
+ var ENTITY_NAME = "traceloop.entity.name";
12
+ var SPAN_KIND = "traceloop.span.kind";
13
+ function uuid() {
14
+ const c = globalThis.crypto;
15
+ if (c?.randomUUID) return c.randomUUID();
16
+ return "xxxxxxxxxxxx4xxxyxxx".replace(/[xy]/g, (ch) => {
17
+ const r = Math.random() * 16 | 0;
18
+ return (ch === "x" ? r : r & 3 | 8).toString(16);
19
+ });
20
+ }
21
+ function asString(v) {
22
+ if (v == null) return "";
23
+ return typeof v === "string" ? v : JSON.stringify(v);
24
+ }
25
+ function associationProps(ctx, extra) {
26
+ const props = { ...extra };
27
+ if (ctx.userId) props.user_id = ctx.userId;
28
+ if (ctx.convoId) props.convo_id = ctx.convoId;
29
+ if (ctx.eventId) props.event_id = ctx.eventId;
30
+ if (ctx.event) props.event_name = ctx.event;
31
+ return props;
32
+ }
33
+ function createInteractionApi(initial, traceContent) {
34
+ const ctx = {
35
+ ...initial,
36
+ eventId: initial.eventId ?? uuid()
37
+ };
38
+ const properties = { ...initial.properties ?? {} };
39
+ let input = initial.input;
40
+ const withAssoc = (fn) => traceloop.withAssociationProperties(associationProps(ctx, properties), fn);
41
+ const toolName = (p) => typeof p === "string" ? p : p.name;
42
+ function startToolSpan(params) {
43
+ const name = toolName(params);
44
+ const span = traceloop.getTraceloopTracer().startSpan(name);
45
+ span.setAttribute(SPAN_KIND, "tool");
46
+ span.setAttribute(ENTITY_NAME, name);
47
+ for (const [k, v] of Object.entries(associationProps(ctx, properties))) {
48
+ span.setAttribute(ASSOC + k, v);
49
+ }
50
+ if (typeof params !== "string" && params.properties) {
51
+ for (const [k, v] of Object.entries(params.properties)) span.setAttribute(k, v);
52
+ }
53
+ return {
54
+ setInput(value) {
55
+ if (traceContent) span.setAttribute(ENTITY_INPUT, asString(value));
56
+ },
57
+ setOutput(value) {
58
+ if (traceContent) span.setAttribute(ENTITY_OUTPUT, asString(value));
59
+ },
60
+ setError(error) {
61
+ const e = typeof error === "string" ? new Error(error) : error;
62
+ span.recordException(e);
63
+ span.setStatus({ code: SpanStatusCode.ERROR, message: e.message });
64
+ },
65
+ end() {
66
+ span.end();
67
+ }
68
+ };
69
+ }
70
+ return {
71
+ getEventId: () => ctx.eventId,
72
+ setInput(value) {
73
+ input = value;
74
+ },
75
+ setProperty(key, value) {
76
+ properties[key] = value;
77
+ },
78
+ setProperties(props) {
79
+ Object.assign(properties, props);
80
+ },
81
+ vercelAiSdkMetadata() {
82
+ return metadata({
83
+ userId: ctx.userId ?? "unknown",
84
+ convoId: ctx.convoId,
85
+ eventName: ctx.event,
86
+ eventId: ctx.eventId
87
+ });
88
+ },
89
+ withSpan(params, fn) {
90
+ const name = typeof params === "string" ? params : params.name;
91
+ return Promise.resolve(withAssoc(() => traceloop.withTask({ name }, fn)));
92
+ },
93
+ withTool(params, fn) {
94
+ const name = toolName(params);
95
+ const version = typeof params === "string" ? void 0 : params.version;
96
+ return Promise.resolve(withAssoc(() => traceloop.withTool({ name, version }, fn)));
97
+ },
98
+ startToolSpan,
99
+ trackTool(params) {
100
+ const span = startToolSpan({ name: params.name, properties: params.properties });
101
+ if (params.input !== void 0) span.setInput(params.input);
102
+ if (params.output !== void 0) span.setOutput(params.output);
103
+ if (params.error) span.setError(params.error);
104
+ span.end();
105
+ },
106
+ async finish(opts) {
107
+ const output = typeof opts === "string" ? opts : opts.output;
108
+ if (typeof opts !== "string" && opts.properties) Object.assign(properties, opts.properties);
109
+ await Promise.resolve(
110
+ withAssoc(
111
+ () => traceloop.withTask({ name: ctx.event ?? "interaction" }, () => {
112
+ const span = traceloop.getTraceloopTracer().startSpan(ctx.event ?? "interaction");
113
+ span.setAttribute(SPAN_KIND, "workflow");
114
+ for (const [k, v] of Object.entries(associationProps(ctx, properties))) {
115
+ span.setAttribute(ASSOC + k, v);
116
+ }
117
+ if (traceContent && input) span.setAttribute(ENTITY_INPUT, input);
118
+ if (traceContent) span.setAttribute(ENTITY_OUTPUT, output);
119
+ span.end();
120
+ })
121
+ )
122
+ );
123
+ }
124
+ };
125
+ }
126
+
127
+ export {
128
+ createInteractionApi
129
+ };
130
+ //# sourceMappingURL=chunk-MQMRIQNU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../tracing/interaction.ts"],"sourcesContent":["/**\n * Morph Tracing — interactions, tools, and manual spans.\n *\n * An `Interaction` is one user turn / agent run. It threads association\n * properties (user_id / convo_id / event_id) onto every span created inside it —\n * including the auto-instrumented LLM spans — so a whole conversation stitches\n * together in the Morph UI. Built on Traceloop's `withTask` / `withTool` and a\n * manual tracer for already-completed tool spans.\n */\nimport { SpanStatusCode, type Span } from '@opentelemetry/api';\nimport * as traceloop from '@traceloop/node-server-sdk';\n\nimport { metadata as buildMetadata } from './otel.js';\nimport type {\n FinishOptions,\n SpanParams,\n ToolParams,\n ToolSpan,\n TrackToolParams,\n TraceContext,\n} from './types.js';\n\n// Traceloop semantic-convention attribute keys.\nconst ASSOC = 'traceloop.association.properties.';\nconst ENTITY_INPUT = 'traceloop.entity.input';\nconst ENTITY_OUTPUT = 'traceloop.entity.output';\nconst ENTITY_NAME = 'traceloop.entity.name';\nconst SPAN_KIND = 'traceloop.span.kind';\n\nfunction uuid(): string {\n const c = (globalThis as { crypto?: { randomUUID?: () => string } }).crypto;\n if (c?.randomUUID) return c.randomUUID();\n return 'xxxxxxxxxxxx4xxxyxxx'.replace(/[xy]/g, (ch) => {\n const r = (Math.random() * 16) | 0;\n return (ch === 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n}\n\nfunction asString(v: unknown): string {\n if (v == null) return '';\n return typeof v === 'string' ? v : JSON.stringify(v);\n}\n\nexport interface Interaction {\n getEventId(): string | undefined;\n setInput(input: string): void;\n setProperty(key: string, value: string): void;\n setProperties(props: Record<string, string>): void;\n /** Run `fn` inside a traced task span; LLM calls within inherit attribution. */\n withSpan<T>(params: SpanParams | string, fn: () => Promise<T> | T): Promise<T>;\n /** Run `fn` inside a traced tool span. */\n withTool<T>(params: ToolParams | string, fn: () => Promise<T> | T): Promise<T>;\n /** Start a tool span you end manually. */\n startToolSpan(params: ToolParams | string): ToolSpan;\n /** Record an already-completed tool invocation. */\n trackTool(params: TrackToolParams): void;\n /** Metadata for the Vercel AI SDK `experimental_telemetry.metadata`. */\n vercelAiSdkMetadata(): Record<string, string>;\n /** End the interaction with its final output. */\n finish(opts: FinishOptions | string): Promise<void>;\n}\n\nexport type Tracer = Pick<Interaction, 'withSpan' | 'withTool' | 'startToolSpan' | 'trackTool'>;\n\n/** Build the association-property bag Traceloop propagates onto child spans. */\nfunction associationProps(\n ctx: TraceContext & { userId?: string },\n extra: Record<string, string>,\n): Record<string, string> {\n const props: Record<string, string> = { ...extra };\n if (ctx.userId) props.user_id = ctx.userId;\n if (ctx.convoId) props.convo_id = ctx.convoId;\n if (ctx.eventId) props.event_id = ctx.eventId;\n if (ctx.event) props.event_name = ctx.event;\n return props;\n}\n\nexport function createInteractionApi(\n initial: TraceContext & { userId?: string },\n traceContent: boolean,\n): Interaction {\n const ctx: TraceContext & { userId?: string } = {\n ...initial,\n eventId: initial.eventId ?? uuid(),\n };\n const properties: Record<string, string> = { ...(initial.properties ?? {}) };\n let input = initial.input;\n\n const withAssoc = <T>(fn: () => Promise<T> | T): Promise<T> | T =>\n traceloop.withAssociationProperties(associationProps(ctx, properties), fn);\n\n const toolName = (p: ToolParams | string) => (typeof p === 'string' ? p : p.name);\n\n function startToolSpan(params: ToolParams | string): ToolSpan {\n const name = toolName(params);\n const span: Span = traceloop.getTraceloopTracer().startSpan(name);\n span.setAttribute(SPAN_KIND, 'tool');\n span.setAttribute(ENTITY_NAME, name);\n for (const [k, v] of Object.entries(associationProps(ctx, properties))) {\n span.setAttribute(ASSOC + k, v);\n }\n if (typeof params !== 'string' && params.properties) {\n for (const [k, v] of Object.entries(params.properties)) span.setAttribute(k, v);\n }\n return {\n setInput(value: unknown) {\n if (traceContent) span.setAttribute(ENTITY_INPUT, asString(value));\n },\n setOutput(value: unknown) {\n if (traceContent) span.setAttribute(ENTITY_OUTPUT, asString(value));\n },\n setError(error: Error | string) {\n const e = typeof error === 'string' ? new Error(error) : error;\n span.recordException(e);\n span.setStatus({ code: SpanStatusCode.ERROR, message: e.message });\n },\n end() {\n span.end();\n },\n };\n }\n\n return {\n getEventId: () => ctx.eventId,\n setInput(value: string) {\n input = value;\n },\n setProperty(key: string, value: string) {\n properties[key] = value;\n },\n setProperties(props: Record<string, string>) {\n Object.assign(properties, props);\n },\n vercelAiSdkMetadata() {\n return buildMetadata({\n userId: ctx.userId ?? 'unknown',\n convoId: ctx.convoId,\n eventName: ctx.event,\n eventId: ctx.eventId,\n });\n },\n withSpan(params, fn) {\n const name = typeof params === 'string' ? params : params.name;\n return Promise.resolve(withAssoc(() => traceloop.withTask({ name }, fn)));\n },\n withTool(params, fn) {\n const name = toolName(params);\n const version = typeof params === 'string' ? undefined : params.version;\n return Promise.resolve(withAssoc(() => traceloop.withTool({ name, version }, fn)));\n },\n startToolSpan,\n trackTool(params: TrackToolParams) {\n const span = startToolSpan({ name: params.name, properties: params.properties });\n if (params.input !== undefined) span.setInput(params.input);\n if (params.output !== undefined) span.setOutput(params.output);\n if (params.error) span.setError(params.error);\n span.end();\n },\n async finish(opts) {\n const output = typeof opts === 'string' ? opts : opts.output;\n if (typeof opts !== 'string' && opts.properties) Object.assign(properties, opts.properties);\n // Emit a top-level interaction span carrying input/output + attribution.\n await Promise.resolve(\n withAssoc(() =>\n traceloop.withTask({ name: ctx.event ?? 'interaction' }, () => {\n const span = traceloop.getTraceloopTracer().startSpan(ctx.event ?? 'interaction');\n span.setAttribute(SPAN_KIND, 'workflow');\n for (const [k, v] of Object.entries(associationProps(ctx, properties))) {\n span.setAttribute(ASSOC + k, v);\n }\n if (traceContent && input) span.setAttribute(ENTITY_INPUT, input);\n if (traceContent) span.setAttribute(ENTITY_OUTPUT, output);\n span.end();\n }),\n ),\n );\n },\n };\n}\n"],"mappings":";;;;;AASA,SAAS,sBAAiC;AAC1C,YAAY,eAAe;AAa3B,IAAM,QAAQ;AACd,IAAM,eAAe;AACrB,IAAM,gBAAgB;AACtB,IAAM,cAAc;AACpB,IAAM,YAAY;AAElB,SAAS,OAAe;AACtB,QAAM,IAAK,WAA0D;AACrE,MAAI,GAAG,WAAY,QAAO,EAAE,WAAW;AACvC,SAAO,uBAAuB,QAAQ,SAAS,CAAC,OAAO;AACrD,UAAM,IAAK,KAAK,OAAO,IAAI,KAAM;AACjC,YAAQ,OAAO,MAAM,IAAK,IAAI,IAAO,GAAK,SAAS,EAAE;AAAA,EACvD,CAAC;AACH;AAEA,SAAS,SAAS,GAAoB;AACpC,MAAI,KAAK,KAAM,QAAO;AACtB,SAAO,OAAO,MAAM,WAAW,IAAI,KAAK,UAAU,CAAC;AACrD;AAwBA,SAAS,iBACP,KACA,OACwB;AACxB,QAAM,QAAgC,EAAE,GAAG,MAAM;AACjD,MAAI,IAAI,OAAQ,OAAM,UAAU,IAAI;AACpC,MAAI,IAAI,QAAS,OAAM,WAAW,IAAI;AACtC,MAAI,IAAI,QAAS,OAAM,WAAW,IAAI;AACtC,MAAI,IAAI,MAAO,OAAM,aAAa,IAAI;AACtC,SAAO;AACT;AAEO,SAAS,qBACd,SACA,cACa;AACb,QAAM,MAA0C;AAAA,IAC9C,GAAG;AAAA,IACH,SAAS,QAAQ,WAAW,KAAK;AAAA,EACnC;AACA,QAAM,aAAqC,EAAE,GAAI,QAAQ,cAAc,CAAC,EAAG;AAC3E,MAAI,QAAQ,QAAQ;AAEpB,QAAM,YAAY,CAAI,OACV,oCAA0B,iBAAiB,KAAK,UAAU,GAAG,EAAE;AAE3E,QAAM,WAAW,CAAC,MAA4B,OAAO,MAAM,WAAW,IAAI,EAAE;AAE5E,WAAS,cAAc,QAAuC;AAC5D,UAAM,OAAO,SAAS,MAAM;AAC5B,UAAM,OAAuB,6BAAmB,EAAE,UAAU,IAAI;AAChE,SAAK,aAAa,WAAW,MAAM;AACnC,SAAK,aAAa,aAAa,IAAI;AACnC,eAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,iBAAiB,KAAK,UAAU,CAAC,GAAG;AACtE,WAAK,aAAa,QAAQ,GAAG,CAAC;AAAA,IAChC;AACA,QAAI,OAAO,WAAW,YAAY,OAAO,YAAY;AACnD,iBAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,OAAO,UAAU,EAAG,MAAK,aAAa,GAAG,CAAC;AAAA,IAChF;AACA,WAAO;AAAA,MACL,SAAS,OAAgB;AACvB,YAAI,aAAc,MAAK,aAAa,cAAc,SAAS,KAAK,CAAC;AAAA,MACnE;AAAA,MACA,UAAU,OAAgB;AACxB,YAAI,aAAc,MAAK,aAAa,eAAe,SAAS,KAAK,CAAC;AAAA,MACpE;AAAA,MACA,SAAS,OAAuB;AAC9B,cAAM,IAAI,OAAO,UAAU,WAAW,IAAI,MAAM,KAAK,IAAI;AACzD,aAAK,gBAAgB,CAAC;AACtB,aAAK,UAAU,EAAE,MAAM,eAAe,OAAO,SAAS,EAAE,QAAQ,CAAC;AAAA,MACnE;AAAA,MACA,MAAM;AACJ,aAAK,IAAI;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,YAAY,MAAM,IAAI;AAAA,IACtB,SAAS,OAAe;AACtB,cAAQ;AAAA,IACV;AAAA,IACA,YAAY,KAAa,OAAe;AACtC,iBAAW,GAAG,IAAI;AAAA,IACpB;AAAA,IACA,cAAc,OAA+B;AAC3C,aAAO,OAAO,YAAY,KAAK;AAAA,IACjC;AAAA,IACA,sBAAsB;AACpB,aAAO,SAAc;AAAA,QACnB,QAAQ,IAAI,UAAU;AAAA,QACtB,SAAS,IAAI;AAAA,QACb,WAAW,IAAI;AAAA,QACf,SAAS,IAAI;AAAA,MACf,CAAC;AAAA,IACH;AAAA,IACA,SAAS,QAAQ,IAAI;AACnB,YAAM,OAAO,OAAO,WAAW,WAAW,SAAS,OAAO;AAC1D,aAAO,QAAQ,QAAQ,UAAU,MAAgB,mBAAS,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC;AAAA,IAC1E;AAAA,IACA,SAAS,QAAQ,IAAI;AACnB,YAAM,OAAO,SAAS,MAAM;AAC5B,YAAM,UAAU,OAAO,WAAW,WAAW,SAAY,OAAO;AAChE,aAAO,QAAQ,QAAQ,UAAU,MAAgB,mBAAS,EAAE,MAAM,QAAQ,GAAG,EAAE,CAAC,CAAC;AAAA,IACnF;AAAA,IACA;AAAA,IACA,UAAU,QAAyB;AACjC,YAAM,OAAO,cAAc,EAAE,MAAM,OAAO,MAAM,YAAY,OAAO,WAAW,CAAC;AAC/E,UAAI,OAAO,UAAU,OAAW,MAAK,SAAS,OAAO,KAAK;AAC1D,UAAI,OAAO,WAAW,OAAW,MAAK,UAAU,OAAO,MAAM;AAC7D,UAAI,OAAO,MAAO,MAAK,SAAS,OAAO,KAAK;AAC5C,WAAK,IAAI;AAAA,IACX;AAAA,IACA,MAAM,OAAO,MAAM;AACjB,YAAM,SAAS,OAAO,SAAS,WAAW,OAAO,KAAK;AACtD,UAAI,OAAO,SAAS,YAAY,KAAK,WAAY,QAAO,OAAO,YAAY,KAAK,UAAU;AAE1F,YAAM,QAAQ;AAAA,QACZ;AAAA,UAAU,MACE,mBAAS,EAAE,MAAM,IAAI,SAAS,cAAc,GAAG,MAAM;AAC7D,kBAAM,OAAiB,6BAAmB,EAAE,UAAU,IAAI,SAAS,aAAa;AAChF,iBAAK,aAAa,WAAW,UAAU;AACvC,uBAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,iBAAiB,KAAK,UAAU,CAAC,GAAG;AACtE,mBAAK,aAAa,QAAQ,GAAG,CAAC;AAAA,YAChC;AACA,gBAAI,gBAAgB,MAAO,MAAK,aAAa,cAAc,KAAK;AAChE,gBAAI,aAAc,MAAK,aAAa,eAAe,MAAM;AACzD,iBAAK,IAAI;AAAA,UACX,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  executeEditFile
3
- } from "./chunk-S5R4H5HM.js";
3
+ } from "./chunk-MB6ZYZ3V.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-OERNLFLW.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  MorphAPIClient
3
- } from "./chunk-QE3SPHIM.js";
3
+ } from "./chunk-XBUHHKHX.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-OKBNOGD5.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-F3NCFNUX.js";
4
4
  import {
5
5
  SDK_VERSION
6
- } from "./chunk-73DQQMGR.js";
6
+ } from "./chunk-2OHOIGNC.js";
7
7
 
8
8
  // tools/fastapply/apply.ts
9
9
  import { createTwoFilesPatch } from "diff";
@@ -145,4 +145,4 @@ export {
145
145
  callMorphAPI,
146
146
  applyEdit
147
147
  };
148
- //# sourceMappingURL=chunk-3GNXTHHB.js.map
148
+ //# sourceMappingURL=chunk-OYQT243T.js.map
@@ -0,0 +1,35 @@
1
+ // tracing/signals.ts
2
+ async function shipSignal(endpoint, apiKey, signals, debug = false, timeoutMs = 1e4) {
3
+ if (signals.length === 0) return;
4
+ const controller = new AbortController();
5
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
6
+ try {
7
+ const res = await fetch(endpoint, {
8
+ method: "POST",
9
+ headers: {
10
+ "Content-Type": "application/json",
11
+ Authorization: `Bearer ${apiKey}`
12
+ },
13
+ body: JSON.stringify({ signals }),
14
+ signal: controller.signal
15
+ });
16
+ if (!res.ok) {
17
+ const body = await res.text().catch(() => "");
18
+ console.warn(`[morph-tracing] signal POST failed (${res.status}): ${body}`);
19
+ } else if (debug) {
20
+ console.log(`[morph-tracing] shipped ${signals.length} signal(s)`);
21
+ }
22
+ } catch (err) {
23
+ console.warn(
24
+ "[morph-tracing] signal POST error:",
25
+ err instanceof Error ? err.message : err
26
+ );
27
+ } finally {
28
+ clearTimeout(timer);
29
+ }
30
+ }
31
+
32
+ export {
33
+ shipSignal
34
+ };
35
+ //# sourceMappingURL=chunk-PICGNBUE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../tracing/signals.ts"],"sourcesContent":["/**\n * Morph Tracing — feedback signals.\n *\n * Signals (👍/👎, free-text feedback, user edits) attach to an interaction by\n * `eventId` and ship directly over HTTP — they are low-volume and need no OTel\n * pipeline. Mirrors the request shape of `tools/fastapply/core.ts`.\n */\nimport type { SignalEvent } from './types.js';\n\nexport async function shipSignal(\n endpoint: string,\n apiKey: string,\n signals: SignalEvent[],\n debug = false,\n timeoutMs = 10_000,\n): Promise<void> {\n if (signals.length === 0) return;\n\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n try {\n const res = await fetch(endpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify({ signals }),\n signal: controller.signal,\n });\n if (!res.ok) {\n const body = await res.text().catch(() => '');\n // Signals are best-effort; never throw into the caller's hot path.\n console.warn(`[morph-tracing] signal POST failed (${res.status}): ${body}`);\n } else if (debug) {\n console.log(`[morph-tracing] shipped ${signals.length} signal(s)`);\n }\n } catch (err) {\n console.warn(\n '[morph-tracing] signal POST error:',\n err instanceof Error ? err.message : err,\n );\n } finally {\n clearTimeout(timer);\n }\n}\n"],"mappings":";AASA,eAAsB,WACpB,UACA,QACA,SACA,QAAQ,OACR,YAAY,KACG;AACf,MAAI,QAAQ,WAAW,EAAG;AAE1B,QAAM,aAAa,IAAI,gBAAgB;AACvC,QAAM,QAAQ,WAAW,MAAM,WAAW,MAAM,GAAG,SAAS;AAC5D,MAAI;AACF,UAAM,MAAM,MAAM,MAAM,UAAU;AAAA,MAChC,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,eAAe,UAAU,MAAM;AAAA,MACjC;AAAA,MACA,MAAM,KAAK,UAAU,EAAE,QAAQ,CAAC;AAAA,MAChC,QAAQ,WAAW;AAAA,IACrB,CAAC;AACD,QAAI,CAAC,IAAI,IAAI;AACX,YAAM,OAAO,MAAM,IAAI,KAAK,EAAE,MAAM,MAAM,EAAE;AAE5C,cAAQ,KAAK,uCAAuC,IAAI,MAAM,MAAM,IAAI,EAAE;AAAA,IAC5E,WAAW,OAAO;AAChB,cAAQ,IAAI,2BAA2B,QAAQ,MAAM,YAAY;AAAA,IACnE;AAAA,EACF,SAAS,KAAK;AACZ,YAAQ;AAAA,MACN;AAAA,MACA,eAAe,QAAQ,IAAI,UAAU;AAAA,IACvC;AAAA,EACF,UAAE;AACA,iBAAa,KAAK;AAAA,EACpB;AACF;","names":[]}
@@ -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-DK442LPX.js";
14
14
  import {
15
15
  compactFileContexts
16
- } from "./chunk-EJ2CQO4V.js";
16
+ } from "./chunk-B2GSQO2U.js";
17
17
  import {
18
18
  MorphAPIClient
19
- } from "./chunk-QE3SPHIM.js";
19
+ } from "./chunk-XBUHHKHX.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-QW3ARPU3.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  MorphAPIClient
3
- } from "./chunk-QE3SPHIM.js";
3
+ } from "./chunk-XBUHHKHX.js";
4
4
  import {
5
5
  MorphError
6
- } from "./chunk-JXJBF6CV.js";
6
+ } from "./chunk-M35HA2EQ.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-RH2E2PTB.js.map
@@ -1,69 +1,69 @@
1
1
  import {
2
- ReflexClient
3
- } from "./chunk-YGNPVOUO.js";
2
+ createGitHubSearchTool as createGitHubSearchTool3,
3
+ createWarpGrepTool as createWarpGrepTool3
4
+ } from "./chunk-WKNYYI2G.js";
4
5
  import {
5
6
  createGitHubSearchTool as createGitHubSearchTool2,
6
7
  createWarpGrepTool as createWarpGrepTool2
7
- } from "./chunk-AZOSA7VT.js";
8
+ } from "./chunk-4IO2Z7US.js";
8
9
  import {
9
10
  createGitHubSearchTool,
10
11
  createWarpGrepTool
11
- } from "./chunk-TW3XQET2.js";
12
+ } from "./chunk-S3GAUEV6.js";
12
13
  import {
13
- createGitHubSearchTool as createGitHubSearchTool3,
14
- createWarpGrepTool as createWarpGrepTool3
15
- } from "./chunk-QE6JHRVD.js";
16
- import {
17
- createCodebaseSearchTool
18
- } from "./chunk-33ZRF6X3.js";
14
+ ReflexClient
15
+ } from "./chunk-XVNI3Y3O.js";
19
16
  import {
20
17
  createCodebaseSearchTool as createCodebaseSearchTool3
21
- } from "./chunk-7EUJ2AKS.js";
18
+ } from "./chunk-SSGEZ4GK.js";
22
19
  import {
23
20
  createCodebaseSearchTool as createCodebaseSearchTool2
24
- } from "./chunk-MQTMT4OR.js";
21
+ } from "./chunk-4SQU273Z.js";
22
+ import {
23
+ createCodebaseSearchTool
24
+ } from "./chunk-J5XHHP5X.js";
25
25
  import {
26
26
  CodebaseSearchClient
27
- } from "./chunk-W6AGNJ5O.js";
27
+ } from "./chunk-ZG6JEYEG.js";
28
28
  import {
29
- createExploreSubagent as createExploreSubagent2
30
- } from "./chunk-3I4LCNWJ.js";
29
+ BrowserClient
30
+ } from "./chunk-GWRJD5WE.js";
31
31
  import {
32
- createEditFileTool as createEditFileTool2
33
- } from "./chunk-CEZQSARX.js";
32
+ createExploreSubagent as createExploreSubagent2
33
+ } from "./chunk-ZHWVJ7SF.js";
34
34
  import {
35
35
  createEditFileTool
36
- } from "./chunk-GESRH23M.js";
36
+ } from "./chunk-7D7FJY7Y.js";
37
37
  import {
38
38
  createEditFileTool as createEditFileTool3
39
- } from "./chunk-Z3KRXUNG.js";
39
+ } from "./chunk-OERNLFLW.js";
40
40
  import {
41
- FastApplyClient
42
- } from "./chunk-S5R4H5HM.js";
41
+ createEditFileTool as createEditFileTool2
42
+ } from "./chunk-2VMJYD6W.js";
43
43
  import {
44
- BrowserClient
45
- } from "./chunk-I4FCFIBU.js";
44
+ FastApplyClient
45
+ } from "./chunk-MB6ZYZ3V.js";
46
46
  import {
47
47
  MorphGit
48
- } from "./chunk-FN4ADWFQ.js";
48
+ } from "./chunk-OKBNOGD5.js";
49
49
  import {
50
50
  createExploreSubagent
51
- } from "./chunk-5RTWSAZ6.js";
51
+ } from "./chunk-ABMYD6QV.js";
52
52
  import {
53
53
  WarpGrepClient
54
- } from "./chunk-ACWLQFYS.js";
54
+ } from "./chunk-QW3ARPU3.js";
55
55
  import {
56
56
  AnthropicRouter,
57
57
  GeminiRouter,
58
58
  OpenAIRouter,
59
59
  RawRouter
60
- } from "./chunk-SM3OQZRS.js";
60
+ } from "./chunk-DHFFOBSV.js";
61
61
  import {
62
62
  CompactClient
63
- } from "./chunk-TS56XYWB.js";
63
+ } from "./chunk-RH2E2PTB.js";
64
64
  import {
65
65
  MorphAPIClient
66
- } from "./chunk-QE3SPHIM.js";
66
+ } from "./chunk-XBUHHKHX.js";
67
67
  import {
68
68
  logger
69
69
  } from "./chunk-F3NCFNUX.js";
@@ -687,4 +687,4 @@ export {
687
687
  VercelToolFactory,
688
688
  MorphClient
689
689
  };
690
- //# sourceMappingURL=chunk-NBKL7VWX.js.map
690
+ //# sourceMappingURL=chunk-RM2U5DE4.js.map
@@ -14,7 +14,7 @@ import {
14
14
  executeToolCall,
15
15
  formatGitHubReadFileResult,
16
16
  formatResult
17
- } from "./chunk-ACWLQFYS.js";
17
+ } from "./chunk-QW3ARPU3.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-S3GAUEV6.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-YQMPVJ2L.js";
4
4
  import {
5
5
  executeCodebaseSearch
6
- } from "./chunk-W6AGNJ5O.js";
6
+ } from "./chunk-ZG6JEYEG.js";
7
7
 
8
8
  // tools/codebase_search/vercel.ts
9
9
  import { tool } from "ai";
@@ -55,4 +55,4 @@ export {
55
55
  getSystemPrompt,
56
56
  vercel_default
57
57
  };
58
- //# sourceMappingURL=chunk-7EUJ2AKS.js.map
58
+ //# sourceMappingURL=chunk-SSGEZ4GK.js.map
@@ -8,7 +8,7 @@ import {
8
8
  executeGitHubReadFile,
9
9
  executeToolCall,
10
10
  executeToolCallStreaming
11
- } from "./chunk-ACWLQFYS.js";
11
+ } from "./chunk-QW3ARPU3.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-WKNYYI2G.js.map
@@ -3,15 +3,15 @@ import {
3
3
  } from "./chunk-F3NCFNUX.js";
4
4
  import {
5
5
  toMorphError
6
- } from "./chunk-ZFOR3LI4.js";
6
+ } from "./chunk-CBPPR3OM.js";
7
7
  import {
8
8
  MorphError,
9
9
  fetchWithRetry,
10
10
  withTimeout
11
- } from "./chunk-JXJBF6CV.js";
11
+ } from "./chunk-M35HA2EQ.js";
12
12
  import {
13
13
  SDK_VERSION
14
- } from "./chunk-73DQQMGR.js";
14
+ } from "./chunk-2OHOIGNC.js";
15
15
 
16
16
  // core/client.ts
17
17
  var DEFAULT_BASE_URL = "https://api.morphllm.com";
@@ -117,4 +117,4 @@ var MorphAPIClient = class {
117
117
  export {
118
118
  MorphAPIClient
119
119
  };
120
- //# sourceMappingURL=chunk-QE3SPHIM.js.map
120
+ //# sourceMappingURL=chunk-XBUHHKHX.js.map
@@ -0,0 +1,39 @@
1
+ import {
2
+ __export
3
+ } from "./chunk-PZ5AY32C.js";
4
+
5
+ // tracing/otel.ts
6
+ var otel_exports = {};
7
+ __export(otel_exports, {
8
+ MORPH_METADATA_PREFIX: () => MORPH_METADATA_PREFIX,
9
+ default: () => otel_default,
10
+ metadata: () => metadata
11
+ });
12
+ var MORPH_METADATA_PREFIX = "morph";
13
+ function uuid() {
14
+ const c = globalThis.crypto;
15
+ if (c?.randomUUID) return c.randomUUID();
16
+ return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (ch) => {
17
+ const r = Math.random() * 16 | 0;
18
+ const v = ch === "x" ? r : r & 3 | 8;
19
+ return v.toString(16);
20
+ });
21
+ }
22
+ function metadata(opts) {
23
+ const result = {
24
+ [`${MORPH_METADATA_PREFIX}.userId`]: opts.userId,
25
+ [`${MORPH_METADATA_PREFIX}.eventId`]: opts.eventId ?? uuid()
26
+ };
27
+ if (opts.convoId) result[`${MORPH_METADATA_PREFIX}.convoId`] = opts.convoId;
28
+ if (opts.eventName) result[`${MORPH_METADATA_PREFIX}.eventName`] = opts.eventName;
29
+ return result;
30
+ }
31
+ var otel_default = { metadata };
32
+
33
+ export {
34
+ MORPH_METADATA_PREFIX,
35
+ metadata,
36
+ otel_default,
37
+ otel_exports
38
+ };
39
+ //# sourceMappingURL=chunk-XQ4T5QDT.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/** Prefix under which Morph reads attribution from AI SDK telemetry metadata. */\nexport const MORPH_METADATA_PREFIX = 'morph';\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 [`${MORPH_METADATA_PREFIX}.userId`]: opts.userId,\n [`${MORPH_METADATA_PREFIX}.eventId`]: opts.eventId ?? uuid(),\n };\n if (opts.convoId) result[`${MORPH_METADATA_PREFIX}.convoId`] = opts.convoId;\n if (opts.eventName) result[`${MORPH_METADATA_PREFIX}.eventName`] = opts.eventName;\n return result;\n}\n\nexport default { metadata };\n"],"mappings":";;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BO,IAAM,wBAAwB;AAErC,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,CAAC,GAAG,qBAAqB,SAAS,GAAG,KAAK;AAAA,IAC1C,CAAC,GAAG,qBAAqB,UAAU,GAAG,KAAK,WAAW,KAAK;AAAA,EAC7D;AACA,MAAI,KAAK,QAAS,QAAO,GAAG,qBAAqB,UAAU,IAAI,KAAK;AACpE,MAAI,KAAK,UAAW,QAAO,GAAG,qBAAqB,YAAY,IAAI,KAAK;AACxE,SAAO;AACT;AAEA,IAAO,eAAQ,EAAE,SAAS;","names":[]}
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  MorphAPIClient
3
- } from "./chunk-QE3SPHIM.js";
3
+ } from "./chunk-XBUHHKHX.js";
4
4
  import {
5
5
  MorphError
6
- } from "./chunk-JXJBF6CV.js";
6
+ } from "./chunk-M35HA2EQ.js";
7
7
  import {
8
8
  APIResource
9
9
  } from "./chunk-LKFZBBTD.js";
@@ -155,4 +155,4 @@ export {
155
155
  ReflexClient,
156
156
  ReflexJobsResource
157
157
  };
158
- //# sourceMappingURL=chunk-YGNPVOUO.js.map
158
+ //# sourceMappingURL=chunk-XVNI3Y3O.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  MorphAPIClient
3
- } from "./chunk-QE3SPHIM.js";
3
+ } from "./chunk-XBUHHKHX.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-M35HA2EQ.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-ZG6JEYEG.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  WarpGrepClient,
3
3
  formatResult
4
- } from "./chunk-ACWLQFYS.js";
4
+ } from "./chunk-QW3ARPU3.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-ZHWVJ7SF.js.map
@@ -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-GWRJD5WE.js";
8
8
  import {
9
9
  __export
10
10
  } from "./chunk-PZ5AY32C.js";
@@ -77,4 +77,4 @@ export {
77
77
  createBrowserTool,
78
78
  anthropic_exports
79
79
  };
80
- //# sourceMappingURL=chunk-CV7SLK6R.js.map
80
+ //# sourceMappingURL=chunk-ZRPPKRKS.js.map
package/dist/client.cjs CHANGED
@@ -36,7 +36,7 @@ var init_package = __esm({
36
36
  "package.json"() {
37
37
  package_default = {
38
38
  name: "@morphllm/morphsdk",
39
- version: "0.2.173",
39
+ version: "0.2.174",
40
40
  description: "TypeScript SDK and CLI for Morph Fast Apply integration",
41
41
  type: "module",
42
42
  main: "./dist/index.cjs",
@@ -93,6 +93,16 @@ var init_package = __esm({
93
93
  import: "./dist/tools/warp_grep/harness.js",
94
94
  require: "./dist/tools/warp_grep/harness.cjs"
95
95
  },
96
+ "./tracing": {
97
+ types: "./dist/tracing/index.d.ts",
98
+ import: "./dist/tracing/index.js",
99
+ require: "./dist/tracing/index.cjs"
100
+ },
101
+ "./tracing/otel": {
102
+ types: "./dist/tracing/otel.d.ts",
103
+ import: "./dist/tracing/otel.js",
104
+ require: "./dist/tracing/otel.cjs"
105
+ },
96
106
  "./tools/fastapply": {
97
107
  types: "./dist/tools/fastapply/index.d.ts",
98
108
  import: "./dist/tools/fastapply/index.js",
@@ -203,7 +213,7 @@ var init_package = __esm({
203
213
  "!dist/**/*.test.*"
204
214
  ],
205
215
  scripts: {
206
- build: "tsup version.ts index.ts edge.ts client.ts core/index.ts core/client.ts core/resource.ts core/error.ts tools/index.ts tools/fastapply/index.ts tools/fastapply/core.ts tools/fastapply/apply.ts tools/fastapply/types.ts tools/fastapply/prompts.ts tools/fastapply/anthropic.ts tools/fastapply/openai.ts tools/fastapply/vercel.ts tools/codebase_search/index.ts tools/codebase_search/core.ts tools/codebase_search/types.ts tools/codebase_search/prompts.ts tools/codebase_search/anthropic.ts tools/codebase_search/openai.ts tools/codebase_search/vercel.ts tools/warp_grep/index.ts tools/warp_grep/client.ts tools/warp_grep/openai.ts tools/warp_grep/anthropic.ts tools/warp_grep/vercel.ts tools/warp_grep/gemini.ts tools/warp_grep/harness.ts tools/warp_grep/agent/config.ts tools/warp_grep/agent/parser.ts tools/warp_grep/agent/runner.ts tools/warp_grep/agent/types.ts tools/warp_grep/agent/formatter.ts tools/warp_grep/providers/types.ts tools/warp_grep/providers/local.ts tools/warp_grep/providers/remote.ts tools/warp_grep/providers/code_storage_http.ts tools/warp_grep/tools/grep.ts tools/warp_grep/tools/analyse.ts tools/warp_grep/tools/read.ts tools/warp_grep/tools/finish.ts tools/warp_grep/utils/paths.ts tools/warp_grep/utils/github.ts tools/warp_grep/utils/ripgrep.ts tools/warp_grep/utils/format.ts tools/warp_grep/utils/files.ts git/index.ts git/client.ts git/config.ts git/types.ts tools/browser/index.ts tools/browser/core.ts tools/browser/types.ts tools/browser/prompts.ts tools/browser/anthropic.ts tools/browser/openai.ts tools/browser/vercel.ts tools/browser/live.ts tools/browser/errors.ts tools/browser/profiles/index.ts tools/browser/profiles/core.ts tools/browser/profiles/types.ts modelrouter/index.ts modelrouter/core.ts modelrouter/types.ts tools/compact/index.ts tools/compact/core.ts tools/compact/types.ts tools/reflex/index.ts tools/reflex/core.ts tools/reflex/types.ts tools/utils/resilience.ts subagents/index.ts subagents/types.ts subagents/prompts.ts subagents/vercel.ts subagents/anthropic.ts --format esm,cjs --sourcemap --clean --dts --dts-resolve",
216
+ build: "tsup version.ts index.ts edge.ts client.ts core/index.ts core/client.ts core/resource.ts core/error.ts tools/index.ts tools/fastapply/index.ts tools/fastapply/core.ts tools/fastapply/apply.ts tools/fastapply/types.ts tools/fastapply/prompts.ts tools/fastapply/anthropic.ts tools/fastapply/openai.ts tools/fastapply/vercel.ts tools/codebase_search/index.ts tools/codebase_search/core.ts tools/codebase_search/types.ts tools/codebase_search/prompts.ts tools/codebase_search/anthropic.ts tools/codebase_search/openai.ts tools/codebase_search/vercel.ts tools/warp_grep/index.ts tools/warp_grep/client.ts tools/warp_grep/openai.ts tools/warp_grep/anthropic.ts tools/warp_grep/vercel.ts tools/warp_grep/gemini.ts tools/warp_grep/harness.ts tools/warp_grep/agent/config.ts tools/warp_grep/agent/parser.ts tools/warp_grep/agent/runner.ts tools/warp_grep/agent/types.ts tools/warp_grep/agent/formatter.ts tools/warp_grep/providers/types.ts tools/warp_grep/providers/local.ts tools/warp_grep/providers/remote.ts tools/warp_grep/providers/code_storage_http.ts tools/warp_grep/tools/grep.ts tools/warp_grep/tools/analyse.ts tools/warp_grep/tools/read.ts tools/warp_grep/tools/finish.ts tools/warp_grep/utils/paths.ts tools/warp_grep/utils/github.ts tools/warp_grep/utils/ripgrep.ts tools/warp_grep/utils/format.ts tools/warp_grep/utils/files.ts git/index.ts git/client.ts git/config.ts git/types.ts tools/browser/index.ts tools/browser/core.ts tools/browser/types.ts tools/browser/prompts.ts tools/browser/anthropic.ts tools/browser/openai.ts tools/browser/vercel.ts tools/browser/live.ts tools/browser/errors.ts tools/browser/profiles/index.ts tools/browser/profiles/core.ts tools/browser/profiles/types.ts modelrouter/index.ts modelrouter/core.ts modelrouter/types.ts tools/compact/index.ts tools/compact/core.ts tools/compact/types.ts tools/reflex/index.ts tools/reflex/core.ts tools/reflex/types.ts tools/utils/resilience.ts subagents/index.ts subagents/types.ts subagents/prompts.ts subagents/vercel.ts subagents/anthropic.ts tracing/index.ts tracing/core.ts tracing/interaction.ts tracing/otel.ts tracing/signals.ts tracing/types.ts --format esm,cjs --sourcemap --clean --dts --dts-resolve",
207
217
  prepare: "npm run build",
208
218
  typecheck: "tsc --noEmit",
209
219
  lint: "eslint .",
@@ -233,6 +243,10 @@ var init_package = __esm({
233
243
  },
234
244
  license: "MIT",
235
245
  dependencies: {
246
+ "@opentelemetry/api": "^1.9.1",
247
+ "@opentelemetry/exporter-trace-otlp-http": "^0.203.0",
248
+ "@opentelemetry/sdk-trace-base": "^2.7.1",
249
+ "@traceloop/node-server-sdk": "^0.27.0",
236
250
  "@vscode/ripgrep": "^1.17.0",
237
251
  ai: ">=5.0.0",
238
252
  diff: "^7.0.0",