orchestrator: recover from context overflow on fallback
This commit is contained in:
+22
-16
@@ -79,25 +79,31 @@ export function createMessageRouter(deps: {
|
||||
const baseSid = agentConfigName
|
||||
? `${channel}:${senderId}:${agentConfigName}`
|
||||
: `${channel}:${senderId}`;
|
||||
const sessionId = tierFromMetadata ? `${baseSid}:${tierFromMetadata}` : baseSid;
|
||||
const session = deps.sessionManager.getSession(channel, senderId);
|
||||
|
||||
// Read per-session model tier override (persisted in SQLite)
|
||||
const sessionTierOverride = session.getConfig('modelTier') as ModelTier | undefined;
|
||||
|
||||
// Resolution chain: metadata (cron) → session override → agent config → global default
|
||||
const effectiveTier = tierFromMetadata
|
||||
?? sessionTierOverride
|
||||
?? agentConfig?.modelTier
|
||||
?? deps.config.agents.primary_tier
|
||||
?? 'default';
|
||||
|
||||
// Cache agents by tier too so switching tiers updates context-window heuristics.
|
||||
const sessionId = `${baseSid}:${effectiveTier}`;
|
||||
|
||||
let entry = agents.get(sessionId);
|
||||
if (!entry) {
|
||||
const session = deps.sessionManager.getSession(channel, senderId);
|
||||
|
||||
// Read per-session model tier override (persisted in SQLite)
|
||||
const sessionTierOverride = session.getConfig('modelTier') as ModelTier | undefined;
|
||||
|
||||
// Resolution chain: metadata (cron) → session override → agent config → global default
|
||||
const effectiveTier = tierFromMetadata
|
||||
?? sessionTierOverride
|
||||
?? agentConfig?.modelTier
|
||||
?? deps.config.agents.primary_tier
|
||||
?? 'default';
|
||||
|
||||
// Use agent config overrides where available, falling back to global config
|
||||
const effectiveSystemPrompt = agentConfig?.systemPrompt ?? deps.systemPrompt;
|
||||
const effectiveProvider = deps.config.models.default.provider;
|
||||
|
||||
const modelsConfig = deps.config.models as Record<string, { provider?: string; model?: string; context_window?: number } | undefined>;
|
||||
const tierConfig = modelsConfig[effectiveTier] ?? deps.config.models.default;
|
||||
const effectiveProvider = tierConfig?.provider ?? deps.config.models.default.provider;
|
||||
const effectiveModelName = tierConfig?.model ?? deps.config.models.default.model;
|
||||
const effectiveContextWindow = tierConfig?.context_window ?? deps.config.models.default.context_window;
|
||||
|
||||
const delegationConfig: DelegationConfig = {
|
||||
compaction: deps.config.agents.delegation.compaction ?? 'fast',
|
||||
@@ -181,8 +187,8 @@ export function createMessageRouter(deps: {
|
||||
summaryMaxTokens: deps.config.compaction.summary_max_tokens,
|
||||
importanceThreshold: deps.config.compaction.importance_threshold,
|
||||
} : undefined,
|
||||
modelName: deps.config.models.default.model,
|
||||
contextWindow: deps.config.models.default.context_window,
|
||||
modelName: effectiveModelName,
|
||||
contextWindow: effectiveContextWindow,
|
||||
memoryStore: deps.memoryStore,
|
||||
memoryInjectionStrategy: deps.config.memory?.injection_strategy,
|
||||
memoryMaxInjectionTokens: deps.config.memory?.max_injection_tokens,
|
||||
|
||||
Reference in New Issue
Block a user