fix(doctor): ignore unknown profile preview grants

This commit is contained in:
Vincent Koc
2026-06-23 01:56:18 +08:00
parent 96c6f8022c
commit 420a0e6fce
2 changed files with 46 additions and 0 deletions

View File

@@ -1006,6 +1006,43 @@ describe("doctor preview warnings", () => {
expect(warnings).toStrictEqual([]);
});
it("does not warn for configured tool sections when the profile id is unknown", () => {
const malformedConfig = {
tools: {
profile: "custom-profile",
exec: {
security: "allowlist",
},
byProvider: {
openai: {
profile: "custom-provider-profile",
},
},
},
agents: {
list: [
{
id: "sage",
tools: {
exec: {
security: "allowlist",
},
byProvider: {
openai: {
profile: "custom-agent-provider-profile",
},
},
},
},
],
},
} as unknown as Parameters<typeof collectProfileConfiguredToolSectionWarnings>[0];
const warnings = collectProfileConfiguredToolSectionWarnings(malformedConfig);
expect(warnings).toStrictEqual([]);
});
it("does not warn when default group visible replies are automatic", () => {
const warnings = collectVisibleReplyToolPolicyWarnings({
channels: {

View File

@@ -403,6 +403,9 @@ function collectProfileConfiguredToolSectionScopeWarnings(params: {
? tools.alsoAllow.filter((entry): entry is string => typeof entry === "string")
: params.inheritedAlsoAllow;
const profilePolicy = mergeAlsoAllowPolicy(resolveToolProfilePolicy(profile), alsoAllow);
if (!profilePolicy) {
return [];
}
const uncoveredEntries = collectUncoveredConfiguredToolSectionGrantEntries(
configuredEntries,
profilePolicy,
@@ -454,6 +457,9 @@ function collectByProviderConfiguredToolSectionWarnings(params: {
const alsoAllow =
readPreviewStringList(policy.alsoAllow) ?? readPreviewStringList(inheritedPolicy?.alsoAllow);
const profilePolicy = mergeAlsoAllowPolicy(resolveToolProfilePolicy(profile), alsoAllow);
if (!profilePolicy) {
return [];
}
const uncoveredEntries = collectUncoveredConfiguredToolSectionGrantEntries(
params.configuredEntries,
profilePolicy,
@@ -560,6 +566,9 @@ function collectInheritedByProviderConfiguredToolSectionWarnings(params: {
readPreviewStringList(overridingPolicy?.alsoAllow) ??
readPreviewStringList(inheritedPolicy.alsoAllow);
const profilePolicy = mergeAlsoAllowPolicy(resolveToolProfilePolicy(profile), alsoAllow);
if (!profilePolicy) {
return [];
}
const uncoveredEntries = collectUncoveredConfiguredToolSectionGrantEntries(
params.configuredEntries,
profilePolicy,