@dxos/observability 0.8.4-main.9be5663bfe → 0.8.4-main.abd8ff62ef

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 (85) hide show
  1. package/dist/lib/browser/{chunk-K4VFBKST.mjs → chunk-3534PNWM.mjs} +1 -1
  2. package/dist/lib/browser/{chunk-K4VFBKST.mjs.map → chunk-3534PNWM.mjs.map} +2 -2
  3. package/dist/lib/browser/index.mjs +111 -184
  4. package/dist/lib/browser/index.mjs.map +3 -3
  5. package/dist/lib/browser/{log-processor-FDLTDQEM.mjs → log-processor-HPHWNBOK.mjs} +11 -18
  6. package/dist/lib/browser/log-processor-HPHWNBOK.mjs.map +7 -0
  7. package/dist/lib/browser/{logs-ATTRIUTL.mjs → logs-A2VDAHHD.mjs} +5 -3
  8. package/dist/lib/browser/{logs-ATTRIUTL.mjs.map → logs-A2VDAHHD.mjs.map} +3 -3
  9. package/dist/lib/browser/meta.json +1 -1
  10. package/dist/lib/browser/{metrics-PKTV6IGF.mjs → metrics-6OSN54ZV.mjs} +5 -20
  11. package/dist/lib/browser/{metrics-PKTV6IGF.mjs.map → metrics-6OSN54ZV.mjs.map} +2 -2
  12. package/dist/lib/browser/traces-browser-6MRGAKFC.mjs +151 -0
  13. package/dist/lib/browser/traces-browser-6MRGAKFC.mjs.map +7 -0
  14. package/dist/lib/node-esm/{chunk-FEVP3MK4.mjs → chunk-SYPJQI4L.mjs} +1 -1
  15. package/dist/lib/node-esm/{chunk-FEVP3MK4.mjs.map → chunk-SYPJQI4L.mjs.map} +2 -2
  16. package/dist/lib/node-esm/index.mjs +100 -154
  17. package/dist/lib/node-esm/index.mjs.map +3 -3
  18. package/dist/lib/node-esm/{log-processor-TKJVJJSJ.mjs → log-processor-ZODHERST.mjs} +11 -18
  19. package/dist/lib/node-esm/log-processor-ZODHERST.mjs.map +7 -0
  20. package/dist/lib/node-esm/{logs-7J45KLM7.mjs → logs-TA32MBMW.mjs} +5 -3
  21. package/dist/lib/node-esm/{logs-7J45KLM7.mjs.map → logs-TA32MBMW.mjs.map} +3 -3
  22. package/dist/lib/node-esm/meta.json +1 -1
  23. package/dist/lib/node-esm/{metrics-H7DDLYSG.mjs → metrics-C5IKPAWD.mjs} +5 -20
  24. package/dist/lib/node-esm/{metrics-H7DDLYSG.mjs.map → metrics-C5IKPAWD.mjs.map} +2 -2
  25. package/dist/lib/node-esm/traces-5LKHMVVG.mjs +122 -0
  26. package/dist/lib/node-esm/traces-5LKHMVVG.mjs.map +7 -0
  27. package/dist/types/src/cli-observability-secrets.json +2 -2
  28. package/dist/types/src/extensions/otel/extension.d.ts.map +1 -1
  29. package/dist/types/src/extensions/otel/extension.js +83 -6
  30. package/dist/types/src/extensions/otel/extension.js.map +1 -1
  31. package/dist/types/src/extensions/otel/logs.d.ts.map +1 -1
  32. package/dist/types/src/extensions/otel/logs.js +4 -1
  33. package/dist/types/src/extensions/otel/logs.js.map +1 -1
  34. package/dist/types/src/extensions/otel/metrics.d.ts.map +1 -1
  35. package/dist/types/src/extensions/otel/metrics.js.map +1 -1
  36. package/dist/types/src/extensions/otel/otel.d.ts.map +1 -1
  37. package/dist/types/src/extensions/otel/span-processors.d.ts +25 -0
  38. package/dist/types/src/extensions/otel/span-processors.d.ts.map +1 -0
  39. package/dist/types/src/extensions/otel/span-processors.js +41 -0
  40. package/dist/types/src/extensions/otel/span-processors.js.map +1 -0
  41. package/dist/types/src/extensions/otel/traces-browser.d.ts +17 -0
  42. package/dist/types/src/extensions/otel/traces-browser.d.ts.map +1 -1
  43. package/dist/types/src/extensions/otel/traces-browser.js +53 -34
  44. package/dist/types/src/extensions/otel/traces-browser.js.map +1 -1
  45. package/dist/types/src/extensions/otel/traces.d.ts +17 -0
  46. package/dist/types/src/extensions/otel/traces.d.ts.map +1 -1
  47. package/dist/types/src/extensions/otel/traces.js +57 -8
  48. package/dist/types/src/extensions/otel/traces.js.map +1 -1
  49. package/dist/types/src/extensions/posthog/extension.d.ts +7 -3
  50. package/dist/types/src/extensions/posthog/extension.d.ts.map +1 -1
  51. package/dist/types/src/extensions/posthog/extension.js +7 -7
  52. package/dist/types/src/extensions/posthog/extension.js.map +1 -1
  53. package/dist/types/src/extensions/posthog/log-processor.d.ts.map +1 -1
  54. package/dist/types/src/extensions/posthog/log-processor.js +10 -19
  55. package/dist/types/src/extensions/posthog/log-processor.js.map +1 -1
  56. package/dist/types/src/extensions/posthog/log-processor.test.js +2 -2
  57. package/dist/types/src/extensions/posthog/log-processor.test.js.map +1 -1
  58. package/dist/types/src/observability.d.ts.map +1 -1
  59. package/dist/types/src/providers/client-observability.d.ts.map +1 -1
  60. package/dist/types/src/providers/client-observability.js +2 -0
  61. package/dist/types/src/providers/client-observability.js.map +1 -1
  62. package/dist/types/src/providers/ip-data.d.ts.map +1 -1
  63. package/dist/types/src/storage/browser.d.ts.map +1 -1
  64. package/dist/types/src/storage/browser.js +10 -0
  65. package/dist/types/src/storage/browser.js.map +1 -1
  66. package/dist/types/src/storage/node.d.ts.map +1 -1
  67. package/dist/types/tsconfig.tsbuildinfo +1 -1
  68. package/package.json +19 -16
  69. package/src/cli-observability-secrets.json +2 -2
  70. package/src/extensions/otel/extension.ts +87 -7
  71. package/src/extensions/otel/logs.ts +4 -1
  72. package/src/extensions/otel/span-processors.ts +45 -0
  73. package/src/extensions/otel/traces-browser.ts +68 -39
  74. package/src/extensions/otel/traces.ts +74 -10
  75. package/src/extensions/posthog/extension.ts +14 -9
  76. package/src/extensions/posthog/log-processor.test.ts +7 -6
  77. package/src/extensions/posthog/log-processor.ts +10 -21
  78. package/src/providers/client-observability.ts +2 -0
  79. package/src/storage/browser.ts +9 -0
  80. package/dist/lib/browser/log-processor-FDLTDQEM.mjs.map +0 -7
  81. package/dist/lib/browser/traces-browser-PUNCJ5KV.mjs +0 -112
  82. package/dist/lib/browser/traces-browser-PUNCJ5KV.mjs.map +0 -7
  83. package/dist/lib/node-esm/log-processor-TKJVJJSJ.mjs.map +0 -7
  84. package/dist/lib/node-esm/traces-KMTHMYFX.mjs +0 -44
  85. package/dist/lib/node-esm/traces-KMTHMYFX.mjs.map +0 -7
