refactor(telemetry): centralize the default mode

This commit is contained in:
Turtle
2026-08-06 17:39:43 +08:00
parent ccb0842cfc
commit ab94a2f7d6
3 changed files with 8 additions and 10 deletions

View File

@@ -1193,7 +1193,7 @@ export enum TelemetryMode {
Depends on: `BatchLogRecordProcessorOptions` (`@opentelemetry/sdk-logs`) · `OTLPExporterNodeConfigBase` (`@opentelemetry/otlp-exporter-base`) Depends on: `BatchLogRecordProcessorOptions` (`@opentelemetry/sdk-logs`) · `OTLPExporterNodeConfigBase` (`@opentelemetry/otlp-exporter-base`)
Source: [`packages/telemetry/session-telemetry-otel/src/index.ts:83`](../packages/telemetry/session-telemetry-otel/src/index.ts) Source: [`packages/telemetry/session-telemetry-otel/src/index.ts:79`](../packages/telemetry/session-telemetry-otel/src/index.ts)
## `@deepseek-ai/dsh-session-title` ## `@deepseek-ai/dsh-session-title`

View File

@@ -46,12 +46,8 @@ export enum TelemetryMode {
DISABLED = 'DISABLED', DISABLED = 'DISABLED',
} }
/** Supported session-sharing policies for runtime configuration validation. */ /** Default session-sharing policy for schema and direct construction. */
export const TELEMETRY_MODES = [ export const DEFAULT_TELEMETRY_MODE = TelemetryMode.FULL
TelemetryMode.FULL,
TelemetryMode.FEEDBACK_ONLY,
TelemetryMode.DISABLED,
] as const
const DISABLED_FEEDBACK_WARNING = 'session telemetry is DISABLED; nothing will be shared and this feedback remains local' const DISABLED_FEEDBACK_WARNING = 'session telemetry is DISABLED; nothing will be shared and this feedback remains local'
const NON_CANONICAL_FEEDBACK_WARNING = 'session telemetry ignored a feedback event absent from the canonical session log' const NON_CANONICAL_FEEDBACK_WARNING = 'session telemetry ignored a feedback event absent from the canonical session log'
@@ -59,7 +55,7 @@ const DROP_RECORD: TelemetryBackend['emit'] = () => {}
/** Resolve the default and reject unknown runtime values before transport setup. */ /** Resolve the default and reject unknown runtime values before transport setup. */
function resolveMode(mode: TelemetryMode | undefined): TelemetryMode { function resolveMode(mode: TelemetryMode | undefined): TelemetryMode {
const resolved = mode ?? TelemetryMode.FULL const resolved = mode ?? DEFAULT_TELEMETRY_MODE
switch (resolved) { switch (resolved) {
case TelemetryMode.FULL: case TelemetryMode.FULL:
case TelemetryMode.FEEDBACK_ONLY: case TelemetryMode.FEEDBACK_ONLY:
@@ -109,7 +105,7 @@ export interface Config {
* axiom (and silently drop every field not re-declared). * axiom (and silently drop every field not re-declared).
*/ */
export const Config: z<Config> = z.object({ export const Config: z<Config> = z.object({
mode: z.union(TELEMETRY_MODES).default(TelemetryMode.FULL), mode: z.union(Object.values(TelemetryMode)).default(DEFAULT_TELEMETRY_MODE),
exporter: z.any(), exporter: z.any(),
processor: z.any(), processor: z.any(),
}) })

View File

@@ -13,7 +13,7 @@ import { Context } from 'cordis'
import Loader from '@cordisjs/plugin-loader' import Loader from '@cordisjs/plugin-loader'
import { recordFeedback } from '@deepseek-ai/dsh-command-feedback' import { recordFeedback } from '@deepseek-ai/dsh-command-feedback'
import SessionStore, { SessionId } from '@deepseek-ai/dsh-session' import SessionStore, { SessionId } from '@deepseek-ai/dsh-session'
import TelemetryOtel, { Config, TelemetryMode } from '../src/index.ts' import TelemetryOtel, { Config, DEFAULT_TELEMETRY_MODE, TelemetryMode } from '../src/index.ts'
interface Capture { interface Capture {
headers: import('node:http').IncomingHttpHeaders headers: import('node:http').IncomingHttpHeaders
@@ -330,6 +330,8 @@ describe('TelemetryOtel config fails loud', () => {
expectTypeOf<Config['mode']>().toEqualTypeOf<TelemetryMode | undefined>() expectTypeOf<Config['mode']>().toEqualTypeOf<TelemetryMode | undefined>()
expectTypeOf<'FULL'>().not.toExtend<TelemetryMode>() expectTypeOf<'FULL'>().not.toExtend<TelemetryMode>()
expectTypeOf<TelemetryMode.FULL>().toExtend<TelemetryMode>() expectTypeOf<TelemetryMode.FULL>().toExtend<TelemetryMode>()
expect(DEFAULT_TELEMETRY_MODE).toBe(TelemetryMode.FULL)
expect(Config({}).mode).toBe(DEFAULT_TELEMETRY_MODE)
}) })
it.each([ it.each([