You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Config/BlueBubbles: remove the duplicate core-owned BlueBubbles config schema while preserving plugin-owned `dmPolicy` allowFrom validation for channel and account configs. Fixes #69238. Thanks @omarshahine.
150
151
- Tavily: resolve dedicated `tavily_search` and `tavily_extract` tool credentials from the active runtime config snapshot, so `exec` SecretRef-backed API keys do not reach the tools unresolved. (#78610) Thanks @VACInc.
151
152
- Gateway/sessions: clear cached skills snapshots during `/new` and `sessions.reset` so long-lived channel sessions rebuild the visible skill list after skills change. (#78873) Thanks @Evizero.
'channels.bluebubbles.accounts.*.dmPolicy="open" requires channels.bluebubbles.accounts.*.allowFrom (or channels.bluebubbles.allowFrom) to include "*"',
168
+
});
169
+
requireAllowlistAllowFrom({
170
+
policy: effectivePolicy,
171
+
allowFrom: effectiveAllowFrom,
172
+
ctx,
173
+
path: ["accounts",accountId,"allowFrom"],
174
+
message:
175
+
'channels.bluebubbles.accounts.*.dmPolicy="allowlist" requires channels.bluebubbles.accounts.*.allowFrom (or channels.bluebubbles.allowFrom) to contain at least one sender ID',
'channels.bluebubbles.accounts.*.dmPolicy="allowlist" requires channels.bluebubbles.accounts.*.allowFrom (or channels.bluebubbles.allowFrom) to contain at least one sender ID',
605
+
);
606
+
});
607
+
608
+
it("accepts account allowlist when channel allowFrom is inherited",()=>{
609
+
constparsed=BlueBubblesConfigSchema.safeParse({
610
+
allowFrom: ["user@example.com"],
611
+
accounts: {
612
+
work: {
613
+
dmPolicy: "allowlist",
614
+
},
615
+
},
616
+
});
617
+
expect(parsed.success).toBe(true);
618
+
});
619
+
620
+
it("rejects account open policy when effective allowFrom has no wildcard",()=>{
'channels.bluebubbles.accounts.*.dmPolicy="open" requires channels.bluebubbles.accounts.*.allowFrom (or channels.bluebubbles.allowFrom) to include "*"',
636
+
);
637
+
});
638
+
639
+
it("accepts account open policy when channel allowFrom wildcard is inherited",()=>{
'channels.bluebubbles.accounts.*.dmPolicy="open" requires channels.bluebubbles.accounts.*.allowFrom (or channels.bluebubbles.allowFrom) to include "*"',
1573
-
});
1574
-
requireAllowlistAllowFrom({
1575
-
policy: effectivePolicy,
1576
-
allowFrom: effectiveAllowFrom,
1577
-
ctx,
1578
-
path: ["accounts",accountId,"allowFrom"],
1579
-
message:
1580
-
'channels.bluebubbles.accounts.*.dmPolicy="allowlist" requires channels.bluebubbles.accounts.*.allowFrom (or channels.bluebubbles.allowFrom) to contain at least one sender ID',
0 commit comments