Commit 2ca5b9c
fix(config): copy all ServerConfig fields in CopyServerConfig
CopyServerConfig was hand-copying a subset of ServerConfig fields and had
drifted as new fields were added — it silently omitted EnabledTools,
DisabledTools, ReconnectOnUse, HealthCheckInterval, ToolDiscoveryInterval,
SourceRegistryID, SourceRegistryProvenance, and AuthBroker.
Because MergeServerConfig starts from CopyServerConfig(base), any config
merge/patch (e.g. upstream_servers patch, the Web UI server-config edit)
round-trips the server through CopyServerConfig and drops these fields. The
user-visible symptom: editing an unrelated field on a server that has a
disabled_tools / enabled_tools allowlist, a reconnect-on-use flag, or
per-server health/discovery cadence overrides silently wipes those settings.
Copy the missing fields: scalars and slices directly (deep-copying the
allowlist slices like Args), the *Duration overrides by value (matching the
AutoApproveToolChanges pattern), and the AuthBroker block by value (a no-op
empty stub in the personal edition).
Tests: TestCopyServerConfig_PreservesAllowlistAndOverrides asserts each field
is copied and that slices/pointers are independent of the source;
TestMergeServerConfig_PreservesDisabledToolsOnUnrelatedPatch is the
end-to-end regression for the patch path.
Note: the same record<->config field mapping is hand-duplicated in the
storage layer (SaveUpstreamServer / GetUpstreamServer / ListUpstreamServers /
ListQuarantinedUpstreamServers); ListQuarantinedUpstreamServers has drifted
similarly. A follow-up could collapse all of these onto a single helper to
prevent the next field from drifting again.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent d578440 commit 2ca5b9c
2 files changed
Lines changed: 112 additions & 12 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
528 | 528 | | |
529 | 529 | | |
530 | 530 | | |
531 | | - | |
532 | | - | |
533 | | - | |
534 | | - | |
535 | | - | |
536 | | - | |
537 | | - | |
538 | | - | |
539 | | - | |
540 | | - | |
541 | | - | |
542 | | - | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
543 | 546 | | |
544 | 547 | | |
545 | 548 | | |
546 | 549 | | |
547 | 550 | | |
548 | 551 | | |
549 | 552 | | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
550 | 561 | | |
551 | 562 | | |
552 | 563 | | |
| |||
568 | 579 | | |
569 | 580 | | |
570 | 581 | | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
571 | 600 | | |
572 | 601 | | |
573 | 602 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
997 | 997 | | |
998 | 998 | | |
999 | 999 | | |
| 1000 | + | |
| 1001 | + | |
| 1002 | + | |
| 1003 | + | |
| 1004 | + | |
| 1005 | + | |
| 1006 | + | |
| 1007 | + | |
| 1008 | + | |
| 1009 | + | |
| 1010 | + | |
| 1011 | + | |
| 1012 | + | |
| 1013 | + | |
| 1014 | + | |
| 1015 | + | |
| 1016 | + | |
| 1017 | + | |
| 1018 | + | |
| 1019 | + | |
| 1020 | + | |
| 1021 | + | |
| 1022 | + | |
| 1023 | + | |
| 1024 | + | |
| 1025 | + | |
| 1026 | + | |
| 1027 | + | |
| 1028 | + | |
| 1029 | + | |
| 1030 | + | |
| 1031 | + | |
| 1032 | + | |
| 1033 | + | |
| 1034 | + | |
| 1035 | + | |
| 1036 | + | |
| 1037 | + | |
| 1038 | + | |
| 1039 | + | |
| 1040 | + | |
| 1041 | + | |
| 1042 | + | |
| 1043 | + | |
| 1044 | + | |
| 1045 | + | |
| 1046 | + | |
| 1047 | + | |
| 1048 | + | |
| 1049 | + | |
| 1050 | + | |
| 1051 | + | |
| 1052 | + | |
| 1053 | + | |
| 1054 | + | |
| 1055 | + | |
| 1056 | + | |
| 1057 | + | |
| 1058 | + | |
| 1059 | + | |
| 1060 | + | |
| 1061 | + | |
| 1062 | + | |
| 1063 | + | |
| 1064 | + | |
| 1065 | + | |
| 1066 | + | |
| 1067 | + | |
| 1068 | + | |
| 1069 | + | |
| 1070 | + | |
0 commit comments