@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
@@ -10,4 +10,4 @@ var setDiagLogger = (level) => {
10
10
  export {
11
11
  setDiagLogger
12
12
  };
13
- //# sourceMappingURL=chunk-K4VFBKST.mjs.map
13
+ //# sourceMappingURL=chunk-3534PNWM.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extensions/otel/otel.ts"],
4
4
  "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { DiagConsoleLogger, DiagLogLevel, diag } from '@opentelemetry/api';\nimport { type Resource } from '@opentelemetry/resources';\n\nexport type OtelOptions = {\n endpoint: string;\n headers: Record<string, string>;\n resource: Resource;\n getTags: () => { [key: string]: string };\n consoleDiagLogLevel?: string;\n};\n\nexport const setDiagLogger = (level?: string) => {\n const logLevel = DiagLogLevel[level as keyof typeof DiagLogLevel];\n if (logLevel) {\n diag.setLogger(new DiagConsoleLogger(), logLevel);\n }\n};\n"],
5
- "mappings": ";AAIA,SAASA,mBAAmBC,cAAcC,YAAY;AAW/C,IAAMC,gBAAgB,CAACC,UAAAA;AAC5B,QAAMC,WAAWC,aAAaF,KAAAA;AAC9B,MAAIC,UAAU;AACZE,SAAKC,UAAU,IAAIC,kBAAAA,GAAqBJ,QAAAA;EAC1C;AACF;",
6
- "names": ["DiagConsoleLogger", "DiagLogLevel", "diag", "setDiagLogger", "level", "logLevel", "DiagLogLevel", "diag", "setLogger", "DiagConsoleLogger"]
5
+ "mappings": ";AAIA,SAASA,mBAAmBC,cAAcC,YAAY;AAW/C,IAAMC,gBAAgB,CAACC,UAAAA;AAC5B,QAAMC,WAAWJ,aAAaG,KAAAA;AAC9B,MAAIC,UAAU;AACZH,SAAKI,UAAU,IAAIN,kBAAAA,GAAqBK,QAAAA;EAC1C;AACF;",
6
+ "names": ["DiagConsoleLogger", "DiagLogLevel", "diag", "setDiagLogger", "level", "logLevel", "setLogger"]
7
7
  }
@@ -30,23 +30,13 @@ var __dxlog_file = "/__w/dxos/dxos/packages/sdk/observability/src/storage/browse
30
30
  var OBSERVABILITY_DISABLED_KEY = "observability-disabled";
31
31
  var OBSERVABILITY_GROUP_KEY = "observability-group";
32
32
  var showObservabilityBanner = () => {
33
- log.warn("showObservabilityBanner is not supported in browser contexts.", void 0, {
34
- F: __dxlog_file,
35
- L: 16,
36
- S: void 0,
37
- C: (f, a) => f(...a)
38
- });
33
+ log.warn("showObservabilityBanner is not supported in browser contexts.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 11, S: void 0 });
39
34
  };
40
35
  var isObservabilityDisabled = async (namespace) => {
41
36
  try {
42
37
  return await localForage.getItem(compositeKey(namespace, OBSERVABILITY_DISABLED_KEY)) === "true";
43
38
  } catch (err) {
44
- log.catch("Failed to check if observability is disabled, assuming it is", err, {
45
- F: __dxlog_file,
46
- L: 26,
47
- S: void 0,
48
- C: (f, a) => f(...a)
49
- });
39
+ log.catch("Failed to check if observability is disabled, assuming it is", err, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 19, S: void 0 });
50
40
  return true;
51
41
  }
52
42
  };
@@ -54,36 +44,27 @@ var storeObservabilityDisabled = async (namespace, value2) => {
54
44
  try {
55
45
  await localForage.setItem(compositeKey(namespace, OBSERVABILITY_DISABLED_KEY), String(value2));
56
46
  } catch (err) {
57
- log.catch("Failed to store observability disabled", err, {
58
- F: __dxlog_file,
59
- L: 38,
60
- S: void 0,
61
- C: (f, a) => f(...a)
62
- });
47
+ log.catch("Failed to store observability disabled", err, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 29, S: void 0 });
48
+ }
49
+ try {
50
+ if (typeof localStorage !== "undefined") {
51
+ localStorage.setItem(`${namespace}/${OBSERVABILITY_DISABLED_KEY}`, String(value2));
52
+ }
53
+ } catch {
63
54
  }
