mirror of
https://github.com/stablyai/orca.git
synced 2026-11-01 01:27:35 +00:00
45 lines
1.4 KiB
TypeScript
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
|
|
}
|