forked from CopilotKit/CopilotKit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdebug.ts
More file actions
55 lines (49 loc) · 1.64 KB
/
Copy pathdebug.ts
File metadata and controls
55 lines (49 loc) · 1.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/**
* Granular debug configuration for CopilotKit runtime and client.
* Pass `true` to enable events + lifecycle logging (but NOT verbose payloads),
* or an object for granular control including `verbose: true` for full payloads.
*/
export type DebugConfig =
| boolean
| {
/** Log every event emitted/received. Default: true */
events?: boolean;
/** Log request/run lifecycle. Default: true */
lifecycle?: boolean;
/** Log full event payloads instead of summaries. Default: false — must be explicitly opted in */
verbose?: boolean;
};
/** Normalized debug configuration — all fields resolved to booleans. */
export interface ResolvedDebugConfig {
enabled: boolean;
events: boolean;
lifecycle: boolean;
verbose: boolean;
}
/** The all-off config used when debug is falsy. */
const DEBUG_OFF: ResolvedDebugConfig = {
enabled: false,
events: false,
lifecycle: false,
verbose: false,
};
/**
* Normalizes a DebugConfig value into a ResolvedDebugConfig.
*
* - `false` / `undefined` → all off
* - `true` → events + lifecycle on, verbose off (no PII in logs)
* - object → merges with defaults (events: true, lifecycle: true, verbose: false)
*/
export function resolveDebugConfig(
debug: DebugConfig | undefined,
): ResolvedDebugConfig {
if (!debug) return DEBUG_OFF;
if (debug === true) {
return { enabled: true, events: true, lifecycle: true, verbose: false };
}
const events = debug.events ?? true;
const lifecycle = debug.lifecycle ?? true;
const enabled = events || lifecycle;
const verbose = enabled && (debug.verbose ?? false);
return { enabled, events, lifecycle, verbose };
}