64
55
  };
65
56
  var getObservabilityGroup = async (namespace) => {
66
57
  try {
67
58
  return await localForage.getItem(compositeKey(namespace, OBSERVABILITY_GROUP_KEY)) ?? void 0;
68
59
  } catch (err) {
69
- log.catch("Failed to get observability group", err, {
70
- F: __dxlog_file,
71
- L: 49,
72
- S: void 0,
73
- C: (f, a) => f(...a)
74
- });
60
+ log.catch("Failed to get observability group", err, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 47, S: void 0 });
75
61
  }
76
62
  };
77
63
  var storeObservabilityGroup = async (namespace, value2) => {
78
64
  try {
79
65
  await localForage.setItem(compositeKey(namespace, OBSERVABILITY_GROUP_KEY), value2);
80
66
  } catch (err) {
81
- log.catch("Failed to store observability group", err, {
82
- F: __dxlog_file,
83
- L: 60,
84
- S: void 0,
85
- C: (f, a) => f(...a)
86
- });
67
+ log.catch("Failed to store observability group", err, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 56, S: void 0 });
87
68
  }
88
69
  };
89
70
 
@@ -110,12 +91,7 @@ var ObservabilityImpl = class {
110
91
  this._subscriptions.add(...cleanups.filter((cleanup) => cleanup !== void 0));
111
92
  this._initialized = true;
112
93
  }).pipe(Effect.catchAll((error) => Effect.gen(this, function* () {
113
- log2.catch(error, void 0, {
114
- F: __dxlog_file2,
115
- L: 85,
116
- S: this,
117
- C: (f, a) => f(...a)
118
- });
94
+ log2.catch(error, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 32, S: this });
119
95
  for (const extension of initializedExtensions) {
120
96
  if (extension.close) {
121
97
  yield* extension.close().pipe(Effect.catchAll(() => Effect.succeed(void 0)));
@@ -164,27 +140,11 @@ var ObservabilityImpl = class {
164
140
  });
165
141
  }
166
142
  _addExtension(extension) {
167
- invariant(!this._initialized, "Observability is already initialized", {
168
- F: __dxlog_file2,
169
- L: 142,
170
- S: this,
171
- A: [
172
- "!this._initialized",
173
- "'Observability is already initialized'"
174
- ]
175
- });
143
+ invariant(!this._initialized, "Observability is already initialized", { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 82, S: this, A: ["!this._initialized", "'Observability is already initialized'"] });
176
144
  this._extensions.push(extension);
177
145
  }
178
146
  _addDataProvider(dataProvider) {
179
- invariant(!this._initialized, "Observability is already initialized", {
180
- F: __dxlog_file2,
181
- L: 147,
182
- S: this,
183
- A: [
184
- "!this._initialized",
185
- "'Observability is already initialized'"
186
- ]
187
- });
147
+ invariant(!this._initialized, "Observability is already initialized", { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 86, S: this, A: ["!this._initialized", "'Observability is already initialized'"] });
188
148
  this._dataProviders.push(dataProvider);
189
149
  }
190
150
  /**
@@ -293,29 +253,13 @@ var make = () => Effect.succeed(new ObservabilityImpl());
293
253
  var addExtension = (_extension) => Effect.fn(function* (_observability) {
294
254
  const observability = yield* _observability;
295
255
  const extension = yield* _extension;
296
- invariant("_addExtension" in observability && typeof observability._addExtension === "function", void 0, {
297
- F: __dxlog_file2,
298
- L: 276,
299
- S: this,
300
- A: [
301
- "'_addExtension' in observability && typeof observability._addExtension === 'function'",
302
- ""
303
- ]
304
- });
256
+ invariant("_addExtension" in observability && typeof observability._addExtension === "function", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 194, S: this, A: ["'_addExtension' in observability && typeof observability._addExtension === 'function'", ""] });
305
257
  observability._addExtension(extension);
306
258
  return observability;
307
259
  });
308
260
  var addDataProvider = (dataProvider) => Effect.fn(function* (_observability) {
309
261
  const observability = yield* _observability;
310
- invariant("_addDataProvider" in observability && typeof observability._addDataProvider === "function", void 0, {
311
- F: __dxlog_file2,
312
- L: 284,
313
- S: this,
314
- A: [
315
- "'_addDataProvider' in observability && typeof observability._addDataProvider === 'function'",
316
- ""
317
- ]
318
- });
262
+ invariant("_addDataProvider" in observability && typeof observability._addDataProvider === "function", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 200, S: this, A: ["'_addDataProvider' in observability && typeof observability._addDataProvider === 'function'", ""] });
319
263
  observability._addDataProvider(dataProvider);
320
264
  return observability;
321
265
  });
@@ -345,6 +289,7 @@ import * as Effect3 from "effect/Effect";
345
289
  import * as Match from "effect/Match";
346
290
  import * as Option from "effect/Option";
347
291
  import * as Ref from "effect/Ref";
292
+ import { resolveTelemetryTag } from "@dxos/config";
348
293
  import { LogLevel, log as log3 } from "@dxos/log";
349
294
  import { isNode, isNonNullable } from "@dxos/util";
350
295
 
@@ -352,8 +297,8 @@ import { isNode, isNonNullable } from "@dxos/util";
352
297
  var cli_observability_secrets_default = {
353
298
  POSTHOG_API_KEY: null,
354
299
  IPDATA_API_KEY: "73dfdecdf979c18f07d50cf841bbdd9e589f237256326ac8cca23786",
355
- OTEL_ENDPOINT: "https://ingest.eu.signoz.cloud:443",
356
- OTEL_HEADERS: "signoz-ingestion-key: 5300e0c9-a5e8-4a10-9c61-f473e539c0b7"
300
+ OTEL_ENDPOINT: "/api/otel",
301
+ OTEL_HEADERS: null
357
302
  };
358
303
 
359
304
  // src/extensions/stub.ts
@@ -388,27 +333,32 @@ var extensions = Effect3.fn(function* ({
388
333
  metrics: metricsEnabled = false,
389
334
  traces: tracesEnabled = false
390
335
  }) {
391
- const { OtelLogs } = yield* Effect3.promise(() => import("./logs-ATTRIUTL.mjs"));
392
- const { OtelMetrics } = yield* Effect3.promise(() => import("./metrics-PKTV6IGF.mjs"));
393
- const { OtelTraces } = yield* Effect3.promise(() => import("./traces-browser-PUNCJ5KV.mjs"));
336
+ const { OtelLogs } = yield* Effect3.promise(() => import("./logs-A2VDAHHD.mjs"));
337
+ const { OtelMetrics } = yield* Effect3.promise(() => import("./metrics-6OSN54ZV.mjs"));
338
+ const { OtelTraces } = yield* Effect3.promise(() => import("./traces-browser-6MRGAKFC.mjs"));
394
339
  const cachedDisabled = yield* Effect3.promise(() => isObservabilityDisabled(serviceName));
395
- const enabledRef = yield* Ref.make(!cachedDisabled);
340
+ const disabled = cachedDisabled || isObservabilityDisabledSync(serviceName);
341
+ const enabledRef = yield* Ref.make(!disabled);
396
342
  const tags = /* @__PURE__ */ new Map();
397
343
  const endpoint = isNode() ? process.env.DX_OTEL_ENDPOINT ?? _endpoint ?? cli_observability_secrets_default.OTEL_ENDPOINT : config.values.runtime?.app?.env?.DX_OTEL_ENDPOINT;
398
344
  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));
399
345
  if (!endpoint || !headers) {
400
- log3.info("Missing OTEL_ENDPOINT or OTEL_HEADERS", void 0, {
401
- F: __dxlog_file3,
402
- L: 77,
403
- S: this,
404
- C: (f, a) => f(...a)
405
- });
346
+ log3.info("Missing OTEL_ENDPOINT or OTEL_HEADERS", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 31, S: this });
406
347
  return stubExtension;
407
348
  }
