File size: 2,063 Bytes
4c76b0d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | /**
* Resolves subagent thinking-level inheritance and overrides. Spawning uses
* this helper to patch the child session without leaking invalid caller input.
*/
import { asOptionalObjectRecord } from "@openclaw/normalization-core/record-coerce";
import { normalizeOptionalString } from "@openclaw/normalization-core/string-coerce";
import { normalizeThinkLevel } from "../../../auto-reply/thinking.shared.js";
import type { OpenClawConfig } from "../../../config/types.openclaw.js";
export function resolveSubagentThinkingOverride(params: {
cfg: OpenClawConfig;
requesterAgentConfig?: unknown;
targetAgentConfig?: unknown;
thinkingOverrideRaw?: string;
callerThinkingRaw?: string;
}) {
const requesterSubagents = asOptionalObjectRecord(
asOptionalObjectRecord(params.requesterAgentConfig)?.subagents,
);
const targetSubagents = asOptionalObjectRecord(
asOptionalObjectRecord(params.targetAgentConfig)?.subagents,
);
const defaultSubagents = asOptionalObjectRecord(params.cfg.agents?.defaults?.subagents);
const resolvedThinkingDefaultRaw =
normalizeOptionalString(requesterSubagents?.thinking) ??
normalizeOptionalString(targetSubagents?.thinking) ??
normalizeOptionalString(defaultSubagents?.thinking);
const overrideCandidateRaw = params.thinkingOverrideRaw || resolvedThinkingDefaultRaw;
if (overrideCandidateRaw) {
const normalizedThinking = normalizeThinkLevel(overrideCandidateRaw);
if (!normalizedThinking) {
return {
status: "error" as const,
thinkingCandidateRaw: overrideCandidateRaw,
};
}
return {
status: "ok" as const,
thinkingOverride: normalizedThinking,
initialSessionPatch: {
thinkingLevel: normalizedThinking,
},
};
}
const normalizedThinking = params.callerThinkingRaw
? normalizeThinkLevel(params.callerThinkingRaw)
: undefined;
return {
status: "ok" as const,
thinkingOverride: undefined,
initialSessionPatch: normalizedThinking ? { thinkingLevel: normalizedThinking } : {},
};
}
|