/** Shared runtime context; omit model and effort when the harness manages them dynamically. */export function buildRuntimeInstructions(runtime: { readonly harness: string; readonly model?: string | undefined; readonly reasoningEffort?: string | undefined;}): string { const harness = toSingleLine(runtime.harness); const model = toSingleLine(runtime.model ?? ""); const effort = toSingleLine(runtime.reasoningEffort ?? ""); const modelInfo = model && model !== "auto" && model !== "default" ? `, as ${model}` : ""; const effortInfo = effort ? ` with ${effort} reasoning effort` : ""; return `<runtime_info>In case you're asked: you are running in T3 Code through the ${harness} harness${modelInfo}${effortInfo}. No need to mention this otherwise. You can embed images and videos in your response using Markdown with absolute file paths.</runtime_info>`;}function toSingleLine(value: string): string { return value.replaceAll(/\s+/g, " ").trim();}
/** Shared runtime context; omit model and effort when the harness manages them dynamically. */
export function buildRuntimeInstructions(runtime: {
readonly harness: string;
readonly model?: string | undefined;
readonly reasoningEffort?: string | undefined;
}): string {
const harness = toSingleLine(runtime.harness);
const model = toSingleLine(runtime.model ?? "");
const effort = toSingleLine(runtime.reasoningEffort ?? "");
const modelInfo = model && model !== "auto" && model !== "default" ? `, as ${model}` : "";
const effortInfo = effort ? ` with ${effort} reasoning effort` : "";
return `<runtime_info>In case you're asked: you are running in T3 Code through the ${harness} harness${modelInfo}${effortInfo}. No need to mention this otherwise. You can embed images and videos in your response using Markdown with absolute file paths.</runtime_info>`;
}
function toSingleLine(value: string): string {
return value.replaceAll(/\s+/g, " ").trim();
}