mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-02 15:21:34 +00:00
* refactor(agents): share one tool-surface resolver across runner and harness The code-mode vs tool-search gate decision and the three-way catalog application were duplicated across the embedded runner and the native harness bridge, and had already drifted: the harness copy was missing the skillWorkshopProposalOnly condition and its params object had no field to express it. Both surfaces now consume resolveAgentToolSurfacePlan and applyAgentToolSurfaceCatalog, so the gates and the catalog branch exist once. Both gate booleans derive from a single shared toolsAvailable intermediate. Behavior change: the harness path now honors skillWorkshopProposalOnly. Proposal-only skill-workshop runs are deliberately narrow single-tool runs, so code-mode indirection and tool-search catalogs are pure overhead — a harness-independent reason. Both callers currently pin agentHarnessRuntimeOverride "openclaw", so this closes a latent fail-open rather than fixing a live bug. * fix(agents): let the shared catalog params carry a config-less run resolveAgentToolSearchRuntimeConfig returns OpenClawConfig | undefined, so requiring a non-null toolSearchRuntimeConfig broke tsgo:core at both call sites. Keep the key required so it cannot be silently omitted, but let the value be undefined as the pre-refactor code already allowed. * fix(agents): keep the tool-surface module free of dead exports Importing isCodeModeEngagedForModel and applyToolSchemaDirectoryCatalog from their defining modules left the code-mode.ts and tool-search.ts re-exports with no production consumer, which knip rejects. Go back through the barrels, which is also what both call sites did before this refactor. The two params types were exported only for the test, so knip's production scan saw them as dead. Keep them module-local and derive the type in the test.