@dxos/observability 0.8.1-main.ba2dec9 → 0.8.1-staging.31c3ee1

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 (110) hide show
  1. package/dist/lib/browser/chunk-JV7HV5M3.mjs +147 -0
  2. package/dist/lib/browser/chunk-JV7HV5M3.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-RWIBODSU.mjs → chunk-LCUEUKOU.mjs} +155 -107
  4. package/dist/lib/browser/chunk-LCUEUKOU.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-3LKCQYWD.mjs → chunk-WTIK6YHB.mjs} +2 -4
  6. package/dist/lib/browser/{chunk-3LKCQYWD.mjs.map → chunk-WTIK6YHB.mjs.map} +3 -3
  7. package/dist/lib/browser/index.mjs +6 -1
  8. package/dist/lib/browser/meta.json +1 -1
  9. package/dist/lib/browser/observability-ZJBNR5EC.mjs +10 -0
  10. package/dist/lib/browser/segment/index.mjs +7 -81
  11. package/dist/lib/browser/segment/index.mjs.map +4 -4
  12. package/dist/lib/browser/sentry/index.mjs +1 -1
  13. package/dist/lib/browser/{sentry-log-processor-2KNHVHXL.mjs → sentry-log-processor-DVY46HFR.mjs} +2 -2
  14. package/dist/lib/browser/{sentry-log-processor-2KNHVHXL.mjs.map → sentry-log-processor-DVY46HFR.mjs.map} +2 -2
  15. package/dist/lib/node/{chunk-X2D2I2IE.cjs → chunk-TZZPITFA.cjs} +156 -109
  16. package/dist/lib/node/chunk-TZZPITFA.cjs.map +7 -0
  17. package/dist/lib/node/{chunk-HKBUNAUG.cjs → chunk-VJYGUKWI.cjs} +6 -6
  18. package/dist/lib/node/{chunk-HKBUNAUG.cjs.map → chunk-VJYGUKWI.cjs.map} +3 -3
  19. package/dist/lib/node/chunk-XIE7NKDF.cjs +213 -0
  20. package/dist/lib/node/chunk-XIE7NKDF.cjs.map +7 -0
  21. package/dist/lib/node/index.cjs +20 -15
  22. package/dist/lib/node/index.cjs.map +2 -2
  23. package/dist/lib/node/meta.json +1 -1
  24. package/dist/lib/node/{observability-MM62IY7P.cjs → observability-LQYGR6H5.cjs} +9 -6
  25. package/dist/lib/node/observability-LQYGR6H5.cjs.map +7 -0
  26. package/dist/lib/node/segment/index.cjs +6 -136
  27. package/dist/lib/node/segment/index.cjs.map +4 -4
  28. package/dist/lib/node/sentry/index.cjs +10 -10
  29. package/dist/lib/node/sentry/index.cjs.map +1 -1
  30. package/dist/lib/node/{sentry-log-processor-SJZRJ7IS.cjs → sentry-log-processor-XWB4ECU6.cjs} +8 -8
  31. package/dist/lib/node/{sentry-log-processor-SJZRJ7IS.cjs.map → sentry-log-processor-XWB4ECU6.cjs.map} +2 -2
  32. package/dist/lib/node-esm/{chunk-CMDADTM3.mjs → chunk-ANXHKE36.mjs} +3 -3
  33. package/dist/lib/node-esm/{chunk-CMDADTM3.mjs.map → chunk-ANXHKE36.mjs.map} +3 -3
  34. package/dist/lib/node-esm/{chunk-S7JHPCWW.mjs → chunk-HMGFYMJF.mjs} +154 -107
  35. package/dist/lib/node-esm/chunk-HMGFYMJF.mjs.map +7 -0
  36. package/dist/lib/node-esm/chunk-IKCDMDT3.mjs +202 -0
  37. package/dist/lib/node-esm/chunk-IKCDMDT3.mjs.map +7 -0
  38. package/dist/lib/node-esm/index.mjs +6 -1
  39. package/dist/lib/node-esm/meta.json +1 -1
  40. package/dist/lib/node-esm/observability-KDS7YGCQ.mjs +11 -0
  41. package/dist/lib/node-esm/segment/index.mjs +7 -139
  42. package/dist/lib/node-esm/segment/index.mjs.map +4 -4
  43. package/dist/lib/node-esm/sentry/index.mjs +1 -1
  44. package/dist/lib/node-esm/{sentry-log-processor-BVINGAOV.mjs → sentry-log-processor-FO6MIWBC.mjs} +2 -2
  45. package/dist/lib/node-esm/{sentry-log-processor-BVINGAOV.mjs.map → sentry-log-processor-FO6MIWBC.mjs.map} +2 -2
  46. package/dist/types/src/helpers/browser-observability.d.ts.map +1 -1
  47. package/dist/types/src/helpers/browser-observability.js +15 -14
  48. package/dist/types/src/helpers/browser-observability.js.map +1 -1
  49. package/dist/types/src/helpers/common.d.ts +3 -1
  50. package/dist/types/src/helpers/common.d.ts.map +1 -1
  51. package/dist/types/src/helpers/common.js +4 -0
  52. package/dist/types/src/helpers/common.js.map +1 -1
  53. package/dist/types/src/helpers/node-observability.d.ts.map +1 -1
  54. package/dist/types/src/helpers/node-observability.js +2 -2
  55. package/dist/types/src/helpers/node-observability.js.map +1 -1
  56. package/dist/types/src/helpers/setup-telemetry-listeners.d.ts +1 -1
  57. package/dist/types/src/helpers/setup-telemetry-listeners.d.ts.map +1 -1
  58. package/dist/types/src/helpers/setup-telemetry-listeners.js +38 -36
  59. package/dist/types/src/helpers/setup-telemetry-listeners.js.map +1 -1
  60. package/dist/types/src/observability.d.ts +30 -25
  61. package/dist/types/src/observability.d.ts.map +1 -1
  62. package/dist/types/src/observability.js +61 -39
  63. package/dist/types/src/observability.js.map +1 -1
  64. package/dist/types/src/segment/base.d.ts +15 -0
  65. package/dist/types/src/segment/base.d.ts.map +1 -0
  66. package/dist/types/src/segment/base.js +50 -0
  67. package/dist/types/src/segment/base.js.map +1 -0
  68. package/dist/types/src/segment/browser.d.ts +10 -5
  69. package/dist/types/src/segment/browser.d.ts.map +1 -1
  70. package/dist/types/src/segment/browser.js +27 -25
  71. package/dist/types/src/segment/browser.js.map +1 -1
  72. package/dist/types/src/segment/node.d.ts +10 -14
  73. package/dist/types/src/segment/node.d.ts.map +1 -1
  74. package/dist/types/src/segment/node.js +26 -29
  75. package/dist/types/src/segment/node.js.map +1 -1
  76. package/dist/types/src/segment/types.d.ts +39 -11
  77. package/dist/types/src/segment/types.d.ts.map +1 -1
  78. package/dist/types/src/segment/types.js +14 -0
  79. package/dist/types/src/segment/types.js.map +1 -1
  80. package/dist/types/src/sentry/browser.d.ts +1 -1
  81. package/dist/types/src/sentry/browser.d.ts.map +1 -1
  82. package/dist/types/src/sentry/browser.js +2 -2
  83. package/dist/types/src/sentry/browser.js.map +1 -1
  84. package/dist/types/src/sentry/node.d.ts +1 -1
  85. package/dist/types/src/sentry/node.d.ts.map +1 -1
  86. package/dist/types/src/sentry/node.js +2 -2
  87. package/dist/types/src/sentry/node.js.map +1 -1
  88. package/dist/types/src/sentry/sentry-log-processor.d.ts.map +1 -1
  89. package/dist/types/src/sentry/sentry-log-processor.js.map +1 -1
  90. package/package.json +15 -15
  91. package/src/helpers/browser-observability.ts +13 -17
  92. package/src/helpers/common.ts +15 -2
  93. package/src/helpers/node-observability.ts +3 -2
  94. package/src/helpers/setup-telemetry-listeners.ts +39 -41
  95. package/src/observability.ts +101 -64
  96. package/src/segment/base.ts +69 -0
  97. package/src/segment/browser.ts +28 -29
  98. package/src/segment/node.ts +30 -33
  99. package/src/segment/types.ts +39 -9
  100. package/src/sentry/browser.ts +2 -2
  101. package/src/sentry/node.ts +2 -2
  102. package/src/sentry/sentry-log-processor.ts +3 -0
  103. package/dist/lib/browser/chunk-RWIBODSU.mjs.map +0 -7
  104. package/dist/lib/browser/observability-VEOITBLM.mjs +0 -7
  105. package/dist/lib/node/chunk-X2D2I2IE.cjs.map +0 -7
  106. package/dist/lib/node/observability-MM62IY7P.cjs.map +0 -7
  107. package/dist/lib/node-esm/chunk-S7JHPCWW.mjs.map +0 -7
  108. package/dist/lib/node-esm/observability-OLS7SWZT.mjs +0 -8
  109. /package/dist/lib/browser/{observability-VEOITBLM.mjs.map → observability-ZJBNR5EC.mjs.map} +0 -0
  110. /package/dist/lib/node-esm/{observability-OLS7SWZT.mjs.map → observability-KDS7YGCQ.mjs.map} +0 -0
