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