mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-21 01:51:39 -06:00
82871fe21b
* fix(doctor): merge colliding model-ref map keys instead of dropping When two retired model-ref keys in a models map upgrade to the same current ref, rewriteModelRefMapKeys dropped the second entry silently and still logged a success line, so doctor --fix lost one entry's params/streaming/alias/agentRuntime tuning while falsely reporting it as upgraded. Mirror the sibling provider-models-array merge path (#90047): deep-merge the colliding entries preserving disjoint fields, keep the existing value deterministically on a true field conflict, and push a merge or collision change-log line instead of dropping. * fix(doctor): block prototype keys when merging colliding model-ref map entries mergeModelRefMapEntries copied arbitrary incoming config fields into a plain object, so a colliding model entry carrying a __proto__ field could mutate the merged entry prototype during legacy config migration. Skip isBlockedObjectKey fields before assigning or recursing, matching the shared config merge guard. Disjoint-field merging is unchanged. * fix(doctor): preserve canonical model migration values * fix(doctor): filter blocked keys on both merge sides and report retired source key * fix(doctor): preserve colliding retired model settings --------- Co-authored-by: Vincent Koc <vincentkoc@ieee.org> Co-authored-by: Peter Steinberger <steipete@golden-gate.local>