@dxos/observability 0.8.4-main.c85a9c8dae → 0.8.4-main.cb12b3f963

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 (92) 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 +125 -190
  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 +110 -157
  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 +67 -13
  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 +17 -15
  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 +15 -4
  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/src/storage/node.js +1 -1
  68. package/dist/types/src/storage/node.js.map +1 -1
  69. package/dist/types/src/storage/node.test.js +1 -1
  70. package/dist/types/src/storage/node.test.js.map +1 -1
  71. package/dist/types/tsconfig.tsbuildinfo +1 -1
  72. package/package.json +21 -17
  73. package/src/cli-observability-secrets.json +2 -2
  74. package/src/extensions/otel/extension.ts +87 -7
  75. package/src/extensions/otel/logs.ts +4 -1
  76. package/src/extensions/otel/span-processors.ts +45 -0
  77. package/src/extensions/otel/traces-browser.ts +89 -13
  78. package/src/extensions/otel/traces.ts +74 -10
  79. package/src/extensions/posthog/extension.ts +24 -17
  80. package/src/extensions/posthog/log-processor.test.ts +7 -6
  81. package/src/extensions/posthog/log-processor.ts +10 -21
  82. package/src/providers/client-observability.ts +2 -0
  83. package/src/storage/browser.ts +14 -4
  84. package/src/storage/node.test.ts +1 -2
  85. package/src/storage/node.ts +1 -2
  86. package/src/vite-import-meta.d.ts +14 -0
  87. package/dist/lib/browser/log-processor-FDLTDQEM.mjs.map +0 -7
  88. package/dist/lib/browser/traces-browser-5DQUYGQ7.mjs +0 -68
  89. package/dist/lib/browser/traces-browser-5DQUYGQ7.mjs.map +0 -7
  90. package/dist/lib/node-esm/log-processor-TKJVJJSJ.mjs.map +0 -7
  91. package/dist/lib/node-esm/traces-KMTHMYFX.mjs +0 -44
  92. package/dist/lib/node-esm/traces-KMTHMYFX.mjs.map +0 -7
@@ -24,10 +24,10 @@ import { invariant } from "@dxos/invariant";
24
24
  import { log } from "@dxos/log";
25
25
 
26
26
  // src/storage/node.ts
27
+ import yaml from "js-yaml";
27
28
  import { existsSync, statSync } from "node:fs";
28
29
  import { mkdir, readFile, writeFile } from "node:fs/promises";
29
30
  import { join } from "node:path";
30
- import yaml from "js-yaml";
31
31
  import { v4 as uuid, validate as validateUuid } from "uuid";
