@dxos/observability 0.14.0 → 0.16.0
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.
- package/dist/lib/Observability.mjs +1 -248
- package/dist/lib/ai/AiObservability.mjs +1 -238
- package/dist/lib/chunk-AiObservability.mjs +238 -0
- package/dist/lib/chunk-AiObservability.mjs.map +1 -0
- package/dist/lib/chunk-Observability.mjs +248 -0
- package/dist/lib/chunk-Observability.mjs.map +1 -0
- package/dist/lib/chunk-ObservabilityClientProvider.mjs.map +1 -1
- package/dist/lib/chunk-ObservabilityExtension.mjs +38 -11
- package/dist/lib/chunk-ObservabilityExtension.mjs.map +1 -1
- package/dist/lib/chunk-ObservabilityProvider.mjs.map +1 -1
- package/dist/lib/chunk-OtelLogSink.mjs +105 -0
- package/dist/lib/{extensions/otel/OtelLogSink.mjs.map → chunk-OtelLogSink.mjs.map} +1 -1
- package/dist/lib/chunk-OtelMetricsSink.mjs +49 -0
- package/dist/lib/{extensions/otel/OtelMetricsSink.mjs.map → chunk-OtelMetricsSink.mjs.map} +1 -1
- package/dist/lib/chunk-OtelSpanSink.mjs.map +1 -1
- package/dist/lib/chunk-extensions.mjs.map +1 -1
- package/dist/lib/chunk-logs.mjs.map +1 -1
- package/dist/lib/chunk-support-logs.mjs +1 -1
- package/dist/lib/chunk-support-logs.mjs.map +1 -1
- package/dist/lib/extensions/otel/OtelLogSink.mjs +1 -105
- package/dist/lib/extensions/otel/OtelMetricsSink.mjs +1 -49
- package/dist/lib/extensions/otel/OtelSpanSink.mjs +1 -2
- package/dist/lib/index.mjs +4 -4
- package/dist/lib/posthog-transport.node.mjs.map +1 -1
- package/dist/lib/providers/ObservabilityClientProvider.mjs +1 -2
- package/dist/lib/storage.node.mjs.map +1 -1
- package/dist/lib/traces.mjs.map +1 -1
- package/dist/lib/traces.node.mjs.map +1 -1
- package/dist/types/src/ObservabilityExtension.d.ts +1 -1
- package/dist/types/src/ObservabilityExtension.d.ts.map +1 -1
- package/dist/types/src/ai/AiObservability.js +2 -2
- package/dist/types/src/ai/AiObservability.js.map +1 -1
- package/dist/types/src/ai/AiObservability.test.js +11 -11
- package/dist/types/src/ai/AiObservability.test.js.map +1 -1
- package/dist/types/src/extensions/otel/tail-sampling.test.js +1 -1
- package/dist/types/src/extensions/otel/tail-sampling.test.js.map +1 -1
- package/dist/types/src/extensions/posthog/before-send.d.ts +4 -0
- package/dist/types/src/extensions/posthog/before-send.d.ts.map +1 -0
- package/dist/types/src/extensions/posthog/before-send.js +19 -0
- package/dist/types/src/extensions/posthog/before-send.js.map +1 -0
- package/dist/types/src/extensions/posthog/before-send.test.d.ts +2 -0
- package/dist/types/src/extensions/posthog/before-send.test.d.ts.map +1 -0
- package/dist/types/src/extensions/posthog/before-send.test.js +30 -0
- package/dist/types/src/extensions/posthog/before-send.test.js.map +1 -0
- package/dist/types/src/extensions/posthog/extension.d.ts +10 -0
- package/dist/types/src/extensions/posthog/extension.d.ts.map +1 -1
- package/dist/types/src/extensions/posthog/extension.js +22 -2
- package/dist/types/src/extensions/posthog/extension.js.map +1 -1
- package/dist/types/src/version.d.ts +1 -1
- package/dist/types/src/version.js +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +20 -20
- package/src/ObservabilityExtension.ts +1 -1
- package/src/ai/AiObservability.test.ts +12 -11
- package/src/ai/AiObservability.ts +2 -2
- package/src/extensions/otel/tail-sampling.test.ts +1 -1
- package/src/extensions/posthog/before-send.test.ts +36 -0
- package/src/extensions/posthog/before-send.ts +26 -0
- package/src/extensions/posthog/extension.ts +30 -1
- package/src/version.ts +1 -1
- package/dist/lib/Observability.mjs.map +0 -1
- package/dist/lib/ai/AiObservability.mjs.map +0 -1
|
@@ -1,49 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { t as OtelMetrics } from "../../chunk-metrics.mjs";
|
|
3
|
-
import { defaultResource, resourceFromAttributes } from "@opentelemetry/resources";
|
|
4
|
-
//#region src/extensions/otel/OtelMetricsSink.ts
|
|
5
|
-
var OtelMetricsSink_exports = /* @__PURE__ */ __exportAll({ Sink: () => Sink });
|
|
6
|
-
var Sink = class {
|
|
7
|
-
#metrics;
|
|
8
|
-
#tags;
|
|
9
|
-
constructor(init, options = {}) {
|
|
10
|
-
this.#tags = { ...init.tags };
|
|
11
|
-
this.#metrics = new OtelMetrics({
|
|
12
|
-
destinations: init.destinations,
|
|
13
|
-
resource: defaultResource().merge(resourceFromAttributes(init.resourceAttributes)),
|
|
14
|
-
getTags: () => this.#tags,
|
|
15
|
-
exporter: options.exporter,
|
|
16
|
-
registerTraceProcessor: false
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
append(batch) {
|
|
20
|
-
for (const metric of batch.metrics) for (const value of metric.values) this.#record(metric, value);
|
|
21
|
-
}
|
|
22
|
-
setTags(tags) {
|
|
23
|
-
this.#tags = {
|
|
24
|
-
...this.#tags,
|
|
25
|
-
...tags
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
flush() {
|
|
29
|
-
return this.#metrics.flush();
|
|
30
|
-
}
|
|
31
|
-
close() {
|
|
32
|
-
return this.#metrics.close();
|
|
33
|
-
}
|
|
34
|
-
#record(metric, value) {
|
|
35
|
-
switch (metric.op) {
|
|
36
|
-
case "increment":
|
|
37
|
-
this.#metrics.increment(metric.name, value, metric.tags, metric.meta);
|
|
38
|
-
break;
|
|
39
|
-
case "distribution":
|
|
40
|
-
this.#metrics.distribution(metric.name, value, metric.tags, metric.meta);
|
|
41
|
-
break;
|
|
42
|
-
case "gauge": this.#metrics.gauge(metric.name, value, metric.tags, metric.meta);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
//#endregion
|
|
47
|
-
export { Sink, OtelMetricsSink_exports as t };
|
|
48
|
-
|
|
49
|
-
//# sourceMappingURL=OtelMetricsSink.mjs.map
|
|
1
|
+
export { n as Sink } from "../../chunk-OtelMetricsSink.mjs";
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { PortSpanProcessor, Sink, serializeReadableSpan };
|
|
1
|
+
export { n as PortSpanProcessor, r as Sink, i as serializeReadableSpan } from "../../chunk-OtelSpanSink.mjs";
|
package/dist/lib/index.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { t as OtelSpanSink_exports } from "./chunk-OtelSpanSink.mjs";
|
|
2
2
|
import { t as ObservabilityExtension_exports } from "./chunk-ObservabilityExtension.mjs";
|
|
3
|
-
import { t as Observability_exports } from "./Observability.mjs";
|
|
4
|
-
import { t as AiObservability_exports } from "./
|
|
5
|
-
import { t as OtelLogSink_exports } from "./
|
|
6
|
-
import { t as OtelMetricsSink_exports } from "./
|
|
3
|
+
import { t as Observability_exports } from "./chunk-Observability.mjs";
|
|
4
|
+
import { t as AiObservability_exports } from "./chunk-AiObservability.mjs";
|
|
5
|
+
import { t as OtelLogSink_exports } from "./chunk-OtelLogSink.mjs";
|
|
6
|
+
import { t as OtelMetricsSink_exports } from "./chunk-OtelMetricsSink.mjs";
|
|
7
7
|
import { t as ObservabilityClientProvider_exports } from "./chunk-ObservabilityClientProvider.mjs";
|
|
8
8
|
import { t as ObservabilityProvider_exports } from "./chunk-ObservabilityProvider.mjs";
|
|
9
9
|
export { AiObservability_exports as AiObservability, Observability_exports as Observability, ObservabilityClientProvider_exports as ObservabilityClientProvider, ObservabilityExtension_exports as ObservabilityExtension, ObservabilityProvider_exports as ObservabilityProvider, OtelLogSink_exports as OtelLogSink, OtelMetricsSink_exports as OtelMetricsSink, OtelSpanSink_exports as OtelSpanSink };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"posthog-transport.node.mjs","names":[],"sources":["../../src/extensions/posthog/node.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { getEnvString } from '@dxos/config';\nimport { log } from '@dxos/log';\n\nimport buildSecrets from '../../cli-observability-secrets.json';\nimport * as ObservabilityExtension from '../../ObservabilityExtension.ts';\nimport { DXOS_VERSION } from '../../version.ts';\nimport { stubExtension } from '../stub.ts';\nimport { type ExtensionsOptions } from './extension.ts';\n\nconst DEFAULT_HOST = 'https://eu.i.posthog.com';\n\n/** `URL` keeps the brackets on an IPv6 host, so the literal is matched as it parses. */\nconst LOOPBACK = new Set(['localhost', '127.0.0.1', '[::1]']);\n\n/** Loopback is exempt: a developer pointing at a local collector has no certificate to present. */\nconst isEncrypted = (host: string): boolean => {\n try {\n const { protocol, hostname } = new URL(host);\n return protocol === 'https:' || (protocol === 'http:' && LOOPBACK.has(hostname));\n } catch {\n return false;\n }\n};\n\n/**\n * PostHog for a node host, over `posthog-node`.\n *\n * The client is `PostHogMCP` rather than plain `PostHog` — a drop-in subclass that builds the\n * canonical `$mcp_*` events this extension answers `kind: 'mcp'` with.\n */\nexport const extensions: (options: ExtensionsOptions) => Effect.Effect<ObservabilityExtension.Extension> = Effect.fn(\n function* ({ config, release, environment, node }) {\n const { apiKey: _apiKey, host: _host, distinctId: initialDistinctId, mcpServer } = node ?? {};\n const apiKey =\n _apiKey ??\n process.env.DX_POSTHOG_API_KEY ??\n getEnvString(config, 'DX_POSTHOG_API_KEY') ??\n buildSecrets.POSTHOG_API_KEY;\n if (!apiKey) {\n log.info('Missing POSTHOG_API_KEY');\n return stubExtension;\n }\n\n // Any host is allowed so a proxy on your own domain works, but not over plaintext: events carry\n // the identity DID, and a mistyped host would put it on the wire in the clear.\n const host = _host ?? DEFAULT_HOST;\n if (!isEncrypted(host)) {\n log.warn('PostHog host must be https', { host });\n return stubExtension;\n }\n\n const { PostHogMCP } = yield* Effect.promise(() => import('@posthog/mcp'));\n const client = new PostHogMCP(apiKey, { host, enableExceptionAutocapture: true });\n\n const superProperties: ObservabilityExtension.Attributes = {\n sdkVersion: DXOS_VERSION,\n ...(release ? { release } : {}),\n ...(environment ? { environment } : {}),\n };\n let distinctId = initialDistinctId;\n let enabled = true;\n\n const attribution = (): string | undefined => (enabled ? distinctId : undefined);\n const properties = (attributes?: ObservabilityExtension.EventAttributes) => ({ ...superProperties, ...attributes });\n\n const mcpProperties = () => ({\n ...superProperties,\n ...(mcpServer ? { $mcp_server_name: mcpServer.name, $mcp_server_version: mcpServer.version } : {}),\n });\n\n return {\n close: () => Effect.promise(() => client.shutdown()),\n flush: () => Effect.promise(() => client.flush()),\n enable: () =>\n Effect.sync(() => {\n enabled = true;\n }),\n disable: () =>\n Effect.sync(() => {\n enabled = false;\n }),\n identify: (id, attributes, setOnceAttributes) => {\n distinctId = id;\n client.identify({ distinctId: id, properties: { ...attributes, $set_once: setOnceAttributes } });\n },\n alias: (id, previousId) => {\n const previous = previousId ?? distinctId;\n if (previous) {\n client.alias({ distinctId: previous, alias: id });\n }\n distinctId = id;\n },\n setTags: (tags) => {\n Object.assign(superProperties, tags);\n },\n get enabled() {\n return enabled;\n },\n apis: [\n {\n kind: 'events',\n isAvailable: () => Effect.succeed(true),\n captureEvent: (event, attributes) => {\n const id = attribution();\n if (id) {\n client.capture({ distinctId: id, event, properties: properties(attributes) });\n }\n },\n },\n {\n kind: 'errors',\n isAvailable: () => Effect.succeed(true),\n captureException: (error, attributes) => {\n const id = attribution();\n if (id) {\n client.captureException(error, id, properties(attributes));\n }\n },\n },\n {\n kind: 'mcp',\n isAvailable: () => Effect.succeed(true),\n captureInitialize: ({ clientName, clientVersion, sessionId, protocolVersion }) => {\n const id = attribution();\n if (id) {\n client.captureInitialize({\n clientName: clientName || ObservabilityExtension.UNKNOWN_MCP_CLIENT,\n clientVersion: clientVersion || undefined,\n sessionId,\n protocolVersion,\n distinctId: id,\n properties: mcpProperties(),\n });\n }\n },\n captureToolCall: ({ clientName, clientVersion, sessionId, protocolVersion, ...call }) => {\n const id = attribution();\n if (id) {\n client.captureToolCall({\n ...call,\n sessionId,\n protocolVersion,\n distinctId: id,\n // `captureToolCall` takes no client name, so the calls carry it as a property.\n properties: {\n ...mcpProperties(),\n $mcp_client_name: clientName || ObservabilityExtension.UNKNOWN_MCP_CLIENT,\n ...(clientVersion ? { $mcp_client_version: clientVersion } : {}),\n },\n });\n }\n },\n },\n ],\n };\n },\n);\n"],"mappings":";;;;;;;;AAeA,IAAM,eAAe;;AAGrB,IAAM,2BAAW,IAAI,IAAI;CAAC;CAAa;CAAa;AAAO,CAAC;;AAG5D,IAAM,eAAe,SAA0B;CAC7C,IAAI;EACF,MAAM,EAAE,UAAU,aAAa,IAAI,IAAI,IAAI;EAC3C,OAAO,aAAa,YAAa,aAAa,WAAW,SAAS,IAAI,QAAQ;CAChF,QAAQ;EACN,OAAO;CACT;AACF;;;;;;;AAQA,IAAa,aAA8F,OAAO,GAChH,WAAW,EAAE,QAAQ,SAAS,aAAa,QAAQ;CACjD,MAAM,EAAE,QAAQ,SAAS,MAAM,OAAO,YAAY,mBAAmB,cAAc,QAAQ,CAAC;CAC5F,MAAM,SACJ,WACA,QAAQ,IAAI,sBACZ,aAAa,QAAQ,oBAAoB,
|
|
1
|
+
{"version":3,"file":"posthog-transport.node.mjs","names":["buildSecrets"],"sources":["../../src/extensions/posthog/node.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { getEnvString } from '@dxos/config';\nimport { log } from '@dxos/log';\n\nimport buildSecrets from '../../cli-observability-secrets.json';\nimport * as ObservabilityExtension from '../../ObservabilityExtension.ts';\nimport { DXOS_VERSION } from '../../version.ts';\nimport { stubExtension } from '../stub.ts';\nimport { type ExtensionsOptions } from './extension.ts';\n\nconst DEFAULT_HOST = 'https://eu.i.posthog.com';\n\n/** `URL` keeps the brackets on an IPv6 host, so the literal is matched as it parses. */\nconst LOOPBACK = new Set(['localhost', '127.0.0.1', '[::1]']);\n\n/** Loopback is exempt: a developer pointing at a local collector has no certificate to present. */\nconst isEncrypted = (host: string): boolean => {\n try {\n const { protocol, hostname } = new URL(host);\n return protocol === 'https:' || (protocol === 'http:' && LOOPBACK.has(hostname));\n } catch {\n return false;\n }\n};\n\n/**\n * PostHog for a node host, over `posthog-node`.\n *\n * The client is `PostHogMCP` rather than plain `PostHog` — a drop-in subclass that builds the\n * canonical `$mcp_*` events this extension answers `kind: 'mcp'` with.\n */\nexport const extensions: (options: ExtensionsOptions) => Effect.Effect<ObservabilityExtension.Extension> = Effect.fn(\n function* ({ config, release, environment, node }) {\n const { apiKey: _apiKey, host: _host, distinctId: initialDistinctId, mcpServer } = node ?? {};\n const apiKey =\n _apiKey ??\n process.env.DX_POSTHOG_API_KEY ??\n getEnvString(config, 'DX_POSTHOG_API_KEY') ??\n buildSecrets.POSTHOG_API_KEY;\n if (!apiKey) {\n log.info('Missing POSTHOG_API_KEY');\n return stubExtension;\n }\n\n // Any host is allowed so a proxy on your own domain works, but not over plaintext: events carry\n // the identity DID, and a mistyped host would put it on the wire in the clear.\n const host = _host ?? DEFAULT_HOST;\n if (!isEncrypted(host)) {\n log.warn('PostHog host must be https', { host });\n return stubExtension;\n }\n\n const { PostHogMCP } = yield* Effect.promise(() => import('@posthog/mcp'));\n const client = new PostHogMCP(apiKey, { host, enableExceptionAutocapture: true });\n\n const superProperties: ObservabilityExtension.Attributes = {\n sdkVersion: DXOS_VERSION,\n ...(release ? { release } : {}),\n ...(environment ? { environment } : {}),\n };\n let distinctId = initialDistinctId;\n let enabled = true;\n\n const attribution = (): string | undefined => (enabled ? distinctId : undefined);\n const properties = (attributes?: ObservabilityExtension.EventAttributes) => ({ ...superProperties, ...attributes });\n\n const mcpProperties = () => ({\n ...superProperties,\n ...(mcpServer ? { $mcp_server_name: mcpServer.name, $mcp_server_version: mcpServer.version } : {}),\n });\n\n return {\n close: () => Effect.promise(() => client.shutdown()),\n flush: () => Effect.promise(() => client.flush()),\n enable: () =>\n Effect.sync(() => {\n enabled = true;\n }),\n disable: () =>\n Effect.sync(() => {\n enabled = false;\n }),\n identify: (id, attributes, setOnceAttributes) => {\n distinctId = id;\n client.identify({ distinctId: id, properties: { ...attributes, $set_once: setOnceAttributes } });\n },\n alias: (id, previousId) => {\n const previous = previousId ?? distinctId;\n if (previous) {\n client.alias({ distinctId: previous, alias: id });\n }\n distinctId = id;\n },\n setTags: (tags) => {\n Object.assign(superProperties, tags);\n },\n get enabled() {\n return enabled;\n },\n apis: [\n {\n kind: 'events',\n isAvailable: () => Effect.succeed(true),\n captureEvent: (event, attributes) => {\n const id = attribution();\n if (id) {\n client.capture({ distinctId: id, event, properties: properties(attributes) });\n }\n },\n },\n {\n kind: 'errors',\n isAvailable: () => Effect.succeed(true),\n captureException: (error, attributes) => {\n const id = attribution();\n if (id) {\n client.captureException(error, id, properties(attributes));\n }\n },\n },\n {\n kind: 'mcp',\n isAvailable: () => Effect.succeed(true),\n captureInitialize: ({ clientName, clientVersion, sessionId, protocolVersion }) => {\n const id = attribution();\n if (id) {\n client.captureInitialize({\n clientName: clientName || ObservabilityExtension.UNKNOWN_MCP_CLIENT,\n clientVersion: clientVersion || undefined,\n sessionId,\n protocolVersion,\n distinctId: id,\n properties: mcpProperties(),\n });\n }\n },\n captureToolCall: ({ clientName, clientVersion, sessionId, protocolVersion, ...call }) => {\n const id = attribution();\n if (id) {\n client.captureToolCall({\n ...call,\n sessionId,\n protocolVersion,\n distinctId: id,\n // `captureToolCall` takes no client name, so the calls carry it as a property.\n properties: {\n ...mcpProperties(),\n $mcp_client_name: clientName || ObservabilityExtension.UNKNOWN_MCP_CLIENT,\n ...(clientVersion ? { $mcp_client_version: clientVersion } : {}),\n },\n });\n }\n },\n },\n ],\n };\n },\n);\n"],"mappings":"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"}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { client_observability_exports as Client, sync_state_exports as SyncState };
|
|
1
|
+
export { n as Client, r as SyncState } from "../chunk-ObservabilityClientProvider.mjs";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.node.mjs","names":[],"sources":["../../src/storage/node.ts"],"sourcesContent":["import yaml from 'js-yaml';\n//\n// Copyright 2022 DXOS.org\n//\nimport { existsSync, statSync } from 'node:fs';\nimport { mkdir, readFile, writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { v4 as uuid, validate as validateUuid } from 'uuid';\n\nimport { log } from '@dxos/log';\n\n/**\n * Print observability banner once per installation.\n */\nexport const showObservabilityBanner = async (configDir: string, bannercb: (input: string) => void) => {\n const path = join(configDir, '.observability-banner-printed');\n if (existsSync(path)) {\n return;\n }\n bannercb(\n [\n 'Basic observability data will be sent to the DXOS team in order to improve the product.',\n 'This includes performance metrics, error logs, and usage data. No personally identifiable',\n 'information, other than your public key, is included with this data and no private data',\n 'ever leaves your devices. To disable sending observability data, set the environment',\n 'variable DX_DISABLE_OBSERVABILITY=true.',\n ].join(' '),\n );\n\n await mkdir(configDir, { recursive: true });\n await writeFile(path, '', 'utf-8');\n};\n\n/**\n * @param configDir - Filesystem path to the directory containing the `observability.yml` state file.\n */\nexport const isObservabilityDisabled = async (configDir: string): Promise<boolean> => {\n try {\n const observabilityState = await getObservabilityState(configDir);\n return observabilityState.disabled;\n } catch (err) {\n log.catch('Failed to check if observability is disabled, assuming it is', err);\n return true;\n }\n};\n\n/**\n * Stable per-installation id, minted on first read.\n *\n * @param configDir - Filesystem path to the directory containing the `observability.yml` state file.\n */\nexport const getInstallationId = async (configDir: string): Promise<string | undefined> => {\n try {\n return (await getObservabilityState(configDir)).installationId;\n } catch (err) {\n log.catch('Failed to read the installation id', err);\n return undefined;\n }\n};\n\n/**\n * @param configDir - Filesystem path to the directory containing the `observability.yml` state file.\n */\n// NOTE: read-modify-write is not atomic; concurrent callers could overwrite each other.\n// Acceptable here because writes are infrequent and triggered by explicit user action.\nexport const storeObservabilityDisabled = async (configDir: string, value: boolean) => {\n const observabilityState = await getObservabilityState(configDir);\n observabilityState.disabled = value;\n await writeFile(join(configDir, 'observability.yml'), yaml.dump(observabilityState), 'utf-8');\n};\n\n/**\n * The identity this installation has already been aliased to, so the transition from the\n * installation id is recorded once rather than on every run.\n *\n * @param configDir - Filesystem path to the directory containing the `observability.yml` state file.\n */\nexport const getAliasedDid = async (configDir: string): Promise<string | undefined> => {\n try {\n return (await getObservabilityState(configDir)).aliasedDid;\n } catch (err) {\n log.catch('Failed to read the aliased identity', err);\n return undefined;\n }\n};\n\n/**\n * @param configDir - Filesystem path to the directory containing the `observability.yml` state file.\n */\nexport const storeAliasedDid = async (configDir: string, did: string) => {\n const observabilityState = await getObservabilityState(configDir);\n observabilityState.aliasedDid = did;\n await writeFile(join(configDir, 'observability.yml'), yaml.dump(observabilityState), 'utf-8');\n};\n\n/**\n * @param configDir - Filesystem path to the directory containing the `observability.yml` state file.\n */\nexport const getObservabilityGroup = async (configDir: string): Promise<string | undefined> => {\n const observabilityState = await getObservabilityState(configDir);\n return observabilityState.group;\n};\n\n/**\n * @param configDir - Filesystem path to the directory containing the `observability.yml` state file.\n */\nexport const storeObservabilityGroup = async (configDir: string, value: string) => {\n const observabilityState = await getObservabilityState(configDir);\n observabilityState.group = value;\n await writeFile(join(configDir, 'observability.yml'), yaml.dump(observabilityState), 'utf-8');\n};\n\nconst getObservabilityState = async (configDir: string): Promise<PersistentObservabilityState> => {\n // check whether configDir exists and if it's a directory\n\n if (existsSync(configDir)) {\n if (!statSync(configDir).isDirectory()) {\n throw new Error(`Config directory ${configDir} exists but is not a directory`);\n }\n } else {\n await mkdir(configDir, { recursive: true });\n }\n\n const idPath = join(configDir, 'observability.yml');\n if (existsSync(idPath)) {\n const context = await readFile(idPath, 'utf-8');\n return validate(context) ?? initializeState(idPath);\n }\n\n return initializeState(idPath);\n};\n\nexport type PersistentObservabilityState = {\n installationId: string;\n disabled: boolean;\n group?: string;\n aliasedDid?: string;\n};\n\n// create initial state and write to file, using environment variables to override defaults.\nconst initializeState = async (idPath: string): Promise<PersistentObservabilityState> => {\n // TODO(nf): read initial values from config or seed file\n const observabilityState = {\n installationId: uuid(),\n disabled: process.env.DX_DISABLE_OBSERVABILITY ? true : false,\n group: process.env.DX_OBSERVABILITY_GROUP ?? undefined,\n };\n\n await writeFile(\n idPath,\n '# This file is automatically generated by the @dxos/cli.\\n' + yaml.dump(observabilityState),\n 'utf-8',\n );\n\n return observabilityState;\n};\n\n/** Not applicable in Node.js contexts; OTEL log level override is browser-only. */\nexport const getOtelLogLevel = async (_namespace: string): Promise<string | null> => null;\n\n/** Not applicable in Node.js contexts; OTEL log level override is browser-only. */\nexport const storeOtelLogLevel = async (_namespace: string, _value: string | null): Promise<void> => {};\n\nconst validate = (contextString: string) => {\n const context = yaml.load(contextString) as PersistentObservabilityState;\n if (Boolean(context.installationId) && validateUuid(context.installationId!)) {\n return {\n ...context,\n disabled: process.env.DX_DISABLE_OBSERVABILITY ? true : (context.disabled ?? false),\n };\n }\n};\n"],"mappings":";;;;;;;;;;;AAcA,IAAa,0BAA0B,OAAO,WAAmB,aAAsC;CACrG,MAAM,OAAO,KAAK,WAAW,+BAA+B;CAC5D,IAAI,WAAW,IAAI,GACjB;CAEF,SACE;EACE;EACA;EACA;EACA;EACA;CACF,CAAC,CAAC,KAAK,GAAG,CACZ;CAEA,MAAM,MAAM,WAAW,EAAE,WAAW,KAAK,CAAC;CAC1C,MAAM,UAAU,MAAM,IAAI,OAAO;AACnC;;;;AAKA,IAAa,0BAA0B,OAAO,cAAwC;CACpF,IAAI;EAEF,QAAO,MAD0B,sBAAsB,SAAS,EAAA,CACtC;CAC5B,SAAS,KAAK;EACZ,IAAI,MAAM,gEAAgE,KAAE;GAAA,YAAA;GAAA,GAAA;GAAA,GAAA;GAAA,GAAA,KAAA;EAAA,CAAC;EAC7E,OAAO;CACT;AACF;;;;;;AAOA,IAAa,oBAAoB,OAAO,cAAmD;CACzF,IAAI;EACF,QAAQ,MAAM,sBAAsB,SAAS,EAAA,CAAG;CAClD,SAAS,KAAK;EACZ,IAAI,MAAM,sCAAsC,KAAE;GAAA,YAAA;GAAA,GAAA;GAAA,GAAA;GAAA,GAAA,KAAA;EAAA,CAAC;EACnD;CACF;AACF;;;;AAOA,IAAa,6BAA6B,OAAO,WAAmB,UAAmB;CACrF,MAAM,qBAAqB,MAAM,sBAAsB,SAAS;CAChE,mBAAmB,WAAW;CAC9B,MAAM,UAAU,KAAK,WAAW,mBAAmB,GAAG,KAAK,KAAK,kBAAkB,GAAG,OAAO;AAC9F;;;;;;;AAQA,IAAa,gBAAgB,OAAO,cAAmD;CACrF,IAAI;EACF,QAAQ,MAAM,sBAAsB,SAAS,EAAA,CAAG;CAClD,SAAS,KAAK;EACZ,IAAI,MAAM,uCAAuC,KAAE;GAAA,YAAA;GAAA,GAAA;GAAA,GAAA;GAAA,GAAA,KAAA;EAAA,CAAC;EACpD;CACF;AACF;;;;AAKA,IAAa,kBAAkB,OAAO,WAAmB,QAAgB;CACvE,MAAM,qBAAqB,MAAM,sBAAsB,SAAS;CAChE,mBAAmB,aAAa;CAChC,MAAM,UAAU,KAAK,WAAW,mBAAmB,GAAG,KAAK,KAAK,kBAAkB,GAAG,OAAO;AAC9F;;;;AAKA,IAAa,wBAAwB,OAAO,cAAmD;CAE7F,QAAO,MAD0B,sBAAsB,SAAS,EAAA,CACtC;AAC5B;;;;AAKA,IAAa,0BAA0B,OAAO,WAAmB,UAAkB;CACjF,MAAM,qBAAqB,MAAM,sBAAsB,SAAS;CAChE,mBAAmB,QAAQ;CAC3B,MAAM,UAAU,KAAK,WAAW,mBAAmB,GAAG,KAAK,KAAK,kBAAkB,GAAG,OAAO;AAC9F;AAEA,IAAM,wBAAwB,OAAO,cAA6D;CAGhG,IAAI,WAAW,SAAS,GAClB;MAAA,CAAC,SAAS,SAAS,CAAC,CAAC,YAAY,GACnC,MAAM,IAAI,MAAM,oBAAoB,UAAU,+BAA+B;CAAA,OAG/E,MAAM,MAAM,WAAW,EAAE,WAAW,KAAK,CAAC;CAG5C,MAAM,SAAS,KAAK,WAAW,mBAAmB;CAClD,IAAI,WAAW,MAAM,GAEnB,
|
|
1
|
+
{"version":3,"file":"storage.node.mjs","names":["validate","uuid","validateUuid"],"sources":["../../src/storage/node.ts"],"sourcesContent":["import yaml from 'js-yaml';\n//\n// Copyright 2022 DXOS.org\n//\nimport { existsSync, statSync } from 'node:fs';\nimport { mkdir, readFile, writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { v4 as uuid, validate as validateUuid } from 'uuid';\n\nimport { log } from '@dxos/log';\n\n/**\n * Print observability banner once per installation.\n */\nexport const showObservabilityBanner = async (configDir: string, bannercb: (input: string) => void) => {\n const path = join(configDir, '.observability-banner-printed');\n if (existsSync(path)) {\n return;\n }\n bannercb(\n [\n 'Basic observability data will be sent to the DXOS team in order to improve the product.',\n 'This includes performance metrics, error logs, and usage data. No personally identifiable',\n 'information, other than your public key, is included with this data and no private data',\n 'ever leaves your devices. To disable sending observability data, set the environment',\n 'variable DX_DISABLE_OBSERVABILITY=true.',\n ].join(' '),\n );\n\n await mkdir(configDir, { recursive: true });\n await writeFile(path, '', 'utf-8');\n};\n\n/**\n * @param configDir - Filesystem path to the directory containing the `observability.yml` state file.\n */\nexport const isObservabilityDisabled = async (configDir: string): Promise<boolean> => {\n try {\n const observabilityState = await getObservabilityState(configDir);\n return observabilityState.disabled;\n } catch (err) {\n log.catch('Failed to check if observability is disabled, assuming it is', err);\n return true;\n }\n};\n\n/**\n * Stable per-installation id, minted on first read.\n *\n * @param configDir - Filesystem path to the directory containing the `observability.yml` state file.\n */\nexport const getInstallationId = async (configDir: string): Promise<string | undefined> => {\n try {\n return (await getObservabilityState(configDir)).installationId;\n } catch (err) {\n log.catch('Failed to read the installation id', err);\n return undefined;\n }\n};\n\n/**\n * @param configDir - Filesystem path to the directory containing the `observability.yml` state file.\n */\n// NOTE: read-modify-write is not atomic; concurrent callers could overwrite each other.\n// Acceptable here because writes are infrequent and triggered by explicit user action.\nexport const storeObservabilityDisabled = async (configDir: string, value: boolean) => {\n const observabilityState = await getObservabilityState(configDir);\n observabilityState.disabled = value;\n await writeFile(join(configDir, 'observability.yml'), yaml.dump(observabilityState), 'utf-8');\n};\n\n/**\n * The identity this installation has already been aliased to, so the transition from the\n * installation id is recorded once rather than on every run.\n *\n * @param configDir - Filesystem path to the directory containing the `observability.yml` state file.\n */\nexport const getAliasedDid = async (configDir: string): Promise<string | undefined> => {\n try {\n return (await getObservabilityState(configDir)).aliasedDid;\n } catch (err) {\n log.catch('Failed to read the aliased identity', err);\n return undefined;\n }\n};\n\n/**\n * @param configDir - Filesystem path to the directory containing the `observability.yml` state file.\n */\nexport const storeAliasedDid = async (configDir: string, did: string) => {\n const observabilityState = await getObservabilityState(configDir);\n observabilityState.aliasedDid = did;\n await writeFile(join(configDir, 'observability.yml'), yaml.dump(observabilityState), 'utf-8');\n};\n\n/**\n * @param configDir - Filesystem path to the directory containing the `observability.yml` state file.\n */\nexport const getObservabilityGroup = async (configDir: string): Promise<string | undefined> => {\n const observabilityState = await getObservabilityState(configDir);\n return observabilityState.group;\n};\n\n/**\n * @param configDir - Filesystem path to the directory containing the `observability.yml` state file.\n */\nexport const storeObservabilityGroup = async (configDir: string, value: string) => {\n const observabilityState = await getObservabilityState(configDir);\n observabilityState.group = value;\n await writeFile(join(configDir, 'observability.yml'), yaml.dump(observabilityState), 'utf-8');\n};\n\nconst getObservabilityState = async (configDir: string): Promise<PersistentObservabilityState> => {\n // check whether configDir exists and if it's a directory\n\n if (existsSync(configDir)) {\n if (!statSync(configDir).isDirectory()) {\n throw new Error(`Config directory ${configDir} exists but is not a directory`);\n }\n } else {\n await mkdir(configDir, { recursive: true });\n }\n\n const idPath = join(configDir, 'observability.yml');\n if (existsSync(idPath)) {\n const context = await readFile(idPath, 'utf-8');\n return validate(context) ?? initializeState(idPath);\n }\n\n return initializeState(idPath);\n};\n\nexport type PersistentObservabilityState = {\n installationId: string;\n disabled: boolean;\n group?: string;\n aliasedDid?: string;\n};\n\n// create initial state and write to file, using environment variables to override defaults.\nconst initializeState = async (idPath: string): Promise<PersistentObservabilityState> => {\n // TODO(nf): read initial values from config or seed file\n const observabilityState = {\n installationId: uuid(),\n disabled: process.env.DX_DISABLE_OBSERVABILITY ? true : false,\n group: process.env.DX_OBSERVABILITY_GROUP ?? undefined,\n };\n\n await writeFile(\n idPath,\n '# This file is automatically generated by the @dxos/cli.\\n' + yaml.dump(observabilityState),\n 'utf-8',\n );\n\n return observabilityState;\n};\n\n/** Not applicable in Node.js contexts; OTEL log level override is browser-only. */\nexport const getOtelLogLevel = async (_namespace: string): Promise<string | null> => null;\n\n/** Not applicable in Node.js contexts; OTEL log level override is browser-only. */\nexport const storeOtelLogLevel = async (_namespace: string, _value: string | null): Promise<void> => {};\n\nconst validate = (contextString: string) => {\n const context = yaml.load(contextString) as PersistentObservabilityState;\n if (Boolean(context.installationId) && validateUuid(context.installationId!)) {\n return {\n ...context,\n disabled: process.env.DX_DISABLE_OBSERVABILITY ? true : (context.disabled ?? false),\n };\n }\n};\n"],"mappings":"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"}
|
package/dist/lib/traces.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traces.mjs","names":[],"sources":["../../src/extensions/otel/traces-browser.ts"],"sourcesContent":["//\n// Copyright 2024 DXOS.org\n//\n\nimport {\n ROOT_CONTEXT,\n SpanStatusCode,\n type Tracer,\n context as otelContext,\n propagation,\n trace,\n} from '@opentelemetry/api';\nimport { getWebAutoInstrumentations } from '@opentelemetry/auto-instrumentations-web';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport { AlwaysOnSampler, BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';\nimport { StackContextManager, WebTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport { ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\n\nimport { log } from '@dxos/log';\nimport { type RemoteSpan, type StartSpanOptions, TRACE_ALL_KEY, TRACE_PROCESSOR } from '@dxos/tracing';\n\nimport * as AiContent from './ai-content.ts';\nimport { type OtelOptions, signalUrl } from './otel.ts';\nimport * as OtelSpanSink from './OtelSpanSink.ts';\nimport * as SpanFanout from './span-fanout.ts';\nimport { TagInjectorSpanProcessor } from './span-processors.ts';\nimport * as TailSampling from './tail-sampling.ts';\n\nexport type OtelTracesOptions = OtelOptions & {\n /**\n * When set, ended spans are posted to the observability worker's `OtelSpanSink` instead of\n * being batched and exported here. Sampling, IDs, and propagation stay in this realm.\n */\n spanSink?: OtelSpanSink.Handle;\n};\n\nexport class OtelTraces {\n private _tracer: Tracer;\n private readonly _tracerProvider: WebTracerProvider;\n readonly #samplingProcessors: TailSampling.TailSamplingSpanProcessor[];\n\n constructor(private readonly options: OtelTracesOptions) {\n propagation.setGlobalPropagator(new W3CTraceContextPropagator());\n\n const forceTraceAll = typeof localStorage !== 'undefined' && localStorage.getItem(TRACE_ALL_KEY) === 'true';\n\n this.#samplingProcessors = options.spanSink\n ? []\n : this.options.destinations.map(\n (destination) =>\n new TailSampling.TailSamplingSpanProcessor(\n new AiContent.AiContentStrippingSpanProcessor(\n new BatchSpanProcessor(\n new OTLPTraceExporter({\n url: signalUrl(destination, 'traces'),\n headers: destination.headers,\n concurrencyLimit: 10,\n }),\n { scheduledDelayMillis: 5_000 },\n ),\n ),\n { ratio: forceTraceAll ? 1 : undefined },\n ),\n );\n\n this._tracerProvider = new WebTracerProvider({\n resource: this.options.resource,\n sampler: new AlwaysOnSampler(),\n spanProcessors: [\n new TagInjectorSpanProcessor(this.options.getTags),\n new SpanFanout.FanoutSpanProcessor(),\n ...(options.spanSink ? [new OtelSpanSink.PortSpanProcessor(options.spanSink.post)] : this.#samplingProcessors),\n ],\n });\n\n trace.setGlobalTracerProvider(this._tracerProvider);\n // Without a context manager `context.active()` is always the root, so the Effect tracer's\n // context hook is inert and a log emitted inside a span cannot find it.\n otelContext.setGlobalContextManager(new StackContextManager().enable());\n\n this._tracer = trace.getTracer(\n 'dxos-observability',\n this.options.resource.attributes[ATTR_SERVICE_VERSION]?.toString(),\n );\n }\n\n /**\n * Forcibly flush the BatchSpanProcessor. Call before process exit / page unload\n * to avoid losing queued spans (which manifests as \"Missing Span\" in SigNoz —\n * their already-exported children reference a parent that never made it to OTLP).\n */\n public async flush(): Promise<void> {\n await this._tracerProvider.forceFlush();\n }\n\n /**\n * Flush + shut down the tracer provider via `WebTracerProvider.shutdown()`,\n * which forces a final export then terminates all span processors.\n *\n * Terminal and effectively one-shot: safe to call after `flush()`, but\n * `flush()` MUST NOT be called after `close()` — shutdown stops further\n * exporting, so subsequent `close()`/`flush()` calls resolve without\n * emitting new spans.\n */\n public async close(): Promise<void> {\n await this._tracerProvider.shutdown();\n }\n\n /**\n * Keeps the rest of a trace a warning or error log named. Reaches the in-thread sampler only;\n * with a worker deciding, its own log sink promotes there instead.\n */\n public promote(traceId: string): void {\n for (const processor of this.#samplingProcessors) {\n processor.promote(traceId);\n }\n }\n\n public start(): void {\n log('trace processor registered');\n\n registerInstrumentations({\n instrumentations: [\n getWebAutoInstrumentations({\n '@opentelemetry/instrumentation-fetch': { enabled: false, ignoreUrls: [/api\\.ipdata\\.co/] },\n '@opentelemetry/instrumentation-document-load': { enabled: false },\n '@opentelemetry/instrumentation-xml-http-request': { enabled: false },\n '@opentelemetry/instrumentation-user-interaction': { enabled: false },\n }),\n ],\n });\n\n const tracer = this._tracer;\n\n TRACE_PROCESSOR.tracingBackend = {\n startSpan: (options: StartSpanOptions): RemoteSpan => {\n log('begin otel trace', { options });\n const parentCtx = options.parentContext\n ? propagation.extract(ROOT_CONTEXT, {\n traceparent: options.parentContext.traceparent,\n tracestate: options.parentContext.tracestate ?? '',\n })\n : otelContext.active();\n\n const span = tracer.startSpan(options.name, options, parentCtx);\n\n const sc = span.spanContext();\n const spanContext =\n sc && sc.traceId && sc.spanId\n ? {\n traceparent: `00-${sc.traceId}-${sc.spanId}-${(sc.traceFlags ?? 0).toString(16).padStart(2, '0')}`,\n tracestate: sc.traceState?.serialize(),\n }\n : undefined;\n\n return {\n end: (endTime?: number) => span.end(endTime),\n setAttributes: (attrs: Record<string, any>) => span.setAttributes(attrs),\n setError: (err: unknown) => {\n if (err instanceof Error) {\n span.recordException(err);\n }\n span.setStatus({ code: SpanStatusCode.ERROR, message: err instanceof Error ? err.message : String(err) });\n },\n spanContext,\n };\n },\n };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAsCA,IAAa,aAAb,MAAwB;CAKO;CAJ7B;CACA;CACA;CAEA,YAAY,SAA6C;EAA5B,KAAA,UAAA;EAC3B,YAAY,oBAAoB,IAAI,0BAA0B,CAAC;EAE/D,MAAM,gBAAgB,OAAO,iBAAiB,eAAe,aAAa,QAAQ,aAAa,MAAM;EAErG,KAAK,sBAAsB,QAAQ,WAC/B,CAAC,IACD,KAAK,QAAQ,aAAa,KACvB,gBACC,
|
|
1
|
+
{"version":3,"file":"traces.mjs","names":["TailSampling.TailSamplingSpanProcessor","AiContent.AiContentStrippingSpanProcessor","SpanFanout.FanoutSpanProcessor","OtelSpanSink.PortSpanProcessor","otelContext"],"sources":["../../src/extensions/otel/traces-browser.ts"],"sourcesContent":["//\n// Copyright 2024 DXOS.org\n//\n\nimport {\n ROOT_CONTEXT,\n SpanStatusCode,\n type Tracer,\n context as otelContext,\n propagation,\n trace,\n} from '@opentelemetry/api';\nimport { getWebAutoInstrumentations } from '@opentelemetry/auto-instrumentations-web';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport { AlwaysOnSampler, BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';\nimport { StackContextManager, WebTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport { ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\n\nimport { log } from '@dxos/log';\nimport { type RemoteSpan, type StartSpanOptions, TRACE_ALL_KEY, TRACE_PROCESSOR } from '@dxos/tracing';\n\nimport * as AiContent from './ai-content.ts';\nimport { type OtelOptions, signalUrl } from './otel.ts';\nimport * as OtelSpanSink from './OtelSpanSink.ts';\nimport * as SpanFanout from './span-fanout.ts';\nimport { TagInjectorSpanProcessor } from './span-processors.ts';\nimport * as TailSampling from './tail-sampling.ts';\n\nexport type OtelTracesOptions = OtelOptions & {\n /**\n * When set, ended spans are posted to the observability worker's `OtelSpanSink` instead of\n * being batched and exported here. Sampling, IDs, and propagation stay in this realm.\n */\n spanSink?: OtelSpanSink.Handle;\n};\n\nexport class OtelTraces {\n private _tracer: Tracer;\n private readonly _tracerProvider: WebTracerProvider;\n readonly #samplingProcessors: TailSampling.TailSamplingSpanProcessor[];\n\n constructor(private readonly options: OtelTracesOptions) {\n propagation.setGlobalPropagator(new W3CTraceContextPropagator());\n\n const forceTraceAll = typeof localStorage !== 'undefined' && localStorage.getItem(TRACE_ALL_KEY) === 'true';\n\n this.#samplingProcessors = options.spanSink\n ? []\n : this.options.destinations.map(\n (destination) =>\n new TailSampling.TailSamplingSpanProcessor(\n new AiContent.AiContentStrippingSpanProcessor(\n new BatchSpanProcessor(\n new OTLPTraceExporter({\n url: signalUrl(destination, 'traces'),\n headers: destination.headers,\n concurrencyLimit: 10,\n }),\n { scheduledDelayMillis: 5_000 },\n ),\n ),\n { ratio: forceTraceAll ? 1 : undefined },\n ),\n );\n\n this._tracerProvider = new WebTracerProvider({\n resource: this.options.resource,\n sampler: new AlwaysOnSampler(),\n spanProcessors: [\n new TagInjectorSpanProcessor(this.options.getTags),\n new SpanFanout.FanoutSpanProcessor(),\n ...(options.spanSink ? [new OtelSpanSink.PortSpanProcessor(options.spanSink.post)] : this.#samplingProcessors),\n ],\n });\n\n trace.setGlobalTracerProvider(this._tracerProvider);\n // Without a context manager `context.active()` is always the root, so the Effect tracer's\n // context hook is inert and a log emitted inside a span cannot find it.\n otelContext.setGlobalContextManager(new StackContextManager().enable());\n\n this._tracer = trace.getTracer(\n 'dxos-observability',\n this.options.resource.attributes[ATTR_SERVICE_VERSION]?.toString(),\n );\n }\n\n /**\n * Forcibly flush the BatchSpanProcessor. Call before process exit / page unload\n * to avoid losing queued spans (which manifests as \"Missing Span\" in SigNoz —\n * their already-exported children reference a parent that never made it to OTLP).\n */\n public async flush(): Promise<void> {\n await this._tracerProvider.forceFlush();\n }\n\n /**\n * Flush + shut down the tracer provider via `WebTracerProvider.shutdown()`,\n * which forces a final export then terminates all span processors.\n *\n * Terminal and effectively one-shot: safe to call after `flush()`, but\n * `flush()` MUST NOT be called after `close()` — shutdown stops further\n * exporting, so subsequent `close()`/`flush()` calls resolve without\n * emitting new spans.\n */\n public async close(): Promise<void> {\n await this._tracerProvider.shutdown();\n }\n\n /**\n * Keeps the rest of a trace a warning or error log named. Reaches the in-thread sampler only;\n * with a worker deciding, its own log sink promotes there instead.\n */\n public promote(traceId: string): void {\n for (const processor of this.#samplingProcessors) {\n processor.promote(traceId);\n }\n }\n\n public start(): void {\n log('trace processor registered');\n\n registerInstrumentations({\n instrumentations: [\n getWebAutoInstrumentations({\n '@opentelemetry/instrumentation-fetch': { enabled: false, ignoreUrls: [/api\\.ipdata\\.co/] },\n '@opentelemetry/instrumentation-document-load': { enabled: false },\n '@opentelemetry/instrumentation-xml-http-request': { enabled: false },\n '@opentelemetry/instrumentation-user-interaction': { enabled: false },\n }),\n ],\n });\n\n const tracer = this._tracer;\n\n TRACE_PROCESSOR.tracingBackend = {\n startSpan: (options: StartSpanOptions): RemoteSpan => {\n log('begin otel trace', { options });\n const parentCtx = options.parentContext\n ? propagation.extract(ROOT_CONTEXT, {\n traceparent: options.parentContext.traceparent,\n tracestate: options.parentContext.tracestate ?? '',\n })\n : otelContext.active();\n\n const span = tracer.startSpan(options.name, options, parentCtx);\n\n const sc = span.spanContext();\n const spanContext =\n sc && sc.traceId && sc.spanId\n ? {\n traceparent: `00-${sc.traceId}-${sc.spanId}-${(sc.traceFlags ?? 0).toString(16).padStart(2, '0')}`,\n tracestate: sc.traceState?.serialize(),\n }\n : undefined;\n\n return {\n end: (endTime?: number) => span.end(endTime),\n setAttributes: (attrs: Record<string, any>) => span.setAttributes(attrs),\n setError: (err: unknown) => {\n if (err instanceof Error) {\n span.recordException(err);\n }\n span.setStatus({ code: SpanStatusCode.ERROR, message: err instanceof Error ? err.message : String(err) });\n },\n spanContext,\n };\n },\n };\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traces.node.mjs","names":[],"sources":["../../src/extensions/otel/traces.ts"],"sourcesContent":["//\n// Copyright 2024 DXOS.org\n//\n\nimport {\n ROOT_CONTEXT,\n SpanStatusCode,\n type Tracer,\n context as otelContext,\n propagation,\n trace,\n} from '@opentelemetry/api';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';\nimport { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';\nimport { ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\n\nimport { log } from '@dxos/log';\nimport { type RemoteSpan, type StartSpanOptions, TRACE_PROCESSOR } from '@dxos/tracing';\n\nimport * as AiContent from './ai-content.ts';\nimport { type OtelOptions, signalUrl } from './otel.ts';\nimport * as OtelSpanSink from './OtelSpanSink.ts';\nimport * as SpanFanout from './span-fanout.ts';\nimport { TagInjectorSpanProcessor } from './span-processors.ts';\n\nexport type OtelTracesOptions = OtelOptions & {\n /**\n * When set, ended spans are posted to the observability worker's `OtelSpanSink` instead of\n * being batched and exported here. Sampling, IDs, and propagation stay in this realm.\n */\n spanSink?: OtelSpanSink.Handle;\n};\n\nexport class OtelTraces {\n private _tracer: Tracer;\n private readonly _tracerProvider: NodeTracerProvider;\n\n constructor(private readonly options: OtelTracesOptions) {\n this._tracerProvider = new NodeTracerProvider({\n resource: this.options.resource,\n spanProcessors: [\n new TagInjectorSpanProcessor(this.options.getTags),\n new SpanFanout.FanoutSpanProcessor(),\n ...(options.spanSink\n ? [new OtelSpanSink.PortSpanProcessor(options.spanSink.post)]\n : this.options.destinations.map(\n (destination) =>\n new AiContent.AiContentStrippingSpanProcessor(\n new BatchSpanProcessor(\n new OTLPTraceExporter({\n url: signalUrl(destination, 'traces'),\n headers: destination.headers,\n concurrencyLimit: 10,\n }),\n ),\n ),\n )),\n ],\n });\n\n // Registers the provider, the propagator, and an async-hooks context manager. Without the\n // last, `context.active()` is always the root, so the Effect tracer's context hook is inert and\n // a log emitted inside a span cannot find it; async hooks carry it across awaits, which node\n // code does constantly and the browser's stack manager could not follow.\n this._tracerProvider.register({ propagator: new W3CTraceContextPropagator() });\n this._tracer = trace.getTracer(\n 'dxos-observability',\n this.options.resource.attributes[ATTR_SERVICE_VERSION]?.toString(),\n );\n }\n\n /** Same surface as the browser tracer; this one exports every span, so there is nothing to promote. */\n public promote(_traceId: string): void {}\n\n /**\n * Forcibly flush the BatchSpanProcessor. Call before process exit to avoid\n * losing queued spans (which manifests as \"Missing Span\" in SigNoz — their\n * already-exported children reference a parent that never made it to OTLP).\n */\n public async flush(): Promise<void> {\n await this._tracerProvider.forceFlush();\n }\n\n /**\n * Flush + shut down the tracer provider via `BasicTracerProvider.shutdown()`,\n * which forces a final export then terminates all span processors.\n *\n * Terminal and effectively one-shot: safe to call after `flush()`, but\n * `flush()` MUST NOT be called after `close()` — shutdown stops further\n * exporting, so subsequent `close()`/`flush()` calls resolve without\n * emitting new spans.\n */\n public async close(): Promise<void> {\n await this._tracerProvider.shutdown();\n }\n\n public start(): void {\n log('trace processor registered');\n\n const tracer = this._tracer;\n\n TRACE_PROCESSOR.tracingBackend = {\n startSpan: (options: StartSpanOptions): RemoteSpan => {\n log('begin otel trace', { options });\n const parentCtx = options.parentContext\n ? propagation.extract(ROOT_CONTEXT, {\n traceparent: options.parentContext.traceparent,\n tracestate: options.parentContext.tracestate ?? '',\n })\n : otelContext.active();\n\n const span = tracer.startSpan(options.name, options, parentCtx);\n\n const sc = span.spanContext();\n const spanContext =\n sc && sc.traceId && sc.spanId\n ? {\n traceparent: `00-${sc.traceId}-${sc.spanId}-${(sc.traceFlags ?? 0).toString(16).padStart(2, '0')}`,\n tracestate: sc.traceState?.serialize(),\n }\n : undefined;\n\n return {\n end: (endTime?: number) => span.end(endTime),\n setAttributes: (attrs: Record<string, any>) => span.setAttributes(attrs),\n setError: (err: unknown) => {\n if (err instanceof Error) {\n span.recordException(err);\n }\n span.setStatus({ code: SpanStatusCode.ERROR, message: err instanceof Error ? err.message : String(err) });\n },\n spanContext,\n };\n },\n };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAmCA,IAAa,aAAb,MAAwB;CAIO;CAH7B;CACA;CAEA,YAAY,SAA6C;EAA5B,KAAA,UAAA;EAC3B,KAAK,kBAAkB,IAAI,mBAAmB;GAC5C,UAAU,KAAK,QAAQ;GACvB,gBAAgB;IACd,IAAI,yBAAyB,KAAK,QAAQ,OAAO;IACjD,
|
|
1
|
+
{"version":3,"file":"traces.node.mjs","names":["SpanFanout.FanoutSpanProcessor","OtelSpanSink.PortSpanProcessor","AiContent.AiContentStrippingSpanProcessor","otelContext"],"sources":["../../src/extensions/otel/traces.ts"],"sourcesContent":["//\n// Copyright 2024 DXOS.org\n//\n\nimport {\n ROOT_CONTEXT,\n SpanStatusCode,\n type Tracer,\n context as otelContext,\n propagation,\n trace,\n} from '@opentelemetry/api';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';\nimport { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';\nimport { ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\n\nimport { log } from '@dxos/log';\nimport { type RemoteSpan, type StartSpanOptions, TRACE_PROCESSOR } from '@dxos/tracing';\n\nimport * as AiContent from './ai-content.ts';\nimport { type OtelOptions, signalUrl } from './otel.ts';\nimport * as OtelSpanSink from './OtelSpanSink.ts';\nimport * as SpanFanout from './span-fanout.ts';\nimport { TagInjectorSpanProcessor } from './span-processors.ts';\n\nexport type OtelTracesOptions = OtelOptions & {\n /**\n * When set, ended spans are posted to the observability worker's `OtelSpanSink` instead of\n * being batched and exported here. Sampling, IDs, and propagation stay in this realm.\n */\n spanSink?: OtelSpanSink.Handle;\n};\n\nexport class OtelTraces {\n private _tracer: Tracer;\n private readonly _tracerProvider: NodeTracerProvider;\n\n constructor(private readonly options: OtelTracesOptions) {\n this._tracerProvider = new NodeTracerProvider({\n resource: this.options.resource,\n spanProcessors: [\n new TagInjectorSpanProcessor(this.options.getTags),\n new SpanFanout.FanoutSpanProcessor(),\n ...(options.spanSink\n ? [new OtelSpanSink.PortSpanProcessor(options.spanSink.post)]\n : this.options.destinations.map(\n (destination) =>\n new AiContent.AiContentStrippingSpanProcessor(\n new BatchSpanProcessor(\n new OTLPTraceExporter({\n url: signalUrl(destination, 'traces'),\n headers: destination.headers,\n concurrencyLimit: 10,\n }),\n ),\n ),\n )),\n ],\n });\n\n // Registers the provider, the propagator, and an async-hooks context manager. Without the\n // last, `context.active()` is always the root, so the Effect tracer's context hook is inert and\n // a log emitted inside a span cannot find it; async hooks carry it across awaits, which node\n // code does constantly and the browser's stack manager could not follow.\n this._tracerProvider.register({ propagator: new W3CTraceContextPropagator() });\n this._tracer = trace.getTracer(\n 'dxos-observability',\n this.options.resource.attributes[ATTR_SERVICE_VERSION]?.toString(),\n );\n }\n\n /** Same surface as the browser tracer; this one exports every span, so there is nothing to promote. */\n public promote(_traceId: string): void {}\n\n /**\n * Forcibly flush the BatchSpanProcessor. Call before process exit to avoid\n * losing queued spans (which manifests as \"Missing Span\" in SigNoz — their\n * already-exported children reference a parent that never made it to OTLP).\n */\n public async flush(): Promise<void> {\n await this._tracerProvider.forceFlush();\n }\n\n /**\n * Flush + shut down the tracer provider via `BasicTracerProvider.shutdown()`,\n * which forces a final export then terminates all span processors.\n *\n * Terminal and effectively one-shot: safe to call after `flush()`, but\n * `flush()` MUST NOT be called after `close()` — shutdown stops further\n * exporting, so subsequent `close()`/`flush()` calls resolve without\n * emitting new spans.\n */\n public async close(): Promise<void> {\n await this._tracerProvider.shutdown();\n }\n\n public start(): void {\n log('trace processor registered');\n\n const tracer = this._tracer;\n\n TRACE_PROCESSOR.tracingBackend = {\n startSpan: (options: StartSpanOptions): RemoteSpan => {\n log('begin otel trace', { options });\n const parentCtx = options.parentContext\n ? propagation.extract(ROOT_CONTEXT, {\n traceparent: options.parentContext.traceparent,\n tracestate: options.parentContext.tracestate ?? '',\n })\n : otelContext.active();\n\n const span = tracer.startSpan(options.name, options, parentCtx);\n\n const sc = span.spanContext();\n const spanContext =\n sc && sc.traceId && sc.spanId\n ? {\n traceparent: `00-${sc.traceId}-${sc.spanId}-${(sc.traceFlags ?? 0).toString(16).padStart(2, '0')}`,\n tracestate: sc.traceState?.serialize(),\n }\n : undefined;\n\n return {\n end: (endTime?: number) => span.end(endTime),\n setAttributes: (attrs: Record<string, any>) => span.setAttributes(attrs),\n setError: (err: unknown) => {\n if (err instanceof Error) {\n span.recordException(err);\n }\n span.setStatus({ code: SpanStatusCode.ERROR, message: err instanceof Error ? err.message : String(err) });\n },\n spanContext,\n };\n },\n };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAmCA,IAAa,aAAb,MAAwB;CAIO;CAH7B;CACA;CAEA,YAAY,SAA6C;EAA5B,KAAA,UAAA;EAC3B,KAAK,kBAAkB,IAAI,mBAAmB;GAC5C,UAAU,KAAK,QAAQ;GACvB,gBAAgB;IACd,IAAI,yBAAyB,KAAK,QAAQ,OAAO;IACjD,IAAIA,oBAA+B;IACnC,GAAI,QAAQ,WACR,CAAC,IAAIC,kBAA+B,QAAQ,SAAS,IAAI,CAAC,IAC1D,KAAK,QAAQ,aAAa,KACvB,gBACC,IAAIC,gCACF,IAAI,mBACF,IAAI,kBAAkB;KACpB,KAAK,UAAU,aAAa,QAAQ;KACpC,SAAS,YAAY;KACrB,kBAAkB;IACpB,CAAC,CACH,CACF,CACJ;GACN;EACF,CAAC;EAMD,KAAK,gBAAgB,SAAS,EAAE,YAAY,IAAI,0BAA0B,EAAE,CAAC;EAC7E,KAAK,UAAU,MAAM,UACnB,sBACA,KAAK,QAAQ,SAAS,WAAW,qBAAqB,EAAE,SAAS,CACnE;CACF;;CAGA,QAAe,UAAwB,CAAC;;;;;;CAOxC,MAAa,QAAuB;EAClC,MAAM,KAAK,gBAAgB,WAAW;CACxC;;;;;;;;;;CAWA,MAAa,QAAuB;EAClC,MAAM,KAAK,gBAAgB,SAAS;CACtC;CAEA,QAAqB;EACnB,IAAI,8BAA2B,KAAA,GAAA;GAAA,YAAA;GAAA,GAAA;GAAA,GAAA;GAAA,GAAA;EAAA,CAAC;EAEhC,MAAM,SAAS,KAAK;EAEpB,gBAAgB,iBAAiB,EAC/B,YAAY,YAA0C;GACpD,IAAI,oBAAoB,EAAE,QAAQ,GAAA;IAAA,YAAA;IAAA,GAAA;IAAA,GAAA;IAAA,GAAA;GAAA,CAAC;GACnC,MAAM,YAAY,QAAQ,gBACtB,YAAY,QAAQ,cAAc;IAChC,aAAa,QAAQ,cAAc;IACnC,YAAY,QAAQ,cAAc,cAAc;GAClD,CAAC,IACDC,QAAY,OAAO;GAEvB,MAAM,OAAO,OAAO,UAAU,QAAQ,MAAM,SAAS,SAAS;GAE9D,MAAM,KAAK,KAAK,YAAY;GAS5B,OAAO;IACL,MAAM,YAAqB,KAAK,IAAI,OAAO;IAC3C,gBAAgB,UAA+B,KAAK,cAAc,KAAK;IACvE,WAAW,QAAiB;KAC1B,IAAI,eAAe,OACjB,KAAK,gBAAgB,GAAG;KAE1B,KAAK,UAAU;MAAE,MAAM,eAAe;MAAO,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;KAAE,CAAC;IAC1G;IACA,aAhBA,MAAM,GAAG,WAAW,GAAG,SACnB;KACE,aAAa,MAAM,GAAG,QAAQ,GAAG,GAAG,OAAO,IAAI,GAAG,cAAc,EAAA,CAAG,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG;KAC/F,YAAY,GAAG,YAAY,UAAU;IACvC,IACA,KAAA;GAYN;EACF,EACF;CACF;AACF"}
|
|
@@ -72,7 +72,7 @@ export type Inference = {
|
|
|
72
72
|
parentSpanId?: string;
|
|
73
73
|
/** Provider span name, e.g. `LanguageModel.streamText`. */
|
|
74
74
|
spanName: string;
|
|
75
|
-
/** `gen_ai.
|
|
75
|
+
/** `gen_ai.provider.name` — the serving product, not the wire dialect. */
|
|
76
76
|
provider?: string;
|
|
77
77
|
model?: string;
|
|
78
78
|
/** Conversation the call belongs to, when the call site named one. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObservabilityExtension.d.ts","sourceRoot":"","sources":["../../../src/ObservabilityExtension.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,cAAc,uBAAuB,CAAC;AAEtC;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;AAElG;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,IAAI;IACpD,IAAI,EAAE,CAAC,CAAC;IACR,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;CACvC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjE;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/E,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IACpF,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IACtF;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CAClG,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAC/D,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CACjE,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,
|
|
1
|
+
{"version":3,"file":"ObservabilityExtension.d.ts","sourceRoot":"","sources":["../../../src/ObservabilityExtension.ts"],"names":[],"mappings":"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"}
|
|
@@ -81,7 +81,7 @@ export const contentCaptureAllowed = (_spaceId) => {
|
|
|
81
81
|
/** The span `effect/ai` names for a streamed call; anything else is a single response. */
|
|
82
82
|
const STREAM_SPAN_NAME = 'LanguageModel.streamText';
|
|
83
83
|
/** Marker attributes identifying a GenAI span (per OTel GenAI semantic conventions). */
|
|
84
|
-
const GEN_AI_MARKERS = ['gen_ai.
|
|
84
|
+
const GEN_AI_MARKERS = ['gen_ai.provider.name', 'gen_ai.request.model', 'gen_ai.response.model'];
|
|
85
85
|
/**
|
|
86
86
|
* Session/content attributes stamped by `AiTelemetry.ATTRIBUTES` in `@dxos/ai` (not part of the
|
|
87
87
|
* GenAI spec). Restated rather than imported because telemetry sits below the AI stack, not above
|
|
@@ -181,7 +181,7 @@ export class AiSpanProcessor {
|
|
|
181
181
|
spanId: spanContext.spanId,
|
|
182
182
|
parentSpanId: span.parentSpanContext?.spanId,
|
|
183
183
|
spanName: span.name,
|
|
184
|
-
provider: stringAttribute(attributes['gen_ai.
|
|
184
|
+
provider: stringAttribute(attributes['gen_ai.provider.name']),
|
|
185
185
|
model: stringAttribute(attributes['gen_ai.response.model'] ?? attributes['gen_ai.request.model']),
|
|
186
186
|
sessionId: stringAttribute(attributes[SESSION_ID_ATTR]),
|
|
187
187
|
parameters: modelParameters(attributes),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiObservability.js","sourceRoot":"","sources":["../../../../src/ai/AiObservability.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAEF,uBAAuB;AAEvB,qGAAqG;AACrG,qDAAqD;AAErD,OAAO,EAAgB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGlE,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAIhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,QAAgB,EAAW,EAAE;IACjE,4FAA4F;IAC5F,6FAA6F;IAC7F,8FAA8F;IAC9F,6FAA6F;IAC7F,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAkBF,0FAA0F;AAC1F,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;AAEpD,wFAAwF;AACxF,MAAM,cAAc,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"AiObservability.js","sourceRoot":"","sources":["../../../../src/ai/AiObservability.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,7 +38,7 @@ describe('AiSpanProcessor', () => {
|
|
|
38
38
|
tracer
|
|
39
39
|
.startSpan('LanguageModel.streamText', {
|
|
40
40
|
attributes: {
|
|
41
|
-
'gen_ai.
|
|
41
|
+
'gen_ai.provider.name': 'anthropic',
|
|
42
42
|
'gen_ai.request.model': 'claude-sonnet-5',
|
|
43
43
|
'gen_ai.request.temperature': 0.5,
|
|
44
44
|
'gen_ai.usage.input_tokens': 10,
|
|
@@ -68,7 +68,7 @@ describe('AiSpanProcessor', () => {
|
|
|
68
68
|
test('reduces errors to the exception class', async ({ expect }) => {
|
|
69
69
|
const { inferences, tracer } = await setup();
|
|
70
70
|
const span = tracer.startSpan('LanguageModel.generateText', {
|
|
71
|
-
attributes: { 'gen_ai.
|
|
71
|
+
attributes: { 'gen_ai.provider.name': 'anthropic' },
|
|
72
72
|
});
|
|
73
73
|
span.recordException(new TypeError('the user secret'));
|
|
74
74
|
span.setStatus({ code: SpanStatusCode.ERROR, message: 'the user secret' });
|
|
@@ -81,7 +81,7 @@ describe('AiSpanProcessor', () => {
|
|
|
81
81
|
tracer
|
|
82
82
|
.startSpan('LanguageModel.generateText', {
|
|
83
83
|
attributes: {
|
|
84
|
-
'gen_ai.
|
|
84
|
+
'gen_ai.provider.name': 'anthropic',
|
|
85
85
|
'spaceId': PLAINTEXT_SPACE,
|
|
86
86
|
'dxos.ai.input': JSON.stringify([{ role: 'user', content: 'hi' }]),
|
|
87
87
|
'dxos.ai.output': '[{"role":"assist',
|
|
@@ -96,7 +96,7 @@ describe('AiSpanProcessor', () => {
|
|
|
96
96
|
tracer
|
|
97
97
|
.startSpan('LanguageModel.generateText', {
|
|
98
98
|
attributes: {
|
|
99
|
-
'gen_ai.
|
|
99
|
+
'gen_ai.provider.name': 'anthropic',
|
|
100
100
|
'spaceId': PLAINTEXT_SPACE,
|
|
101
101
|
'dxos.ai.output': '[{"role":"assist',
|
|
102
102
|
'dxos.ai.truncated': true,
|
|
@@ -110,7 +110,7 @@ describe('AiSpanProcessor', () => {
|
|
|
110
110
|
tracer
|
|
111
111
|
.startSpan('LanguageModel.generateText', {
|
|
112
112
|
attributes: {
|
|
113
|
-
'gen_ai.
|
|
113
|
+
'gen_ai.provider.name': 'anthropic',
|
|
114
114
|
'gen_ai.usage.input_tokens': 3,
|
|
115
115
|
'spaceId': 'encrypted-space',
|
|
116
116
|
'dxos.ai.cache_read_tokens': 11,
|
|
@@ -126,7 +126,7 @@ describe('AiSpanProcessor', () => {
|
|
|
126
126
|
tracer
|
|
127
127
|
.startSpan('LanguageModel.generateText', {
|
|
128
128
|
attributes: {
|
|
129
|
-
'gen_ai.
|
|
129
|
+
'gen_ai.provider.name': 'anthropic',
|
|
130
130
|
'gen_ai.usage.input_tokens': 10,
|
|
131
131
|
'spaceId': 'encrypted-space',
|
|
132
132
|
'dxos.ai.input': JSON.stringify([{ role: 'user', content: 'private' }]),
|
|
@@ -150,7 +150,7 @@ describe('AiSpanProcessor', () => {
|
|
|
150
150
|
tracer
|
|
151
151
|
.startSpan('LanguageModel.generateText', {
|
|
152
152
|
attributes: {
|
|
153
|
-
'gen_ai.
|
|
153
|
+
'gen_ai.provider.name': 'anthropic',
|
|
154
154
|
'gen_ai.usage.input_tokens': 10,
|
|
155
155
|
'dxos.ai.input': JSON.stringify([{ role: 'user', content: 'private' }]),
|
|
156
156
|
},
|
|
@@ -164,7 +164,7 @@ describe('AiSpanProcessor', () => {
|
|
|
164
164
|
const { inferences, tracer } = await setup({ captureEnabled: () => false });
|
|
165
165
|
tracer
|
|
166
166
|
.startSpan('LanguageModel.generateText', {
|
|
167
|
-
attributes: { 'gen_ai.
|
|
167
|
+
attributes: { 'gen_ai.provider.name': 'anthropic', 'spaceId': PLAINTEXT_SPACE },
|
|
168
168
|
})
|
|
169
169
|
.end();
|
|
170
170
|
expect(inferences).toHaveLength(0);
|
|
@@ -172,7 +172,7 @@ describe('AiSpanProcessor', () => {
|
|
|
172
172
|
test('reads the opt-in per span, so a mid-session toggle takes effect', async ({ expect }) => {
|
|
173
173
|
let enabled = false;
|
|
174
174
|
const { inferences, tracer } = await setup({ captureEnabled: () => enabled });
|
|
175
|
-
const emit = () => tracer.startSpan('LanguageModel.generateText', { attributes: { 'gen_ai.
|
|
175
|
+
const emit = () => tracer.startSpan('LanguageModel.generateText', { attributes: { 'gen_ai.provider.name': 'a' } }).end();
|
|
176
176
|
emit();
|
|
177
177
|
expect(inferences).toHaveLength(0);
|
|
178
178
|
enabled = true;
|
|
@@ -247,7 +247,7 @@ describe('AiSpanProcessor', () => {
|
|
|
247
247
|
],
|
|
248
248
|
});
|
|
249
249
|
const span = provider.getTracer('test').startSpan('LanguageModel.generateText', {
|
|
250
|
-
attributes: { 'gen_ai.
|
|
250
|
+
attributes: { 'gen_ai.provider.name': 'anthropic' },
|
|
251
251
|
});
|
|
252
252
|
expect(() => span.end()).not.toThrow();
|
|
253
253
|
});
|
|
@@ -293,7 +293,7 @@ describe('AiSpanProcessor wired to @dxos/ai', () => {
|
|
|
293
293
|
});
|
|
294
294
|
const stubModel = LanguageModel.make({
|
|
295
295
|
generateText: ({ span }) => Effect.sync(() => {
|
|
296
|
-
Telemetry.addGenAIAnnotations(span, {
|
|
296
|
+
Telemetry.addGenAIAnnotations(span, { provider: { name: 'anthropic' }, request: { model: 'test-model' } });
|
|
297
297
|
return [
|
|
298
298
|
{ type: 'text', text: 'hello' },
|
|
299
299
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiObservability.test.js","sourceRoot":"","sources":["../../../../src/ai/AiObservability.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AiObservability.test.js","sourceRoot":"","sources":["../../../../src/ai/AiObservability.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@ describe('TailSampler', () => {
|
|
|
30
30
|
});
|
|
31
31
|
test('keeps a model call the ratio would have dropped', ({ expect }) => {
|
|
32
32
|
const sampler = new TailSampler();
|
|
33
|
-
expect(sampler.keep(span({ attributes: { 'gen_ai.
|
|
33
|
+
expect(sampler.keep(span({ attributes: { 'gen_ai.provider.name': 'anthropic' } }))).toEqual(true);
|
|
34
34
|
});
|
|
35
35
|
test('keeps a turn or tool-call span the ratio would have dropped', ({ expect }) => {
|
|
36
36
|
expect(new TailSampler().keep(span({ attributes: { 'dxos.ai.kind': 'turn' } }))).toEqual(true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tail-sampling.test.js","sourceRoot":"","sources":["../../../../../src/extensions/otel/tail-sampling.test.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAEF,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAkB,eAAe,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE7G,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;AAC/C,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;AAElD,MAAM,IAAI,GAAG,CAAC,SAAS,GAAuB,EAAE,EAAa,EAAE,CAAC,CAAC;IAC/D,OAAO,EAAE,aAAa;IACtB,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE;IACtC,UAAU,EAAE,EAAE;IACd,UAAU,EAAE,CAAC;IACb,GAAG,SAAS;CACb,CAAC,CAAC;AAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,CAAC,4DAA4D,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QAChF,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gDAAgD,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACpE,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;QACvF,MAAM,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oDAAoD,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACxE,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iDAAiD,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACrE,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"tail-sampling.test.js","sourceRoot":"","sources":["../../../../../src/extensions/otel/tail-sampling.test.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAEF,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAkB,eAAe,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE7G,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;AAC/C,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;AAElD,MAAM,IAAI,GAAG,CAAC,SAAS,GAAuB,EAAE,EAAa,EAAE,CAAC,CAAC;IAC/D,OAAO,EAAE,aAAa;IACtB,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE;IACtC,UAAU,EAAE,EAAE;IACd,UAAU,EAAE,CAAC;IACb,GAAG,SAAS;CACb,CAAC,CAAC;AAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,CAAC,4DAA4D,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QAChF,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gDAAgD,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACpE,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;QACvF,MAAM,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oDAAoD,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACxE,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iDAAiD,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACrE,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,sBAAsB,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpG,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6DAA6D,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACjF,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/F,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjG,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+DAA+D,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACnF,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnG,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,wBAAwB,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvG,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,wBAAwB,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3G,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5D,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,eAAe,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5D,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4DAA4D,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QAChF,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gDAAgD,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACpE,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/D,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oDAAoD,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACxE,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;QAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QAEhF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9D,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0DAA0D,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QAC9E,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC/B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6BAA6B,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACjD,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,IAAI,CAAC,iEAAiE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACrF,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG;YACf,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;YACjB,KAAK,EAAE,CAAC,IAAsB,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5D,UAAU,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;YAC1B,QAAQ,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;SACzB,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,yBAAyB,CAAC,QAAe,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/E,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE,CAC7B,CAAC;YACC,IAAI;YACJ,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;YAC/C,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE;YACtC,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SACjB,CAAQ,CAAC;QAEZ,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAChC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACjC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"before-send.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/posthog/before-send.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAQ/C,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,EAAE,YAYlC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2026 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
/**
|
|
5
|
+
* Browser-raised errors with no stack and no effect on the user: a ResizeObserver callback that resized an element
|
|
6
|
+
* mid-delivery is reported this way, and the browser delivers the skipped notifications on the next frame.
|
|
7
|
+
*/
|
|
8
|
+
const BENIGN_EXCEPTIONS = [/^ResizeObserver loop/];
|
|
9
|
+
/** Drops `$exception` events whose every exception is benign. */
|
|
10
|
+
export const dropBenignExceptions = (capture) => {
|
|
11
|
+
if (capture?.event !== '$exception') {
|
|
12
|
+
return capture;
|
|
13
|
+
}
|
|
14
|
+
const exceptions = capture.properties.$exception_list ?? [];
|
|
15
|
+
const benign = exceptions.length > 0 &&
|
|
16
|
+
exceptions.every(({ value }) => typeof value === 'string' && BENIGN_EXCEPTIONS.some((pattern) => pattern.test(value)));
|
|
17
|
+
return benign ? null : capture;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=before-send.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"before-send.js","sourceRoot":"","sources":["../../../../../src/extensions/posthog/before-send.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAIF;;;GAGG;AACH,MAAM,iBAAiB,GAAG,CAAC,sBAAsB,CAAC,CAAC;AAEnD,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAiB,CAAC,OAAO,EAAE,EAAE;IAC5D,IAAI,OAAO,EAAE,KAAK,KAAK,YAAY,EAAE,CAAC;QACpC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,UAAU,GAA0B,OAAO,CAAC,UAAU,CAAC,eAAe,IAAI,EAAE,CAAC;IACnF,MAAM,MAAM,GACV,UAAU,CAAC,MAAM,GAAG,CAAC;QACrB,UAAU,CAAC,KAAK,CACd,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACrG,CAAC;IACJ,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACjC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"before-send.test.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/posthog/before-send.test.ts"],"names":[],"mappings":""}
|