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 files changed
+8 -10

No files matched your search

+1 -1
View File
@@ -1193,7 +1193,7 @@ export enum TelemetryMode {
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`
@@ -46,12 +46,8 @@ export enum TelemetryMode {
DISABLED = 'DISABLED',
}
/** Supported session-sharing policies for runtime configuration validation. */
export const TELEMETRY_MODES = [
TelemetryMode.FULL,
TelemetryMode.FEEDBACK_ONLY,
TelemetryMode.DISABLED,
] as const
/** Default session-sharing policy for schema and direct construction. */
export const DEFAULT_TELEMETRY_MODE = TelemetryMode.FULL
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'
@@ -59,7 +55,7 @@ const DROP_RECORD: TelemetryBackend['emit'] = () => {}
/** Resolve the default and reject unknown runtime values before transport setup. */
function resolveMode(mode: TelemetryMode | undefined): TelemetryMode {
const resolved = mode ?? TelemetryMode.FULL
const resolved = mode ?? DEFAULT_TELEMETRY_MODE
switch (resolved) {
case TelemetryMode.FULL:
case TelemetryMode.FEEDBACK_ONLY:
@@ -109,7 +105,7 @@ export interface Config {
* axiom (and silently drop every field not re-declared).
*/
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(),
processor: z.any(),
})
@@ -13,7 +13,7 @@ import { Context } from 'cordis'
import Loader from '@cordisjs/plugin-loader'
import { recordFeedback } from '@deepseek-ai/dsh-command-feedback'
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 {
headers: import('node:http').IncomingHttpHeaders
@@ -330,6 +330,8 @@ describe('TelemetryOtel config fails loud', () => {
expectTypeOf<Config['mode']>().toEqualTypeOf<TelemetryMode | undefined>()
expectTypeOf<'FULL'>().not.toExtend<TelemetryMode>()
expectTypeOf<TelemetryMode.FULL>().toExtend<TelemetryMode>()
expect(DEFAULT_TELEMETRY_MODE).toBe(TelemetryMode.FULL)
expect(Config({}).mode).toBe(DEFAULT_TELEMETRY_MODE)
})
it.each([