import { normalizeLowercaseStringOrEmpty } from "../../shared/string-coerce.js";
/** * Template interpolation for response prefix. * * Supports variables like `{model}`, `{provider}`, `{thinkingLevel}`, etc. * Variables are case-insensitive and unresolved ones remain as literal text.
*/
export type ResponsePrefixContext = { /** Short model name (e.g., "gpt-5.4", "claude-opus-4-6") */
model?: string; /** Full model ID including provider (e.g., "openai/gpt-5.5") */
modelFull?: string; /** Provider name (e.g., "openai-codex", "anthropic") */
provider?: string; /** Current thinking level (e.g., "high", "low", "off") */
thinkingLevel?: string; /** Agent identity name */
identityName?: string;
};
// Regex pattern for template variables: {variableName} or {variable.name} const TEMPLATE_VAR_PATTERN = /\{([a-zA-Z][a-zA-Z0-9.]*)\}/g;
/** * Interpolate template variables in a response prefix string. * * @param template - The template string with `{variable}` placeholders * @param context - Context object with values for interpolation * @returns The interpolated string, or undefined if template is undefined * * @example * resolveResponsePrefixTemplate("[{model} | think:{thinkingLevel}]", { * model: "gpt-5.4", * thinkingLevel: "high" * }) * // Returns: "[gpt-5.4 | think:high]"
*/
export function resolveResponsePrefixTemplate(
template: string | undefined,
context: ResponsePrefixContext,
): string | undefined { if (!template) { return undefined;
}
/** * Check if a template string contains any template variables.
*/
export function hasTemplateVariables(template: string | undefined): boolean { if (!template) { returnfalse;
} // Reset lastIndex since we're using a global regex
TEMPLATE_VAR_PATTERN.lastIndex = 0; return TEMPLATE_VAR_PATTERN.test(template);
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-06-06)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.