





















@@ -19,7 +19,9 @@ describe("tool allowlist guard", () => {
19192020it("fails closed for runtime toolsAllow when tools are disabled", () => {
2121const error = buildEmptyExplicitToolAllowlistError({
22-sources: [{ label: "runtime toolsAllow", entries: ["query_db"] }],
22+sources: [
23+{ label: "runtime toolsAllow", entries: ["query_db"], enforceWhenToolsDisabled: true },
24+],
2325callableToolNames: [],
2426toolsEnabled: true,
2527disableTools: true,
@@ -29,6 +31,17 @@ describe("tool allowlist guard", () => {
2931expect(error?.message).toContain("tools are disabled for this run");
3032});
313334+it("allows inherited config allowlists when a run intentionally disables tools", () => {
35+expect(
36+buildEmptyExplicitToolAllowlistError({
37+sources: [{ label: "tools.allow", entries: ["lobster", "llm-task"] }],
38+callableToolNames: [],
39+toolsEnabled: true,
40+disableTools: true,
41+}),
42+).toBeNull();
43+});
44+3245it("fails closed when the selected model cannot use requested tools", () => {
3346const error = buildEmptyExplicitToolAllowlistError({
3447sources: [{ label: "agents.db.tools.allow", entries: ["query_db"] }],
@@ -63,13 +76,21 @@ describe("tool allowlist guard", () => {
6376it("keeps source labels for config and runtime allowlists", () => {
6477const sources = collectExplicitToolAllowlistSources([
6578{ label: "tools.allow", allow: [" read ", ""] },
66-{ label: "runtime toolsAllow", allow: ["query_db"] },
79+{
80+label: "runtime toolsAllow",
81+allow: ["query_db"],
82+enforceWhenToolsDisabled: true,
83+},
6784{ label: "tools.byProvider.allow" },
6885]);
69867087expect(sources).toEqual([
7188{ label: "tools.allow", entries: ["read"] },
72-{ label: "runtime toolsAllow", entries: ["query_db"] },
89+{
90+label: "runtime toolsAllow",
91+entries: ["query_db"],
92+enforceWhenToolsDisabled: true,
93+},
7394]);
7495});
7596});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。