@morsehq-dev/sdk 0.5.0 → 0.6.0-rc.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 (142) hide show
  1. package/README.md +11 -10
  2. package/dist/anthropic/index.cjs +11 -11
  3. package/dist/anthropic/index.d.cts +1 -1
  4. package/dist/anthropic/index.d.ts +1 -1
  5. package/dist/anthropic/index.js +4 -4
  6. package/dist/anthropic-agent-sdk/index.cjs +44 -40
  7. package/dist/anthropic-agent-sdk/index.cjs.map +1 -1
  8. package/dist/anthropic-agent-sdk/index.d.cts +1 -1
  9. package/dist/anthropic-agent-sdk/index.d.ts +1 -1
  10. package/dist/anthropic-agent-sdk/index.js +10 -6
  11. package/dist/anthropic-agent-sdk/index.js.map +1 -1
  12. package/dist/browser/anthropic/index.cjs +11 -11
  13. package/dist/browser/anthropic/index.js +4 -4
  14. package/dist/browser/anthropic-agent-sdk/index.cjs +44 -40
  15. package/dist/browser/anthropic-agent-sdk/index.cjs.map +1 -1
  16. package/dist/browser/anthropic-agent-sdk/index.js +10 -6
  17. package/dist/browser/anthropic-agent-sdk/index.js.map +1 -1
  18. package/dist/browser/{chunk-ELQ4LGAS.cjs → chunk-33WDUUKZ.cjs} +18 -18
  19. package/dist/browser/{chunk-ELQ4LGAS.cjs.map → chunk-33WDUUKZ.cjs.map} +1 -1
  20. package/dist/browser/{chunk-TV7TRP5O.cjs → chunk-3I7IGP3P.cjs} +5 -5
  21. package/dist/browser/chunk-3I7IGP3P.cjs.map +1 -0
  22. package/dist/browser/{chunk-YYUDZTHI.js → chunk-3OYHDDOJ.js} +27 -5
  23. package/dist/browser/chunk-3OYHDDOJ.js.map +1 -0
  24. package/dist/browser/{chunk-6BNMYEMW.cjs → chunk-4IUHXUCJ.cjs} +49 -9
  25. package/dist/browser/chunk-4IUHXUCJ.cjs.map +1 -0
  26. package/dist/browser/{chunk-BUCIE3DR.js → chunk-5TYTCLKA.js} +4 -4
  27. package/dist/browser/{chunk-BUCIE3DR.js.map → chunk-5TYTCLKA.js.map} +1 -1
  28. package/dist/browser/{chunk-VIOT3AOP.js → chunk-6JHMFFPE.js} +3 -3
  29. package/dist/browser/chunk-6JHMFFPE.js.map +1 -0
  30. package/dist/browser/{chunk-BIP66M44.cjs → chunk-FKYI3N5N.cjs} +7 -7
  31. package/dist/browser/{chunk-BIP66M44.cjs.map → chunk-FKYI3N5N.cjs.map} +1 -1
  32. package/dist/browser/{chunk-NU74H55W.js → chunk-FPTUHYDJ.js} +3 -3
  33. package/dist/browser/{chunk-NU74H55W.js.map → chunk-FPTUHYDJ.js.map} +1 -1
  34. package/dist/browser/{chunk-52JTU4LH.cjs → chunk-IDKQZ4X5.cjs} +38 -15
  35. package/dist/browser/chunk-IDKQZ4X5.cjs.map +1 -0
  36. package/dist/browser/{chunk-2X64OY2L.cjs → chunk-LIP3XCTK.cjs} +12 -12
  37. package/dist/browser/{chunk-2X64OY2L.cjs.map → chunk-LIP3XCTK.cjs.map} +1 -1
  38. package/dist/browser/{chunk-T6Z6UIBN.js → chunk-OUQAH27A.js} +3 -3
  39. package/dist/browser/{chunk-T6Z6UIBN.js.map → chunk-OUQAH27A.js.map} +1 -1
  40. package/dist/browser/{chunk-4CMVMTFB.cjs → chunk-PSNZZBQJ.cjs} +6 -6
  41. package/dist/browser/{chunk-4CMVMTFB.cjs.map → chunk-PSNZZBQJ.cjs.map} +1 -1
  42. package/dist/browser/{chunk-6T6ZPOKZ.js → chunk-PXHTLCEU.js} +49 -10
  43. package/dist/browser/chunk-PXHTLCEU.js.map +1 -0
  44. package/dist/browser/{chunk-KZFG23MO.js → chunk-TRVACYUN.js} +5 -5
  45. package/dist/browser/{chunk-KZFG23MO.js.map → chunk-TRVACYUN.js.map} +1 -1
  46. package/dist/browser/index.cjs +189 -124
  47. package/dist/browser/index.cjs.map +1 -1
  48. package/dist/browser/index.js +111 -46
  49. package/dist/browser/index.js.map +1 -1
  50. package/dist/browser/integrations/pino.cjs +4 -4
  51. package/dist/browser/integrations/pino.js +3 -3
  52. package/dist/browser/langchain/index.cjs +28 -26
  53. package/dist/browser/langchain/index.cjs.map +1 -1
  54. package/dist/browser/langchain/index.js +13 -11
  55. package/dist/browser/langchain/index.js.map +1 -1
  56. package/dist/browser/langgraph/index.cjs +32 -30
  57. package/dist/browser/langgraph/index.cjs.map +1 -1
  58. package/dist/browser/langgraph/index.js +10 -8
  59. package/dist/browser/langgraph/index.js.map +1 -1
  60. package/dist/browser/openai/index.cjs +11 -11
  61. package/dist/browser/openai/index.js +2 -2
  62. package/dist/browser/openai-agents/index.cjs +63 -35
  63. package/dist/browser/openai-agents/index.cjs.map +1 -1
  64. package/dist/browser/openai-agents/index.js +33 -5
  65. package/dist/browser/openai-agents/index.js.map +1 -1
  66. package/dist/browser/vercel-ai/index.cjs +14 -14
  67. package/dist/browser/vercel-ai/index.js +3 -3
  68. package/dist/{chunk-KMBKZLXH.cjs → chunk-7DALGJL2.cjs} +100 -25
  69. package/dist/chunk-7DALGJL2.cjs.map +1 -0
  70. package/dist/{chunk-D5NTF54A.cjs → chunk-B7TGG62X.cjs} +12 -12
  71. package/dist/{chunk-D5NTF54A.cjs.map → chunk-B7TGG62X.cjs.map} +1 -1
  72. package/dist/{chunk-LPLL2OXI.cjs → chunk-COZFARLL.cjs} +5 -5
  73. package/dist/chunk-COZFARLL.cjs.map +1 -0
  74. package/dist/{chunk-GTPKPUAV.cjs → chunk-DXTNU2KT.cjs} +38 -15
  75. package/dist/chunk-DXTNU2KT.cjs.map +1 -0
  76. package/dist/{chunk-6FLGLD72.js → chunk-ERH3TNXZ.js} +3 -3
  77. package/dist/{chunk-6FLGLD72.js.map → chunk-ERH3TNXZ.js.map} +1 -1
  78. package/dist/{chunk-7HYFOHM3.cjs → chunk-ESJJXXB6.cjs} +6 -6
  79. package/dist/{chunk-7HYFOHM3.cjs.map → chunk-ESJJXXB6.cjs.map} +1 -1
  80. package/dist/{chunk-SUEBUMHL.cjs → chunk-ETRNCI5Z.cjs} +18 -18
  81. package/dist/{chunk-SUEBUMHL.cjs.map → chunk-ETRNCI5Z.cjs.map} +1 -1
  82. package/dist/{chunk-KWOSUW7B.js → chunk-GULJAURY.js} +27 -5
  83. package/dist/chunk-GULJAURY.js.map +1 -0
  84. package/dist/{chunk-ZIMGB7IT.js → chunk-HJV35HWL.js} +100 -26
  85. package/dist/chunk-HJV35HWL.js.map +1 -0
  86. package/dist/{chunk-3ONFIKKC.js → chunk-L7AD4KUD.js} +3 -3
  87. package/dist/chunk-L7AD4KUD.js.map +1 -0
  88. package/dist/{chunk-SFI36VWW.js → chunk-QBDTQTMN.js} +3 -3
  89. package/dist/{chunk-SFI36VWW.js.map → chunk-QBDTQTMN.js.map} +1 -1
  90. package/dist/{chunk-NMARCV3R.cjs → chunk-WG4H5JC6.cjs} +7 -7
  91. package/dist/{chunk-NMARCV3R.cjs.map → chunk-WG4H5JC6.cjs.map} +1 -1
  92. package/dist/{chunk-J5FEPM7L.js → chunk-XS4P7XPV.js} +5 -5
  93. package/dist/{chunk-J5FEPM7L.js.map → chunk-XS4P7XPV.js.map} +1 -1
  94. package/dist/{chunk-ZZSVPAXM.js → chunk-YVLEDBN7.js} +4 -4
  95. package/dist/{chunk-ZZSVPAXM.js.map → chunk-YVLEDBN7.js.map} +1 -1
  96. package/dist/index.cjs +199 -134
  97. package/dist/index.cjs.map +1 -1
  98. package/dist/index.d.cts +13 -2
  99. package/dist/index.d.ts +13 -2
  100. package/dist/index.js +112 -47
  101. package/dist/index.js.map +1 -1
  102. package/dist/integrations/pino.cjs +4 -4
  103. package/dist/integrations/pino.js +3 -3
  104. package/dist/langchain/index.cjs +28 -26
  105. package/dist/langchain/index.cjs.map +1 -1
  106. package/dist/langchain/index.d.cts +3 -3
  107. package/dist/langchain/index.d.ts +3 -3
  108. package/dist/langchain/index.js +13 -11
  109. package/dist/langchain/index.js.map +1 -1
  110. package/dist/langgraph/index.cjs +32 -30
  111. package/dist/langgraph/index.cjs.map +1 -1
  112. package/dist/langgraph/index.d.cts +3 -3
  113. package/dist/langgraph/index.d.ts +3 -3
  114. package/dist/langgraph/index.js +10 -8
  115. package/dist/langgraph/index.js.map +1 -1
  116. package/dist/openai/index.cjs +11 -11
  117. package/dist/openai/index.js +2 -2
  118. package/dist/openai-agents/index.cjs +63 -35
  119. package/dist/openai-agents/index.cjs.map +1 -1
  120. package/dist/openai-agents/index.d.cts +13 -4
  121. package/dist/openai-agents/index.d.ts +13 -4
  122. package/dist/openai-agents/index.js +33 -5
  123. package/dist/openai-agents/index.js.map +1 -1
  124. package/dist/{spans-DZtMuBvc.d.cts → spans-CBMWNg2C.d.cts} +1 -0
  125. package/dist/{spans-DZtMuBvc.d.ts → spans-CBMWNg2C.d.ts} +1 -0
  126. package/dist/{tracing-J8ZgxVzU.d.ts → tracing-BMWTyexr.d.ts} +1 -1
  127. package/dist/{tracing-CNlre8TK.d.cts → tracing-Bh-cbvr6.d.cts} +1 -1
  128. package/dist/vercel-ai/index.cjs +14 -14
  129. package/dist/vercel-ai/index.js +3 -3
  130. package/package.json +1 -1
  131. package/dist/browser/chunk-52JTU4LH.cjs.map +0 -1
  132. package/dist/browser/chunk-6BNMYEMW.cjs.map +0 -1
  133. package/dist/browser/chunk-6T6ZPOKZ.js.map +0 -1
  134. package/dist/browser/chunk-TV7TRP5O.cjs.map +0 -1
  135. package/dist/browser/chunk-VIOT3AOP.js.map +0 -1
  136. package/dist/browser/chunk-YYUDZTHI.js.map +0 -1
  137. package/dist/chunk-3ONFIKKC.js.map +0 -1
  138. package/dist/chunk-GTPKPUAV.cjs.map +0 -1
  139. package/dist/chunk-KMBKZLXH.cjs.map +0 -1
  140. package/dist/chunk-KWOSUW7B.js.map +0 -1
  141. package/dist/chunk-LPLL2OXI.cjs.map +0 -1
  142. package/dist/chunk-ZIMGB7IT.js.map +0 -1
