@miller-tech/uap 1.120.0 → 1.122.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/bin/cli.js +1 -0
  3. package/dist/bin/cli.js.map +1 -1
  4. package/dist/cli/guided-setup.d.ts +5 -0
  5. package/dist/cli/guided-setup.d.ts.map +1 -1
  6. package/dist/cli/guided-setup.js +55 -4
  7. package/dist/cli/guided-setup.js.map +1 -1
  8. package/dist/cli/setup.d.ts +1 -0
  9. package/dist/cli/setup.d.ts.map +1 -1
  10. package/dist/cli/setup.js +14 -0
  11. package/dist/cli/setup.js.map +1 -1
  12. package/dist/cli/wizard-config.d.ts +22 -0
  13. package/dist/cli/wizard-config.d.ts.map +1 -1
  14. package/dist/cli/wizard-config.js +58 -0
  15. package/dist/cli/wizard-config.js.map +1 -1
  16. package/dist/dashboard/data-service.d.ts.map +1 -1
  17. package/dist/dashboard/data-service.js +73 -11
  18. package/dist/dashboard/data-service.js.map +1 -1
  19. package/dist/dashboard/event-stream.d.ts.map +1 -1
  20. package/dist/dashboard/event-stream.js +10 -0
  21. package/dist/dashboard/event-stream.js.map +1 -1
  22. package/dist/dashboard/savings.d.ts.map +1 -1
  23. package/dist/dashboard/savings.js +13 -7
  24. package/dist/dashboard/savings.js.map +1 -1
  25. package/dist/dashboard/server.d.ts.map +1 -1
  26. package/dist/dashboard/server.js +42 -17
  27. package/dist/dashboard/server.js.map +1 -1
  28. package/dist/mcp-router/tools/execute.d.ts.map +1 -1
  29. package/dist/mcp-router/tools/execute.js +11 -2
  30. package/dist/mcp-router/tools/execute.js.map +1 -1
  31. package/dist/utils/telemetry-store.d.ts +28 -0
  32. package/dist/utils/telemetry-store.d.ts.map +1 -1
  33. package/dist/utils/telemetry-store.js +100 -1
  34. package/dist/utils/telemetry-store.js.map +1 -1
  35. package/package.json +1 -1
  36. package/src/policies/enforcers/__pycache__/_common.cpython-312.pyc +0 -0
  37. package/tools/agents/scripts/__pycache__/toolcall_path_normalizer.cpython-312.pyc +0 -0
  38. package/tools/agents/scripts/anthropic_proxy.py +14 -4
  39. package/web/dashboard.html +6 -1
@@ -923,6 +923,11 @@ PROJECT_ROOT = Path(__file__).resolve().parents[3]
923
923
  PROFILE_DIR = PROJECT_ROOT / "config" / "model-profiles"
924
924
  PROFILE_CACHE: dict[str, dict | None] = {}
925
925
  PROFILE_WARNED: set[str] = set()
926
+ # Sandbox browser-tool stripping fires on EVERY request of a sandboxed session
927
+ # (v1.119.4). Logging it at WARNING per request floods the journal (~140/2h for a
928
+ # handful of sessions). Track which clients we've already told, log once each at
929
+ # INFO. Bounded to avoid unbounded growth across long-lived proxies.
930
+ _SANDBOX_STRIP_LOGGED: set[str] = set()
926
931
 
927
932
  _client_request_times: dict[str, deque[float]] = defaultdict(deque)
928
933
  _client_rate_last_log: dict[str, float] = defaultdict(float)
@@ -9334,11 +9339,16 @@ async def messages(request: Request):
9334
9339
  sandboxed = (request.headers.get("x-uap-sandbox") or "").strip() == "1"
9335
9340
  if sandboxed:
9336
9341
  _stripped = _strip_sandbox_unreachable_tools(body)
9337
- if _stripped:
9338
- logger.warning(
9339
- "SANDBOX: stripped %d unreachable browser MCP tool(s) "
9340
- "(bwrap cannot reach the claude-in-chrome extension)",
9342
+ if _stripped and client_id not in _SANDBOX_STRIP_LOGGED:
9343
+ if len(_SANDBOX_STRIP_LOGGED) > 512:
9344
+ _SANDBOX_STRIP_LOGGED.clear()
9345
+ _SANDBOX_STRIP_LOGGED.add(client_id)
9346
+ logger.info(
9347
+ "SANDBOX: stripping %d unreachable browser MCP tool(s) for %s "
9348
+ "(bwrap cannot reach the claude-in-chrome extension; logged once "
9349
+ "per session)",
9341
9350
  _stripped,
9351
+ client_id,
9342
9352
  )
9343
9353
 
9344
9354
  # Periodically re-detect context window from upstream (handles server restarts)
@@ -680,6 +680,9 @@
680
680
  eventSource.onmessage = (e) => {
681
681
  try {
682
682
  const ev = JSON.parse(e.data);
683
+ // Dedup by id: the connect-burst and the cross-process poller can
684
+ // briefly overlap. Ignore events we already hold.
685
+ if (ev.id != null && liveEvents.some((x) => x.id === ev.id)) return;
683
686
  liveEvents.unshift(ev);
684
687
  if (liveEvents.length > 20) liveEvents.pop();
685
688
  renderLiveEvents();
@@ -705,7 +708,9 @@
705
708
  for (const ev of liveEvents) {
706
709
  const cat = ev.category || ev.type || 'system';
707
710
  const ts = ev.timestamp ? new Date(ev.timestamp).toLocaleTimeString() : '';
708
- const msg = ev.message || ev.detail || JSON.stringify(ev.data || '').slice(0, 80);
711
+ const title = ev.title || ev.message || '';
712
+ const detail = ev.detail || '';
713
+ const msg = (title && detail) ? `${title} — ${detail}` : (title || detail || JSON.stringify(ev.data || '').slice(0, 80));
709
714
  html += `<div class="event-row"><span class="event-time">${esc(ts)}</span><span class="event-cat cat-${esc(cat)}">${esc(cat)}</span><span class="event-msg">${esc(msg)}</span></div>`;
710
715
  }
711
716
  c.innerHTML = html;