fix(doctor): ignore unknown profile preview grants · openclaw/openclaw@420a0e6
vincentkoc
·
2026-06-23
·
via Recent Commits to openclaw:main
File tree
src/commands/doctor/shared
| Original file line number | Diff line number | Diff line change |
|---|
@@ -1006,6 +1006,43 @@ describe("doctor preview warnings", () => {
|
1006 | 1006 | expect(warnings).toStrictEqual([]); |
1007 | 1007 | }); |
1008 | 1008 | |
| 1009 | +it("does not warn for configured tool sections when the profile id is unknown", () => { |
| 1010 | +const malformedConfig = { |
| 1011 | +tools: { |
| 1012 | +profile: "custom-profile", |
| 1013 | +exec: { |
| 1014 | +security: "allowlist", |
| 1015 | +}, |
| 1016 | +byProvider: { |
| 1017 | +openai: { |
| 1018 | +profile: "custom-provider-profile", |
| 1019 | +}, |
| 1020 | +}, |
| 1021 | +}, |
| 1022 | +agents: { |
| 1023 | +list: [ |
| 1024 | +{ |
| 1025 | +id: "sage", |
| 1026 | +tools: { |
| 1027 | +exec: { |
| 1028 | +security: "allowlist", |
| 1029 | +}, |
| 1030 | +byProvider: { |
| 1031 | +openai: { |
| 1032 | +profile: "custom-agent-provider-profile", |
| 1033 | +}, |
| 1034 | +}, |
| 1035 | +}, |
| 1036 | +}, |
| 1037 | +], |
| 1038 | +}, |
| 1039 | +} as unknown as Parameters<typeof collectProfileConfiguredToolSectionWarnings>[0]; |
| 1040 | + |
| 1041 | +const warnings = collectProfileConfiguredToolSectionWarnings(malformedConfig); |
| 1042 | + |
| 1043 | +expect(warnings).toStrictEqual([]); |
| 1044 | +}); |
| 1045 | + |
1009 | 1046 | it("does not warn when default group visible replies are automatic", () => { |
1010 | 1047 | const warnings = collectVisibleReplyToolPolicyWarnings({ |
1011 | 1048 | channels: { |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -403,6 +403,9 @@ function collectProfileConfiguredToolSectionScopeWarnings(params: {
|
403 | 403 | ? tools.alsoAllow.filter((entry): entry is string => typeof entry === "string") |
404 | 404 | : params.inheritedAlsoAllow; |
405 | 405 | const profilePolicy = mergeAlsoAllowPolicy(resolveToolProfilePolicy(profile), alsoAllow); |
| 406 | +if (!profilePolicy) { |
| 407 | +return []; |
| 408 | +} |
406 | 409 | const uncoveredEntries = collectUncoveredConfiguredToolSectionGrantEntries( |
407 | 410 | configuredEntries, |
408 | 411 | profilePolicy, |
@@ -454,6 +457,9 @@ function collectByProviderConfiguredToolSectionWarnings(params: {
|
454 | 457 | const alsoAllow = |
455 | 458 | readPreviewStringList(policy.alsoAllow) ?? readPreviewStringList(inheritedPolicy?.alsoAllow); |
456 | 459 | const profilePolicy = mergeAlsoAllowPolicy(resolveToolProfilePolicy(profile), alsoAllow); |
| 460 | +if (!profilePolicy) { |
| 461 | +return []; |
| 462 | +} |
457 | 463 | const uncoveredEntries = collectUncoveredConfiguredToolSectionGrantEntries( |
458 | 464 | params.configuredEntries, |
459 | 465 | profilePolicy, |
@@ -560,6 +566,9 @@ function collectInheritedByProviderConfiguredToolSectionWarnings(params: {
|
560 | 566 | readPreviewStringList(overridingPolicy?.alsoAllow) ?? |
561 | 567 | readPreviewStringList(inheritedPolicy.alsoAllow); |
562 | 568 | const profilePolicy = mergeAlsoAllowPolicy(resolveToolProfilePolicy(profile), alsoAllow); |
| 569 | +if (!profilePolicy) { |
| 570 | +return []; |
| 571 | +} |
563 | 572 | const uncoveredEntries = collectUncoveredConfiguredToolSectionGrantEntries( |
564 | 573 | params.configuredEntries, |
565 | 574 | profilePolicy, |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。