32
32
  var showObservabilityBanner = async (configDir, bannercb) => {
33
33
  const path = join(configDir, ".observability-banner-printed");
@@ -114,12 +114,7 @@ var ObservabilityImpl = class {
114
114
  this._subscriptions.add(...cleanups.filter((cleanup) => cleanup !== void 0));
115
115
  this._initialized = true;
116
116
  }).pipe(Effect.catchAll((error) => Effect.gen(this, function* () {
117
- log.catch(error, void 0, {
118
- F: __dxlog_file,
119
- L: 85,
120
- S: this,
121
- C: (f, a) => f(...a)
122
- });
117
+ log.catch(error, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 32, S: this });
123
118
  for (const extension of initializedExtensions) {
124
119
  if (extension.close) {
125
120
  yield* extension.close().pipe(Effect.catchAll(() => Effect.succeed(void 0)));
@@ -168,27 +163,11 @@ var ObservabilityImpl = class {
168
163
  });
169
164
  }
170
165
  _addExtension(extension) {
171
- invariant(!this._initialized, "Observability is already initialized", {
172
- F: __dxlog_file,
173
- L: 142,
174
- S: this,
175
- A: [
176
- "!this._initialized",
177
- "'Observability is already initialized'"
178
- ]
179
- });
166
+ invariant(!this._initialized, "Observability is already initialized", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 82, S: this, A: ["!this._initialized", "'Observability is already initialized'"] });
180
167
  this._extensions.push(extension);
181
168
  }
182
169
  _addDataProvider(dataProvider) {
183
- invariant(!this._initialized, "Observability is already initialized", {
184
- F: __dxlog_file,
185
- L: 147,
186
- S: this,
187
- A: [
188
- "!this._initialized",
189
- "'Observability is already initialized'"
190
- ]
191
- });
170
+ invariant(!this._initialized, "Observability is already initialized", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 86, S: this, A: ["!this._initialized", "'Observability is already initialized'"] });
192
171
  this._dataProviders.push(dataProvider);
193
172
  }
194
173
  /**
@@ -297,29 +276,13 @@ var make = () => Effect.succeed(new ObservabilityImpl());
297
276
  var addExtension = (_extension) => Effect.fn(function* (_observability) {
298
277
  const observability = yield* _observability;
299
278
  const extension = yield* _extension;
300
- invariant("_addExtension" in observability && typeof observability._addExtension === "function", void 0, {
301
- F: __dxlog_file,
302
- L: 276,
303
- S: this,
304
- A: [
305
- "'_addExtension' in observability && typeof observability._addExtension === 'function'",
306
- ""
307
- ]
308
- });
279
+ invariant("_addExtension" in observability && typeof observability._addExtension === "function", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 194, S: this, A: ["'_addExtension' in observability && typeof observability._addExtension === 'function'", ""] });
309
280
  observability._addExtension(extension);
310
281
  return observability;
311
282
  });
312
283
  var addDataProvider = (dataProvider) => Effect.fn(function* (_observability) {
313
284
  const observability = yield* _observability;
314
- invariant("_addDataProvider" in observability && typeof observability._addDataProvider === "function", void 0, {
315
- F: __dxlog_file,
316
- L: 284,
317
- S: this,
318
- A: [
319
- "'_addDataProvider' in observability && typeof observability._addDataProvider === 'function'",
320
- ""
321
- ]
322
- });
285
+ invariant("_addDataProvider" in observability && typeof observability._addDataProvider === "function", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 200, S: this, A: ["'_addDataProvider' in observability && typeof observability._addDataProvider === 'function'", ""] });
323
286
  observability._addDataProvider(dataProvider);
324
287
  return observability;
325
288
  });
@@ -349,6 +312,7 @@ import * as Effect3 from "effect/Effect";
349
312
  import * as Match from "effect/Match";
350
313
  import * as Option from "effect/Option";
351
314
  import * as Ref from "effect/Ref";
315
+ import { resolveTelemetryTag } from "@dxos/config";
352
316
  import { LogLevel, log as log2 } from "@dxos/log";
353
317
  import { isNode, isNonNullable } from "@dxos/util";
354
318
 
@@ -356,8 +320,8 @@ import { isNode, isNonNullable } from "@dxos/util";
356
320
  var cli_observability_secrets_default = {
357
321
  POSTHOG_API_KEY: null,
358
322
  IPDATA_API_KEY: "73dfdecdf979c18f07d50cf841bbdd9e589f237256326ac8cca23786",
359
- OTEL_ENDPOINT: "https://ingest.eu.signoz.cloud:443",
360
- OTEL_HEADERS: "signoz-ingestion-key: 5300e0c9-a5e8-4a10-9c61-f473e539c0b7"
323
+ OTEL_ENDPOINT: "/api/otel",
324
+ OTEL_HEADERS: null
361
325
  };
362
326
 
363
327
  // src/extensions/stub.ts
@@ -392,27 +356,32 @@ var extensions = Effect3.fn(function* ({
392
356
  metrics: metricsEnabled = false,
393
357
  traces: tracesEnabled = false
394
358
  }) {
395
- const { OtelLogs } = yield* Effect3.promise(() => import("./logs-7J45KLM7.mjs"));
396
- const { OtelMetrics } = yield* Effect3.promise(() => import("./metrics-H7DDLYSG.mjs"));
397
- const { OtelTraces } = yield* Effect3.promise(() => import("./traces-KMTHMYFX.mjs"));
359
+ const { OtelLogs } = yield* Effect3.promise(() => import("./logs-TA32MBMW.mjs"));
360
+ const { OtelMetrics } = yield* Effect3.promise(() => import("./metrics-C5IKPAWD.mjs"));
361
+ const { OtelTraces } = yield* Effect3.promise(() => import("./traces-5LKHMVVG.mjs"));
398
362
  const cachedDisabled = yield* Effect3.promise(() => isObservabilityDisabled(serviceName));
399
- const enabledRef = yield* Ref.make(!cachedDisabled);
363
+ const disabled = cachedDisabled || isObservabilityDisabledSync(serviceName);
364
+ const enabledRef = yield* Ref.make(!disabled);
400
365
  const tags = /* @__PURE__ */ new Map();
401
366
  const endpoint = isNode() ? process.env.DX_OTEL_ENDPOINT ?? _endpoint ?? cli_observability_secrets_default.OTEL_ENDPOINT : config.values.runtime?.app?.env?.DX_OTEL_ENDPOINT;
402
367
  const headers = _headers ?? Match.value(isNode()).pipe(Match.when(true, () => Option.fromNullable(process.env.DX_OTEL_HEADERS ?? cli_observability_secrets_default.OTEL_HEADERS)), Match.when(false, () => Option.fromNullable(config.values.runtime?.app?.env?.DX_OTEL_HEADERS)), Match.exhaustive, Option.map((raw) => parseHeaders(raw)), Option.getOrElse(() => void 0));
403
368
  if (!endpoint || !headers) {
404
- log2.info("Missing OTEL_ENDPOINT or OTEL_HEADERS", void 0, {
405
- F: __dxlog_file2,
406
- L: 77,
407
- S: this,
408
- C: (f, a) => f(...a)
409
- });
369
+ log2.info("Missing OTEL_ENDPOINT or OTEL_HEADERS", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 31, S: this });
410
370
  return stubExtension;
411
371
  }