package/dist/index.cjs CHANGED
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var chunkD5NTF54A_cjs = require('./chunk-D5NTF54A.cjs');
4
- var chunkSUEBUMHL_cjs = require('./chunk-SUEBUMHL.cjs');
5
- require('./chunk-LPLL2OXI.cjs');
6
- var chunk7HYFOHM3_cjs = require('./chunk-7HYFOHM3.cjs');
3
+ var chunkETRNCI5Z_cjs = require('./chunk-ETRNCI5Z.cjs');
4
+ var chunkB7TGG62X_cjs = require('./chunk-B7TGG62X.cjs');
5
+ require('./chunk-COZFARLL.cjs');
6
+ var chunkESJJXXB6_cjs = require('./chunk-ESJJXXB6.cjs');
7
7
  require('./chunk-KBWPNIH4.cjs');
8
8
  require('./chunk-HICEJ4LV.cjs');
9
- var chunkKMBKZLXH_cjs = require('./chunk-KMBKZLXH.cjs');
9
+ var chunk7DALGJL2_cjs = require('./chunk-7DALGJL2.cjs');
10
10
  var module$1 = require('module');
11
11
  var instrumentationPg = require('@opentelemetry/instrumentation-pg');
12
12
  var instrumentationMysql2 = require('@opentelemetry/instrumentation-mysql2');
