mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-07 04:51:36 +00:00
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 { maybeHandleQueueDirective } from "./directive-handling.queue-validation.js";
|
||||||
import {
|
import {
|
||||||
formatDirectiveAck,
|
formatDirectiveAck,
|
||||||
formatElevatedEvent,
|
|
||||||
formatElevatedRuntimeHint,
|
formatElevatedRuntimeHint,
|
||||||
formatElevatedUnavailableText,
|
formatElevatedUnavailableText,
|
||||||
formatReasoningEvent,
|
enqueueModeSwitchEvents,
|
||||||
withOptions,
|
withOptions,
|
||||||
} from "./directive-handling.shared.js";
|
} from "./directive-handling.shared.js";
|
||||||
|
|
||||||
@@ -363,20 +362,13 @@ export async function handleDirectiveOnly(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (elevatedChanged) {
|
enqueueModeSwitchEvents({
|
||||||
const nextElevated = (sessionEntry.elevatedLevel ?? "off") as ElevatedLevel;
|
enqueueSystemEvent,
|
||||||
enqueueSystemEvent(formatElevatedEvent(nextElevated), {
|
sessionEntry,
|
||||||
sessionKey,
|
sessionKey,
|
||||||
contextKey: "mode:elevated",
|
elevatedChanged,
|
||||||
});
|
reasoningChanged,
|
||||||
}
|
});
|
||||||
if (reasoningChanged) {
|
|
||||||
const nextReasoning = (sessionEntry.reasoningLevel ?? "off") as ReasoningLevel;
|
|
||||||
enqueueSystemEvent(formatReasoningEvent(nextReasoning), {
|
|
||||||
sessionKey,
|
|
||||||
contextKey: "mode:reasoning",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const parts: string[] = [];
|
const parts: string[] = [];
|
||||||
if (directives.hasThinkDirective && directives.thinkLevel) {
|
if (directives.hasThinkDirective && directives.thinkLevel) {
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import { enqueueSystemEvent } from "../../infra/system-events.js";
|
|||||||
import { applyVerboseOverride } from "../../sessions/level-overrides.js";
|
import { applyVerboseOverride } from "../../sessions/level-overrides.js";
|
||||||
import { applyModelOverrideToSessionEntry } from "../../sessions/model-overrides.js";
|
import { applyModelOverrideToSessionEntry } from "../../sessions/model-overrides.js";
|
||||||
import { resolveProfileOverride } from "./directive-handling.auth.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: {
|
export async function persistInlineDirectives(params: {
|
||||||
directives: InlineDirectives;
|
directives: InlineDirectives;
|
||||||
@@ -199,20 +199,13 @@ export async function persistInlineDirectives(params: {
|
|||||||
store[sessionKey] = sessionEntry;
|
store[sessionKey] = sessionEntry;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (elevatedChanged) {
|
enqueueModeSwitchEvents({
|
||||||
const nextElevated = (sessionEntry.elevatedLevel ?? "off") as ElevatedLevel;
|
enqueueSystemEvent,
|
||||||
enqueueSystemEvent(formatElevatedEvent(nextElevated), {
|
sessionEntry,
|
||||||
sessionKey,
|
sessionKey,
|
||||||
contextKey: "mode:elevated",
|
elevatedChanged,
|
||||||
});
|
reasoningChanged,
|
||||||
}
|
});
|
||||||
if (reasoningChanged) {
|
|
||||||
const nextReasoning = (sessionEntry.reasoningLevel ?? "off") as ReasoningLevel;
|
|
||||||
enqueueSystemEvent(formatReasoningEvent(nextReasoning), {
|
|
||||||
sessionKey,
|
|
||||||
contextKey: "mode:reasoning",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,29 @@ export const formatReasoningEvent = (level: ReasoningLevel) => {
|
|||||||
return "Reasoning OFF — hide <think>.";
|
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: {
|
export function formatElevatedUnavailableText(params: {
|
||||||
runtimeSandboxed: boolean;
|
runtimeSandboxed: boolean;
|
||||||
failures?: Array<{ gate: string; key: string }>;
|
failures?: Array<{ gate: string; key: string }>;
|
||||||
|
|||||||
Reference in New Issue
Block a user