@morsehq-dev/sdk 0.5.0-rc.6 → 0.5.1-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.
- package/README.md +11 -10
- package/dist/anthropic/index.cjs +11 -11
- package/dist/anthropic/index.js +4 -4
- package/dist/anthropic-agent-sdk/index.cjs +40 -40
- package/dist/anthropic-agent-sdk/index.js +6 -6
- package/dist/browser/anthropic/index.cjs +11 -11
- package/dist/browser/anthropic/index.js +4 -4
- package/dist/browser/anthropic-agent-sdk/index.cjs +40 -40
- package/dist/browser/anthropic-agent-sdk/index.js +6 -6
- package/dist/browser/{chunk-PHE4P3DN.js → chunk-5IMBYZUB.js} +3 -3
- package/dist/browser/{chunk-PHE4P3DN.js.map → chunk-5IMBYZUB.js.map} +1 -1
- package/dist/browser/{chunk-MIHCAKQ2.js → chunk-7G266PKE.js} +32 -9
- package/dist/browser/chunk-7G266PKE.js.map +1 -0
- package/dist/browser/{chunk-FDWPKINR.js → chunk-AX6NEG6X.js} +4 -4
- package/dist/browser/{chunk-FDWPKINR.js.map → chunk-AX6NEG6X.js.map} +1 -1
- package/dist/browser/{chunk-ZAISDHUV.cjs → chunk-E6WORBIU.cjs} +5 -5
- package/dist/browser/{chunk-ZAISDHUV.cjs.map → chunk-E6WORBIU.cjs.map} +1 -1
- package/dist/{chunk-B3WEUUUK.cjs → browser/chunk-FYIQARMI.cjs} +7 -7
- package/dist/browser/{chunk-NK6D2G5O.cjs.map → chunk-FYIQARMI.cjs.map} +1 -1
- package/dist/browser/{chunk-WG45SF7N.cjs → chunk-HJTUPXNE.cjs} +31 -8
- package/dist/browser/chunk-HJTUPXNE.cjs.map +1 -0
- package/dist/browser/{chunk-TGN4FEKB.cjs → chunk-HNOHWDK3.cjs} +12 -12
- package/dist/browser/{chunk-TGN4FEKB.cjs.map → chunk-HNOHWDK3.cjs.map} +1 -1
- package/dist/{chunk-LEDIWC2M.js → browser/chunk-PIZVCAW7.js} +4 -4
- package/dist/browser/{chunk-TIZ5QRK2.js.map → chunk-PIZVCAW7.js.map} +1 -1
- package/dist/browser/{chunk-2LZCQD3J.js → chunk-RDNSY73W.js} +3 -3
- package/dist/browser/{chunk-2LZCQD3J.js.map → chunk-RDNSY73W.js.map} +1 -1
- package/dist/browser/{chunk-IXCAR4UA.js → chunk-TIMAH323.js} +3 -3
- package/dist/browser/{chunk-IXCAR4UA.js.map → chunk-TIMAH323.js.map} +1 -1
- package/dist/browser/{chunk-JNF26SQM.js → chunk-VSHCKROM.js} +5 -5
- package/dist/browser/{chunk-JNF26SQM.js.map → chunk-VSHCKROM.js.map} +1 -1
- package/dist/browser/{chunk-PNUCUOUA.cjs → chunk-YXCWAU36.cjs} +15 -15
- package/dist/browser/{chunk-PNUCUOUA.cjs.map → chunk-YXCWAU36.cjs.map} +1 -1
- package/dist/browser/{chunk-6YPVIGD2.cjs → chunk-Z26QGUMP.cjs} +6 -6
- package/dist/browser/{chunk-6YPVIGD2.cjs.map → chunk-Z26QGUMP.cjs.map} +1 -1
- package/dist/browser/{chunk-DQ4JWHYH.cjs → chunk-ZOOYJTDT.cjs} +18 -18
- package/dist/browser/{chunk-DQ4JWHYH.cjs.map → chunk-ZOOYJTDT.cjs.map} +1 -1
- package/dist/browser/index.cjs +189 -124
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +111 -46
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/integrations/pino.cjs +4 -4
- package/dist/browser/integrations/pino.js +3 -3
- package/dist/browser/langchain/index.cjs +17 -17
- package/dist/browser/langchain/index.js +2 -2
- package/dist/browser/langgraph/index.cjs +27 -27
- package/dist/browser/langgraph/index.js +5 -5
- package/dist/browser/openai/index.cjs +11 -11
- package/dist/browser/openai/index.js +2 -2
- package/dist/browser/openai-agents/index.cjs +34 -34
- package/dist/browser/openai-agents/index.js +4 -4
- package/dist/browser/vercel-ai/index.cjs +14 -14
- package/dist/browser/vercel-ai/index.js +3 -3
- package/dist/{browser/chunk-NK6D2G5O.cjs → chunk-2UFTRWUS.cjs} +7 -7
- package/dist/{chunk-B3WEUUUK.cjs.map → chunk-2UFTRWUS.cjs.map} +1 -1
- package/dist/{chunk-DK3RX7RS.js → chunk-4WUG3RMJ.js} +4 -4
- package/dist/{chunk-DK3RX7RS.js.map → chunk-4WUG3RMJ.js.map} +1 -1
- package/dist/{chunk-QTATKDEI.js → chunk-5MJS5ECA.js} +3 -3
- package/dist/{chunk-QTATKDEI.js.map → chunk-5MJS5ECA.js.map} +1 -1
- package/dist/{chunk-Z2AYPTB2.js → chunk-62FWHZXN.js} +5 -5
- package/dist/{chunk-Z2AYPTB2.js.map → chunk-62FWHZXN.js.map} +1 -1
- package/dist/{browser/chunk-TIZ5QRK2.js → chunk-FHQGPQFR.js} +4 -4
- package/dist/{chunk-LEDIWC2M.js.map → chunk-FHQGPQFR.js.map} +1 -1
- package/dist/{chunk-AT3YR5SP.cjs → chunk-GATTHW3X.cjs} +5 -5
- package/dist/{chunk-AT3YR5SP.cjs.map → chunk-GATTHW3X.cjs.map} +1 -1
- package/dist/{chunk-T5UFHQLZ.js → chunk-GQVNZPRF.js} +3 -3
- package/dist/{chunk-T5UFHQLZ.js.map → chunk-GQVNZPRF.js.map} +1 -1
- package/dist/{chunk-4QY5O46P.cjs → chunk-HCN6Z56N.cjs} +18 -18
- package/dist/{chunk-4QY5O46P.cjs.map → chunk-HCN6Z56N.cjs.map} +1 -1
- package/dist/{chunk-K4FHTOBB.cjs → chunk-KALB7HJ5.cjs} +12 -12
- package/dist/{chunk-K4FHTOBB.cjs.map → chunk-KALB7HJ5.cjs.map} +1 -1
- package/dist/{chunk-TEWSIQ6E.cjs → chunk-QLJAATBR.cjs} +6 -6
- package/dist/{chunk-TEWSIQ6E.cjs.map → chunk-QLJAATBR.cjs.map} +1 -1
- package/dist/{chunk-ZFZTJXIO.cjs → chunk-XBI4AMCW.cjs} +15 -15
- package/dist/{chunk-ZFZTJXIO.cjs.map → chunk-XBI4AMCW.cjs.map} +1 -1
- package/dist/{chunk-5YJXFU5U.js → chunk-YGKEP2GY.js} +32 -9
- package/dist/chunk-YGKEP2GY.js.map +1 -0
- package/dist/{chunk-2GWOF5JM.js → chunk-ZMRXUZ5L.js} +3 -3
- package/dist/{chunk-2GWOF5JM.js.map → chunk-ZMRXUZ5L.js.map} +1 -1
- package/dist/{chunk-UV5FUVNK.cjs → chunk-ZTBAMSCC.cjs} +31 -8
- package/dist/chunk-ZTBAMSCC.cjs.map +1 -0
- package/dist/index.cjs +196 -131
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +112 -47
- package/dist/index.js.map +1 -1
- package/dist/integrations/pino.cjs +4 -4
- package/dist/integrations/pino.js +3 -3
- package/dist/langchain/index.cjs +17 -17
- package/dist/langchain/index.js +2 -2
- package/dist/langgraph/index.cjs +27 -27
- package/dist/langgraph/index.js +5 -5
- package/dist/openai/index.cjs +11 -11
- package/dist/openai/index.js +2 -2
- package/dist/openai-agents/index.cjs +34 -34
- package/dist/openai-agents/index.js +4 -4
- package/dist/vercel-ai/index.cjs +14 -14
- package/dist/vercel-ai/index.js +3 -3
- package/package.json +1 -1
- package/dist/browser/chunk-MIHCAKQ2.js.map +0 -1
- package/dist/browser/chunk-WG45SF7N.cjs.map +0 -1
- package/dist/chunk-5YJXFU5U.js.map +0 -1
- package/dist/chunk-UV5FUVNK.cjs.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { instrumentAnthropic } from './chunk-
|
|
2
|
-
export { MAX_SEGMENT_CONTENT_BYTES, extractAnthropicSegments, instrumentAnthropic, isAnthropicWrapped, uninstallAnthropic, wrapAnthropic } from './chunk-
|
|
3
|
-
import { _setEnsureInitialized } from './chunk-
|
|
4
|
-
export { log } from './chunk-
|
|
5
|
-
import './chunk-
|
|
6
|
-
import { absorbErrorsSync, absorbErrorsAsync } from './chunk-
|
|
1
|
+
import { instrumentAnthropic } from './chunk-62FWHZXN.js';
|
|
2
|
+
export { MAX_SEGMENT_CONTENT_BYTES, extractAnthropicSegments, instrumentAnthropic, isAnthropicWrapped, uninstallAnthropic, wrapAnthropic } from './chunk-62FWHZXN.js';
|
|
3
|
+
import { _setEnsureInitialized } from './chunk-4WUG3RMJ.js';
|
|
4
|
+
export { log } from './chunk-4WUG3RMJ.js';
|
|
5
|
+
import './chunk-ZMRXUZ5L.js';
|
|
6
|
+
import { absorbErrorsSync, absorbErrorsAsync } from './chunk-5MJS5ECA.js';
|
|
7
7
|
import './chunk-XTKMUJWI.js';
|
|
8
8
|
import './chunk-4JPZV2VZ.js';
|
|
9
|
-
import { init_env, init_otel_provider, init_redaction, init_diagnostics, init_tracing, init_spans, init_propagation, redactValue, generateTraceId, nowIso, SpanType, generateSpanId, buildTraceEntry, sendTrace, isDisabled, buildRedactionConfig, getApiKey, getFlushIntervalSeconds, setTransport, setRedactionConfig, setDiagnosticsClientConfig, isValidInternalSource, getInternalSource, setSource, getEngine, getMaxFieldBytes, getMaxBatchSize, getMaxQueueSize, getSampleRate, report, getEndpoint, DEFAULT_ENDPOINT, isAutoDetectDisabled, isDbCaptureEnabled, recordDrop, REASON_SHUTDOWN_DROP, REASON_QUEUE_FULL, setLevel, REASON_QUOTA_REJECTED,
|
|
10
|
-
export { W3C_TRACEPARENT_HEADER, extractTraceparent, formatTraceparent, injectIntoRequestInit, injectTraceparent } from './chunk-
|
|
9
|
+
import { init_env, init_otel_provider, init_redaction, init_diagnostics, init_tracing, init_spans, init_propagation, redactValue, generateTraceId, nowIso, SpanType, generateSpanId, buildTraceEntry, sendTrace, isDisabled, buildRedactionConfig, getApiKey, getFlushIntervalSeconds, setTransport, setRedactionConfig, setDiagnosticsClientConfig, isValidInternalSource, getInternalSource, setSource, getEngine, getMaxFieldBytes, getMaxBatchSize, getMaxQueueSize, getSampleRate, report, getEndpoint, DEFAULT_ENDPOINT, isAutoDetectDisabled, isDbCaptureEnabled, recordDrop, REASON_SHUTDOWN_DROP, REASON_QUEUE_FULL, REASON_ENCODE_FAILED, REASON_RETRY_EXHAUSTED, setLevel, REASON_QUOTA_REJECTED, REASON_AUTH_REJECTED, REASON_ENDPOINT_REJECTED, REASON_SEND_FAILED, runSync, runAsync, setContext, startSpan, spanSync, spanAsync, flushOnce, _resetForTesting2, _resetForTesting, getLastTrace, getActiveTraceState } from './chunk-YGKEP2GY.js';
|
|
10
|
+
export { W3C_TRACEPARENT_HEADER, extractTraceparent, formatTraceparent, injectIntoRequestInit, injectTraceparent } from './chunk-YGKEP2GY.js';
|
|
11
11
|
import { createRequire, Module } from 'module';
|
|
12
12
|
import { PgInstrumentation } from '@opentelemetry/instrumentation-pg';
|
|
13
13
|
import { MySQL2Instrumentation } from '@opentelemetry/instrumentation-mysql2';
|
|
@@ -285,8 +285,35 @@ init_redaction();
|
|
|
285
285
|
|
|
286
286
|
// src/_internal/transport.ts
|
|
287
287
|
init_diagnostics();
|
|
288
|
-
var SDK_VERSION = "0.5.
|
|
288
|
+
var SDK_VERSION = "0.5.1-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 REASON_SHUTDOWN_DROP;
|
|
300
|
+
if (attempt === 1 && Date.now() >= deadline) return REASON_SEND_FAILED;
|
|
301
|
+
return 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(() => {
|
|
@@ -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
|
-
|
|
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
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
},
|
|
481
|
-
body: JSON.stringify(payload),
|
|
482
|
-
signal: controller.signal
|
|
502
|
+
body = JSON.stringify(payload);
|
|
503
|
+
} catch (err) {
|
|
504
|
+
recordDrop(REASON_ENCODE_FAILED, categoryOf(payload), countPayloadEntries(payload));
|
|
505
|
+
report(err, {
|
|
506
|
+
fingerprint: "morse.transport.post.encode",
|
|
507
|
+
extra: { endpoint_host: hostnameOf(url), sdk_version: SDK_VERSION }
|
|
483
508
|
});
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
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
|
+
recordDrop(REASON_RETRY_EXHAUSTED, droppedCategory, droppedCount);
|
|
518
|
+
return;
|
|
490
519
|
}
|
|
491
|
-
|
|
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
|
+
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
|
-
|
|
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
|
-
recordDrop(REASON_RETRY_EXHAUSTED, droppedCategory, droppedCount);
|
|
500
|
-
}
|
|
501
544
|
report(new Error(`morse: batch POST returned ${resp.status} ${bodySnippet}`), {
|
|
502
545
|
fingerprint: "morse.transport.post.non_2xx",
|
|
503
|
-
extra: {
|
|
504
|
-
|
|
505
|
-
|
|
546
|
+
extra: { endpoint_host: hostnameOf(url), sdk_version: SDK_VERSION }
|
|
547
|
+
});
|
|
548
|
+
if (resp.status === 429) {
|
|
549
|
+
if (lastAttempt) {
|
|
550
|
+
recordDrop(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
|
+
recordDrop(
|
|
559
|
+
resp.status === 401 || resp.status === 403 ? REASON_AUTH_REJECTED : REASON_ENDPOINT_REJECTED,
|
|
560
|
+
droppedCategory,
|
|
561
|
+
droppedCount
|
|
562
|
+
);
|
|
563
|
+
return;
|
|
564
|
+
}
|
|
565
|
+
if (lastAttempt || this.closed || Date.now() >= deadline) {
|
|
566
|
+
recordDrop(dropReasonFor(attempt, this.closed, deadline), droppedCategory, droppedCount);
|
|
567
|
+
return;
|
|
568
|
+
}
|
|
569
|
+
await sleepUntil(backoffDelayMs(attempt), deadline);
|
|
570
|
+
continue;
|
|
571
|
+
} catch (err) {
|
|
572
|
+
report(err, {
|
|
573
|
+
fingerprint: "morse.transport.post.network",
|
|
574
|
+
extra: { endpoint_host: hostnameOf(url), sdk_version: SDK_VERSION }
|
|
507
575
|
});
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
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
|
+
recordDrop(dropReasonFor(attempt, this.closed, deadline), droppedCategory, droppedCount);
|
|
578
|
+
return;
|
|
516
579
|
}
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
580
|
+
await sleepUntil(backoffDelayMs(attempt), deadline);
|
|
581
|
+
continue;
|
|
582
|
+
} finally {
|
|
583
|
+
clearTimeout(timeoutId);
|
|
584
|
+
}
|
|
520
585
|
}
|
|
521
586
|
}
|
|
522
587
|
};
|