@@ -14,10 +14,10 @@ var instrumentation = require('@opentelemetry/instrumentation');
14
14
  var api = require('@opentelemetry/api');
15
15
 
16
16
  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
17
- chunkKMBKZLXH_cjs.init_env();
17
+ chunk7DALGJL2_cjs.init_env();
18
18
  var FULL_INSTALL_TARGETS = {
19
19
  "@anthropic-ai/sdk": {
20
- install: (mod) => chunkSUEBUMHL_cjs.instrumentAnthropic({ anthropicModule: mod })
20
+ install: (mod) => chunkETRNCI5Z_cjs.instrumentAnthropic({ anthropicModule: mod })
21
21
  }
22
22
  };
23
23
  var DETECT_ONLY_TARGETS = {
@@ -96,7 +96,7 @@ function uninstallLazyHook() {
96
96
  originalRequire = null;
97
97
  }
98
98
  async function installAdapters() {
99
- if (chunkKMBKZLXH_cjs.isAutoDetectDisabled()) return;
99
+ if (chunk7DALGJL2_cjs.isAutoDetectDisabled()) return;
100
100
  const nodeRequire = getNodeRequire();
101
101
  if (!nodeRequire) return;
102
102
  const installPromises = [];
@@ -134,11 +134,11 @@ function _resetForTesting3() {
134
134
  }
135
135
 
136
136
  // src/index.ts
137
- chunkKMBKZLXH_cjs.init_env();
137
+ chunk7DALGJL2_cjs.init_env();
138
138
 
139
139
  // src/_internal/db-capture.ts
140
- chunkKMBKZLXH_cjs.init_env();
141
- chunkKMBKZLXH_cjs.init_otel_provider();
140
+ chunk7DALGJL2_cjs.init_env();
141
+ chunk7DALGJL2_cjs.init_otel_provider();
142
142
  var SEMCONV_DB_SYSTEM_NAME = "db.system.name";
143
143
  var SEMCONV_DB_QUERY_TEXT = "db.query.text";
144
144
  var DB_SYSTEM_NAME_SQLITE = "sqlite";
@@ -252,7 +252,7 @@ function registerDbInstrumentation() {
252
252
  disableDbCapture();
253
253
  try {
254
254
  const instrumentations = buildDbInstrumentations();
255
- const off = chunkKMBKZLXH_cjs.getEngine().registerInstrumentations(instrumentations);
255
+ const off = chunk7DALGJL2_cjs.getEngine().registerInstrumentations(instrumentations);
256
256
  if (off === null) return false;
257
257
  unregister = off;
258
258
  registeredInstrumentations = instrumentations;
@@ -274,19 +274,46 @@ function disableDbCapture() {
274
274
  registeredInstrumentations = null;
275
275
  }
276
276
  function maybeEnableDbCaptureFromEnv() {
277
- if (chunkKMBKZLXH_cjs.isDbCaptureEnabled()) {
277
+ if (chunk7DALGJL2_cjs.isDbCaptureEnabled()) {
278
278
  registerDbInstrumentation();
279
279
  }
280
280
  }
281
281
 
282
282
  // src/index.ts
283
- chunkKMBKZLXH_cjs.init_otel_provider();
284
- chunkKMBKZLXH_cjs.init_redaction();
283
+ chunk7DALGJL2_cjs.init_otel_provider();
284
+ chunk7DALGJL2_cjs.init_redaction();
285
285
 
286
286
  // src/_internal/transport.ts
287
- chunkKMBKZLXH_cjs.init_diagnostics();
288
- var SDK_VERSION = "0.5.0" ;
287
+ chunk7DALGJL2_cjs.init_diagnostics();
288
+ var SDK_VERSION = "0.6.0-rc.1" ;
289
289
  var RETRY_AFTER_CAP_SECONDS = 30;
290
+ var MAX_SEND_ATTEMPTS = 3;
291
+ var BACKOFF_BASE_MS = 500;
292
+ var BACKOFF_MAX_MS = 1e4;
293
+ var DEFAULT_FLUSH_TIMEOUT_MS = 1e4;
294
+ function backoffDelayMs(attempt) {
295
+ const base = Math.min(BACKOFF_MAX_MS, BACKOFF_BASE_MS * 2 ** (attempt - 1));
296
+ return base * (0.5 + Math.random());
297
+ }
298
+ function dropReasonFor(attempt, closed, deadline) {
299
+ if (closed) return chunk7DALGJL2_cjs.REASON_SHUTDOWN_DROP;
300
+ if (attempt === 1 && Date.now() >= deadline) return chunk7DALGJL2_cjs.REASON_SEND_FAILED;
301
+ return chunk7DALGJL2_cjs.REASON_RETRY_EXHAUSTED;
302
+ }
303
+ function withDeadline(promise, deadline) {
304
+ const remaining = Math.max(0, deadline - Date.now());
305
+ let timer;
306
+ return Promise.race([
307
+ promise,
308
+ new Promise((_, reject) => {
309
+ timer = setTimeout(() => reject(new Error("morse: flush deadline exceeded")), remaining);
310
+ })
311
+ ]).finally(() => clearTimeout(timer));
312
+ }
313
+ function sleepUntil(ms, deadline) {
314
+ const remaining = Math.max(0, Math.min(ms, deadline - Date.now()));
315
+ return new Promise((resolve) => setTimeout(resolve, remaining));
316
+ }
290
317
  function parseRetryAfter(value) {
291
318
  if (!value) return null;
292
319
  const seconds = Number(value);
@@ -364,6 +391,7 @@ var BatchTransport = class {
364
391
  maxBatchSize;
365
392
  maxQueueSize;
366
393
  fetchTimeoutMs;
394
+ flushTimeoutMs;
367
395
  fetchImpl;
368
396
  queue = [];
369
397
  timer = null;
@@ -377,6 +405,7 @@ var BatchTransport = class {
377
405
  this.maxBatchSize = opts.maxBatchSize ?? 100;
378
406
  this.maxQueueSize = opts.maxQueueSize ?? 1e4;
379
407
  this.fetchTimeoutMs = opts.fetchTimeoutMs ?? 5e3;
408
+ this.flushTimeoutMs = opts.flushTimeoutMs ?? DEFAULT_FLUSH_TIMEOUT_MS;
380
409
  this.fetchImpl = opts.fetchImpl ?? globalThis.fetch.bind(globalThis);
381
410
  const intervalMs = Math.max(50, Math.round(this.flushIntervalSeconds * 1e3));
382
411
  this.timer = setInterval(() => {
@@ -390,11 +419,11 @@ var BatchTransport = class {
390
419
  /** Enqueue an event. Non-blocking. Returns false if the queue is full. */
391
420
  track(event) {
392
421
  if (this.closed) {
393
- chunkKMBKZLXH_cjs.recordDrop(chunkKMBKZLXH_cjs.REASON_SHUTDOWN_DROP, "trace");
422
+ chunk7DALGJL2_cjs.recordDrop(chunk7DALGJL2_cjs.REASON_SHUTDOWN_DROP, "trace");
394
423
  return false;
395
424
  }
396
425
  if (this.queue.length >= this.maxQueueSize) {
397
- chunkKMBKZLXH_cjs.recordDrop(chunkKMBKZLXH_cjs.REASON_QUEUE_FULL, "trace");
426
+ chunk7DALGJL2_cjs.recordDrop(chunk7DALGJL2_cjs.REASON_QUEUE_FULL, "trace");
398
427
  return false;
399
428
  }
400
429
  this.queue.push(event);
@@ -467,56 +496,92 @@ var BatchTransport = class {
467
496
  await this.post(deriveLogsEndpoint(this.endpoint), { logs: logEntries });
468
497
  }
469
498
  }
470
- async post(url, payload) {
471
- const controller = new AbortController();
472
- const timeoutId = setTimeout(() => controller.abort(), this.fetchTimeoutMs);
499
+ async post(url, payload, deadline = Date.now() + this.flushTimeoutMs) {
500
+ let body;
473
501
  try {
474
- const resp = await this.fetchImpl(url, {
475
- method: "POST",
476
- headers: {
477
- Authorization: `Bearer ${this.apiKey}`,
478
- "Content-Type": "application/json",
479
- "User-Agent": `morse-typescript/${SDK_VERSION}`
480
- },
481
- body: JSON.stringify(payload),
482
- signal: controller.signal
502
+ body = JSON.stringify(payload);
503
+ } catch (err) {
504
+ chunk7DALGJL2_cjs.recordDrop(chunk7DALGJL2_cjs.REASON_ENCODE_FAILED, categoryOf(payload), countPayloadEntries(payload));
505
+ chunk7DALGJL2_cjs.report(err, {
506
+ fingerprint: "morse.transport.post.encode",
507
+ extra: { endpoint_host: hostnameOf(url), sdk_version: SDK_VERSION }
483
508
  });
484
- chunkKMBKZLXH_cjs.setLevel(resp.headers.get("X-Morse-Diagnostics"));
485
- const droppedCount = countPayloadEntries(payload);
486
- const droppedCategory = categoryOf(payload);
487
- if (resp.status === 429) {
488
- await recordQuotaState(resp);
489
- chunkKMBKZLXH_cjs.recordDrop(chunkKMBKZLXH_cjs.REASON_QUOTA_REJECTED, droppedCategory, droppedCount);
509
+ return;
510
+ }
511
+ const droppedCount = countPayloadEntries(payload);
512
+ const droppedCategory = categoryOf(payload);
513
+ for (let attempt = 1; attempt <= MAX_SEND_ATTEMPTS; attempt++) {
514
+ const lastAttempt = attempt >= MAX_SEND_ATTEMPTS;
515
+ const outOfTime = Date.now() >= deadline;
516
+ if (outOfTime && attempt > 1) {
517
+ chunk7DALGJL2_cjs.recordDrop(chunk7DALGJL2_cjs.REASON_RETRY_EXHAUSTED, droppedCategory, droppedCount);
518
+ return;
490
519
  }
491
- if (!resp.ok) {
520
+ const controller = new AbortController();
521
+ const timeoutId = setTimeout(() => controller.abort(), this.fetchTimeoutMs);
522
+ try {
523
+ const resp = await withDeadline(
524
+ this.fetchImpl(url, {
525
+ method: "POST",
526
+ headers: {
527
+ Authorization: `Bearer ${this.apiKey}`,
528
+ "Content-Type": "application/json",
529
+ "User-Agent": `morse-typescript/${SDK_VERSION}`
530
+ },
531
+ body,
532
+ signal: controller.signal
533
+ }),
534
+ deadline
535
+ );
536
+ chunk7DALGJL2_cjs.setLevel(resp.headers.get("X-Morse-Diagnostics"));
537
+ if (resp.ok) return;
538
+ if (resp.status === 429) await recordQuotaState(resp);
492
539
  let bodySnippet = "";
493
540
  try {
494
- const text = await resp.text();
495
- bodySnippet = text.slice(0, 200);
541
+ bodySnippet = (await resp.text()).slice(0, 200);
496
542
  } catch {
497
543
  }
498
- if (resp.status !== 429) {
499
- chunkKMBKZLXH_cjs.recordDrop(chunkKMBKZLXH_cjs.REASON_RETRY_EXHAUSTED, droppedCategory, droppedCount);
500
- }
501
- chunkKMBKZLXH_cjs.report(new Error(`morse: batch POST returned ${resp.status} ${bodySnippet}`), {
544
+ chunk7DALGJL2_cjs.report(new Error(`morse: batch POST returned ${resp.status} ${bodySnippet}`), {
502
545
  fingerprint: "morse.transport.post.non_2xx",
503
- extra: {
504
- endpoint_host: hostnameOf(url),
505
- sdk_version: SDK_VERSION
546
+ extra: { endpoint_host: hostnameOf(url), sdk_version: SDK_VERSION }
547
+ });
548
+ if (resp.status === 429) {
549
+ if (lastAttempt) {
550
+ chunk7DALGJL2_cjs.recordDrop(chunk7DALGJL2_cjs.REASON_QUOTA_REJECTED, droppedCategory, droppedCount);
551
+ return;
506
552
  }
553
+ const retryAfter = parseRetryAfter(resp.headers.get("Retry-After"));
554
+ await sleepUntil((retryAfter ?? 0) * 1e3 + backoffDelayMs(attempt), deadline);
555
+ continue;
556
+ }
557
+ if (resp.status < 500) {
558
+ chunk7DALGJL2_cjs.recordDrop(
559
+ resp.status === 401 || resp.status === 403 ? chunk7DALGJL2_cjs.REASON_AUTH_REJECTED : chunk7DALGJL2_cjs.REASON_ENDPOINT_REJECTED,
560
+ droppedCategory,
561
+ droppedCount
562
+ );
563
+ return;
564
+ }
565
+ if (lastAttempt || this.closed || Date.now() >= deadline) {
566
+ chunk7DALGJL2_cjs.recordDrop(dropReasonFor(attempt, this.closed, deadline), droppedCategory, droppedCount);
567
+ return;
568
+ }
569
+ await sleepUntil(backoffDelayMs(attempt), deadline);
570
+ continue;
571
+ } catch (err) {
572
+ chunk7DALGJL2_cjs.report(err, {
573
+ fingerprint: "morse.transport.post.network",
574
+ extra: { endpoint_host: hostnameOf(url), sdk_version: SDK_VERSION }
507
575
  });
508
- }
509
- } catch (err) {
510
- chunkKMBKZLXH_cjs.recordDrop(chunkKMBKZLXH_cjs.REASON_RETRY_EXHAUSTED, categoryOf(payload), countPayloadEntries(payload));
511
- chunkKMBKZLXH_cjs.report(err, {
512
- fingerprint: "morse.transport.post.network",
513
- extra: {
514
- endpoint_host: hostnameOf(url),
515
- sdk_version: SDK_VERSION
576
+ if (lastAttempt || this.closed || Date.now() >= deadline) {
577
+ chunk7DALGJL2_cjs.recordDrop(dropReasonFor(attempt, this.closed, deadline), droppedCategory, droppedCount);
578
+ return;
516
579
  }
517
- });
518
- } finally {
519
- clearTimeout(timeoutId);
580
+ await sleepUntil(backoffDelayMs(attempt), deadline);
581
+ continue;
582
+ } finally {
583
+ clearTimeout(timeoutId);
584
+ }
520
585
  }
521
586
  }
522
587
  };
@@ -552,10 +617,10 @@ function categoryOf(payload) {
552
617
  }
553
618
 
554
619
  // src/index.ts
555
- chunkKMBKZLXH_cjs.init_tracing();
556
- chunkKMBKZLXH_cjs.init_diagnostics();
557
- chunkKMBKZLXH_cjs.init_spans();
558
- chunkKMBKZLXH_cjs.init_propagation();
620
+ chunk7DALGJL2_cjs.init_tracing();
621
+ chunk7DALGJL2_cjs.init_diagnostics();
622
+ chunk7DALGJL2_cjs.init_spans();
623
+ chunk7DALGJL2_cjs.init_propagation();
559
624
  var version = SDK_VERSION;
560
625
  var singleton = null;
561
626
  var transportFactory = (opts) => new BatchTransport(opts);
@@ -575,9 +640,9 @@ function logDestinationOnce(endpoint) {
575
640
  }
576
641
  function resolveEndpoint(explicit) {
577
642
  if (explicit && explicit.length > 0) return explicit;
578
- const fromEnv = chunkKMBKZLXH_cjs.getEndpoint();
643
+ const fromEnv = chunk7DALGJL2_cjs.getEndpoint();
579
644
  if (fromEnv) return fromEnv;
580
- return chunkKMBKZLXH_cjs.DEFAULT_ENDPOINT;
645
+ return chunk7DALGJL2_cjs.DEFAULT_ENDPOINT;
581
646
  }
582
647
  var OTLP_TRACES_PATH = "/api/v1/otlp/v1/traces";
583
648
  function deriveOtlpEndpoint(tracesEndpoint) {
@@ -592,10 +657,10 @@ function deriveOtlpEndpoint(tracesEndpoint) {
592
657
  }
593
658
  }
594
659
  function buildSingleton(opts, redaction) {
595
- if (chunkKMBKZLXH_cjs.isDisabled()) {
660
+ if (chunk7DALGJL2_cjs.isDisabled()) {
596
661
  return null;
597
662
  }
598
- const apiKey = opts.apiKey ?? chunkKMBKZLXH_cjs.getApiKey();
663
+ const apiKey = opts.apiKey ?? chunk7DALGJL2_cjs.getApiKey();
599
664
  if (!apiKey) {
600
665
  if (!noApiKeyWarningEmitted) {
601
666
  logger2(
@@ -607,24 +672,24 @@ function buildSingleton(opts, redaction) {
607
672
  return null;
608
673
  }
609
674
  const endpoint = resolveEndpoint(opts.endpoint);
610
- const flushIntervalSeconds = opts.flushIntervalSeconds ?? chunkKMBKZLXH_cjs.getFlushIntervalSeconds();
675
+ const flushIntervalSeconds = opts.flushIntervalSeconds ?? chunk7DALGJL2_cjs.getFlushIntervalSeconds();
611
676
  const transport = transportFactory({ apiKey, endpoint, flushIntervalSeconds });
612
- chunkKMBKZLXH_cjs.setTransport(transport);
613
- chunkKMBKZLXH_cjs.setRedactionConfig(redaction);
614
- chunkKMBKZLXH_cjs.setDiagnosticsClientConfig({ apiKey, endpoint });
615
- const explicitSource = chunkKMBKZLXH_cjs.isValidInternalSource(opts.source) ? opts.source : void 0;
616
- const resolvedSource = explicitSource ?? chunkKMBKZLXH_cjs.getInternalSource() ?? null;
617
- chunkKMBKZLXH_cjs.setSource(resolvedSource);
677
+ chunk7DALGJL2_cjs.setTransport(transport);
678
+ chunk7DALGJL2_cjs.setRedactionConfig(redaction);
679
+ chunk7DALGJL2_cjs.setDiagnosticsClientConfig({ apiKey, endpoint });
680
+ const explicitSource = chunk7DALGJL2_cjs.isValidInternalSource(opts.source) ? opts.source : void 0;
681
+ const resolvedSource = explicitSource ?? chunk7DALGJL2_cjs.getInternalSource() ?? null;
682
+ chunk7DALGJL2_cjs.setSource(resolvedSource);
618
683
  logDestinationOnce(endpoint);
619
684
  try {
620
- chunkKMBKZLXH_cjs.getEngine().configure({
685
+ chunk7DALGJL2_cjs.getEngine().configure({
621
686
  endpoint: deriveOtlpEndpoint(endpoint),
622
687
  apiKey,
623
- sampleRate: chunkKMBKZLXH_cjs.getSampleRate(),
688
+ sampleRate: chunk7DALGJL2_cjs.getSampleRate(),
624
689
  scheduleDelayMillis: flushIntervalSeconds * 1e3,
625
- maxQueueSize: chunkKMBKZLXH_cjs.getMaxQueueSize(),
626
- maxExportBatchSize: chunkKMBKZLXH_cjs.getMaxBatchSize(),
627
- maxFieldBytes: chunkKMBKZLXH_cjs.getMaxFieldBytes(),
690
+ maxQueueSize: chunk7DALGJL2_cjs.getMaxQueueSize(),
691
+ maxExportBatchSize: chunk7DALGJL2_cjs.getMaxBatchSize(),
692
+ maxFieldBytes: chunk7DALGJL2_cjs.getMaxFieldBytes(),
628
693
  // 10s (not the exporter's un-overridden 30s ceiling): a genuine
629
694
  // network blip still gets several retries with backoff; a fully dead
630
695
  // endpoint fails within a bounded, shutdown-friendly window instead
@@ -633,32 +698,32 @@ function buildSingleton(opts, redaction) {
633
698
  redactionConfig: redaction
634
699
  });
635
700
  } catch (err) {
636
- chunkKMBKZLXH_cjs.report(err, { fingerprint: "morse.otel_provider.configure" });
701
+ chunk7DALGJL2_cjs.report(err, { fingerprint: "morse.otel_provider.configure" });
637
702
  }
638
703
  void installAdapters().catch(() => {
639
704
  });
640
705
  try {
641
706
  maybeEnableDbCaptureFromEnv();
642
707
  } catch (err) {
643
- chunkKMBKZLXH_cjs.report(err, { fingerprint: "morse.db_capture.register" });
708
+ chunk7DALGJL2_cjs.report(err, { fingerprint: "morse.db_capture.register" });
644
709
  }
645
710
  return { apiKey, endpoint, transport, redaction };
646
711
  }
647
712
  function ensureInitialized() {
648
- if (chunkKMBKZLXH_cjs.isDisabled()) return null;
713
+ if (chunk7DALGJL2_cjs.isDisabled()) return null;
649
714
  if (singleton !== null) return singleton;
650
- singleton = buildSingleton({}, chunkKMBKZLXH_cjs.buildRedactionConfig());
715
+ singleton = buildSingleton({}, chunk7DALGJL2_cjs.buildRedactionConfig());
651
716
  return singleton;
652
717
  }
653
- chunkD5NTF54A_cjs._setEnsureInitialized(() => {
718
+ chunkB7TGG62X_cjs._setEnsureInitialized(() => {
654
719
  ensureInitialized();
655
720
  });
656
721
  function init(options = {}) {
657
- if (chunkKMBKZLXH_cjs.isDisabled()) {
722
+ if (chunk7DALGJL2_cjs.isDisabled()) {
658
723
  logger2("info", "morse: MORSE_DISABLED=1 \u2014 SDK is a no-op");
659
724
  return;
660
725
  }
661
- const redaction = chunkKMBKZLXH_cjs.buildRedactionConfig(options.redaction);
726
+ const redaction = chunk7DALGJL2_cjs.buildRedactionConfig(options.redaction);
662
727
  try {
663
728
  if (singleton !== null) {
664
729
  void singleton.transport.shutdown();
@@ -666,10 +731,10 @@ function init(options = {}) {
666
731
  }
667
732
  singleton = buildSingleton(options, redaction);
668
733
  } catch (err) {
669
- chunkKMBKZLXH_cjs.report(err, { fingerprint: "morse.init" });
734
+ chunk7DALGJL2_cjs.report(err, { fingerprint: "morse.init" });
670
735
  }
671
736
  }
672
- var track = chunk7HYFOHM3_cjs.absorbErrorsSync(
737
+ var track = chunkESJJXXB6_cjs.absorbErrorsSync(
673
738
  (options) => {
674
739
  const state = ensureInitialized();
675
740
  if (!state) return;
@@ -677,33 +742,33 @@ var track = chunk7HYFOHM3_cjs.absorbErrorsSync(
677
742
  agent_id: options.agentId,
678
743
  ...options.runData
679
744
  };
680
- const redacted = chunkKMBKZLXH_cjs.redactValue(payload, state.redaction);
745
+ const redacted = chunk7DALGJL2_cjs.redactValue(payload, state.redaction);
681
746
  state.transport.track(redacted);
682
747
  },
683
748
  { fingerprint: "morse.track" }
684
749
  );
685
- var batchTrack = chunk7HYFOHM3_cjs.absorbErrorsSync(
750
+ var batchTrack = chunkESJJXXB6_cjs.absorbErrorsSync(
686
751
  (runs) => {
687
752
  const state = ensureInitialized();
688
753
  if (!state) return;
689
754
  for (const run2 of runs) {
690
- const redacted = chunkKMBKZLXH_cjs.redactValue(run2, state.redaction);
755
+ const redacted = chunk7DALGJL2_cjs.redactValue(run2, state.redaction);
691
756
  state.transport.track(redacted);
692
757
  }
693
758
  },
694
759
  { fingerprint: "morse.batch_track" }
695
760
  );
696
- var record = chunk7HYFOHM3_cjs.absorbErrorsSync(
761
+ var record = chunkESJJXXB6_cjs.absorbErrorsSync(
697
762
  (rec) => {
698
763
  const state = ensureInitialized();
699
764
  if (!state) return;
700
- const traceId = chunkKMBKZLXH_cjs.generateTraceId();
701
- const now = chunkKMBKZLXH_cjs.nowIso();
765
+ const traceId = chunk7DALGJL2_cjs.generateTraceId();
766
+ const now = chunk7DALGJL2_cjs.nowIso();
702
767
  const resolvedStatus = rec.errorMessage ? "failed" : rec.status ?? "completed";
703
768
  const span2 = {
704
769
  trace_id: traceId,
705
- span_id: chunkKMBKZLXH_cjs.generateSpanId(),
706
- type: chunkKMBKZLXH_cjs.SpanType.AGENT,
770
+ span_id: chunk7DALGJL2_cjs.generateSpanId(),
771
+ type: chunk7DALGJL2_cjs.SpanType.AGENT,
707
772
  name: rec.agent,
708
773
  started_at: now,
709
774
  ended_at: now,
@@ -728,58 +793,58 @@ var record = chunk7HYFOHM3_cjs.absorbErrorsSync(
728
793
  success: rec.success,
729
794
  outcome: rec.outcome
730
795
  };
731
- const entry = chunkKMBKZLXH_cjs.buildTraceEntry(traceFields, [span2]);
732
- const redacted = chunkKMBKZLXH_cjs.redactValue(entry, state.redaction);
733
- chunkKMBKZLXH_cjs.sendTrace(redacted);
796
+ const entry = chunk7DALGJL2_cjs.buildTraceEntry(traceFields, [span2]);
797
+ const redacted = chunk7DALGJL2_cjs.redactValue(entry, state.redaction);
798
+ chunk7DALGJL2_cjs.sendTrace(redacted);
734
799
  },
735
800
  { fingerprint: "morse.record" }
736
801
  );
737
802
  function run(nameOrOpts, fn) {
738
803
  const opts = typeof nameOrOpts === "string" ? { agentName: nameOrOpts } : nameOrOpts;
739
804
  ensureInitialized();
740
- return chunkKMBKZLXH_cjs.runSync(opts, fn);
805
+ return chunk7DALGJL2_cjs.runSync(opts, fn);
741
806
  }
742
807
  function runTraced(options, fn) {
743
808
  ensureInitialized();
744
- return chunkKMBKZLXH_cjs.runAsync(options, fn);
809
+ return chunk7DALGJL2_cjs.runAsync(options, fn);
745
810
  }
746
811
  function setContext2(dims) {
747
- chunkKMBKZLXH_cjs.setContext(dims);
812
+ chunk7DALGJL2_cjs.setContext(dims);
748
813
  }
749
814
  function startSpan2(options) {
750
- return chunkKMBKZLXH_cjs.startSpan(options);
815
+ return chunk7DALGJL2_cjs.startSpan(options);
751
816
  }
752
817
  function span(options, fn) {
753
- return chunkKMBKZLXH_cjs.spanSync(options, fn);
818
+ return chunk7DALGJL2_cjs.spanSync(options, fn);
754
819
  }
755
820
  function spanAsync2(options, fn) {
756
- return chunkKMBKZLXH_cjs.spanAsync(options, fn);
821
+ return chunk7DALGJL2_cjs.spanAsync(options, fn);
757
822
  }
758
- var flush = chunk7HYFOHM3_cjs.absorbErrorsAsync(
823
+ var flush = chunkESJJXXB6_cjs.absorbErrorsAsync(
759
824
  async () => {
760
825
  if (singleton !== null) {
761
826
  await singleton.transport.flush();
762
- await chunkKMBKZLXH_cjs.getEngine().flush();
827
+ await chunk7DALGJL2_cjs.getEngine().flush();
763
828
  }
764
829
  },
765
830
  { fingerprint: "morse.flush" }
766
831
  );
767
- var quotaState2 = chunk7HYFOHM3_cjs.absorbErrorsSync(
832
+ var quotaState2 = chunkESJJXXB6_cjs.absorbErrorsSync(
768
833
  () => {
769
834
  if (singleton === null) return null;
770
835
  return getQuotaState();
771
836
  },
772
837
  { fingerprint: "morse.quota_state" }
773
838
  );
774
- var shutdown = chunk7HYFOHM3_cjs.absorbErrorsAsync(
839
+ var shutdown = chunkESJJXXB6_cjs.absorbErrorsAsync(
775
840
  async () => {
776
841
  if (singleton !== null) {
777
842
  await singleton.transport.shutdown();
778
- await chunkKMBKZLXH_cjs.getEngine().flush();
779
- chunkKMBKZLXH_cjs.getEngine().shutdown();
780
- await chunkKMBKZLXH_cjs.flushOnce();
843
+ await chunk7DALGJL2_cjs.getEngine().flush();
844
+ chunk7DALGJL2_cjs.getEngine().shutdown();
845
+ await chunk7DALGJL2_cjs.flushOnce();
781
846
  singleton = null;
782
- chunkKMBKZLXH_cjs.setTransport(null);
847
+ chunk7DALGJL2_cjs.setTransport(null);
783
848
  }
784
849
  },
785
850
  { fingerprint: "morse.shutdown" }
@@ -788,14 +853,14 @@ function _resetForTesting4() {
788
853
  if (singleton !== null) {
789
854
  void singleton.transport.shutdown();
790
855
  singleton = null;
791
- chunkKMBKZLXH_cjs.setTransport(null);
856
+ chunk7DALGJL2_cjs.setTransport(null);
792
857
  }
793
- chunkKMBKZLXH_cjs.getEngine().resetForTesting();
858
+ chunk7DALGJL2_cjs.getEngine().resetForTesting();
794
859
  noApiKeyWarningEmitted = false;
795
860
  lastLoggedEndpoint = null;
796
- chunkKMBKZLXH_cjs.setSource(null);
797
- chunkKMBKZLXH_cjs._resetForTesting2();
798
- chunkKMBKZLXH_cjs._resetForTesting();
861
+ chunk7DALGJL2_cjs.setSource(null);
862
+ chunk7DALGJL2_cjs._resetForTesting2();
863
+ chunk7DALGJL2_cjs._resetForTesting();
799
864
  _resetForTesting3();
800
865
  _resetQuotaStateForTesting();
801
866
  transportFactory = (opts) => new BatchTransport(opts);
@@ -804,59 +869,59 @@ function _setTransportFactoryForTesting(factory) {
804
869
  transportFactory = factory;
805
870
  }
806
871
  function _getLastTraceForTesting() {
807
- return chunkKMBKZLXH_cjs.getLastTrace();
872
+ return chunk7DALGJL2_cjs.getLastTrace();
808
873
  }
809
874
  function _getActiveTraceStateForTesting() {
810
- return chunkKMBKZLXH_cjs.getActiveTraceState();
875
+ return chunk7DALGJL2_cjs.getActiveTraceState();
811
876
  }
812
877
 
813
- Object.defineProperty(exports, "log", {
814
- enumerable: true,
815
- get: function () { return chunkD5NTF54A_cjs.log; }
816
- });
817
878
  Object.defineProperty(exports, "MAX_SEGMENT_CONTENT_BYTES", {
818
879
  enumerable: true,
819
- get: function () { return chunkSUEBUMHL_cjs.MAX_SEGMENT_CONTENT_BYTES; }
880
+ get: function () { return chunkETRNCI5Z_cjs.MAX_SEGMENT_CONTENT_BYTES; }
820
881
  });
821
882
  Object.defineProperty(exports, "extractAnthropicSegments", {
822
883
  enumerable: true,
823
- get: function () { return chunkSUEBUMHL_cjs.extractAnthropicSegments; }
884
+ get: function () { return chunkETRNCI5Z_cjs.extractAnthropicSegments; }
824
885
  });
825
886
  Object.defineProperty(exports, "instrumentAnthropic", {
826
887
  enumerable: true,
827
- get: function () { return chunkSUEBUMHL_cjs.instrumentAnthropic; }
888
+ get: function () { return chunkETRNCI5Z_cjs.instrumentAnthropic; }
828
889
  });
829
890
  Object.defineProperty(exports, "isAnthropicWrapped", {
830
891
  enumerable: true,
831
- get: function () { return chunkSUEBUMHL_cjs.isAnthropicWrapped; }
892
+ get: function () { return chunkETRNCI5Z_cjs.isAnthropicWrapped; }
832
893
  });
833
894
  Object.defineProperty(exports, "uninstallAnthropic", {
834
895
  enumerable: true,
835
- get: function () { return chunkSUEBUMHL_cjs.uninstallAnthropic; }
896
+ get: function () { return chunkETRNCI5Z_cjs.uninstallAnthropic; }
836
897
  });
837
898
  Object.defineProperty(exports, "wrapAnthropic", {
838
899
  enumerable: true,
839
- get: function () { return chunkSUEBUMHL_cjs.wrapAnthropic; }
900
+ get: function () { return chunkETRNCI5Z_cjs.wrapAnthropic; }
901
+ });
902
+ Object.defineProperty(exports, "log", {
903
+ enumerable: true,
904
+ get: function () { return chunkB7TGG62X_cjs.log; }
840
905
  });
841
906
  Object.defineProperty(exports, "W3C_TRACEPARENT_HEADER", {
842
907
  enumerable: true,
843
- get: function () { return chunkKMBKZLXH_cjs.W3C_TRACEPARENT_HEADER; }
908
+ get: function () { return chunk7DALGJL2_cjs.W3C_TRACEPARENT_HEADER; }
844
909
  });
845
910
  Object.defineProperty(exports, "extractTraceparent", {
846
911
  enumerable: true,
847
- get: function () { return chunkKMBKZLXH_cjs.extractTraceparent; }
912
+ get: function () { return chunk7DALGJL2_cjs.extractTraceparent; }
848
913
  });
849
914
  Object.defineProperty(exports, "formatTraceparent", {
850
915
  enumerable: true,
851
- get: function () { return chunkKMBKZLXH_cjs.formatTraceparent; }
916
+ get: function () { return chunk7DALGJL2_cjs.formatTraceparent; }
852
917
  });
853
918
  Object.defineProperty(exports, "injectIntoRequestInit", {
854
919
  enumerable: true,
855
- get: function () { return chunkKMBKZLXH_cjs.injectIntoRequestInit; }
920
+ get: function () { return chunk7DALGJL2_cjs.injectIntoRequestInit; }
856
921
  });
857
922
  Object.defineProperty(exports, "injectTraceparent", {
858
923
  enumerable: true,
859
- get: function () { return chunkKMBKZLXH_cjs.injectTraceparent; }
924
+ get: function () { return chunk7DALGJL2_cjs.injectTraceparent; }
860
925
  });
861
926
  exports._getActiveTraceStateForTesting = _getActiveTraceStateForTesting;
862
927
  exports._getLastTraceForTesting = _getLastTraceForTesting;