refactor(auto-reply): share mode-switch events
This commit is contained in:
@@ -21,10 +21,9 @@ import {
|
||||
import { maybeHandleQueueDirective } from "./directive-handling.queue-validation.js";
|
||||
import {
|
||||
formatDirectiveAck,
|
||||
formatElevatedEvent,
|
||||
formatElevatedRuntimeHint,
|
||||
formatElevatedUnavailableText,
|
||||
formatReasoningEvent,
|
||||
enqueueModeSwitchEvents,
|
||||
withOptions,
|
||||
} from "./directive-handling.shared.js";
|
||||
|
||||
@@ -363,20 +362,13 @@ export async function handleDirectiveOnly(
|
||||
});
|
||||
}
|
||||
}
|
||||
if (elevatedChanged) {
|
||||
const nextElevated = (sessionEntry.elevatedLevel ?? "off") as ElevatedLevel;
|
||||
enqueueSystemEvent(formatElevatedEvent(nextElevated), {
|
||||
sessionKey,
|
||||
contextKey: "mode:elevated",
|
||||
});
|
||||
}
|
||||
if (reasoningChanged) {
|
||||
const nextReasoning = (sessionEntry.reasoningLevel ?? "off") as ReasoningLevel;
|
||||
enqueueSystemEvent(formatReasoningEvent(nextReasoning), {
|
||||
sessionKey,
|
||||
contextKey: "mode:reasoning",
|
||||
});
|
||||
}
|
||||
enqueueModeSwitchEvents({
|
||||
enqueueSystemEvent,
|
||||
sessionEntry,
|
||||
sessionKey,
|
||||
elevatedChanged,
|
||||
reasoningChanged,
|
||||
});
|
||||
|
||||
const parts: string[] = [];
|
||||
if (directives.hasThinkDirective && directives.thinkLevel) {
|
||||
|
||||
@@ -20,7 +20,7 @@ import { enqueueSystemEvent } from "../../infra/system-events.js";
|
||||
import { applyVerboseOverride } from "../../sessions/level-overrides.js";
|
||||
import { applyModelOverrideToSessionEntry } from "../../sessions/model-overrides.js";
|
||||
import { resolveProfileOverride } from "./directive-handling.auth.js";
|
||||
import { formatElevatedEvent, formatReasoningEvent } from "./directive-handling.shared.js";
|
||||
import { enqueueModeSwitchEvents } from "./directive-handling.shared.js";
|
||||
|
||||
export async function persistInlineDirectives(params: {
|
||||
directives: InlineDirectives;
|
||||
@@ -199,20 +199,13 @@ export async function persistInlineDirectives(params: {
|
||||
store[sessionKey] = sessionEntry;
|
||||
});
|
||||
}
|
||||
if (elevatedChanged) {
|
||||
const nextElevated = (sessionEntry.elevatedLevel ?? "off") as ElevatedLevel;
|
||||
enqueueSystemEvent(formatElevatedEvent(nextElevated), {
|
||||
sessionKey,
|
||||
contextKey: "mode:elevated",
|
||||
});
|
||||
}
|
||||
if (reasoningChanged) {
|
||||
const nextReasoning = (sessionEntry.reasoningLevel ?? "off") as ReasoningLevel;
|
||||
enqueueSystemEvent(formatReasoningEvent(nextReasoning), {
|
||||
sessionKey,
|
||||
contextKey: "mode:reasoning",
|
||||
});
|
||||
}
|
||||
enqueueModeSwitchEvents({
|
||||
enqueueSystemEvent,
|
||||
sessionEntry,
|
||||
sessionKey,
|
||||
elevatedChanged,
|
||||
reasoningChanged,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -40,6 +40,29 @@ export const formatReasoningEvent = (level: ReasoningLevel) => {
|
||||
return "Reasoning OFF — hide <think>.";
|
||||
};
|
||||
|
||||
export function enqueueModeSwitchEvents(params: {
|
||||
enqueueSystemEvent: (text: string, meta: { sessionKey: string; contextKey: string }) => void;
|
||||
sessionEntry: { elevatedLevel?: string | null; reasoningLevel?: string | null };
|
||||
sessionKey: string;
|
||||
elevatedChanged?: boolean;
|
||||
reasoningChanged?: boolean;
|
||||
}): void {
|
||||
if (params.elevatedChanged) {
|
||||
const nextElevated = (params.sessionEntry.elevatedLevel ?? "off") as ElevatedLevel;
|
||||
params.enqueueSystemEvent(formatElevatedEvent(nextElevated), {
|
||||
sessionKey: params.sessionKey,
|
||||
contextKey: "mode:elevated",
|
||||
});
|
||||
}
|
||||
if (params.reasoningChanged) {
|
||||
const nextReasoning = (params.sessionEntry.reasoningLevel ?? "off") as ReasoningLevel;
|
||||
params.enqueueSystemEvent(formatReasoningEvent(nextReasoning), {
|
||||
sessionKey: params.sessionKey,
|
||||
contextKey: "mode:reasoning",
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export function formatElevatedUnavailableText(params: {
|
||||
runtimeSandboxed: boolean;
|
||||
failures?: Array<{ gate: string; key: string }>;
|
||||
|
||||
Reference in New Issue
Block a user