@@ -23,15 +23,16 @@ export const logProcessor: LogProcessor = (config: LogConfig, entry: LogEntry) =
23
23
  }
24
24
 
25
25
  const additionalProperties: Record<string, string | boolean | number> = {};
26
- if (entry.meta) {
27
- additionalProperties.transaction = `${getRelativeFilename(entry.meta.F)}:${entry.meta.L}`;
28
- if (entry.meta.S?.hostSessionId) {
29
- additionalProperties.service_host_issue = true;
30
- additionalProperties.service_host_session = entry.meta.S?.hostSessionId;
31
- }
32
- if (entry.meta.S?.uptimeSeconds != null) {
33
- additionalProperties.uptime_seconds = entry.meta.S.uptimeSeconds;
34
- }
26
+ const { filename, line } = entry.computedMeta;
27
+ if (filename !== undefined && line !== undefined) {
28
+ additionalProperties.transaction = `${filename}:${line}`;
29
+ }
30
+ if (entry.meta?.S?.hostSessionId) {
31
+ additionalProperties.service_host_issue = true;
32
+ additionalProperties.service_host_session = entry.meta.S.hostSessionId;
33
+ }
34
+ if (entry.meta?.S?.uptimeSeconds != null) {
35
+ additionalProperties.uptime_seconds = entry.meta.S.uptimeSeconds;
35
36
  }
36
37
 
37
38
  if (capturedError instanceof InvariantViolation) {
@@ -40,15 +41,3 @@ export const logProcessor: LogProcessor = (config: LogConfig, entry: LogEntry) =
40
41
 
41
42
  posthog.captureException(capturedError, additionalProperties);
42
43
  };
43
-
44
- const getRelativeFilename = (filename: string) => {
45
- // TODO(burdon): Hack uses "packages" as an anchor (pre-parse NX?)
46
- // Including `packages/` part of the path so that excluded paths (e.g. from dist) are clickable in vscode.
47
- const match = filename.match(/.+\/(packages\/.+\/.+)/);
48
- if (match) {
49
- const [, filePath] = match;
50
- return filePath;
51
- }
52
-
53
- return filename;
54
- };
@@ -119,7 +119,9 @@ export const networkMetricsProvider = (clientServices: Partial<ClientServices>):
119
119
  export const runtimeMetricsProvider = (clientServices: Partial<ClientServices>): DataProvider =>
120
120
  Effect.fn(function* (observability) {
121
121
  const ctx = new Context();
122
+ log('runtimeMetricsProvider: requesting platform from SystemService');
122
123
  const platform = yield* Effect.promise(() => clientServices.SystemService!.getPlatform());
124
+ log('runtimeMetricsProvider: platform received');
123
125
  invariant(platform, 'platform is required');
124
126
 
125
127
  observability.setTags({
@@ -37,6 +37,15 @@ export const storeObservabilityDisabled = async (namespace: string, value: boole
37
37
  } catch (err) {
38
38
  log.catch('Failed to store observability disabled', err);
39
39
  }
40
+ // Mirror to localStorage so the synchronous opt-out check in the OTEL extension picks it up
41
+ // without waiting for an async IndexedDB read.
42
+ try {
43
+ if (typeof localStorage !== 'undefined') {
44
+ localStorage.setItem(`${namespace}/${OBSERVABILITY_DISABLED_KEY}`, String(value));
45
+ }
46
+ } catch {
47
+ // localStorage not available (e.g., in workers).
48
+ }
40
49
  };
41
50
 
42
51
  /**
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/extensions/posthog/log-processor.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport posthog from 'posthog-js';\n\nimport { InvariantViolation } from '@dxos/invariant';\nimport { type LogConfig, type LogEntry, LogLevel, type LogProcessor, shouldLog } from '@dxos/log';\n\nexport const logProcessor: LogProcessor = (config: LogConfig, entry: LogEntry) => {\n // Don't forward logs from remote sessions.\n if (!shouldLog(entry, config.captureFilters) || entry.meta?.S?.remoteSessionId) {\n return;\n }\n\n let capturedError = entry.error;\n if (capturedError == null && entry.level === LogLevel.ERROR) {\n capturedError = Object.values(entry.context ?? {}).find((v): v is Error => v instanceof Error);\n }\n\n if (!capturedError) {\n return;\n }\n\n const additionalProperties: Record<string, string | boolean | number> = {};\n if (entry.meta) {\n additionalProperties.transaction = `${getRelativeFilename(entry.meta.F)}:${entry.meta.L}`;\n if (entry.meta.S?.hostSessionId) {\n additionalProperties.service_host_issue = true;\n additionalProperties.service_host_session = entry.meta.S?.hostSessionId;\n }\n if (entry.meta.S?.uptimeSeconds != null) {\n additionalProperties.uptime_seconds = entry.meta.S.uptimeSeconds;\n }\n }\n\n if (capturedError instanceof InvariantViolation) {\n additionalProperties.invariant_violation = true;\n }\n\n posthog.captureException(capturedError, additionalProperties);\n};\n\nconst getRelativeFilename = (filename: string) => {\n // TODO(burdon): Hack uses \"packages\" as an anchor (pre-parse NX?)\n // Including `packages/` part of the path so that excluded paths (e.g. from dist) are clickable in vscode.\n const match = filename.match(/.+\\/(packages\\/.+\\/.+)/);\n if (match) {\n const [, filePath] = match;\n return filePath;\n }\n\n return filename;\n};\n"],
5
- "mappings": ";;;AAIA,OAAOA,aAAa;AAEpB,SAASC,0BAA0B;AACnC,SAAwCC,UAA6BC,iBAAiB;AAE/E,IAAMC,eAA6B,CAACC,QAAmBC,UAAAA;AAE5D,MAAI,CAACC,UAAUD,OAAOD,OAAOG,cAAc,KAAKF,MAAMG,MAAMC,GAAGC,iBAAiB;AAC9E;EACF;AAEA,MAAIC,gBAAgBN,MAAMO;AAC1B,MAAID,iBAAiB,QAAQN,MAAMQ,UAAUC,SAASC,OAAO;AAC3DJ,oBAAgBK,OAAOC,OAAOZ,MAAMa,WAAW,CAAC,CAAA,EAAGC,KAAK,CAACC,MAAkBA,aAAaC,KAAAA;EAC1F;AAEA,MAAI,CAACV,eAAe;AAClB;EACF;AAEA,QAAMW,uBAAkE,CAAC;AACzE,MAAIjB,MAAMG,MAAM;AACdc,yBAAqBC,cAAc,GAAGC,oBAAoBnB,MAAMG,KAAKiB,CAAC,CAAA,IAAKpB,MAAMG,KAAKkB,CAAC;AACvF,QAAIrB,MAAMG,KAAKC,GAAGkB,eAAe;AAC/BL,2BAAqBM,qBAAqB;AAC1CN,2BAAqBO,uBAAuBxB,MAAMG,KAAKC,GAAGkB;IAC5D;AACA,QAAItB,MAAMG,KAAKC,GAAGqB,iBAAiB,MAAM;AACvCR,2BAAqBS,iBAAiB1B,MAAMG,KAAKC,EAAEqB;IACrD;EACF;AAEA,MAAInB,yBAAyBqB,oBAAoB;AAC/CV,yBAAqBW,sBAAsB;EAC7C;AAEAC,UAAQC,iBAAiBxB,eAAeW,oBAAAA;AAC1C;AAEA,IAAME,sBAAsB,CAACY,aAAAA;AAG3B,QAAMC,QAAQD,SAASC,MAAM,wBAAA;AAC7B,MAAIA,OAAO;AACT,UAAM,CAAA,EAAGC,QAAAA,IAAYD;AACrB,WAAOC;EACT;AAEA,SAAOF;AACT;",
6
- "names": ["posthog", "InvariantViolation", "LogLevel", "shouldLog", "logProcessor", "config", "entry", "shouldLog", "captureFilters", "meta", "S", "remoteSessionId", "capturedError", "error", "level", "LogLevel", "ERROR", "Object", "values", "context", "find", "v", "Error", "additionalProperties", "transaction", "getRelativeFilename", "F", "L", "hostSessionId", "service_host_issue", "service_host_session", "uptimeSeconds", "uptime_seconds", "InvariantViolation", "invariant_violation", "posthog", "captureException", "filename", "match", "filePath"]
7
- }
@@ -1,112 +0,0 @@
1
- import "./chunk-J5LGTIGS.mjs";
2
-
3
- // src/extensions/otel/traces-browser.ts
4
- import { context as otelContext, propagation, trace } from "@opentelemetry/api";
5
- import { getWebAutoInstrumentations } from "@opentelemetry/auto-instrumentations-web";
6
- import { W3CTraceContextPropagator } from "@opentelemetry/core";
7
- import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
8
- import { registerInstrumentations } from "@opentelemetry/instrumentation";
9
- import { AlwaysOnSampler, BatchSpanProcessor, ParentBasedSampler, TraceIdRatioBasedSampler } from "@opentelemetry/sdk-trace-base";
10
- import { WebTracerProvider } from "@opentelemetry/sdk-trace-web";
11
- import { ATTR_SERVICE_VERSION } from "@opentelemetry/semantic-conventions";
12
- import { log } from "@dxos/log";
13
- import { TRACE_PROCESSOR } from "@dxos/tracing";
14
- var __dxlog_file = "/__w/dxos/dxos/packages/sdk/observability/src/extensions/otel/traces-browser.ts";
15
- var TagInjectorSpanProcessor = class {
16
- _getTags;
17
- constructor(_getTags) {
18
- this._getTags = _getTags;
19
- }
20
- onStart(span) {
21
- const tags = this._getTags();
22
- for (const [key, value] of Object.entries(tags)) {
23
- span.setAttribute(key, value);
24
- }
25
- }
26
- onEnd(_span) {
27
- }
28
- async shutdown() {
29
- }
30
- async forceFlush() {
31
- }
32
- };
33
- var OtelTraces = class {
34
- options;
35
- _tracer;
36
- constructor(options) {
37
- this.options = options;
38
- propagation.setGlobalPropagator(new W3CTraceContextPropagator());
39
- const forceTraceAll = typeof localStorage !== "undefined" && localStorage.getItem("dxos.debug.traceAll") === "true";
40
- const tracerProvider = new WebTracerProvider({
41
- resource: this.options.resource,
42
- sampler: new ParentBasedSampler({
43
- root: forceTraceAll ? new AlwaysOnSampler() : new TraceIdRatioBasedSampler(0.3)
44
- }),
45
- spanProcessors: [
46
- new TagInjectorSpanProcessor(this.options.getTags),
47
- new BatchSpanProcessor(new OTLPTraceExporter({
48
- url: this.options.endpoint + "/v1/traces",
49
- headers: this.options.headers,
50
- concurrencyLimit: 10
51
- }), {
52
- scheduledDelayMillis: 5e3
53
- })
54
- ]
55
- });
56
- trace.setGlobalTracerProvider(tracerProvider);
57
- this._tracer = trace.getTracer("dxos-observability", this.options.resource.attributes[ATTR_SERVICE_VERSION]?.toString());
58
- }
59
- start() {
60
- log("trace processor registered", void 0, {
61
- F: __dxlog_file,
62
- L: 81,
63
- S: this,
64
- C: (f, a) => f(...a)
65
- });
66
- registerInstrumentations({
67
- instrumentations: [
68
- getWebAutoInstrumentations({
69
- // Fetch is disabled in favor of explicit ctx on our call sites; if re-enabled, keep noisy
70
- // third-party URLs out of traces (matches prior browser tracing setup).
71
- "@opentelemetry/instrumentation-fetch": {
72
- enabled: false,
73
- ignoreUrls: [
74
- /api\.ipdata\.co/
75
- ]
76
- },
77
- "@opentelemetry/instrumentation-document-load": {
78
- enabled: false
79
- },
80
- "@opentelemetry/instrumentation-xml-http-request": {
81
- enabled: false
82
- }
83
- })
84
- ]
85
- });
86
- TRACE_PROCESSOR.remoteTracing.registerProcessor({
87
- startSpan: (options) => {
88
- log("begin otel trace", {
89
- options
90
- }, {
91
- F: __dxlog_file,
92
- L: 97,
93
- S: this,
94
- C: (f, a) => f(...a)
95
- });
96
- const explicitParent = options.parentContext;
97
- const parentCtx = explicitParent ?? otelContext.active();
98
- const span = this._tracer.startSpan(options.name, options, parentCtx);
99
- const spanCtx = trace.setSpan(parentCtx, span);
100
- return {
101
- end: () => span.end(),
102
- wrapExecution: (fn) => otelContext.with(spanCtx, fn),
103
- spanContext: spanCtx
104
- };
105
- }
106
- });
107
- }
108
- };
109
- export {
110
- OtelTraces
111
- };
112
- //# sourceMappingURL=traces-browser-PUNCJ5KV.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/extensions/otel/traces-browser.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Context, type Tracer, context as otelContext, propagation, trace } from '@opentelemetry/api';\nimport { getWebAutoInstrumentations } from '@opentelemetry/auto-instrumentations-web';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport {\n AlwaysOnSampler,\n BatchSpanProcessor,\n ParentBasedSampler,\n type ReadableSpan,\n type SpanProcessor,\n TraceIdRatioBasedSampler,\n} from '@opentelemetry/sdk-trace-base';\nimport { WebTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport { ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\n\nimport { log } from '@dxos/log';\nimport { type StartSpanOptions, TRACE_PROCESSOR } from '@dxos/tracing';\n\nimport { type OtelOptions } from './otel';\n\n/**\n * Injects dynamic tags (e.g. userId) as attributes on every span.\n */\nclass TagInjectorSpanProcessor implements SpanProcessor {\n constructor(private readonly _getTags: () => Record<string, string>) {}\n\n onStart(span: { setAttribute: (key: string, value: string) => void }): void {\n const tags = this._getTags();\n for (const [key, value] of Object.entries(tags)) {\n span.setAttribute(key, value);\n }\n }\n\n onEnd(_span: ReadableSpan): void {}\n\n async shutdown(): Promise<void> {}\n\n async forceFlush(): Promise<void> {}\n}\n\nexport class OtelTraces {\n private _tracer: Tracer;\n\n constructor(private readonly options: OtelOptions) {\n propagation.setGlobalPropagator(new W3CTraceContextPropagator());\n\n const forceTraceAll = typeof localStorage !== 'undefined' && localStorage.getItem('dxos.debug.traceAll') === 'true';\n\n const tracerProvider = new WebTracerProvider({\n resource: this.options.resource,\n sampler: new ParentBasedSampler({\n root: forceTraceAll ? new AlwaysOnSampler() : new TraceIdRatioBasedSampler(0.3),\n }),\n spanProcessors: [\n new TagInjectorSpanProcessor(this.options.getTags),\n new BatchSpanProcessor(\n new OTLPTraceExporter({\n url: this.options.endpoint + '/v1/traces',\n headers: this.options.headers,\n concurrencyLimit: 10,\n }),\n { scheduledDelayMillis: 5_000 },\n ),\n ],\n });\n\n trace.setGlobalTracerProvider(tracerProvider);\n\n this._tracer = trace.getTracer(\n 'dxos-observability',\n this.options.resource.attributes[ATTR_SERVICE_VERSION]?.toString(),\n );\n }\n\n public start(): void {\n log('trace processor registered');\n\n registerInstrumentations({\n instrumentations: [\n getWebAutoInstrumentations({\n // Fetch is disabled in favor of explicit ctx on our call sites; if re-enabled, keep noisy\n // third-party URLs out of traces (matches prior browser tracing setup).\n '@opentelemetry/instrumentation-fetch': { enabled: false, ignoreUrls: [/api\\.ipdata\\.co/] },\n '@opentelemetry/instrumentation-document-load': { enabled: false },\n '@opentelemetry/instrumentation-xml-http-request': { enabled: false },\n }),\n ],\n });\n\n TRACE_PROCESSOR.remoteTracing.registerProcessor({\n startSpan: (options: StartSpanOptions) => {\n log('begin otel trace', { options });\n const explicitParent = options.parentContext as Context | undefined;\n const parentCtx = explicitParent ?? otelContext.active();\n const span = this._tracer.startSpan(options.name, options, parentCtx);\n const spanCtx = trace.setSpan(parentCtx, span);\n return {\n end: () => span.end(),\n wrapExecution: <T>(fn: () => T): T => otelContext.with(spanCtx, fn),\n spanContext: spanCtx,\n };\n },\n });\n }\n}\n"],
5
- "mappings": ";;;AAIA,SAAoCA,WAAWC,aAAaC,aAAaC,aAAa;AACtF,SAASC,kCAAkC;AAC3C,SAASC,iCAAiC;AAC1C,SAASC,yBAAyB;AAClC,SAASC,gCAAgC;AACzC,SACEC,iBACAC,oBACAC,oBAGAC,gCACK;AACP,SAASC,yBAAyB;AAClC,SAASC,4BAA4B;AAErC,SAASC,WAAW;AACpB,SAAgCC,uBAAuB;;AAOvD,IAAMC,2BAAN,MAAMA;;EACJ,YAA6BC,UAAwC;SAAxCA,WAAAA;EAAyC;EAEtEC,QAAQC,MAAoE;AAC1E,UAAMC,OAAO,KAAKH,SAAQ;AAC1B,eAAW,CAACI,KAAKC,KAAAA,KAAUC,OAAOC,QAAQJ,IAAAA,GAAO;AAC/CD,WAAKM,aAAaJ,KAAKC,KAAAA;IACzB;EACF;EAEAI,MAAMC,OAA2B;EAAC;EAElC,MAAMC,WAA0B;EAAC;EAEjC,MAAMC,aAA4B;EAAC;AACrC;AAEO,IAAMC,aAAN,MAAMA;;EACHC;EAER,YAA6BC,SAAsB;SAAtBA,UAAAA;AAC3B9B,gBAAY+B,oBAAoB,IAAI5B,0BAAAA,CAAAA;AAEpC,UAAM6B,gBAAgB,OAAOC,iBAAiB,eAAeA,aAAaC,QAAQ,qBAAA,MAA2B;AAE7G,UAAMC,iBAAiB,IAAIzB,kBAAkB;MAC3C0B,UAAU,KAAKN,QAAQM;MACvBC,SAAS,IAAI7B,mBAAmB;QAC9B8B,MAAMN,gBAAgB,IAAI1B,gBAAAA,IAAoB,IAAIG,yBAAyB,GAAA;MAC7E,CAAA;MACA8B,gBAAgB;QACd,IAAIzB,yBAAyB,KAAKgB,QAAQU,OAAO;QACjD,IAAIjC,mBACF,IAAIH,kBAAkB;UACpBqC,KAAK,KAAKX,QAAQY,WAAW;UAC7BC,SAAS,KAAKb,QAAQa;UACtBC,kBAAkB;QACpB,CAAA,GACA;UAAEC,sBAAsB;QAAM,CAAA;;IAGpC,CAAA;AAEA5C,UAAM6C,wBAAwBX,cAAAA;AAE9B,SAAKN,UAAU5B,MAAM8C,UACnB,sBACA,KAAKjB,QAAQM,SAASY,WAAWrC,oBAAAA,GAAuBsC,SAAAA,CAAAA;EAE5D;EAEOC,QAAc;AACnBtC,QAAI,8BAAA,QAAA;;;;;;AAEJP,6BAAyB;MACvB8C,kBAAkB;QAChBjD,2BAA2B;;;UAGzB,wCAAwC;YAAEkD,SAAS;YAAOC,YAAY;cAAC;;UAAmB;UAC1F,gDAAgD;YAAED,SAAS;UAAM;UACjE,mDAAmD;YAAEA,SAAS;UAAM;QACtE,CAAA;;IAEJ,CAAA;AAEAvC,oBAAgByC,cAAcC,kBAAkB;MAC9CC,WAAW,CAAC1B,YAAAA;AACVlB,YAAI,oBAAoB;UAAEkB;QAAQ,GAAA;;;;;;AAClC,cAAM2B,iBAAiB3B,QAAQ4B;AAC/B,cAAMC,YAAYF,kBAAkB1D,YAAY6D,OAAM;AACtD,cAAM3C,OAAO,KAAKY,QAAQ2B,UAAU1B,QAAQ+B,MAAM/B,SAAS6B,SAAAA;AAC3D,cAAMG,UAAU7D,MAAM8D,QAAQJ,WAAW1C,IAAAA;AACzC,eAAO;UACL+C,KAAK,MAAM/C,KAAK+C,IAAG;UACnBC,eAAe,CAAIC,OAAmBnE,YAAYoE,KAAKL,SAASI,EAAAA;UAChEE,aAAaN;QACf;MACF;IACF,CAAA;EACF;AACF;",
6
- "names": ["context", "otelContext", "propagation", "trace", "getWebAutoInstrumentations", "W3CTraceContextPropagator", "OTLPTraceExporter", "registerInstrumentations", "AlwaysOnSampler", "BatchSpanProcessor", "ParentBasedSampler", "TraceIdRatioBasedSampler", "WebTracerProvider", "ATTR_SERVICE_VERSION", "log", "TRACE_PROCESSOR", "TagInjectorSpanProcessor", "_getTags", "onStart", "span", "tags", "key", "value", "Object", "entries", "setAttribute", "onEnd", "_span", "shutdown", "forceFlush", "OtelTraces", "_tracer", "options", "setGlobalPropagator", "forceTraceAll", "localStorage", "getItem", "tracerProvider", "resource", "sampler", "root", "spanProcessors", "getTags", "url", "endpoint", "headers", "concurrencyLimit", "scheduledDelayMillis", "setGlobalTracerProvider", "getTracer", "attributes", "toString", "start", "instrumentations", "enabled", "ignoreUrls", "remoteTracing", "registerProcessor", "startSpan", "explicitParent", "parentContext", "parentCtx", "active", "name", "spanCtx", "setSpan", "end", "wrapExecution", "fn", "with", "spanContext"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/extensions/posthog/log-processor.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport posthog from 'posthog-js';\n\nimport { InvariantViolation } from '@dxos/invariant';\nimport { type LogConfig, type LogEntry, LogLevel, type LogProcessor, shouldLog } from '@dxos/log';\n\nexport const logProcessor: LogProcessor = (config: LogConfig, entry: LogEntry) => {\n // Don't forward logs from remote sessions.\n if (!shouldLog(entry, config.captureFilters) || entry.meta?.S?.remoteSessionId) {\n return;\n }\n\n let capturedError = entry.error;\n if (capturedError == null && entry.level === LogLevel.ERROR) {\n capturedError = Object.values(entry.context ?? {}).find((v): v is Error => v instanceof Error);\n }\n\n if (!capturedError) {\n return;\n }\n\n const additionalProperties: Record<string, string | boolean | number> = {};\n if (entry.meta) {\n additionalProperties.transaction = `${getRelativeFilename(entry.meta.F)}:${entry.meta.L}`;\n if (entry.meta.S?.hostSessionId) {\n additionalProperties.service_host_issue = true;\n additionalProperties.service_host_session = entry.meta.S?.hostSessionId;\n }\n if (entry.meta.S?.uptimeSeconds != null) {\n additionalProperties.uptime_seconds = entry.meta.S.uptimeSeconds;\n }\n }\n\n if (capturedError instanceof InvariantViolation) {\n additionalProperties.invariant_violation = true;\n }\n\n posthog.captureException(capturedError, additionalProperties);\n};\n\nconst getRelativeFilename = (filename: string) => {\n // TODO(burdon): Hack uses \"packages\" as an anchor (pre-parse NX?)\n // Including `packages/` part of the path so that excluded paths (e.g. from dist) are clickable in vscode.\n const match = filename.match(/.+\\/(packages\\/.+\\/.+)/);\n if (match) {\n const [, filePath] = match;\n return filePath;\n }\n\n return filename;\n};\n"],
5
- "mappings": ";;;;AAIA,OAAOA,aAAa;AAEpB,SAASC,0BAA0B;AACnC,SAAwCC,UAA6BC,iBAAiB;AAE/E,IAAMC,eAA6B,CAACC,QAAmBC,UAAAA;AAE5D,MAAI,CAACC,UAAUD,OAAOD,OAAOG,cAAc,KAAKF,MAAMG,MAAMC,GAAGC,iBAAiB;AAC9E;EACF;AAEA,MAAIC,gBAAgBN,MAAMO;AAC1B,MAAID,iBAAiB,QAAQN,MAAMQ,UAAUC,SAASC,OAAO;AAC3DJ,oBAAgBK,OAAOC,OAAOZ,MAAMa,WAAW,CAAC,CAAA,EAAGC,KAAK,CAACC,MAAkBA,aAAaC,KAAAA;EAC1F;AAEA,MAAI,CAACV,eAAe;AAClB;EACF;AAEA,QAAMW,uBAAkE,CAAC;AACzE,MAAIjB,MAAMG,MAAM;AACdc,yBAAqBC,cAAc,GAAGC,oBAAoBnB,MAAMG,KAAKiB,CAAC,CAAA,IAAKpB,MAAMG,KAAKkB,CAAC;AACvF,QAAIrB,MAAMG,KAAKC,GAAGkB,eAAe;AAC/BL,2BAAqBM,qBAAqB;AAC1CN,2BAAqBO,uBAAuBxB,MAAMG,KAAKC,GAAGkB;IAC5D;AACA,QAAItB,MAAMG,KAAKC,GAAGqB,iBAAiB,MAAM;AACvCR,2BAAqBS,iBAAiB1B,MAAMG,KAAKC,EAAEqB;IACrD;EACF;AAEA,MAAInB,yBAAyBqB,oBAAoB;AAC/CV,yBAAqBW,sBAAsB;EAC7C;AAEAC,UAAQC,iBAAiBxB,eAAeW,oBAAAA;AAC1C;AAEA,IAAME,sBAAsB,CAACY,aAAAA;AAG3B,QAAMC,QAAQD,SAASC,MAAM,wBAAA;AAC7B,MAAIA,OAAO;AACT,UAAM,CAAA,EAAGC,QAAAA,IAAYD;AACrB,WAAOC;EACT;AAEA,SAAOF;AACT;",
6
- "names": ["posthog", "InvariantViolation", "LogLevel", "shouldLog", "logProcessor", "config", "entry", "shouldLog", "captureFilters", "meta", "S", "remoteSessionId", "capturedError", "error", "level", "LogLevel", "ERROR", "Object", "values", "context", "find", "v", "Error", "additionalProperties", "transaction", "getRelativeFilename", "F", "L", "hostSessionId", "service_host_issue", "service_host_session", "uptimeSeconds", "uptime_seconds", "InvariantViolation", "invariant_violation", "posthog", "captureException", "filename", "match", "filePath"]
7
- }
@@ -1,44 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import "./chunk-HSLMI22Q.mjs";
3
-
4
- // src/extensions/otel/traces.ts
5
- import { trace } from "@opentelemetry/api";
6
- import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
7
- import { BasicTracerProvider, BatchSpanProcessor } from "@opentelemetry/sdk-trace-base";
8
- import { ATTR_SERVICE_VERSION } from "@opentelemetry/semantic-conventions";
9
- import { log } from "debug";
10
- import { TRACE_PROCESSOR } from "@dxos/tracing";
11
- var OtelTraces = class {
12
- options;
13
- _tracer;
14
- constructor(options) {
15
- this.options = options;
16
- const tracerProvider = new BasicTracerProvider({
17
- resource: this.options.resource,
18
- spanProcessors: [
19
- new BatchSpanProcessor(new OTLPTraceExporter({
20
- url: this.options.endpoint + "/v1/traces",
21
- headers: this.options.headers,
22
- concurrencyLimit: 10
23
- }))
24
- ]
25
- });
26
- trace.setGlobalTracerProvider(tracerProvider);
27
- this._tracer = trace.getTracer("dxos-observability", this.options.resource.attributes[ATTR_SERVICE_VERSION]?.toString());
28
- }
29
- start() {
30
- log("trace processor registered");
31
- TRACE_PROCESSOR.remoteTracing.registerProcessor({
32
- startSpan: (options) => {
33
- log("begin otel trace", {
34
- options
35
- });
36
- return this._tracer.startSpan(options.name, options);
37
- }
38
- });
39
- }
40
- };
41
- export {
42
- OtelTraces
43
- };
44
- //# sourceMappingURL=traces-KMTHMYFX.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/extensions/otel/traces.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Tracer, trace } from '@opentelemetry/api';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { BasicTracerProvider, BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';\nimport { ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\nimport { log } from 'debug';\n\nimport { type StartSpanOptions, TRACE_PROCESSOR } from '@dxos/tracing';\n\nimport { type OtelOptions } from './otel';\n\nexport class OtelTraces {\n private _tracer: Tracer;\n\n constructor(private readonly options: OtelOptions) {\n const tracerProvider = new BasicTracerProvider({\n resource: this.options.resource,\n spanProcessors: [\n new BatchSpanProcessor(\n new OTLPTraceExporter({\n url: this.options.endpoint + '/v1/traces',\n headers: this.options.headers,\n concurrencyLimit: 10, // an optional limit on pending requests\n }),\n ),\n ],\n });\n\n trace.setGlobalTracerProvider(tracerProvider);\n this._tracer = trace.getTracer(\n 'dxos-observability',\n this.options.resource.attributes[ATTR_SERVICE_VERSION]?.toString(),\n );\n }\n\n public start(): void {\n log('trace processor registered');\n\n TRACE_PROCESSOR.remoteTracing.registerProcessor({\n startSpan: (options: StartSpanOptions) => {\n log('begin otel trace', { options });\n return this._tracer.startSpan(options.name, options);\n },\n });\n }\n}\n"],
5
- "mappings": ";;;;AAIA,SAAsBA,aAAa;AACnC,SAASC,yBAAyB;AAClC,SAASC,qBAAqBC,0BAA0B;AACxD,SAASC,4BAA4B;AACrC,SAASC,WAAW;AAEpB,SAAgCC,uBAAuB;AAIhD,IAAMC,aAAN,MAAMA;;EACHC;EAER,YAA6BC,SAAsB;SAAtBA,UAAAA;AAC3B,UAAMC,iBAAiB,IAAIC,oBAAoB;MAC7CC,UAAU,KAAKH,QAAQG;MACvBC,gBAAgB;QACd,IAAIC,mBACF,IAAIC,kBAAkB;UACpBC,KAAK,KAAKP,QAAQQ,WAAW;UAC7BC,SAAS,KAAKT,QAAQS;UACtBC,kBAAkB;QACpB,CAAA,CAAA;;IAGN,CAAA;AAEAC,UAAMC,wBAAwBX,cAAAA;AAC9B,SAAKF,UAAUY,MAAME,UACnB,sBACA,KAAKb,QAAQG,SAASW,WAAWC,oBAAAA,GAAuBC,SAAAA,CAAAA;EAE5D;EAEOC,QAAc;AACnBC,QAAI,4BAAA;AAEJC,oBAAgBC,cAAcC,kBAAkB;MAC9CC,WAAW,CAACtB,YAAAA;AACVkB,YAAI,oBAAoB;UAAElB;QAAQ,CAAA;AAClC,eAAO,KAAKD,QAAQuB,UAAUtB,QAAQuB,MAAMvB,OAAAA;MAC9C;IACF,CAAA;EACF;AACF;",
6
- "names": ["trace", "OTLPTraceExporter", "BasicTracerProvider", "BatchSpanProcessor", "ATTR_SERVICE_VERSION", "log", "TRACE_PROCESSOR", "OtelTraces", "_tracer", "options", "tracerProvider", "BasicTracerProvider", "resource", "spanProcessors", "BatchSpanProcessor", "OTLPTraceExporter", "url", "endpoint", "headers", "concurrencyLimit", "trace", "setGlobalTracerProvider", "getTracer", "attributes", "ATTR_SERVICE_VERSION", "toString", "start", "log", "TRACE_PROCESSOR", "remoteTracing", "registerProcessor", "startSpan", "name"]
7
- }