From 6b22e5c2d4575fafcd765804717fe410549954dd Mon Sep 17 00:00:00 2001 From: Jari Mustonen Date: Wed, 15 Apr 2026 09:47:13 +0300 Subject: [PATCH] context-engine: propagate factory context through subagent-registry --- src/agents/subagent-registry.ts | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/agents/subagent-registry.ts b/src/agents/subagent-registry.ts index d1fe9ae5bbd..4117644b97b 100644 --- a/src/agents/subagent-registry.ts +++ b/src/agents/subagent-registry.ts @@ -7,6 +7,7 @@ import { type SessionEntry, } from "../config/sessions.js"; import type { OpenClawConfig } from "../config/types.openclaw.js"; +import type { ResolveContextEngineOptions } from "../context-engine/registry.js"; import type { ContextEngine, SubagentEndReason } from "../context-engine/types.js"; import { callGateway } from "../gateway/call.js"; import { getAgentRunContext, onAgentEvent } from "../infra/agent-events.js"; @@ -97,7 +98,10 @@ type SubagentRegistryDeps = { runSubagentAnnounceFlow: SubagentAnnounceModule["runSubagentAnnounceFlow"]; ensureContextEnginesInitialized?: () => void; ensureRuntimePluginsLoaded?: typeof ensureRuntimePluginsLoadedFn; - resolveContextEngine?: (cfg: OpenClawConfig) => Promise; + resolveContextEngine?: ( + cfg: OpenClawConfig, + options?: ResolveContextEngineOptions, + ) => Promise; }; let subagentAnnouncePromise: Promise | null = null; @@ -140,7 +144,10 @@ type ContextEngineInitModule = Pick< >; type ContextEngineRegistryModule = Pick< { - resolveContextEngine: (cfg: OpenClawConfig) => Promise; + resolveContextEngine: ( + cfg: OpenClawConfig, + options?: ResolveContextEngineOptions, + ) => Promise; }, "resolveContextEngine" >; @@ -308,7 +315,10 @@ async function ensureSubagentRegistryPluginRuntimeLoaded(params: { (await loadRuntimePluginsModule()).ensureRuntimePluginsLoaded(params); } -async function resolveSubagentRegistryContextEngine(cfg: OpenClawConfig) { +async function resolveSubagentRegistryContextEngine( + cfg: OpenClawConfig, + options?: ResolveContextEngineOptions, +) { const initModule = await loadContextEngineInitModule(); const registryModule = await loadContextEngineRegistryModule(); const ensureContextEnginesInitialized = @@ -317,7 +327,7 @@ async function resolveSubagentRegistryContextEngine(cfg: OpenClawConfig) { const resolveContextEngine = subagentRegistryDeps.resolveContextEngine ?? registryModule.resolveContextEngine; ensureContextEnginesInitialized(); - return await resolveContextEngine(cfg); + return await resolveContextEngine(cfg, options); } function persistSubagentRuns() { @@ -478,7 +488,9 @@ async function notifyContextEngineSubagentEnded(params: { workspaceDir: params.workspaceDir, allowGatewaySubagentBinding: true, }); - const engine = await resolveSubagentRegistryContextEngine(cfg); + const engine = await resolveSubagentRegistryContextEngine(cfg, { + workspaceDir: params.workspaceDir, + }); if (!engine.onSubagentEnded) { return; }