Files
orca/src/shared/structured-agent-session-option-codec.ts
T

45 lines
1.4 KiB
TypeScript

import type { SessionOptionValue } from './native-chat/input/native-chat-session-options'
const STRUCTURED_BOOLEAN_OPTION_IDS = new Set(['fastMode'])
export function encodeStructuredAgentSessionOptionValue(
optionId: string,
value: SessionOptionValue
): string | null {
if (STRUCTURED_BOOLEAN_OPTION_IDS.has(optionId)) {
return typeof value === 'boolean' ? String(value) : null
}
return typeof value === 'string' ? value : null
}
export function decodeStructuredAgentSessionOptionValue(
optionId: string,
value: string
): SessionOptionValue | null {
if (!STRUCTURED_BOOLEAN_OPTION_IDS.has(optionId)) {
return value
}
return value === 'true' ? true : value === 'false' ? false : null
}
/** A saved option string as its catalog kind reads it: booleans by kind, not by a fixed id list. */
export function decodeCatalogOptionValue(
kind: { type: 'select' | 'boolean' },
value: SessionOptionValue | undefined
): SessionOptionValue | undefined {
if (kind.type !== 'boolean' || typeof value !== 'string') {
return value
}
return value === 'true' ? true : value === 'false' ? false : undefined
}
export function encodeCatalogOptionValue(
kind: { type: 'select' | 'boolean' },
value: SessionOptionValue
): string | null {
if (kind.type === 'boolean') {
return typeof value === 'boolean' ? String(value) : null
}
return typeof value === 'string' ? value : null
}