@@ -1,3 +1,7 @@
1
+ import {
2
+ TelemetryEvent
3
+ } from "./chunk-JV7HV5M3.mjs";
4
+
1
5
  // packages/sdk/observability/src/observability.ts
2
6
  import { Event, scheduleTaskInterval } from "@dxos/async";
3
7
  import { PublicKey } from "@dxos/client";
@@ -72,20 +76,26 @@ var storeObservabilityGroup = async (namespace, value) => {
72
76
  });
73
77
  }
74
78
  };
75
- var initializeAppObservability = async ({ namespace, config, mode = "basic", tracingEnable = false, replayEnable = false }) => {
79
+ var initializeAppObservability = async ({
80
+ namespace,
81
+ config,
82
+ // TODO(nf): Configure mode.
83
+ mode = "basic",
84
+ tracingEnable = false,
85
+ replayEnable = false
86
+ }) => {
76
87
  log("initializeAppObservability", {
77
88
  config
78
89
  }, {
79
90
  F: __dxlog_file,
80
- L: 72,
91
+ L: 73,
81
92
  S: void 0,
82
93
  C: (f, a) => f(...a)
83
94
  });
84
95
  const group = await getObservabilityGroup(namespace) ?? void 0;
85
96
  const release = `${namespace}@${config.get("runtime.app.build.version")}`;
86
97
  const environment = config.get("runtime.app.env.DX_ENVIRONMENT");
87
- const observabilityDisabled = await isObservabilityDisabled(namespace);
88
- const { Observability: Observability2 } = await import("./observability-VEOITBLM.mjs");
98
+ const { Observability: Observability2 } = await import("./observability-ZJBNR5EC.mjs");
89
99
  const observability = new Observability2({
90
100
  namespace,
91
101
  release,
@@ -100,18 +110,20 @@ var initializeAppObservability = async ({ namespace, config, mode = "basic", tra
100
110
  tracing: tracingEnable,
101
111
  replay: replayEnable,
102
112
  // TODO(wittjosiah): Configure these.
113
+ // Consider using a sampling function to dynamically configure these values.
114
+ // https://docs.sentry.io/platforms/javascript/configuration/sampling/#setting-a-sampling-function
103
115
  sampleRate: 1,
104
- // TODO(mykola): Lower this to 0.1.
105
116
  replaySampleRate: 1,
106
117
  replaySampleRateOnError: 1
107
118
  }
108
119
  }
109
120
  });
121
+ const observabilityDisabled = await isObservabilityDisabled(namespace);
110
122
  if (observabilityDisabled) {
111
123
  observability.setMode("disabled");
112
124
  log.info("observability disabled", void 0, {
113
125
  F: __dxlog_file,
114
- L: 116,
126
+ L: 113,
115
127
  S: void 0,
116
128
  C: (f, a) => f(...a)
117
129
  });
@@ -138,7 +150,7 @@ var initializeAppObservability = async ({ namespace, config, mode = "basic", tra
138
150
  await observability.initialize();
139
151
  observability.startErrorLogs();
140
152
  const ipData = await getIPData(config);
141
- ipData && observability.addIPDataTelemetryTags(ipData);
153
+ ipData && observability.setIPDataTelemetryTags(ipData);
142
154
  if (typeof navigator !== "undefined" && navigator.storage?.estimate) {
143
155
  setInterval(async () => {
144
156
  try {
@@ -148,7 +160,7 @@ var initializeAppObservability = async ({ namespace, config, mode = "basic", tra
148
160
  } catch (error) {
149
161
  log.warn("Failed to run estimate()", error, {
150
162
  F: __dxlog_file,
151
- L: 172,
163
+ L: 168,
152
164
  S: void 0,
153
165
  C: (f, a) => f(...a)
154
166
  });
@@ -158,7 +170,7 @@ var initializeAppObservability = async ({ namespace, config, mode = "basic", tra
158
170
  } catch (err) {
159
171
  log.error("Failed to initialize app observability", err, {
160
172
  F: __dxlog_file,
161
- L: 177,
173
+ L: 173,
162
174
  S: void 0,
163
175
  C: (f, a) => f(...a)
164
176
  });
@@ -177,6 +189,12 @@ var getTelemetryIdentifier = (client) => {
177
189
  }
178
190
  return void 0;
179
191
  };
192
+ var getTelemetryIdentity = (client) => {
193
+ const did = getTelemetryIdentifier(client);
194
+ return {
195
+ did
196
+ };
197
+ };
180
198
 
181
199
  // packages/sdk/observability/src/helpers/node-observability.ts
182
200
  import yaml from "js-yaml";
@@ -244,11 +262,11 @@ var initializeNodeObservability = async ({ namespace, version, config, installat
244
262
  const release = `${namespace}@${version}`;
245
263
  const environment = process.env.DX_ENVIRONMENT ?? "unknown";
246
264
  const observability = new Observability({
265
+ mode,
247
266
  namespace,
248
267
  release,
249
268
  environment,
250
269
  group,
251
- mode,
252
270
  errorLog: {
253
271
  sentryInitOptions: {
254
272
  environment,
@@ -263,7 +281,7 @@ var initializeNodeObservability = async ({ namespace, version, config, installat
263
281
  try {
264
282
  const res = await fetch(`https://api.ipdata.co/?api-key=${IPDATA_API_KEY}`);
265
283
  const ipData = await res.json();
266
- ipData && observability.addIPDataTelemetryTags(ipData);
284
+ ipData && observability.setIPDataTelemetryTags(ipData);
267
285
  } catch (err) {
268
286
  observability?.captureException(err);
269
287
  }
@@ -310,63 +328,69 @@ var setupTelemetryListeners = (namespace, client, observability) => {
310
328
  if (!id) {
311
329
  return;
312
330
  }
313
- setTimeout(() => observability.event({
314
- did: getTelemetryIdentifier(client),
315
- name: `${namespace}.window.click`,
316
- properties: {
317
- href: window.location.href,
318
- id: event.target?.id,
319
- path: event.composedPath().filter((el) => Boolean(el.tagName)).map((el) => `${el.tagName.toLowerCase()}${el.id ? `#${el.id}` : ""}`).reverse().join(">")
320
- }
321
- }));
331
+ setTimeout(() => {
332
+ observability.track({
333
+ ...getTelemetryIdentity(client),
334
+ action: "window.click",
335
+ properties: {
336
+ id: event.target?.id,
337
+ path: event.composedPath().filter((el) => Boolean(el.tagName)).map((el) => `${el.tagName.toLowerCase()}${el.id ? `#${el.id}` : ""}`).reverse().join(">")
338
+ }
339
+ });
340
+ });
322
341
  };
323
342
  const focusCallback = () => {
324
343
  const now = /* @__PURE__ */ new Date();
325
- setTimeout(() => observability.event({
326
- did: getTelemetryIdentifier(client),
327
- name: `${namespace}.window.focus`,
328
- properties: {
329
- href: window.location.href,
330
- timeAway: now.getTime() - lastFocusEvent.getTime()
331
- }
332
- }));
344
+ setTimeout(() => {
345
+ observability.track({
346
+ ...getTelemetryIdentity(client),
347
+ action: "window.focus",
348
+ properties: {
349
+ timeAway: now.getTime() - lastFocusEvent.getTime()
350
+ }
351
+ });
352
+ });
333
353
  lastFocusEvent = now;
334
354
  };
335
355
  const blurCallback = () => {
336
356
  const now = /* @__PURE__ */ new Date();
337
- const timeSpent = now.getTime() - lastFocusEvent.getTime();
338
- setTimeout(() => observability.event({
339
- did: getTelemetryIdentifier(client),
340
- name: `${namespace}.window.blur`,
341
- properties: {
342
- href: window.location.href,
343
- timeSpent
344
- }
345
- }));
357
+ const duration = now.getTime() - lastFocusEvent.getTime();
358
+ setTimeout(() => {
359
+ observability.track({
360
+ ...getTelemetryIdentity(client),
361
+ action: "window.blur",
362
+ properties: {
363
+ duration
364
+ }
365
+ });
366
+ });
346
367
  lastFocusEvent = now;
347
- totalTime = totalTime + timeSpent;
368
+ totalTime = totalTime + duration;
348
369
  };
349
370
  const unloadCallback = () => {
350
- setTimeout(() => observability.event({
351
- did: getTelemetryIdentifier(client),
352
- name: `${namespace}.page.unload`,
353
- properties: {
354
- href: window.location.href,
355
- timeSpent: totalTime
356
- }
357
- }));
371
+ setTimeout(() => {
372
+ observability.track({
373
+ ...getTelemetryIdentity(client),
374
+ action: "page.unload",
375
+ properties: {
376
+ duration: totalTime
377
+ }
378
+ });
379
+ });
358
380
  };
359
381
  const errorCallback = (event) => {
360
- setTimeout(() => observability.event({
361
- did: getTelemetryIdentifier(client),
362
- name: `${namespace}.window.error`,
363
- properties: {
364
- href: window.location.href,
365
- message: event.message,
366
- filename: event.filename,
367
- stack: event.error?.stack
368
- }
369
- }));
382
+ setTimeout(() => {
383
+ observability.track({
384
+ ...getTelemetryIdentity(client),
385
+ action: "window.error",
386
+ properties: {
387
+ message: event.message,
388
+ filename: event.filename,
389
+ stack: event.error?.stack,
390
+ cause: event.error?.cause
391
+ }
392
+ });
393
+ });
370
394
  };
371
395
  window.addEventListener("click", clickCallback, true);
372
396
  window.addEventListener("focus", focusCallback);
@@ -389,35 +413,32 @@ var SPACE_TELEMETRY_MIN_INTERVAL = 1e3 * 60 * 60;
389
413
  var NETWORK_METRICS_MIN_INTERVAL = 1e3 * 60 * 5;
390
414
  var Observability = class {
391
415
  // TODO(nf): make platform a required extension?
392
- constructor({ namespace, environment, release, config, secrets, group, mode, telemetry, errorLog }) {
393
- // TODO(nf): accept upstream context?
416
+ constructor({ mode, namespace, environment, release, config, group, secrets, telemetry, errorLog }) {
417
+ this._tags = /* @__PURE__ */ new Map();
394
418
  this._ctx = new Context(void 0, {
395
419
  F: __dxlog_file3,
396
- L: 87
420
+ L: 115
397
421
  });
398
- this._tags = /* @__PURE__ */ new Map();
399
- this.addIPDataTelemetryTags = (ipData) => {
422
+ this.setIPDataTelemetryTags = (ipData) => {
400
423
  this.setTag("city", ipData.city, "telemetry");
401
424
  this.setTag("region", ipData.region, "telemetry");
402
425
  this.setTag("country", ipData.country, "telemetry");
403
426
  ipData.latitude && this.setTag("latitude", ipData.latitude.toString(), "telemetry");
404
427
  ipData.longitude && this.setTag("longitude", ipData.longitude.toString(), "telemetry");
405
428
  };
406
- this._namespace = namespace;
407
429
  this._mode = mode;
430
+ this._namespace = namespace;
408
431
  this._config = config;
409
432
  this._group = group;
410
433
  this._secrets = this._loadSecrets(config, secrets);
411
434
  this._telemetryBatchSize = telemetry?.batchSize ?? 30;
412
435
  this._errorReportingOptions = errorLog?.sentryInitOptions;
413
- if (this._group) {
414
- this.setTag("group", this._group);
415
- }
416
- this.setTag("namespace", this._namespace);
417
- environment && this.setTag("environment", environment);
418
- release && this.setTag("release", release);
419
436
  this.setTag("mode", this._mode);
437
+ this.setTag("namespace", this._namespace);
438
+ this.setTag("environment", environment);
439
+ this.setTag("release", release);
420
440
  this.setTag("session", PublicKey.random().toHex());
441
+ this.setTag("group", this._group);
421
442
  }
422
443
  get mode() {
423
444
  return this._mode;
@@ -448,7 +469,7 @@ var Observability = class {
448
469
  config
449
470
  }, {
450
471
  F: __dxlog_file3,
451
- L: 151,
472
+ L: 176,
452
473
  S: this,
453
474
  C: (f, a) => f(...a)
454
475
  });
@@ -465,6 +486,12 @@ var Observability = class {
465
486
  }
466
487
  }
467
488
  async initialize() {
489
+ log3("initializing...", void 0, {
490
+ F: __dxlog_file3,
491
+ L: 191,
492
+ S: this,
493
+ C: (f, a) => f(...a)
494
+ });
468
495
  await this._initLogs();
469
496
  await this._initMetrics();
470
497
  await this._initTelemetry();
@@ -472,6 +499,12 @@ var Observability = class {
472
499
  await this._initTraces();
473
500
  }
474
501
  async close() {
502
+ log3("closing...", void 0, {
503
+ F: __dxlog_file3,
504
+ L: 200,
505
+ S: this,
506
+ C: (f, a) => f(...a)
507
+ });
475
508
  const closes = [];
476
509
  this._telemetry && closes.push(this._telemetry.close());
477
510
  this._otelMetrics && closes.push(this._otelMetrics.close());
@@ -482,10 +515,13 @@ var Observability = class {
482
515
  setMode(mode) {
483
516
  this._mode = mode;
484
517
  }
485
- //
486
- // Tags
487
- //
518
+ /**
519
+ * camelCase keys are converted to snake_case in Segment.
520
+ */
488
521
  setTag(key, value, scope) {
522
+ if (value === void 0) {
523
+ return;
524
+ }
489
525
  if (this.enabled && (scope === void 0 || scope === "all" || scope === "errors")) {
490
526
  this._setTag?.(key, value);
491
527
  }
@@ -509,13 +545,16 @@ var Observability = class {
509
545
  idqr
510
546
  }, {
511
547
  F: __dxlog_file3,
512
- L: 220,
548
+ L: 247,
513
549
  S: this,
514
550
  C: (f, a) => f(...a)
515
551
  });
516
552
  return;
517
553
  }
518
554
  this.setTag("did", idqr.identity.did);
555
+ this._telemetry?.identify({
556
+ userId: idqr.identity.did
557
+ });
519
558
  });
520
559
  }
521
560
  if (clientServices.DevicesService) {
@@ -525,7 +564,7 @@ var Observability = class {
525
564
  device: dqr
526
565
  }, {
527
566
  F: __dxlog_file3,
528
- L: 230,
567
+ L: 259,
529
568
  S: this,
530
569
  C: (f, a) => f(...a)
531
570
  });
@@ -533,7 +572,7 @@ var Observability = class {
533
572
  }
534
573
  invariant(dqr, "empty response from device service", {
535
574
  F: __dxlog_file3,
536
- L: 233,
575
+ L: 263,
537
576
  S: this,
538
577
  A: [
539
578
  "dqr",
@@ -546,7 +585,7 @@ var Observability = class {
546
585
  device: dqr
547
586
  }, {
548
587
  F: __dxlog_file3,
549
- L: 237,
588
+ L: 266,
550
589
  S: this,
551
590
  C: (f, a) => f(...a)
552
591
  });
@@ -584,14 +623,14 @@ var Observability = class {
584
623
  namespace: this._namespace
585
624
  }, {
586
625
  F: __dxlog_file3,
587
- L: 272,
626
+ L: 310,
588
627
  S: this,
589
628
  C: (f, a) => f(...a)
590
629
  });
591
630
  } else {
592
631
  log3("otel logs disabled", void 0, {
593
632
  F: __dxlog_file3,
594
- L: 274,
633
+ L: 312,
595
634
  S: this,
596
635
  C: (f, a) => f(...a)
597
636
  });
@@ -617,14 +656,14 @@ var Observability = class {
617
656
  });
618
657
  log3("otel metrics enabled", void 0, {
619
658
  F: __dxlog_file3,
620
- L: 299,
659
+ L: 337,
621
660
  S: this,
622
661
  C: (f, a) => f(...a)
623
662
  });
624
663
  } else {
625
664
  log3("otel metrics disabled", void 0, {
626
665
  F: __dxlog_file3,
627
- L: 301,
666
+ L: 339,
628
667
  S: this,
629
668
  C: (f, a) => f(...a)
630
669
  });
@@ -647,7 +686,7 @@ var Observability = class {
647
686
  updateSignalMetrics.on(this._ctx, async () => {
648
687
  log3("send signal metrics", void 0, {
649
688
  F: __dxlog_file3,
650
- L: 323,
689
+ L: 361,
651
690
  S: this,
652
691
  C: (f, a) => f(...a)
653
692
  });
@@ -699,7 +738,7 @@ var Observability = class {
699
738
  updateSpaceMetrics.on(this._ctx, async () => {
700
739
  log3("send space metrics", void 0, {
701
740
  F: __dxlog_file3,
702
- L: 377,
741
+ L: 414,
703
742
  S: this,
704
743
  C: (f, a) => f(...a)
705
744
  });
@@ -724,16 +763,17 @@ var Observability = class {
724
763
  updateSpaceTelemetry.on(this._ctx, async () => {
725
764
  log3("send space telemetry", void 0, {
726
765
  F: __dxlog_file3,
727
- L: 388,
766
+ L: 425,
728
767
  S: this,
729
768
  C: (f, a) => f(...a)
730
769
  });
731
770
  for (const data of mapSpaces(spaces, {
732
771
  truncateKeys: true
733
772
  })) {
734
- this.event({
735
- did: getTelemetryIdentifier(client),
736
- name: `${namespace}.space.update`,
773
+ this.track({
774
+ ...getTelemetryIdentity(client),
775
+ event: TelemetryEvent.METRICS,
776
+ action: "space.update",
737
777
  properties: data
738
778
  });
739
779
  }
@@ -760,14 +800,14 @@ var Observability = class {
760
800
  const platform = await client.services.services.SystemService?.getPlatform();
761
801
  invariant(platform, "platform is required", {
762
802
  F: __dxlog_file3,
763
- L: 425,
803
+ L: 463,
764
804
  S: this,
765
805
  A: [
766
806
  "platform",
767
807
  "'platform is required'"
768
808
  ]
769
809
  });
770
- this.setTag("platform_type", Platform.PLATFORM_TYPE[platform.type].toLowerCase());
810
+ this.setTag("platformType", Platform.PLATFORM_TYPE[platform.type].toLowerCase());
771
811
  if (this._mode === "full") {
772
812
  if (platform.platform) {
773
813
  this.setTag("platform", platform.platform);
@@ -798,7 +838,7 @@ var Observability = class {
798
838
  error
799
839
  }, {
800
840
  F: __dxlog_file3,
801
- L: 460,
841
+ L: 497,
802
842
  S: this,
803
843
  C: (f, a) => f(...a)
804
844
  }));
@@ -823,27 +863,25 @@ var Observability = class {
823
863
  } else {
824
864
  log3("segment disabled", void 0, {
825
865
  F: __dxlog_file3,
826
- L: 486,
866
+ L: 523,
827
867
  S: this,
828
868
  C: (f, a) => f(...a)
829
869
  });
830
870
  }
831
871
  }
832
872
  /**
833
- * A telemetry event.
834
- *
873
+ * Submit telemetry page view.
835
874
  * The default implementation uses Segment.
836
875
  */
837
- event(options) {
838
- this._telemetry?.event(options);
876
+ page(options) {
877
+ this._telemetry?.page(options);
839
878
  }
840
879
  /**
841
- * A telemetry page view.
842
- *
880
+ * Submit telemetry user action.
843
881
  * The default implementation uses Segment.
844
882
  */
845
- page(options) {
846
- this._telemetry?.page(options);
883
+ track(options) {
884
+ this._telemetry?.track(options);
847
885
  }
848
886
  //
849
887
  // Error Logs
@@ -851,7 +889,7 @@ var Observability = class {
851
889
  async _initErrorLogs() {
852
890
  if (this._secrets.SENTRY_DESTINATION && this._mode !== "disabled") {
853
891
  const { captureException, captureUserFeedback, init, setTag } = await import("./sentry/index.mjs");
854
- const { SentryLogProcessor } = await import("./sentry-log-processor-2KNHVHXL.mjs");
892
+ const { SentryLogProcessor } = await import("./sentry-log-processor-DVY46HFR.mjs");
855
893
  this._captureException = captureException;
856
894
  this._captureUserFeedback = captureUserFeedback;
857
895
  this._setTag = setTag;
@@ -860,7 +898,7 @@ var Observability = class {
860
898
  options: this._errorReportingOptions
861
899
  }, {
862
900
  F: __dxlog_file3,
863
- L: 522,
901
+ L: 556,
864
902
  S: this,
865
903
  C: (f, a) => f(...a)
866
904
  });
@@ -879,7 +917,7 @@ var Observability = class {
879
917
  } else {
880
918
  log3("sentry disabled", void 0, {
881
919
  F: __dxlog_file3,
882
- L: 542,
920
+ L: 576,
883
921
  S: this,
884
922
  C: (f, a) => f(...a)
885
923
  });
@@ -891,7 +929,7 @@ var Observability = class {
891
929
  startTraces() {
892
930
  this._otelTraces && this._otelTraces.start();
893
931
  }
894
- // TODO(nf): refactor init based on providers and their capabilities
932
+ // TODO(nf): Refactor init based on providers and their capabilities.
895
933
  async _initTraces() {
896
934
  if (this._secrets.OTEL_ENDPOINT && this._secrets.OTEL_AUTHORIZATION && this._mode !== "disabled") {
897
935
  const { OtelTraces } = await import("./otel-WFASQZXZ.mjs");
@@ -911,7 +949,6 @@ var Observability = class {
911
949
  }
912
950
  /**
913
951
  * Manually capture an exception.
914
- *
915
952
  * The default implementation uses Sentry.
916
953
  */
917
954
  captureException(err) {
@@ -921,11 +958,21 @@ var Observability = class {
921
958
  }
922
959
  /**
923
960
  * Manually capture user feedback.
924
- *
925
961
  * The default implementation uses Sentry.
926
962
  */
927
- captureUserFeedback(name, email, message) {
928
- void this._captureUserFeedback?.(name, email, message);
963
+ captureUserFeedback(message) {
964
+ if (!this._secrets.SENTRY_DESTINATION) {
965
+ log3.info("Feedback submitted without Sentry destination", {
966
+ message
967
+ }, {
968
+ F: __dxlog_file3,
969
+ L: 625,
970
+ S: this,
971
+ C: (f, a) => f(...a)
972
+ });
973
+ return;
974
+ }
975
+ void this._captureUserFeedback?.(message);
929
976
  }
930
977
  };
931
978
 
@@ -939,10 +986,11 @@ export {
939
986
  storeObservabilityGroup,
940
987
  initializeAppObservability,
941
988
  getTelemetryIdentifier,
989
+ getTelemetryIdentity,
942
990
  showObservabilityBanner,
943
991
  getObservabilityState,
944
992
  initializeNodeObservability,
945
993
  mapSpaces,
946
994
  setupTelemetryListeners
947
995
  };
948
- //# sourceMappingURL=chunk-RWIBODSU.mjs.map
996
+ //# sourceMappingURL=chunk-LCUEUKOU.mjs.map