372
+ const clientTag = resolveTelemetryTag(config);
373
+ if (clientTag) {
374
+ tags.set("ctx.tag", clientTag);
375
+ }
412
376
  const resource = defaultResource().merge(resourceFromAttributes({
413
377
  [ATTR_SERVICE_NAME]: serviceName,
414
378
  [ATTR_SERVICE_VERSION]: serviceVersion,
415
- "deployment.environment": environment
379
+ "session.id": crypto.randomUUID(),
380
+ "deployment.environment": environment,
381
+ "dxos.process.type": detectProcessType(),
382
+ ...clientTag ? {
383
+ "ctx.tag": clientTag
384
+ } : {}
416
385
  }));
417
386
  const logs = logsEnabled ? new OtelLogs({
418
387
  endpoint,
@@ -433,8 +402,11 @@ var extensions = Effect3.fn(function* ({
433
402
  resource,
434
403
  getTags: () => Object.fromEntries(tags)
435
404
  }) : void 0;
436
- return {
405
+ const extension = {
437
406
  initialize: () => Effect3.sync(() => {
407
+ if (disabled) {
408
+ return;
409
+ }
438
410
  if (logs) {
439
411
  log2.runtimeConfig.processors.push(logs.logProcessor);
440
412
  }
@@ -451,12 +423,28 @@ var extensions = Effect3.fn(function* ({
451
423
  yield* Ref.update(enabledRef, () => false);
452
424
  }),
453
425
  close: () => Effect3.promise(async () => {
454
- await logs?.close();
455
- await metrics?.close();
426
+ const results = await Promise.allSettled([
427
+ logs?.close(),
428
+ metrics?.close()
429
+ ]);
430
+ for (const result of results) {
431
+ if (result.status === "rejected") {
432
+ log2.catch(result.reason, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 111, S: this });
433
+ }
434
+ }
435
+ await traces?.close();
456
436
  }),
457
437
  flush: () => Effect3.promise(async () => {
458
- await logs?.flush();
459
- await metrics?.flush();
438
+ const results = await Promise.allSettled([
439
+ logs?.flush(),
440
+ metrics?.flush()
441
+ ]);
442
+ for (const result of results) {
443
+ if (result.status === "rejected") {
444
+ log2.catch(result.reason, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 126, S: this });
445
+ }
446
+ }
447
+ await traces?.flush();
460
448
  }),
461
449
  setTags: (incomingTags) => {
462
450
  for (const [key, value2] of Object.entries(incomingTags)) {
@@ -484,7 +472,35 @@ var extensions = Effect3.fn(function* ({
484
472
  } : void 0
485
473
  ].filter(isNonNullable)
486
474
  };
475
+ return extension;
487
476
  });
477
+ var isObservabilityDisabledSync = (serviceName) => {
478
+ if (isNode()) {
479
+ return process.env.DX_DISABLE_OBSERVABILITY === "true";
480
+ }
481
+ try {
482
+ if (typeof localStorage !== "undefined") {
483
+ return localStorage.getItem(`${serviceName}/observability-disabled`) === "true";
484
+ }
485
+ } catch {
486
+ }
487
+ return false;
488
+ };
489
+ var detectProcessType = () => {
490
+ if (isNode()) {
491
+ return "node";
492
+ }
493
+ if (typeof window !== "undefined") {
494
+ return "browser";
495
+ }
496
+ if (typeof globalThis.ServiceWorkerGlobalScope !== "undefined") {
497
+ return "service-worker";
498
+ }
499
+ if (typeof globalThis.SharedWorkerGlobalScope !== "undefined") {
500
+ return "shared-worker";
501
+ }
502
+ return "dedicated-worker";
503
+ };
488
504
  var parseHeaders = (unparsedHeaders) => {
489
505
  return unparsedHeaders.split(";").reduce((acc, header) => {
490
506
  const [key, ...rest] = header.split(":");
@@ -503,7 +519,7 @@ __export(posthog_exports, {
503
519
 
504
520
  // src/extensions/posthog/extension.ts
505
521
  import * as Effect4 from "effect/Effect";
506
- import { LogBuffer, log as log3 } from "@dxos/log";
522
+ import { log as log3 } from "@dxos/log";
507
523
  var __dxlog_file3 = "/__w/dxos/dxos/packages/sdk/observability/src/extensions/posthog/extension.ts";
508
524
  var uploadLogs = async (body) => {
509
525
  try {
@@ -517,12 +533,7 @@ var uploadLogs = async (body) => {
517
533
  if (!response.ok) {
518
534
  log3.warn("feedback log upload failed", {
519
535
  status: response.status
520
- }, {
521
- F: __dxlog_file3,
522
- L: 34,
523
- S: void 0,
524
- C: (f, a) => f(...a)
525
- });
536
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 17, S: void 0 });
526
537
  return void 0;
527
538
  }
528
539
  const { key } = await response.json();
@@ -530,41 +541,26 @@ var uploadLogs = async (body) => {
530
541
  } catch (err) {
531
542
  log3.warn("feedback log upload error", {
532
543
  error: err
533
- }, {
534
- F: __dxlog_file3,
535
- L: 40,
536
- S: void 0,
537
- C: (f, a) => f(...a)
538
- });
544
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 25, S: void 0 });
539
545
  return void 0;
540
546
  }
541
547
  };
542
- var extensions2 = Effect4.fn(function* ({ config, release, environment, posthog: posthogConfig, logBuffer: externalLogBuffer }) {
548
+ var extensions2 = Effect4.fn(function* ({ config, release, environment, posthog: posthogConfig, logStore }) {
543
549
  if (typeof window === "undefined") {
544
- log3("PostHog is being stubbed because it is running in a worker.", void 0, {
545
- F: __dxlog_file3,
546
- L: 54,
547
- S: this,
548
- C: (f, a) => f(...a)
549
- });
550
+ log3("PostHog is being stubbed because it is running in a worker.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 33, S: this });
550
551
  return stubExtension;
551
552
  }
552
553
  const feedbackSurveyId = config.get("runtime.app.env.DX_POSTHOG_FEEDBACK_SURVEY_ID");
553
554
  const apiKey = config.get("runtime.app.env.DX_POSTHOG_API_KEY");
554
555
  const api_host = config.get("runtime.app.env.DX_POSTHOG_API_HOST");
555
556
  if (!apiKey || !api_host) {
556
- log3.info("Missing POSTHOG_API_KEY or POSTHOG_API_HOST", void 0, {
557
- F: __dxlog_file3,
558
- L: 62,
559
- S: this,
560
- C: (f, a) => f(...a)
561
- });
557
+ log3.info("Missing POSTHOG_API_KEY or POSTHOG_API_HOST", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 40, S: this });
562
558
  return stubExtension;
563
559
  }
564
560
  const { default: posthog } = yield* Effect4.promise(() => import("posthog-js"));
565
- const { logProcessor } = yield* Effect4.promise(() => import("./log-processor-TKJVJJSJ.mjs"));
566
- const logBuffer = externalLogBuffer ?? new LogBuffer();
561
+ const { logProcessor } = yield* Effect4.promise(() => import("./log-processor-ZODHERST.mjs"));
567
562
  let feedbackSurveyAvailable = null;
563
+ let unregisterPosthogProcessors;
568
564
  const checkFeedbackSurveyAvailable = () => feedbackSurveyId ? Effect4.promise(() => {
569
565
  if (feedbackSurveyAvailable !== null) {
570
566
  return Promise.resolve(feedbackSurveyAvailable);
@@ -595,19 +591,15 @@ var extensions2 = Effect4.fn(function* ({ config, release, environment, posthog:
595
591
  } : {}
596
592
  });
597
593
  }
598
- log3.runtimeConfig.processors.push(logProcessor);
599
- log3.runtimeConfig.processors.push(logBuffer.logProcessor);
594
+ unregisterPosthogProcessors?.();
595
+ const removePosthogLog = log3.addProcessor(logProcessor, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 79, S: this });
596
+ unregisterPosthogProcessors = () => {
597
+ removePosthogLog();
598
+ };
600
599
  }),
601
600
  close: () => Effect4.sync(() => {
602
- for (const processor of [
603
- logProcessor,
604
- logBuffer.logProcessor
605
- ]) {
606
- const index = log3.runtimeConfig.processors.indexOf(processor);
607
- if (index !== -1) {
608
- log3.runtimeConfig.processors.splice(index, 1);
609
- }
610
- }
601
+ unregisterPosthogProcessors?.();
602
+ unregisterPosthogProcessors = void 0;
611
603
  }),
612
604
  enable: () => Effect4.sync(() => posthog.opt_in_capturing()),
613
605
  disable: () => Effect4.sync(() => posthog.opt_out_capturing()),
@@ -647,17 +639,15 @@ var extensions2 = Effect4.fn(function* ({ config, release, environment, posthog:
647
639
  if (!survey || survey.questions.length === 0) {
648
640
  log3.error("Missing feedback survey or survey has no questions", {
649
641
  feedbackSurveyId
650
- }, {
651
- F: __dxlog_file3,
652
- L: 151,
653
- S: this,
654
- C: (f, a) => f(...a)
655
- });
642
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 124, S: this });
656
643
  return;
657
644
  }
658
- let debugLogDumpKey;
659
- if (form.includeLogs !== false && logBuffer.size > 0) {
660
- debugLogDumpKey = await uploadLogs(logBuffer.serialize());
645
+ let debugLogDumpKey = null;
646
+ if (form.includeLogs !== false && logStore !== void 0) {
647
+ const ndjson = await logStore.export();
648
+ if (ndjson.length > 0) {
649
+ debugLogDumpKey = await uploadLogs(ndjson) ?? "failed";
650
+ }
661
651
  }
662
652
  const question = survey.questions[0];
663
653
  posthog.capture("survey sent", {
@@ -669,9 +659,7 @@ var extensions2 = Effect4.fn(function* ({ config, release, environment, posthog:
669
659
  }
670
660
  ],
671
661
  [`$survey_response_${question.id}`]: form.message,
672
- ...debugLogDumpKey ? {
673
- debug_log_dump_key: debugLogDumpKey
674
- } : {}
662
+ debug_log_dump_key: debugLogDumpKey
675
663
  });
676
664
  });
677
665
  },
@@ -737,19 +725,11 @@ var identityProvider = (clientServices) => Effect5.fn(function* (observability)
737
725
  });
738
726
  });
739
727
  var networkMetricsProvider = (clientServices) => Effect5.fn(function* (observability) {
740
- const ctx = new Context(void 0, {
741
- F: __dxlog_file4,
742
- L: 61
743
- });
728
+ const ctx = new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 50 });
744
729
  let lastNetworkStatus;
745
730
  const updateSignalMetrics = new Event().debounce(NETWORK_METRICS_MIN_INTERVAL);
746
731
  updateSignalMetrics.on(ctx, async () => {
747
- log4("send signal metrics", void 0, {
748
- F: __dxlog_file4,
749
- L: 67,
750
- S: this,
751
- C: (f, a) => f(...a)
752
- });
732
+ log4("send signal metrics", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 55, S: this });
753
733
  lastNetworkStatus?.signaling?.forEach(({ server, state }) => {
754
734
  observability.metrics.gauge("dxos.client.network.signal.connectionState", state, {
755
735
  server
@@ -794,20 +774,11 @@ var networkMetricsProvider = (clientServices) => Effect5.fn(function* (observabi
794
774
  };
795
775
  });
796
776
  var runtimeMetricsProvider = (clientServices) => Effect5.fn(function* (observability) {
797
- const ctx = new Context(void 0, {
798
- F: __dxlog_file4,
799
- L: 121
800
- });
777
+ const ctx = new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 100 });
778
+ log4("runtimeMetricsProvider: requesting platform from SystemService", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 101, S: this });
801
779
  const platform = yield* Effect5.promise(() => clientServices.SystemService.getPlatform());
802
- invariant2(platform, "platform is required", {
803
- F: __dxlog_file4,
804
- L: 123,
805
- S: this,
806
- A: [
807
- "platform",
808
- "'platform is required'"
809
- ]
810
- });
780
+ log4("runtimeMetricsProvider: platform received", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 103, S: this });
781
+ invariant2(platform, "platform is required", { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 104, S: this, A: ["platform", "'platform is required'"] });
811
782
  observability.setTags({
812
783
  platformType: Platform.PLATFORM_TYPE[platform.type].toLowerCase(),
813
784
  platform: platform.platform,
@@ -831,33 +802,20 @@ var runtimeMetricsProvider = (clientServices) => Effect5.fn(function* (observabi
831
802
  }
832
803
  }).catch((error) => log4("platform error", {
833
804
  error
834
- }, {
835
- F: __dxlog_file4,
836
- L: 152,
837
- S: this,
838
- C: (f, a) => f(...a)
839
- }));
805
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 126, S: this }));
840
806
  }, RUNTIME_METRICS_MIN_INTERVAL);
841
807
  return async () => {
842
808
  await ctx.dispose();
843
809
  };
844
810
  });
845
811
  var spacesMetricsProvider = (client) => Effect5.fn(function* (observability) {
846
- const ctx = new Context(void 0, {
847
- F: __dxlog_file4,
848
- L: 165
849
- });
812
+ const ctx = new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 135 });
850
813
  const spaces = client.spaces.get();
851
814
  const subscriptions = /* @__PURE__ */ new Map();
852
815
  ctx.onDispose(() => subscriptions.forEach((subscription) => subscription.unsubscribe()));
853
816
  const updateSpaceMetrics = new Event().debounce(SPACE_METRICS_MIN_INTERVAL);
854
817
  updateSpaceMetrics.on(ctx, async () => {
855
- log4("send space metrics", void 0, {
856
- F: __dxlog_file4,
857
- L: 173,
858
- S: this,
859
- C: (f, a) => f(...a)
860
- });
818
+ log4("send space metrics", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 142, S: this });
861
819
  for (const data of mapSpaces(spaces, {
862
820
  truncateKeys: true
863
821
  })) {
@@ -978,12 +936,7 @@ var provider = (config) => (observability) => Effect6.gen(function* () {
978
936
  }).pipe(Effect6.provide(FetchHttpClient.layer), Effect6.catchAll((err) => Effect6.sync(() => {
979
937
  log5.verbose("ipdata fetch failed", {
980
938
  err
981
- }, {
982
- F: __dxlog_file5,
983
- L: 88,
984
- S: void 0,
985
- C: (f, a) => f(...a)
986
- });
939
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 54, S: void 0 });
987
940
  })));
988
941
 
989
942
  // src/providers/storage.ts