349
+ const clientTag = resolveTelemetryTag(config);
350
+ if (clientTag) {
351
+ tags.set("ctx.tag", clientTag);
352
+ }
408
353
  const resource = defaultResource().merge(resourceFromAttributes({
409
354
  [ATTR_SERVICE_NAME]: serviceName,
410
355
  [ATTR_SERVICE_VERSION]: serviceVersion,
411
- "deployment.environment": environment
356
+ "session.id": crypto.randomUUID(),
357
+ "deployment.environment": environment,
358
+ "dxos.process.type": detectProcessType(),
359
+ ...clientTag ? {
360
+ "ctx.tag": clientTag
361
+ } : {}
412
362
  }));
413
363
  const logs = logsEnabled ? new OtelLogs({
414
364
  endpoint,
@@ -429,8 +379,11 @@ var extensions = Effect3.fn(function* ({
429
379
  resource,
430
380
  getTags: () => Object.fromEntries(tags)
431
381
  }) : void 0;
432
- return {
382
+ const extension = {
433
383
  initialize: () => Effect3.sync(() => {
384
+ if (disabled) {
385
+ return;
386
+ }
434
387
  if (logs) {
435
388
  log3.runtimeConfig.processors.push(logs.logProcessor);
436
389
  }
@@ -447,12 +400,28 @@ var extensions = Effect3.fn(function* ({
447
400
  yield* Ref.update(enabledRef, () => false);
448
401
  }),
449
402
  close: () => Effect3.promise(async () => {
450
- await logs?.close();
451
- await metrics?.close();
403
+ const results = await Promise.allSettled([
404
+ logs?.close(),
405
+ metrics?.close()
406
+ ]);
407
+ for (const result of results) {
408
+ if (result.status === "rejected") {
409
+ log3.catch(result.reason, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 111, S: this });
410
+ }
411
+ }
412
+ await traces?.close();
452
413
  }),
453
414
  flush: () => Effect3.promise(async () => {
454
- await logs?.flush();
455
- await metrics?.flush();
415
+ const results = await Promise.allSettled([
416
+ logs?.flush(),
417
+ metrics?.flush()
418
+ ]);
419
+ for (const result of results) {
420
+ if (result.status === "rejected") {
421
+ log3.catch(result.reason, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 126, S: this });
422
+ }
423
+ }
424
+ await traces?.flush();
456
425
  }),
457
426
  setTags: (incomingTags) => {
458
427
  for (const [key, value2] of Object.entries(incomingTags)) {
@@ -480,7 +449,35 @@ var extensions = Effect3.fn(function* ({
480
449
  } : void 0
481
450
  ].filter(isNonNullable)
482
451
  };
452
+ return extension;
483
453
  });
454
+ var isObservabilityDisabledSync = (serviceName) => {
455
+ if (isNode()) {
456
+ return process.env.DX_DISABLE_OBSERVABILITY === "true";
457
+ }
458
+ try {
459
+ if (typeof localStorage !== "undefined") {
460
+ return localStorage.getItem(`${serviceName}/observability-disabled`) === "true";
461
+ }
462
+ } catch {
463
+ }
464
+ return false;
465
+ };
466
+ var detectProcessType = () => {
467
+ if (isNode()) {
468
+ return "node";
469
+ }
470
+ if (typeof window !== "undefined") {
471
+ return "browser";
472
+ }
473
+ if (typeof globalThis.ServiceWorkerGlobalScope !== "undefined") {
474
+ return "service-worker";
475
+ }
476
+ if (typeof globalThis.SharedWorkerGlobalScope !== "undefined") {
477
+ return "shared-worker";
478
+ }
479
+ return "dedicated-worker";
480
+ };
484
481
  var parseHeaders = (unparsedHeaders) => {
485
482
  return unparsedHeaders.split(";").reduce((acc, header) => {
486
483
  const [key, ...rest] = header.split(":");
@@ -499,7 +496,7 @@ __export(posthog_exports, {
499
496
 
500
497
  // src/extensions/posthog/extension.ts
501
498
  import * as Effect4 from "effect/Effect";
502
- import { LogBuffer, log as log4 } from "@dxos/log";
499
+ import { log as log4 } from "@dxos/log";
503
500
  var __dxlog_file4 = "/__w/dxos/dxos/packages/sdk/observability/src/extensions/posthog/extension.ts";
504
501
  var uploadLogs = async (body) => {
505
502
  try {
@@ -513,12 +510,7 @@ var uploadLogs = async (body) => {
513
510
  if (!response.ok) {
514
511
  log4.warn("feedback log upload failed", {
515
512
  status: response.status
516
- }, {
517
- F: __dxlog_file4,
518
- L: 34,
519
- S: void 0,
520
- C: (f, a) => f(...a)
521
- });
513
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 17, S: void 0 });
522
514
  return void 0;
523
515
  }
524
516
  const { key } = await response.json();
@@ -526,40 +518,24 @@ var uploadLogs = async (body) => {
526
518
  } catch (err) {
527
519
  log4.warn("feedback log upload error", {
528
520
  error: err
529
- }, {
530
- F: __dxlog_file4,
531
- L: 40,
532
- S: void 0,
533
- C: (f, a) => f(...a)
534
- });
521
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 25, S: void 0 });
535
522
  return void 0;
536
523
  }
537
524
  };
538
- var extensions2 = Effect4.fn(function* ({ config, release, environment, posthog: posthogConfig, logBuffer: externalLogBuffer }) {
525
+ var extensions2 = Effect4.fn(function* ({ config, release, environment, posthog: posthogConfig, logStore }) {
539
526
  if (typeof window === "undefined") {
540
- log4("PostHog is being stubbed because it is running in a worker.", void 0, {
541
- F: __dxlog_file4,
542
- L: 54,
543
- S: this,
544
- C: (f, a) => f(...a)
545
- });
527
+ log4("PostHog is being stubbed because it is running in a worker.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 33, S: this });
546
528
  return stubExtension;
547
529
  }
548
530
  const feedbackSurveyId = config.get("runtime.app.env.DX_POSTHOG_FEEDBACK_SURVEY_ID");
549
531
  const apiKey = config.get("runtime.app.env.DX_POSTHOG_API_KEY");
550
532
  const api_host = config.get("runtime.app.env.DX_POSTHOG_API_HOST");
551
533
  if (!apiKey || !api_host) {
552
- log4.info("Missing POSTHOG_API_KEY or POSTHOG_API_HOST", void 0, {
553
- F: __dxlog_file4,
554
- L: 62,
555
- S: this,
556
- C: (f, a) => f(...a)
557
- });
534
+ log4.info("Missing POSTHOG_API_KEY or POSTHOG_API_HOST", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 40, S: this });
558
535
  return stubExtension;
559
536
  }
560
537
  const { default: posthog } = yield* Effect4.promise(() => import("posthog-js"));
561
- const { logProcessor } = yield* Effect4.promise(() => import("./log-processor-FDLTDQEM.mjs"));
562
- const logBuffer = externalLogBuffer ?? new LogBuffer();
538
+ const { logProcessor } = yield* Effect4.promise(() => import("./log-processor-HPHWNBOK.mjs"));
563
539
  let feedbackSurveyAvailable = null;
564
540
  let unregisterPosthogProcessors;
565
541
  const checkFeedbackSurveyAvailable = () => feedbackSurveyId ? Effect4.promise(() => {
@@ -593,21 +569,9 @@ var extensions2 = Effect4.fn(function* ({ config, release, environment, posthog:
593
569
  });
594
570
  }
595
571
  unregisterPosthogProcessors?.();
596
- const removePosthogLog = log4.addProcessor(logProcessor, void 0, {
597
- F: __dxlog_file4,
598
- L: 105,
599
- S: this,
600
- C: (f, a) => f(...a)
601
- });
602
- const removeLogBuffer = log4.addProcessor(logBuffer.logProcessor, void 0, {
603
- F: __dxlog_file4,
604
- L: 106,
605
- S: this,
606
- C: (f, a) => f(...a)
607
- });
572
+ const removePosthogLog = log4.addProcessor(logProcessor, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 79, S: this });
608
573
  unregisterPosthogProcessors = () => {
609
574
  removePosthogLog();
610
- removeLogBuffer();
611
575
  };
612
576
  }),
613
577
  close: () => Effect4.sync(() => {
@@ -652,17 +616,15 @@ var extensions2 = Effect4.fn(function* ({ config, release, environment, posthog:
652
616
  if (!survey || survey.questions.length === 0) {
653
617
  log4.error("Missing feedback survey or survey has no questions", {
654
618
  feedbackSurveyId
655
- }, {
656
- F: __dxlog_file4,
657
- L: 153,
658
- S: this,
659
- C: (f, a) => f(...a)
660
- });
619
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 124, S: this });
661
620
  return;
662
621
  }
663
622
  let debugLogDumpKey = null;
664
- if (form.includeLogs !== false && logBuffer.size > 0) {
665
- debugLogDumpKey = await uploadLogs(logBuffer.serialize()) ?? "failed";
623
+ if (form.includeLogs !== false && logStore !== void 0) {
624
+ const ndjson = await logStore.export();
625
+ if (ndjson.length > 0) {
626
+ debugLogDumpKey = await uploadLogs(ndjson) ?? "failed";
627
+ }
666
628
  }
667
629
  const question = survey.questions[0];
668
630
  posthog.capture("survey sent", {
@@ -740,19 +702,11 @@ var identityProvider = (clientServices) => Effect5.fn(function* (observability)
740
702
  });
741
703
  });
742
704
  var networkMetricsProvider = (clientServices) => Effect5.fn(function* (observability) {
743
- const ctx = new Context(void 0, {
744
- F: __dxlog_file5,
745
- L: 61
746
- });
705
+ const ctx = new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 50 });
747
706
  let lastNetworkStatus;
748
707
  const updateSignalMetrics = new Event().debounce(NETWORK_METRICS_MIN_INTERVAL);
749
708
  updateSignalMetrics.on(ctx, async () => {
750
- log5("send signal metrics", void 0, {
751
- F: __dxlog_file5,
752
- L: 67,
753
- S: this,
754
- C: (f, a) => f(...a)
755
- });
709
+ log5("send signal metrics", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 55, S: this });
756
710
  lastNetworkStatus?.signaling?.forEach(({ server, state }) => {
757
711
  observability.metrics.gauge("dxos.client.network.signal.connectionState", state, {
758
712
  server
@@ -797,20 +751,11 @@ var networkMetricsProvider = (clientServices) => Effect5.fn(function* (observabi
797
751
  };
798
752
  });
799
753
  var runtimeMetricsProvider = (clientServices) => Effect5.fn(function* (observability) {
800
- const ctx = new Context(void 0, {
801
- F: __dxlog_file5,
802
- L: 121
803
- });
754
+ const ctx = new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 100 });
755
+ log5("runtimeMetricsProvider: requesting platform from SystemService", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 101, S: this });
804
756
  const platform = yield* Effect5.promise(() => clientServices.SystemService.getPlatform());
805
- invariant2(platform, "platform is required", {
806
- F: __dxlog_file5,
807
- L: 123,
808
- S: this,
809
- A: [
810
- "platform",
811
- "'platform is required'"
812
- ]
813
- });
757
+ log5("runtimeMetricsProvider: platform received", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 103, S: this });
758
+ invariant2(platform, "platform is required", { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 104, S: this, A: ["platform", "'platform is required'"] });
814
759
  observability.setTags({
815
760
  platformType: Platform.PLATFORM_TYPE[platform.type].toLowerCase(),
816
761
  platform: platform.platform,
@@ -834,33 +779,20 @@ var runtimeMetricsProvider = (clientServices) => Effect5.fn(function* (observabi
834
779
  }
835
780
  }).catch((error) => log5("platform error", {
836
781
  error
837
- }, {
838
- F: __dxlog_file5,
839
- L: 152,
840
- S: this,
841
- C: (f, a) => f(...a)
842
- }));
782
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 126, S: this }));
843
783
  }, RUNTIME_METRICS_MIN_INTERVAL);
844
784
  return async () => {
845
785
  await ctx.dispose();
846
786
  };
847
787
  });
848
788
  var spacesMetricsProvider = (client) => Effect5.fn(function* (observability) {
849
- const ctx = new Context(void 0, {
850
- F: __dxlog_file5,
851
- L: 165
852
- });
789
+ const ctx = new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 135 });
853
790
  const spaces = client.spaces.get();
854
791
  const subscriptions = /* @__PURE__ */ new Map();
855
792
  ctx.onDispose(() => subscriptions.forEach((subscription) => subscription.unsubscribe()));
856
793
  const updateSpaceMetrics = new Event().debounce(SPACE_METRICS_MIN_INTERVAL);
857
794
  updateSpaceMetrics.on(ctx, async () => {
858
- log5("send space metrics", void 0, {
859
- F: __dxlog_file5,
860
- L: 173,
861
- S: this,
862
- C: (f, a) => f(...a)
863
- });
795
+ log5("send space metrics", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 142, S: this });
864
796
  for (const data of mapSpaces(spaces, {
865
797
  truncateKeys: true
866
798
  })) {
@@ -981,12 +913,7 @@ var provider = (config) => (observability) => Effect6.gen(function* () {
981
913
  }).pipe(Effect6.provide(FetchHttpClient.layer), Effect6.catchAll((err) => Effect6.sync(() => {
982
914
  log6.verbose("ipdata fetch failed", {
983
915
  err
984
- }, {
985
- F: __dxlog_file6,
986
- L: 88,
987
- S: void 0,
988
- C: (f, a) => f(...a)
989
- });
916
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 54, S: void 0 });
990
917
  })));
991
918
 
992
919
  // src/providers/storage.ts