Default MCP tab tools to the active tab
Requiring an explicit tab_id forced every navigate or close through a preceding tabs_list call, which costs an MCP client a full round trip just to learn the ID the browser already considers current. navigate and tabs_close now resolve the active tab when tab_id is omitted, matching the screenshot tool. Resolution is explicit rather than forwarding None into the SDK, so the acting tool knows which tab it touched; tabs_close reports it, since closing the wrong tab is not recoverable. This stays in the MCP layer: the SDK and CLI signatures are unchanged.
This commit is contained in:
@@ -181,6 +181,23 @@ def test_rate_limiter_is_per_key():
|
||||
assert limiter.allow("a") is False
|
||||
assert limiter.allow("b") is False
|
||||
|
||||
def test_rate_limiter_caps_identity_buckets():
|
||||
limiter = RateLimiter(rate=0.0001, burst=1, max_buckets=3)
|
||||
for i in range(10):
|
||||
assert limiter.allow(f"key-{i}") is True
|
||||
assert len(limiter._buckets) <= 3
|
||||
|
||||
def test_rate_limiter_prunes_refilled_idle_buckets(monkeypatch):
|
||||
current = 1000.0
|
||||
monkeypatch.setattr("browser_cli.serve.security.time.monotonic", lambda: current)
|
||||
limiter = RateLimiter(rate=1, burst=2, max_buckets=2)
|
||||
assert limiter.allow("old") is True
|
||||
current += 120.0
|
||||
assert limiter.allow("a") is True
|
||||
assert limiter.allow("b") is True
|
||||
assert "old" not in limiter._buckets
|
||||
assert len(limiter._buckets) <= 2
|
||||
|
||||
# ── ServeSecurity ────────────────────────────────────────────────────────────────
|
||||
|
||||
def test_effective_policy_prefers_per_key_override():
|
||||
|
||||
Reference in New Issue
Block a user